0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CC2640R2的Bootloader是怎么Run的

电子设计 来源:网友电子设计发布 作者:网友电子设计发布 2021-12-29 14:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CC2640 R2是德州仪器推出的面向 Bluetooth Smart 应用的低功耗无线 MCU。该芯片运行TI的BLE协议栈,具有功耗低,外设种类丰富,射频性能好等特点。利用它可以实现许多有趣的应用,收到了用户的广泛欢迎。

可是很多用户在量产的时候却犯难了,用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,有两种情况下会进,第一种情况是一个FLASH里没有任何镜像的新芯片在上电后;第二种情况是开启了Bootloader backdoor,并且预先定义的backdoor PIN脚被设置到正确的逻辑电平。上述条件不满足,在上电后,芯片优先执行应用程序。所以Bootloader和应用程序执行的条件不同,所以并不会相互影响。

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

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

对于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环境,蓝牙协议栈和硬件平台。插播一条广告,LAUNCHXL-CC2640R2的demo板可以在TI的estore上购买。https://store.ti.com/LAUNCHXL-CC2640R2-CC2640R2-LaunchPad-P51441.aspx

IDE环境 IAR 8.11.2
蓝牙协议栈版本 1_50_00_58
硬件平台 LAUNCHXL-CC2640R2
工程文件 simplelink_cc2640r2_sdk_1_50_00_58\examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral
上位机软件 sblAppEx.exe
仿真器 LAUNCHPAD板载XDS110

值得一提的是,sblAppEx.exe 是TI专门为CC2640R2实现Bootloader开发的工具,并向客户开放源码,可以基于此二次开发,下载地址:http://www.ti.com/lit/zip/swra466。

首先,我们需要修改一下Bootloader的设置,在source\ti\devices\cc26x0r2\startup_files里,打开ccfg.c,对几个宏定义做出配置,如下图3所示,依据则是图1的BL_CONFIG。

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

在这里我们用DIO15高电平作为Bootloader backdoor的敲门砖,当然也可以根据用户实际需要选择相应的DIO。配置好后,点击IAR的编译下载按钮,就可以在simple_peripheral\tirtos\iar\app\FlashROM_StackLibrary\Exe里看到刚刚编译好的带Bootloader功能的镜像文件,我们需要的是.bin结尾的,如图4所示。

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

将生成的.bin文件复制到sblAppEx.exe所在根目录下,即sblAppEx_1_02_00_00\bin。由于sblAppEx.exe自动识别的是blinky_backdoor_select_btn2650.bin,所以需要把刚生成的ble_simple_peripheral_cc2640r2lp_app_FlashROM_StackLibrary.bin改个名字。当然了,也可以通过修改sblAppEx.exe的源码识别用户所需的.bin,此处不再赘述。然后,按如下步骤操作:

1) DIO15接成高电平。

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

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

如果设置都正确的话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波特率和上文提到的镜像名称等等。

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

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式处理
    +关注

    关注

    0

    文章

    341

    浏览量

    10449
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Art-Pi2BootLoader用rtthread有什么特殊的作用吗?

    我的基础不太好,在创建artpi2bootloader的例程的时候发现bootloader编译完好像不小,然后发现bootloader里面也用上了rtthread的系统,不太明白这里
    发表于 09-22 06:28

    Texas Instruments CC2651R3 SimpleLink™ 2.4GHz无线MCU技术解析

    Texas Instruments CC2651R3 SimpleLink™ 2.4GHz无线MCU是单协议2.4GHz无线微控制器 (MCU),支持Zigbee®、蓝牙® 5.2低功耗、IEEE
    的头像 发表于 09-16 15:13 578次阅读
    Texas Instruments <b class='flag-5'>CC2651R</b>3 SimpleLink™ 2.4GHz无线MCU技术解析

    Texas Instruments CC2340R2 SimpleLink™无线微控制器数据手册

    Texas Instruments CC2340R2 SimpleLink™无线微控制器(MCU)是一款2.4GHz无线设备,专为蓝牙^®^ 低功耗和Zigbee^®^ 而设计。这款无线MCU设计为
    的头像 发表于 08-02 09:19 1120次阅读
    Texas Instruments <b class='flag-5'>CC2340R2</b> SimpleLink™无线微控制器数据手册

    大彩讲堂:VisualHMI-LUA教程-on_run回调函数使用指南

    一、适合范围本文档适用于VisualHMI平台,Lua脚本语言为V5.3版本,配合工程可以完成大部分的内部逻辑处理。二、概述on_run(screen)周期回调函数,用该回调函数,会根据设定的时间
    的头像 发表于 07-23 15:25 910次阅读
    大彩讲堂:VisualHMI-LUA教程-on_<b class='flag-5'>run</b>回调函数使用指南

    瑞萨MCU方案:瑞萨RZ/G2L Bootloader单独编译方法详解

    会提出需要单独编译Bootloader的需求。为了满足用户需求,本文将介绍一种RZ/G2L上脱离Yocto的单独编译Bootloader的方法,从而能够快
    的头像 发表于 07-08 14:47 2270次阅读
    瑞萨MCU方案:瑞萨RZ/G<b class='flag-5'>2</b>L <b class='flag-5'>Bootloader</b>单独编译方法详解

    Texas Instruments LP-EM-CC2745R10-Q1 LaunchPad™开发套件特性/应用/布局

    Texas Instruments LP-EM-CC2745R10-Q1 LaunchPad™开发套件支持2.4GHz无线电操作,非常适合用于搭载集成式功率放大器器件的入门开发。该LaunchPad
    的头像 发表于 07-08 10:51 783次阅读
    Texas Instruments LP-EM-<b class='flag-5'>CC2745R</b>10-Q1 LaunchPad™开发套件特性/应用/布局

    Art-Pi2BootLoader用rtthread有什么特殊的作用吗?

    我的基础不太好,在创建artpi2bootloader的例程的时候发现bootloader编译完好像不小,然后发现bootloader里面也用上了rtthread的系统,不太明白这里
    发表于 05-27 06:08

    CCS开发CC2640R2F,

    设计的同样的主板,同样的CCS程序,Load下载后,有的连接正常,有的连接超时。
    发表于 05-17 07:31

    OV2640为什么在I2C下无法捕获图像?

    我正在开发基于 imx6ull 的定制板。因为我能够使用 OV5640 相机捕获图像,类似于我尝试使用 OV2640 ,在 I2C 下检测到但无法捕获图像,请完成我根据 OV2640 驱动程序文件在
    发表于 04-11 08:13

    合泰HOLTEK BH66R2640体脂DFE MCU产品特性介绍

    产品介绍 Holtek新推出BH66R2640 Body Fat DFE (Digital Front End) OTP MCU,整合体脂交流阻抗测量与24-bit Delta Sigma A/D
    的头像 发表于 04-01 16:47 919次阅读

    U-Boot 和 Bootloader,99% 的工程师都分不清?

    嵌入式软件工程师听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到底是啥。   今天就来简单讲讲 u-boot 和 bootloader 的内容以及区别
    的头像 发表于 03-25 20:47 1410次阅读

    自定义RISC V的bootloader-v3

    在生成SoC时,会生成一个预定义bootloader .bin文件,用于指定soc的工程运行的地址,这包括在flash的存储地址 ,加载到外存中的运行地址及在外存中分配的存储空间的大小 。下面我们
    的头像 发表于 03-10 09:05 1521次阅读
    自定义RISC V的<b class='flag-5'>bootloader</b>-v3

    LMG2640子卡评估模块LMG2640EVM-090介绍

    LMG2640 子卡评估模块 (EVM) 旨在提供一个快速简便的平台,以评估任何半桥拓扑中的 TI 集成 GaN 器件。该板设计为使用板底部边缘的 6 个电源引脚和 10 个数字引脚与更大的系统连接
    的头像 发表于 02-21 14:21 786次阅读
    LMG<b class='flag-5'>2640</b>子卡评估模块LMG<b class='flag-5'>2640</b>EVM-090介绍

    如果供电电压为3.3V,单端和差分模式下CC2541和CC2640的最小检测信号能达到多少?

    如果供电电压为3.3V(作为ADC参考电压),单端和差分模式下CC2541和CC2640的最小检测信号能达到多少?是不是根据ENOB来测试,精度可以达到12位吗? 项目急用,谢谢
    发表于 01-09 08:25

    英伟达收购AI初创公司Run:ai

    全球领先的芯片制造商英伟达近日正式完成了对以色列人工智能初创公司Run:ai的收购。这一收购案在经过欧盟反垄断机构的严格审查后,最终获得了批准,标志着英伟达在AI领域的布局又迈出了重要一步。 Run
    的头像 发表于 12-31 10:46 858次阅读