首页 » 智能 » 快捷又安然!若何运用芯片内部Bootloader烧写轨范?_的是_所示

快捷又安然!若何运用芯片内部Bootloader烧写轨范?_的是_所示

神尊大人 2024-08-28 05:20:22 0

扫一扫用手机浏览

文章目录 [+]

可是很多用户在量产的时候却犯难了,用XDS110 + Flash Programmer 2,效率很低,还要在GUI上各种配置,产线工人操作起来十分困难而且随意马虎失落误。
买一拖多的编程器配上位机,又舍不得口袋里的银子,而且不是TI官方出品,稳定性和可靠性难以得到担保。
本文给大家先容一种利用芯片内部Bootloader烧写程序的方法,进入Boot模式,用普通的串行接口就可以进行固件的勾引,FLASH的擦写,Program,不用费额外本钱。
而且这个bootloader是放在ROM里的,不会被误擦除, Boot的时候UART/SPI不断就没事,实在弗成load一半断了也无伤大雅,再boot一次就好了,即快捷又安全。

我们来看一下CC2640R2的Bootloader是怎么Run的。
CC13x0, CC26x0 SimpleLink Wireless MCU Technical Reference Manual(SWCU117H)第8章节Bootloader中详细先容了Bootloader的事理,功能,接口定义,包的组成,校验等等,内允许多,随意马虎犯困,现在来画一下重点。

快捷又安然!若何运用芯片内部Bootloader烧写轨范?_的是_所示 快捷又安然!若何运用芯片内部Bootloader烧写轨范?_的是_所示 智能

第一个常见的问题是什么情形下会进Bootloader,进Bootloader会不会影响运用程序的实行?如果使能了Bootloader,有两种情形下会进,第一种情形是一个FLASH里没有任何镜像的新芯片在上电后;第二种情形是开启了Bootloader backdoor,并且预先定义的backdoor PIN脚被设置到精确的逻辑电平。
上述条件不知足,在上电后,芯片优先实行运用程序。
以是Bootloader和运用程序实行的条件不同,以是并不会相互影响。

快捷又安然!若何运用芯片内部Bootloader烧写轨范?_的是_所示 快捷又安然!若何运用芯片内部Bootloader烧写轨范?_的是_所示 智能
(图片来自网络侵删)

第二个常见的问题是什么是Bootloader backdoor?实际上便是为芯片进入Bootloader留的一个后门。
用户可以通过BL_CONFIG寄存器的BL_ENABLE位使能这个backdoor,并预设某个GPIO在某个电平的时候启用这个Backdoor,在Reset的时候,芯片内部会自动检测预设条件是否知足,来决定是否进入Bootloader模式。
如图1所示,BL_CONFIG是实现Bootloader最主要的寄存器,我们后面在讲代码时会参照这个寄存器,其解释在SWCU117H也可以找到。

图 1. BL_CONFIG寄存器解释

第三个常见的问题也是随意马虎犯的缺点是是不是CC2640R2的所有接口和PIN脚都支持Bootloader?答案是否定的。
CC2640R2的Bootloader只支持两种接口,UART和SSI,而且仅有UART0 和 SSI0 支持,不同封装的芯片对应的引脚也有差别,如图2所示,利用时要特殊把稳。

图 2. CC2640R2 Bootloader接口定义

对付UART0来说,我们芯片理论上可以达到3Mbaud(48M/16)的最大波特率,但是片内ROM中的Bootloader固件只支持1.6Mbaud。
SSI0是Motorolar格式的,SPH=1,SPO=1,SSI0时钟最快频率是4Mbaud(48M/12)。
不过一味追求接口的速率也没有必要,毕竟下载程序的速率瓶颈在FLASH的读写速率。

实在要点就这么多,很大略吧。
很多用户会有疑问是不是要把TI规定的协议搞得很透才能实现Bootloader?当然不是,TI工程师的义务便是把繁芜的问题变得大略,只要把配置搞对,配上精确的上位机,一秒上手不是难事。
下面就以UART为例详细跟大伙说说Bootloader在CC2640R2上是怎么实现的。

工欲善其事,必先利其器,请准备好下面的IDE环境,蓝牙协议栈和硬件平台。

值得一提的是,sblAppEx.exe 是TI专门为CC2640R2实现Bootloader开拓的工具,并向客户开放源码,可以基于此二次开拓,

下载地址:http://www.ti.com/lit/zip/swra466。

首先,我们须要修正一下Bootloader的设置,在sourcetidevicescc26x0r2startup_files里,打开ccfg.c,对几个宏定义做出配置,如下图3所示,依据则是图1的BL_CONFIG。

图 3. 修正ccfg.c中的宏定义以匹配Bootloader的哀求

在这里我们用DIO15高电平作为Bootloader backdoor的拍门砖,当然也可以根据用户实际须要选择相应的DIO。
配置好后,点击IAR的编译下载按钮,就可以在simple_peripheraltirtosiarappFlashROM_

StackLibraryExe里看到刚刚编译好的带Bootloader功能的镜像文件,我们须要的是.bin结尾的,如图4所示。

图 4. 编译天生的不同格式的镜像文件

将天生的.bin文件复制到sblAppEx.exe所在根目录下,即sblAppEx_1_02_00_00bin。
由于sblAppEx.exe自动识别的是blinky_backdoor_select_btn2650.bin,以是须要把刚天生的ble_simple_peripheral_cc2640r2lp_app_Flash

ROM_StackLibrary.bin改个名字。
当然了,也可以通过修正sblAppEx.exe的源码识别用户所需的.bin,此处不再赘述。
然后,按如下步骤操作:

1) DIO15接成高电平。

2) RESET。
重新上电或者按LAUNCHPAD的RESET按钮均可。

3) 在DOS界面选择0,即XDS110 Class Application/User UART <COM56>,回车。
不同电脑可能会识别不同的串口号,这个无关紧要。

如果设置都精确的话Bootloader开始事情,经由Erasing flash,Writing flash,Calculating CRC on device,Comparing CRC这一系列过程后,Bootloader更新程序就完成了,末了系统会Reset device,全体流程如图5所示。

图 5. 实行精确的Bootloader的流程

一起OK后,此时的LAUNCHPAD里便是新的固件所示现的功能啦!
如果配置不对的话,这个App是会闪退的,无法完成Bootloader的功能。
如果不想用板载的XDS110,用自己的USB转串口工具也是可以的,只不过不会跳出那么多跟XDS110有关的COM ports了,取而代之的是USB Serial Ports,串口号不用太纠结。

图 6. USB转串口工具的COM ports

当然啦,有可能你双击sblAppEx.exe来实行,但实行完一系列操作后会自动退出,看不到任何Log,办理的方法是不要双击进入程序,在windows的run里用cmd命令,如图7所示,切到sblAppEx.exe所在文件夹就可以啦。
如果某个环节碰着任何问题,Bootloader就会中断,DOS界面会提示ERROR,详细可以对照sblAppEx.exe的源码进行检讨,此处不再赘述。
须要把稳的是,如果不用Bootloader模式,Bootloader backdoor的引脚一定要接固定电平,此处DIO15一定要接低电平,不能悬空。

图 7. 从Windows的cmd进入程序可防止自动退出

主要的事再说一遍,sblAppEx.exe是开源的,用户可以根据须要修正源码实现定制化的功能,比如UART波特率和上文提到的镜像名称等等。

是不是产线上用起来既大略又方便呢,基本是一键式下载,既高效又防止误操作。
当然啦,还可以适当修正一下下载工具和上位机软件,就可以实现多个器件的下载。
打开你的环境,拿起你的开拓板,来试一下吧!
来源:TI中文社区

更多干货请关注微信公众年夜众号“电子芯吧客”!

相关文章