Calling Firmware Update

Firmware update can't be done without physicall access to the device and requires you to have preconfigured update server with the firmware update file (if you're updating over network), and configured TPS firmware update settings.

If you have firmware update source and set firmware update settings as mentioned above, grab your Linux TPS device and...

If everything is done correctly bootloader will start the firmware update procedure by uploading firmware update file from media or network into RAM and write it to NAND then.

During the upload step blue LEDS will light chaotically.
On firmware write step blue LEDS will sign the numerical part number in a binary form.

Please do not interrupt firmware write process

Right after firmware update (failed or successfull) bootloader will start operating system.

Read more on status LEDS signals if you run into problems.

Debugging Firmware Update Process

Serial console how to attach? may give you more information about firmware update process. Firmware update file is the binary file that have the global technical header and may contain several parts with it's own technical headers and conditions. Each part of the file have a checksum, description and other technical information that's used in update procedure.
You can see some of it's information headers in serial console (if available) during the update process.

After download firmware update file from media or network into RAM it will be checked and if any byte of it is corrupted it will not be flashed. Bootloader will continue normal boot then.

Here is example of the serial console output while firmware update process is running:

Forced TFTP source 'upd.itb' for update
link up on port 0, speed 100, full duplex
Using cpsw device
TFTP from server 192.168.75.150; our IP address is 192.168.75.210
Filename 'upd.itb'.
Load address: 0x82000000
Loading: *#################################################################
	 #################################################################
	 ....
	 ##################################
	 1.6 MiB/s
done
Bytes transferred = 268284493 (ffdb24d hex)
Processing update 'update@1' :sha1+ 
 'tps-upd-to'='NAND.SPL0'
Doing upd from 0x820000B8 size 0x122C0 at NAND.SPL0
Erase off:0 len:20000
Erasing at 0x0 -- 100% complete.
Done upd offset:0x0 lim:0x20000, actually wrote:0x122C0 /ret:0
Processing update 'update@2' :sha1+ 
 'tps-upd-to'='NAND.SPL1'
Doing upd from 0x82012448 size 0x122C0 at NAND.SPL1
Erase off:20000 len:20000
Erasing at 0x20000 -- 100% complete.
Done upd offset:0x20000 lim:0x20000, actually wrote:0x122C0 /ret:0
Processing update 'update@3' :sha1+ 
 'tps-upd-to'='NAND.SPL2'
Doing upd from 0x820247D8 size 0x122C0 at NAND.SPL2
Erase off:40000 len:20000
Erasing at 0x40000 -- 100% complete.
Done upd offset:0x40000 lim:0x20000, actually wrote:0x122C0 /ret:0
Processing update 'update@4' :sha1+ 
 'tps-upd-to'='NAND.SPL3'
Doing upd from 0x82036B68 size 0x122C0 at NAND.SPL3
Erase off:60000 len:20000
Erasing at 0x60000 -- 100% complete.
Done upd offset:0x60000 lim:0x20000, actually wrote:0x122C0 /ret:0
Processing update 'update@5' :sha1+ 
 'tps-upd-to'='NAND.u-boot'
Doing upd from 0x82048EFC size 0x8A0DC at NAND.u-boot
Erase off:140000 len:140000
Erasing at 0x140000 --  10% complete.
..
Erasing at 0x260000 -- 100% complete.
Done upd offset:0x140000 lim:0x140000, actually wrote:0x8A0DC /ret:0
Processing update 'update@6' :sha1+ 
 'tps-upd-to'='NAND.kernel-dts0'
Doing upd from 0x820D30A8 size 0x86A6 at NAND.kernel-dts0
Erase off:280000 len:20000
Erasing at 0x280000 -- 100% complete.
Done upd offset:0x280000 lim:0x20000, actually wrote:0x86A6 /ret:0
Processing update 'update@7' :sha1+ 
 'tps-upd-to'='NAND.kernel-dts1'
Doing upd from 0x820DB838 size 0x86A6 at NAND.kernel-dts1
Erase off:2A0000 len:20000
Erasing at 0x2a0000 -- 100% complete.
Done upd offset:0x2A0000 lim:0x20000, actually wrote:0x86A6 /ret:0
Processing update 'update@8' :sha1+ 
 'tps-upd-to'='NAND.kernel'
Doing upd from 0x820E3FC4 size 0x3B6FF8 at NAND.kernel
Erase off:2C0000 len:500000
Erasing at 0x2c0000 --   2% complete.
...
Erasing at 0x7a0000 -- 100% complete.
Done upd offset:0x2C0000 lim:0x500000, actually wrote:0x3B6FF8 /ret:0
Processing update 'update@9' :sha1+ 
 'tps-upd-to'='NAND.rootfs'
Doing upd from 0x8249B098 size 0xFB40000 at NAND.rootfs
Erase off:7C0000 len:1F840000
Erasing at 0x7c0000 --   0% complete.
Erasing at 0xcc0000 --   1% 
....
Erasing at 0x1ffe0000 -- 100% complete.
Done upd offset:0x7C0000 lim:0x1F840000, actually wrote:0xFB40000 /ret:0
....
Hit any key to stop autoboot:  1  0 
Booting from nand ...

NAND read: device 0 offset 0x280000, size 0x20000
 131072 bytes read: OK


1 not required if you're using network update.
2 if USB is available on your device.