烧录说明
1. HW 相关环境准备¶
1.1 供电 & DebugUart¶
统一电源: DC 12V;
Arm 调试串口: CON10 ARM DBG,TTL电平,默认波特率为: 115200
RISCV调试串口:CON11 Riscv DBG,TTL电平,默认波特率为: 115200
详情参考 板子硬件说明 中的各板子的描述,如:SSZ001A_S01A中的 2.2.3/2.2.4 章节说明
1.2 板子启动方式选择¶
Demo 板默认支持 SPI NOR/NAND以及EMMC 3种启动方式可选,烧录前请确认板子选择的启动方式跟image的编译方式互为匹配。
启动方式由板子上的拨片开关决定,按需将拨片开关拨至对应位置即可
详情参考 板子硬件说明 中的各板子的描述,如:SSZ001A_S01A中的 2.2.13 启动选择拨码开关(S7) 章节说明
2. 工具烧录¶
-
可以正常启动到Uboot的板子,建议直接用Tftp32烧录;
-
UsbFactory tool 适用于空片且有预留 USB port的板子;
-
Sigmastar Flash_Tool烧录适用于空片或者无法正常启动到Uboot控制台的板子。
2.1. USB Device烧录¶
2.1.1 空片模式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
操作步骤:
-
按正常流程编译整包sdk,生成image升级文件。
-
整包sdk编译成功后,执行./image/makefiletools/script/make_usb_factory_sigmastar.sh 脚本
可以选择全部升级和部分分区升级:
执行成功后在project\image\output\images目录生成SstarUsbImage_xxxx(date).bin空片升级包
-
获取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 uboot下进入ufu升级(非空片升级)¶
需求场景: 已有完整pcb,有usb 接口,确保系统可进入uboot模式
实现原理: flash/emm/sdmmc里面已经有uboot。且此份uboot支持device ufu模式下接pc升级,通过执行uboot和pc软件进行交互,完成下载升级。
此模式下要求:flash/emm/sdmmc里面已有的uboot 本身具备ufu升级能力,uboot下支持ufu命令。
操作步骤:
-
配置uboot
location: Command line interface -->SigmaStar cmmon commands -->[*] ufu
支持ufu升级,但是不开启自动运行。
-
将uboot烧录入flash。此boot具有ufu升级能力。开机进入uboot。
-
方式一:
此方式需要打开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中,感兴趣可以自行研究。
-
-
重启板子进入uboot或输入
ufu command
后会停在如下位置: -
打开usb factory tool就可以识别到设备,然后按照上面空片升级方式进行升级即可
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地址,并按上述方法设定开发板。
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/
目录下将要替换的文件名一致,修改原则如下图: