From 12dde8de223797d2807a66d734f04c2e92e60922 Mon Sep 17 00:00:00 2001
From: Paul Philippov <themactep@gmail.com>
Date: Fri, 10 Feb 2023 19:56:36 -0500
Subject: [PATCH] add uboot commands, add a link to tftp installation
 instruction.

---
 en/sysupgrade.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/en/sysupgrade.md b/en/sysupgrade.md
index 9f55765..32336f6 100644
--- a/en/sysupgrade.md
+++ b/en/sysupgrade.md
@@ -10,10 +10,15 @@ For old firmware running `sysupgrade` without parameters is enough. For newer fi
 __ATTENTION! Upgrading firmware can lead to "bricking" your camera. Make sure you are prepared both morally and skillwise. Have your rescue SD card and/or UART adapter ready. Be prepared to desolder and reprogram flash chip as the last resort. Do not upgrade production cameras unless you really have to!__
 
 ### Upgrading from a TFTP server
+
+[Set up a TFTP server](installation-tftpd.md).
+
 Go to <https://github.com/OpenIPC/firmware/releases/tag/latest> and download the latest firmware bundle for your SoC.
 Extract content of the bundle into the root directory of your TFTP server.
 
 On the camera run:
+
+#### From Linux
 ```
 soc=$(fw_printenv -n soc)
 serverip=$(fw_printenv -n serverip)
@@ -21,6 +26,29 @@ busybox tftp -r rootfs.squashfs.${soc} -g ${serverip}
 busybox tftp -r uImage.${soc} -g ${serverip}
 ```
 
+#### Alternatively, from U-Boot
+for 8MB image
+```
+mw.b ${baseaddr} 0xff 0x200000
+tftp ${baseaddr} uImage.${soc}
+sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}
+
+mw.b ${baseaddr} 0xff 0x500000
+tftp ${baseaddr} rootfs.squashfs.${soc}
+sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize}
+```
+for 16MB image
+```
+mw.b ${baseaddr} 0xff 0x300000
+tftp ${baseaddr} uImage.${soc}
+sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
+
+mw.b ${baseaddr} 0xff 0x500000
+tftp ${baseaddr} rootfs.squashfs.${soc}
+sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize}
+```
+
+
 ### Upgrading from local files
 Go to <https://github.com/OpenIPC/firmware/releases/tag/latest> and download the latest firmware bundle for your SoC.
 Unpack the bundle and upload its content on camera using `scp`:
@@ -36,6 +64,7 @@ sysupgrade --kernel=/tmp/uImage.${soc} --rootfs=/tmp/rootfs.squashfs.${soc} -z
 
 ### Upgrading from SD card
 
+#### From Linux
 Go to <https://github.com/OpenIPC/firmware/releases/tag/latest> and download the latest firmware bundle for your SoC.
 Insert an SD card into your desktop PC. Unpack the bundle and copy its content to the card:
 ```
@@ -49,6 +78,45 @@ soc=$(fw_printenv -n soc)
 sysupgrade --kernel=/mnt/mmcblk0p1/uImage.${soc} --rootfs=/mnt/mmcblk0p1/rootfs.squashfs.${soc} --force_ver -z
 ```
 
+#### Alternatively, from U-Boot
+for 8MB image
+```
+mw.b ${baseaddr} 0xff 0x200000
+fatload mmc 0:1 ${baseaddr} uImage.${soc}
+sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}
+
+mw.b ${baseaddr} 0xff 0x500000
+fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc}
+sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize}
+```
+for 16MB image
+```
+mw.b ${baseaddr} 0xff 0x300000
+fatload mmc 0:1 ${baseaddr} uImage.${soc}
+sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
+
+mw.b ${baseaddr} 0xff 0x500000
+fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc}
+sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize}
+```
+
+### Flashing U-Boot via ymodem
+Clean 320K of RAM amd load bootloader file into it:
+```
+mw.b ${baseaddr} 0xff 0x50000
+loady
+```
+_(press "Ctrl-a" followed by ":", then type)_
+```
+exec !! sz --ymodem u-boot.bin
+```
+After the file if uploaded, write it into ROM:
+```
+sf probe 0
+sf erase 0x0 0x50000
+sf write ${baseaddr} 0x0 ${filesize}
+```
+
 ### Troubleshooting
 
 If you got this error: