烧录相关

1. 基本信息

1)烧录接口

思澈量产的系列芯片支持JLINK(SWD)和串口两种烧录方式,串口支持最大波特率为6Mbps。在研发阶段,调试采用JLINK(SWD),烧录可以选择JLINK(SWD)或者串口;生产时考虑成本及稳定性,推荐采用串口方式烧录。
../../_images/tab11.png

SF32LB52X系列芯片由于 SWIO和SWCLK两个管脚在上电时默认复用为UART1的TX/RX功能,所以调试可以借助SifliUsartSever工具直接用串口调试,如果想用JLINK(SWD)调试,需要软件代码修改管脚复用后才可使用。

2)烧录环境

思澈产品方案提供两种烧录环境:

  • PC(windows系统)+上位机软件+串口板+目标板

  • 脱机烧录器+目标板

研发阶段一般使用第一种方式,产线生产时可以根据需求选择,后面会分别介绍这两种烧录环境搭建使用方法。

3)PC烧录工具

solution方案中有配套的研发工具和产线工具,都具备烧录功能。考虑到有客户产线上使用自己的上位机工具,还提供动态库和底层工具供客户二次开发。 ../../_images/tab2.png

4)烧录内容

目标板中除了烧录固件IMG,还会写入其他一些特殊内容,包含芯片ATE产线校准数据、算法加密KEY、生产产线校准数据、MAC地址/SN以及客户其他的一些特殊数据等。

../../_images/tab3.png

表中红色部分数据是存放在FLASH/EMMC的普通地址区域的,这些在正常烧录固件IMG时只要地址不冲突是不会被擦除的,但是全擦除时是会被擦除掉的,如果想擦除烧录的固件内容又不想擦除这些特殊数据,建议用产线工具Impeller的擦除非产线数据区的功能。除了红色数据部分,存放在EFUSE的数据只能写入1次,OTP或者FLASH普通数据区域支持多次擦除写入。

5)烧录注意事项

产线烧录环境为保证稳定性要求bootmode管脚拉高,在平时烧录时,除了SF32LB55X / SF32LB58X系列用串口烧录的场景必须先进入boot模式,其他场景烧录可以不用进入boot模式直接烧录,遇到烧录异常时再进入boot模式排查。

烧录需要保证JLINK(SWD)或串口能与板子正常通信,烧录时芯片不能处于睡眠模式。

使用JLINK(SWD)烧录时设置的速率建议不要超过5000kbps,使用串口烧录时芯片侧支持最高速率为6Mbps,还需要结合串口板上串口芯片的性能设置。

2. 研发工具Butterfli

研发工具Butterfli主要用于方案开发中做资源、工程编译处理及目标板烧录,具体使用方式参考Butterfli工具使用说明。此处简单介绍与烧录相关的功能,包括烧录固件IMG,烧录MAC,FLASH读取擦除等。

../../_images/butterfli_burn.png

1)固件及MAC烧录

固件及MAC烧录,需要配置上图中⑥⑦⑧中的配置项:

  • 类型 选择用串口或者JLINK作为烧录通道,SF32LB52X系列用串口,其他平台根
    据需求选择。

  • 端口 烧录用的串口号或者JLINK SN。

  • 速率 串口波特率(最大6M,根据串口小板支持情况选择) 或JLINK速率(推荐用 4000或5000)。

  • 压缩 使用串口烧录时,为提高烧录速率,会对IMG做压缩。

  • 查重 烧录前检查该地址内容是否同烧录文件相同,相同则不烧录。

  • 校验 烧录后是否做校验来保证烧录内容的正确性。

  • 下载前 使用JLINK烧录时,是否先发送reset、hold等控制命令。

  • 下载后 烧录完成是否重启运行。

项目编译成功后,会自动刷新IMG列表,如上图中①②③,默认情况下会勾选所有IMG,烧录时也可以根据需求勾选,或者在②的IMG名字右键选择单独烧录对应的IMG。如果要烧录MAC地址,勾选④中的选项,MAC地址烧录后会自动根据自增值更新。

做好上述配置后,点击⑤下载按钮,会启动烧录流程,⑩显示烧录的基本流程及进展,如遇到异常情况,可以在Butterfli工具文件夹下看ImgDownUart_log.txt做进一步分析。

2)FLASH / EMMC 擦除读取

上图中⑨的内容提供FLASH / SD / EMMC擦除读取的功能,配置项说明如下:

  • 地址 读取或擦除的地址,16进制数据。

  • 长度 读取或擦除的长度,16进制数据。

  • NAND NAND方案中会把最后总容量的1/32做为坏块保护区使用,默认情况下选择的是WITH BBM,这样读取/擦除不会访问到坏块保护区;如果有需求读取/擦除坏块保护区,选择NO BBM;

  • 全擦 会擦除片内FLASH和片外存储器内容,注意52x片内无flash且片外用NAND或EMMC的场景,全擦会擦除MAC、48M校准值等数据;

  • 擦除 会擦除设置的地址和长度部分区域;

  • 读取 弹出的对话框如果选择了保存文件,则会将读出的数据保存在文件中,不设置保存的文件会在工具界面打印出来,在界面打印的场景建议长度不要超过1KB。

3. 产线工具Impeller

产线工具主要用于生产阶段,借助于夹具对PCBA板做固件烧录,48M晶体校准,MAC/SN等信息写入,详细使用方式请参考Impeller工具使用说明

4. 脱机烧录环境

脱机烧录器是基于SF32LB551芯片开发的烧录器具,可以通过串口方式对思澈平台进行烧录及48M晶体校准。脱机烧录器使用配套工具ImgStamp将固件及48M晶体校准信息提取出来,然后将转换的包拷贝到SD卡中插入脱机烧录器,即可对目标板进行烧录校准。

脱机烧录器外观如下图所示,具体使用请参考脱机烧录器使用指南../../_images/burner.png

5. 算法加密KEY烧录方案

算法加密KEY主要是算法提供厂商为确保提供的算法库是在授权情况下使用,使用芯片的UID计算出来的一串加密码,保存在芯片内部FLASH OTP中(无片内FLASH则保存在efuse中),这样设备启动后调用算法时会使用芯片的UID进行验证。

算法加密KEY的烧录是由算法提供厂商负责,一般是在芯片贴片前在指定的产线上进行,思澈公司会提供如下资源协助整个环境搭建:

  • 硬件最简系统设计图,指导烧录底座制作;

  • ram run demo工程,基于该工程可以添加算法加密KEY计算的代码

  • 下载动态库,1.3节中的RambinDown.dll库,通过串口读取UID、下载rambin

  • 对于SF32LB55X和SF32LB58X系列芯片,还需要提供rambin加密工具

整个方案执行流程:
1)算法提供厂商基于ram run demo工程,在指定的位置添加加密码计算代码,并调用OTP或EFUSE写入API保存,具体参看demo工程使用说明。 2)生产产根据最小系统设计图制作烧录底座(注意如果是保存在EFUSE,需确认是否有特殊供电); 3)生产产线根据RambinDown.dll库及说明文档开发上位机工具; 4)算法提供厂商将生成的固件bin发给生产产线,对芯片写入算法加密KEY;

6. 固件外发烧录方案

有客户为提高生产效率,会在PCBA贴片前将需要烧录在外部存储器的固件外发烧录,然后再将烧录好的存储芯片贴到PCBA板上。

针对客户外发烧录需求,思澈公司会提供如下资源:

  • ImgStamp工具,该工具将同一个存储器上的img拼接为1个bin文件,具体参考工具包里面的使用说明。

  • 如果是外发烧录的存储器是NAND FLASH,还需要提供方案中NAND FLASH坏块保护相关资料,确保坏块替换规则一致。

7. 烧录相关FAQ

FAQ_1 是否必须在boot模式烧录

产线烧录环境为保证稳定性要求bootmode管脚拉高,在平时烧录时,除了SF32LB55X / SF32LB58X系列用串口烧录的场景必须先进入boot模式,其他场景烧录可以不用进入boot模式直接烧录,遇到烧录异常时再进入boot模式排查。

FAQ_2 如何进入boot模式

SF32LB55X / SF32LB56X / SF32LB58X系列芯片通过拉高bootmode管脚进入boot模式,SF32LB52X系列芯片需要借助Sifli_Trace工具(在工具窗口勾选52X_BOOT,连接串口,然后重启板子,打印enter boot mode flow success表示进入了boot模式)。

FAQ_4 串口烧录用哪个串口

参考FAQ_3。

FAQ_5 串口烧录如何选择波特率

思澈芯片串口烧录方案中,6M波特率是经过大量产线验证的,在选用的串口芯片支持能力下,可以尽可能设置高一点的波特率。如果无法确认串口芯片最大支持的波特率,可以通过设置1M – 2M – 3M – 6M来实验确认。

FAQ_7 烧录时会擦除哪些区域

烧录时默认的是擦除烧录bin所占用的空间,其他地址不会擦除。需要注意的是NOR和NAND是有擦除块的概念的,NOR是4KB,NAND是128KB(有的是256KB)。

使用工具的擦除全擦除功能时,会试图擦除片内FLASH上内容,片外FLASH上内容,片外EMMC/SD NAND最多擦除前面64M内容。

FAQ_8 如何读取擦除坏块保护区

NAND FLASH会把后面1/32的空间用来做坏块保护区,正常的驱动是无法直接操作该区域的,用Butterfli和Impeller工具也不支持直接操作坏块保护区。有些场景需要读取坏块保护区数据做分析,或者擦除坏块保护区继续使用,例如烧录时log中提示坏块保护区初始化异常或者坏块保护满导致失败的场景。

操作坏块保护区,主要是选择关闭坏块管理功能的驱动即可。使用JLINK(SWD)时选择对应平台设备带NOBBM的,该设备配置的驱动即为关闭坏块管理功能的驱动。使用串口时可以自己手动拷贝带NOBBM的驱动使用,以SF32LB56X_NAND为例,进入工具路径file文件夹下,将 ram_patch_56X_NAND.bin备份,将ram_patch_56X_NAND_nobbm.bin复制一份修改名称为ram_patch_56X_NAND.bin,这样就会用到关闭坏块管理功能的驱动,注意用完后要把备份的ram_patch_56X_NAND.bin文件恢复。

推荐使用Butterfli工具,参考Butterfli内存操作

FAQ_9 如何读取OTP保存的内容

串口烧录驱动程序中有读取OTP的finsh命令,所以可以下载驱动到板子中运行后通过命令读取,最简单的操作方式是使用Impeller工具,具体步骤如下:

1)按照烧录的环境连接好板子
2)Impeller工具选择校准功能,校准48M晶体,参数设置页面不要勾选 “下载完重启”
3)执行校准,没有校准金机的情况向校准会失败,这个不会影响,因为驱动已经运行起来
4)打开串口调试工具(Sifli_Trace工具即可),连接烧录用的串口,发送finsh命令

  • otp_factory_read 这个命令是查询当前定义保存在OTP一些信息

  • otp_read 0 1 查询OTP区域1的数据

  • otp_read 0 2 查询OTP区域2的数据

  • otp_read 0 3 查询OTP区域3的数据

FAQ_10 产线48M晶体校准注意事项

首先48M晶体校准需要有校准金机,且如果烧录工位较多,一个金机无法覆盖而需要用多个金机时,确保各个金机的校准频点分散开,不可重合;每个烧录工位Impeller工具设置的校准频点需要跟部署覆盖该工位的金机保持一致。

FAQ_11 如何抓取分析串口交互数据

对用通过串口交互的工具,无论是烧录还是执行其他功能,分析问题最直接的就是看串口数据,可以安装一个串口监控软件,如bushond等。Bushond用法如下:

../../_images/bushond1.png ../../_images/bushond2.png ../../_images/bushond3.png

8. 烧录常见错误排查

此处不包括一个产品或者一颗FLASH首次调试,这种场景需要找硬件和驱动同事处理。

日常遇到的烧录问题,默认是该硬件平台及烧录工具在当前环境或其他环境已经成功烧录过,如果从未成功过归属到首次调试场景,需要硬件及驱动同事处理。对于因环境差异导致烧录异常或者同样的环境烧录不稳定的问题,可按照下述方式排查:

串口烧录问题排查

  • 确认烧录串口选择正确,如1.1章节描述。

  • 确认串口收发通路正常,SF32LB55x、SF32LB56x、SF32LB58x板子bootmode拉高后,启动时烧录串口会有trace输出,可以用串口工具发送help指令看是否有反馈;SF32LB52x板子可以用7.2节描述进入boot模式,如果按照描述可进入说明正常

  • 异常情况下,进入boot模式进行验证

  • 串口烧录会有log保存,Butterfli.exe工具log是在工具目录下的 ImgDownUart_log.txt,Impeller.exe工具log是在工具路径下 log\channel\日期*.txt,具体信息如下,遇到问题可以做一下简单分析,把log提供给工具维护人员即可。

../../_images/log.png