OTA升级移植指南*
GX8008/GX8008C 的 OTA 升级支持两种方式:UART
和 USB
。
GX8008/GX8008C 支持空片升级。也就是说,GX8008/GX8008C 本身没有烧录任何固件的情况下,也可以通过 OTA 方式进行升级。因此,这个升级是安全可靠的。如果在升级过程中断电或者异常,导致设备变砖,仍然可以重新上电或者复位后,再重新OTA。
在 GX8008/GX8008C 芯片内部的只读 ROM 里,已经固化了我们的升级代码,因此可以支持空片升级。升级过程,和 flash 上是否有烧录固件没有任何关系。
1. linux/Android 平台移植*
1.1 概述*
针对linux平台(包含Android),可以直接移植我们的官方烧录程序 bootx。
bootx 工具支持 USB 升级和 UART 升级。
1.2 代码下载*
bootx_v1.8.3.zip (http://yun.nationalchip.com:10000/l/U110RM)
1.3 编译*
如果使用 bootx_v1.8.3.zip 的话:
-
解压 zip 文件
-
修改 makefile 指定自己平台对应的工具链
makefile | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
如果是linux平台,编译如下:
make clean
make
- 如果是 arm 平台,可以尝试下面的步骤。在 PC linux 上安装 arm 工具链,然后编译:
sudo apt install g++-arm-linux-gnueabi
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install automake autoconf m4 perl
make clean
make libusb-armlinux
make arm-linux
- 我们也提供在ARM平台编译好的bootx。下载地址如下:
arm_bootx_v1.8.0 (http://yun.nationalchip.com:10000/l/dFgYgk)
1.4 测试*
- 串口升级的话,启动下面命令后,对开发板重新上下电或者复位,即可开始升级。下载 vsp.bin 到 flash 的 0x0 地址处。我们串口最大波特率支持到1.5M。使用-r命令做波特率选择。
// GX8008C 升级 (/dev/ttyUSB0 根据自己的实际串口设备修改)
sudo ./bootx -m leo_mini -t s -d /dev/ttyUSB0 -r 921600 -c serialdown 0x0 vsp.bin
// GX8008 升级 (/dev/ttyUSB0 根据自己的实际串口设备修改)
sudo ./bootx -m leo -t s -d /dev/ttyUSB0 -r 921600 -c serialdown 0x0 vsp.bin
- USB升级,需要先执行下面命令,然后一直拉低boot脚,接着对开发板重新上下电或者复位(boot脚这个时候要继续拉低),即可开始升级。升级成功后,再次开机的话,不需要继续拉低boot脚,否则会持续进入升级模式而导致无法正常开机。拉低boot状态下上电,在linux上设备会识别为:NationalChip Storage。设备PID/VID为:a7000:0001,可以使用lsusb命令查看。
// GX8008C 升级
sudo ./bootx -m leo_mini -t u -c download 0x0 vsp.bin
// GX8008 升级
sudo ./bootx -m leo -t u -c download 0x0 vsp.bin
注意 格式:
注意
GX8008 和 GX8008C 升级用的命令格式,在 -m 后是不一样的。USB升级,需要一直拉低boot,然后上电来进入升级模式。正常开机的话,不需要该操作。
2. 其它平台移植*
2.1 概述*
针对其他平台,可以参考通过UART流式的方式进行OTA升级8008或8008C
2.2 代码下载*
git clone git@gitlab.com:nationalchip/mcu_ota.git
2.3 编译*
在linux系统下面输出命令即可编译生成可执行文件 sample.elf
make clean
make
2.4 测试*
sudo ./sample.elf
使用该命令后,对开发板重新上下电或者复位,即可开始升级,当出现 firmware download finish
即升级完毕。
注意
GX8008 和 GX8008C 串口升级用的固件为mcu_nor.bin和dsp.fw,需通过xxd -i命令将两个文件转成mcu_nor.h和dsp.h,详细请阅读代码例子。
串口升级目前使用默认的波特率为1.5M,如需更改请修改如下代码。
#define BOOT_STAGE2_BAUD_GRUS 1500000
4. 历史记录*
- 考虑有的项目仅仅需要串口升级功能,为了避免编译带 USB 功能升级需要增加很多依赖库,我们进行了裁剪,去掉了USB的相关代码,专门提供 bootx_v1.6.11_uart_compatible.zip,来支持串口升级。bootx_v2.zip 专门用于USB升级。
USB升级代码:
bootx_v2.zip (http://yun.nationalchip.com:10000/l/ZFDsH0)
串口升级代码:
bootx_v1.6.11_uart_compatible.zip (http://yun.nationalchip.com:10000/l/AFgJxE)
- 我们也提供几份在 ARM 平台编译好的bootx(前两个基于 bootx_v2.zip 编译,用于支持USB升级),可以直接下载尝试看看。下载地址如下:
bootx_arm.zip (http://yun.nationalchip.com:10000/l/3FjR5n)
bootx_arm_2.zip (http://yun.nationalchip.com:10000/l/fFU34z)
bootx_arm_v1.6.11_uart (http://yun.nationalchip.com:10000/l/RFkDwC)