烧录说明


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

操作步骤:

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

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

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

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

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

  4. 空片模式上电,接入usb。可以观察到pc上有接入存储设备

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

图上各个ICON功能如下:

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

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

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

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

5-->Usb设备插入显示状态log
  1. 选择好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命令。

操作步骤:

  1. 配置uboot

    location:
    Command line interface
        -->SigmaStar cmmon commands
            -->[*] ufu
    

    支持ufu升级,但是不开启自动运行。

  2. 将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.cFORCE_UPGRADE_GPIO(指定IO)、FORCE_UPGRADE_ACTIVE_HIGH(指定状态),具体如下图:

      实现原理:通过在uboot启动时,通过检测指定IO的指定状态,选择是否进入ufu mode(device 升级模式),相关代码实现在autoboot.c中,感兴趣可以自行研究。

  3. 重启板子进入uboot或输入ufu command后会停在如下位置:

  4. 打开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烧录

  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地址,并按上述方法设定开发板。

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/目录下将要替换的文件名一致,修改原则如下图: