烧录说明
1. HW 相关环境准备¶
1.1 供电 & DebugUart¶
1.统一电源: DC 12V
注意:如果使用Comake_PI_D1开发板,上电的时候除了要打开12V电源(SW1),真正系统开机需要按下POWER KEY(S5),此时指示灯才会亮起;
2.Arm 调试串口: CON10 ARM DBG,TTL电平,默认波特率为: 115200
3.RISCV调试串口:CON11 Riscv DBG,TTL电平,默认波特率为: 115200
详情参考 板子硬件说明 中的各板子的描述,如:Comake_PI_D1中的 3.5/3.6 章节说明。
1.2 板子启动方式选择¶
Demo 板默认支持 SPI NOR/NAND以及EMMC 3种启动方式可选,烧录前请确认板子选择的启动方式跟image的编译方式互为匹配。
启动方式由板子上的拨片开关决定,按需将拨片开关拨至对应位置即可,建议默认配置为EMMC。
详情参考 板子硬件说明 中的各板子的描述,如:Comake_PI_D1中的 3.16 启动选择拨码开关(S7) 章节说明。
注意
Comake PI D1 默认只支持EMMC 启动方式,请注意选择正确配置拨码开关。
2. 工具烧录¶
-
可以正常启动到Uboot的板子,建议直接用Tftp32烧录;
-
UsbFactory tool 适用于空片且有预留 USB port的板子;
-
Sigmastar Flash_Tool烧录适用于空片或者无法正常启动到Uboot控制台的板子。
2.1. USB Device烧录¶
2.1.1 uboot下进入ufu升级(非空片升级)¶
需求场景: 已有完整pcb,有usb 接口,确保系统可进入uboot模式
实现原理: flash/emm/sdmmc里面已经有uboot。且此份uboot支持device ufu模式下接pc升级,通过执行uboot和pc软件进行交互,完成下载升级。
此模式下要求:flash/emm/sdmmc里面已有的uboot 本身具备ufu升级能力,uboot下支持ufu命令,默认烧录镜像已开启。具体配置uboot的方法请看4.2 uboot支持升级配置
操作步骤:
-
按正常流程编译整包sdk,生成image升级文件。
-
整包sdk编译成功后,执行./image/makefiletools/script/make_usb_factory_sigmastar.sh 脚本

可以选择全部升级和部分分区升级:

执行成功后在project\image\output\images目录生成SstarUsbImage_xxxx(date).bin空片升级包
-
打开uboot升级功能的方式有三种,这里推荐第二种,其余两种方式请看:4.2.2 开启ufu的三种方式。
开机进入uboot,输入以下命令直接进入device升级模式:
ufu command
输入命令后会停在如下位置:

-
获取UsbFactoryTool 工具的路径:SDK/Tools/UsbFactoryTool/UsbFactoryTool_xxxx.tar.gz
-
上电,接入usb。可以观察到pc上有接入存储设备

-
PC通过usbhub连接需要升级的板子(板子flash必须为空片),打开USB Factory Tool.exe,显示如下:

图上各个ICON功能如下:
1→升级开始和停止的按钮,需要注意的是停止按钮必须等接上的所有设备升级成功后才能按下;
2→升级包选择按钮:用来选择usb空片的升级包文件;
3→usb设备升级状态和结果显示栏,需要注意的是目前空片升级有两个状态:准备和升级。必须等升级状态成功后才能拔掉usb设备插上另一个usb设备进行升级;
4→显示目前识别到的usb设备
5→Usb设备插入显示状态log
-
选择好usb升级包文件,等插上的所有设备都识别到后,点击start按钮进行升级,升级完成后的界面如下:

图上各个ICON功能如下:
1→显示每个设备升级的结果;
2→显示每个设备升级的log;
3→显示连接的所有设备个数以及升级的状态;
4→显示检测到的usb设备,需要注意的是升级成功后检测到的usb设备会被移除
根据1→显示的每个设备的升级状态,进行如下操作:
-
升级成功:拔掉对应的设备,插上另一块空片继续进行升级;
-
升级失败:可以尝试插拔一下设备重新 升级看是否ok
-
2.1.2 空片模式usb device升级¶
需求场景:
已有完整pcb,有usb 接口,但是nandflash、norflash、emmc里面为空。 空片升级只支持 port0
实现原理:
IC上电先执行rom code,然后根据外部硬件配置跳转到flash/emmc/sdmmc中执行IPL,没有找到IPL资料,系统自动进入ufu的升级模式。通过pc tool 预加载 u-boot.bin (通过make_usb_factory_sigmastar.sh打包进SstarUsbImage_xxxx(date).bin空片升级包)。
此模式下要求: 预加载的u-boot.bin (release目录:project/board/pcupid/usb/upgrade/*,默认已经release) 本身具备ufu升级能力。制作具有ufu升级能力的预加载bin
操作步骤:
空片升级与非空片升级操作步骤基本是一致的,但因为在空片模式下系统会自动进入ufu的升级模式,所以直接跳过非空片升级的操作步骤 3(打开uboot升级功能),详细步骤请参考2.1.1 uboot下进入ufu升级(非空片升级)的操作步骤 1 2 4 5 6 7即可
2.2. Flash_Tool烧录¶
本方式适用于空片烧录或者板子无法进入Uboot控制台的情况下使用。
如非空片或者能够正常启动的情况下,想使用Flash Tool烧录,则需要按照以下方式先关闭掉Debug Uart
-
uboot控制台下直接输入
debug,然后关闭串口终端
-
kernel下,则输入
11111,然后关闭串口终端
2.2.1 SPI NAND Flash 与 SPI NOR FLASH烧录¶
- 开机,并确保串口的log无法执行到uboot控制台(如能正常启动,需要先在uboot控制台输入debug指令停掉串口调试功能)
- 关闭串口调试终端
-
启动到Uboot需要必备的分区以及分区起始地址
Nand/Nor分区地址分别如下:
Nand Flash:
Binary file offset Binary 放置目录 cis.bin 0x00000 project\image\output\images\cis.bin cis.bin 0x20000 project\image\output\images\cis.bin boot.bin 0x140000 project\image\output\images\boot.bin PS:nand 提供脚本烧录方式, 一键烧录整个image
Binary file offset Binary 放置目录 OnebinnandBurnImgConfig.cfg 0x00000 project\image\output\images\OnebinnandBurnImgConfig.cfg Nor Flash:
Binary file offset Binary 放置目录 boot.bin 0x000000 project\image\output\images\boot.bin -
打开Flash_Tool(版本需要5.0.42及以上版本),根据以上的分区以及分区起始地址,按照以下方法依次烧录分区:
- 选择Flash Type (Nand Flash/Nor Flash)
- 点击Connect,建立连接状态(Connect必须确保关闭串口工具,否则会出现争抢串口资源问题)
- 选择需要烧录的分区对应的img,截图以Nand Flash烧录boot.bin为例
- 勾选
Base shift at,选定从基地址0开始 - 填写对应img分区的起始地址(Nand的boot.bin对应的是0x140000)
- 确保Erase Device选择的是File Area
- 点击Run,等待运行结束,直至提示Pass状态

-
根据Flash Type按照步骤3中对应的分区以及分区地址填入,根据步骤4重复烧录即可,烧录完之后重启即可正常启动到Uboot控制台,之后就可以使用Tftp网口烧录了
2.2.2 eMMC烧录¶
-
开机,并确保串口的log无法执行到uboot控制台(如能正常启动,需要先在uboot控制台输入debug指令停掉串口调试功能)
-
关闭串口调试终端
-
打开Flash_tool,根据下图勾选emmc→config界面

-
选择要升级的Bin file,点击connect,status显示Connect Success

-
点击Erase 进行擦除后,再点击Start Program按钮,升级成功显示:Status:Success.Please reset power
-
烧录完之后重启可正常启动到uboot控制台,之后就可以使用Tftp烧录了
PS: 如果遇到 BGA14 ISPTOOL连接不上板子,可以尝试下图将ISPTOOL的debug板默认是400K I2C降低到108K试试,因为连的上就是高速的时候波形有干扰

By Config界面部分按钮功能介绍
Split Bin
-
Enable: 烧录bin的时候是否要切割bin,使用于IMI比较小的场景
-
Bin Size: 切割Bin时,每个Bin文件大小
此两项推荐使用默认配置,不要随意修改。
Program
-
Bus Width: 启动的bus width,自动获取,无需手动设置。
-
Partition Config: 配置eMMC启动分区及烧写分区。
-
Disbale Part: 禁止从eMMC启动。
-
Hw Reset Enable: 是否使能eMMc 硬件复位。eMMc启动是使用硬复位,如果eMMc的硬复位是关的话无法启动,需要开启这个开关。
-
Erase: 是否擦除对应分区。
-
verify: 烧录Bin的同时是否进行校验。
2.3. Tftp烧录(网口烧录)¶
本烧录方式仅针对可以进入到Uboot控制台的情况(空片或者无法启动到控制台的不支持此烧录方式)。
-
打开tftpd32工具,选择指向需要烧录的images目录(project\image\output\images)

-
开机按住Enter不放进入到Uboot控制台,按照以下方式设置IP
setenv ipaddr 192.168.1.8; //设置板端ip,要求能跟PC端ping通 setenv serverip 192.168.1.9; //设置PC端的ip setenv -f ethact sstar_emac; //设置使用Emac,本平台使用的是Emac setenv -f ethaddr 0:11:22:33:44:55; //设定mac地址 setenv -f netmask 255.255.255.0; //设置掩码 setenv -f gatewayip 192.168.1.1; //设置网关 estart //初始化网络 uboot 下使用网络之前需要先输入该命令 saveenv;
-
输入estar (与全烧录的区别是此方式可以
estar auto_update.txt中的脚本,烧录任意单独分区)注:
- 为了保证烧录顺利,请保证PC和开发板处于同一网段。
- 可以采用静态方式固定分配ip,防止烧录时ip地址跳变。
- 您也可以使用独立网卡使PC端直连开发板,固定该网卡的内网ip地址,并按上述方法设定开发板。
2.4. OTA升级¶
OTA(Over-the-Air)是一种通过无线方式进行数据传输和更新的技术,通常用于电子设备(如智能手机、汽车、物联网设备等)的软件、固件或配置更新。OTA可以在设备与服务器之间进行远程传输,用户无需将设备接入电脑或进行有线操作。详情请看OTA升级使用参考
2.5. USB&SD升级¶
详情请看USB&SD升级
3. 母片制作¶
参考SDK/Tools/sigmastarbin/SstarMakebin_Manual.pdf
4. FAQ¶
4.1 制作具有ufu升级能力的预加载bin¶
uboot menuconfig配置如下:
Init options
-->Start-up hooks rch features support
-->[*] Execute Board late init

ARM architecture
-->SigmaStar arch features support
-->[*] Auto update feature
-->(ufu) Force boot command to run

编译完成后,根据flash类型替换将生成的 预加载的u-boot.bin ,将bin档名修改为与project/board/pcupid/usb/upgrade/目录下将要替换的文件名一致,修改原则如下图:

4.2 uboot支持升级配置¶
4.2.1 uboot支持升级配置¶
location:
Command line interface
-->SigmaStar cmmon commands
-->[*] ufu
支持ufu升级,但是不开启自动运行。

4.2.2 开启ufu的三种方式¶
方式一:
此方式需要打开menuconfig中的Auto update UFU with U-boot env(ota_upgrade_status)选项。
在boot模式下设定如下参数,重启开机后会进入device升级模式。
setenv ota_upgrade_status 1 saveenv
方式二:
uboot模式下使用输入ufu command可以直接进入device升级模式。
方式三:(通过gpio按键检测进入UFU Mode)
此方式需要打开menuconfig中的Auto update UFU with GPIO选项。
长按指定预设按键,并且上电开机,开机后uboot检测到按键触发,自动会进入device ufu升级模式。
如果需要指定对应的GPIO,则需要按照以下方法配置,并编译重新烧录uboot。
配置指定按键指定状态方法:修改boot/common/autoboot.c下FORCE_UPGRADE_GPIO(指定IO)、FORCE_UPGRADE_ACTIVE_HIGH(指定状态),具体如下图:

实现原理:通过在uboot启动时,通过检测指定IO的指定状态,选择是否进入ufu mode (device升级模式),相关代码实现在autoboot.c中,感兴趣可以自行研究。
4.2.3 make_usb_factory_sigmastar.sh使用说明¶
project下需要先make image,build pass之后,再使用make_usb_factory_sigmastar.sh来制作生成,usage如下:

注:根据客户实际场景,需要指定不同的IPL/UBOOT。若不指定IPL和UBOOT,则会使用config中配置的IPL/UBOOT,如下图中的配置

由usage可知,执行脚本时,若直接带-f,则表示需要升级auto_update.txt里面的全部es。若不带-f时,则会提示Full or Optional Upgrade?此时需要手动输入
-
在提示Full or Optional Upgrade时输入Y或者回车,则表示需要升级auto_update.txt里面的全部es。
-
在提示Full or Optional Upgrade时,输入N,则需要依次选择目标es是否升级,这些es是解析auto_update.txt得到的
部分操作如下图:

4.2.4 通过USB tools升级¶
usb tools介绍如下图

tool支持Auto升级和manual升级两种mode
auto模式
一般来说auto用于产线,可以自动监测设备插入,自动升级,步骤如下
-
选择固件
-
点击开始升级按钮,之后就可以插入设备,会自动开始升级,升级过程分为两个阶段, 准备阶段和升级阶段。只有升级阶段成功的设备才表示升级成功
Manual模式
Manual模式一般来说用于开发,需要选择某台设备进行升级,如下图所示,需要手动选择升级设备(USB大容量存储设备), 再点击升级按钮,如下图

步骤如下:
-
选择脚本打包好的固件
-
在设备树里点击接入的设备
-
点击开始升级按钮