烧录说明


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支持升级配置

操作步骤:

  1. 按正常流程编译整包sdk,生成image升级文件。

  2. 整包sdk编译成功后,执行./image/makefiletools/script/make_usb_factory_sigmastar.sh 脚本

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

    执行成功后在project\image\output\images目录生成SstarUsbImage_xxxx(date).bin空片升级包

  3. 打开uboot升级功能的方式有三种,这里推荐第二种,其余两种方式请看:4.2.2 开启ufu的三种方式

    开机进入uboot,输入以下命令直接进入device升级模式:

    ufu command
    

    输入命令后会停在如下位置:

  4. 获取UsbFactoryTool 工具的路径:SDK/Tools/UsbFactoryTool/UsbFactoryTool_xxxx.tar.gz

  5. 上电,接入usb。可以观察到pc上有接入存储设备

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

    图上各个ICON功能如下:

    1→升级开始和停止的按钮,需要注意的是停止按钮必须等接上的所有设备升级成功后才能按下;

    2→升级包选择按钮:用来选择usb空片的升级包文件;

    3→usb设备升级状态和结果显示栏,需要注意的是目前空片升级有两个状态:准备和升级。必须等升级状态成功后才能拔掉usb设备插上另一个usb设备进行升级;

    4→显示目前识别到的usb设备

    5→Usb设备插入显示状态log

  7. 选择好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烧录

  1. 开机,并确保串口的log无法执行到uboot控制台(如能正常启动,需要先在uboot控制台输入debug指令停掉串口调试功能)
  2. 关闭串口调试终端
  3. 启动到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
  4. 打开Flash_Tool(版本需要5.0.42及以上版本),根据以上的分区以及分区起始地址,按照以下方法依次烧录分区:

    1. 选择Flash Type (Nand Flash/Nor Flash)
    2. 点击Connect,建立连接状态(Connect必须确保关闭串口工具,否则会出现争抢串口资源问题)
    3. 选择需要烧录的分区对应的img,截图以Nand Flash烧录boot.bin为例
    4. 勾选 Base shift at,选定从基地址0开始
    5. 填写对应img分区的起始地址(Nand的boot.bin对应的是0x140000)
    6. 确保Erase Device选择的是File Area
    7. 点击Run,等待运行结束,直至提示Pass状态

  5. 根据Flash Type按照步骤3中对应的分区以及分区地址填入,根据步骤4重复烧录即可,烧录完之后重启即可正常启动到Uboot控制台,之后就可以使用Tftp网口烧录了

2.2.2 eMMC烧录

  1. 开机,并确保串口的log无法执行到uboot控制台(如能正常启动,需要先在uboot控制台输入debug指令停掉串口调试功能)

  2. 关闭串口调试终端

  3. 打开Flash_tool,根据下图勾选emmc→config界面

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

  5. 点击Erase 进行擦除后,再点击Start Program按钮,升级成功显示:Status:Success.Please reset power

  6. 烧录完之后重启可正常启动到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控制台的情况(空片或者无法启动到控制台的不支持此烧录方式)。

  1. 打开tftpd32工具,选择指向需要烧录的images目录(project\image\output\images)

  2. 开机按住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;
    
  3. 输入estar (与全烧录的区别是此方式可以estar auto_update.txt中的脚本,烧录任意单独分区)

    注:

    1. 为了保证烧录顺利,请保证PC和开发板处于同一网段。
    2. 可以采用静态方式固定分配ip,防止烧录时ip地址跳变。
    3. 您也可以使用独立网卡使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.cFORCE_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如下:

img

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

img

由usage可知,执行脚本时,若直接带-f,则表示需要升级auto_update.txt里面的全部es。若不带-f时,则会提示Full or Optional Upgrade?此时需要手动输入

  1. 在提示Full or Optional Upgrade时输入Y或者回车,则表示需要升级auto_update.txt里面的全部es。

  2. 在提示Full or Optional Upgrade时,输入N,则需要依次选择目标es是否升级,这些es是解析auto_update.txt得到的

部分操作如下图:

img


4.2.4 通过USB tools升级


usb tools介绍如下图

img

tool支持Auto升级和manual升级两种mode

auto模式

一般来说auto用于产线,可以自动监测设备插入,自动升级,步骤如下

  1. 选择固件

  2. 点击开始升级按钮,之后就可以插入设备,会自动开始升级,升级过程分为两个阶段, 准备阶段和升级阶段。只有升级阶段成功的设备才表示升级成功

Manual模式

Manual模式一般来说用于开发,需要选择某台设备进行升级,如下图所示,需要手动选择升级设备(USB大容量存储设备), 再点击升级按钮,如下图

img

步骤如下:

  1. 选择脚本打包好的固件

  2. 在设备树里点击接入的设备

  3. 点击开始升级按钮