用户工具

站点工具


侧边栏

CC2650 Contiki 6Lowpan 开发

cc2650:sbl

TI CC13XX/CC2538/CC26XX 串口下载

该文件夹包含用于TI的CC2538/CC26XX/C13XX等SOCs(系统芯片)boot loader (引导加载)通信的python脚本,它可以通过简单的USB转串行转换器方便擦除、编程、验证和读取这些SOC的闪存。

环境搭建

运行python脚本的需要一个python编译器,如果是Linux或Mac用户不需要额外安装;如果是windows用户可以点击右边:Python 下载

与SOC的uart端口通信,需要一个USB转串行的转换器。

  • 如果使用配备有EM(评估模块)的SmartRF06电路板,可以采用板载的ftdi芯片的方式,确保板子设置了“使能UART ”跳线。你可以点击 这里 查看有关ftdi芯片在不同操作系统上的驱动程序的更多信息。
  • 如果使用的不是SmartRF06电路板,有许多便宜的USB转UART转换器可以选择,请确保使用3.3V电压。

依赖

如果你希望从Inter Hex文件编程设备,需要安装Intel Hex软件包:https://pypi.python.org/pypi/IntelHex(例如:运行pip install intel Hex)

脚本将尝试用python-magic自动检测您的固件是原始二进制文件还是Intel Hex (https://pypi.python.org/pypi/python-magic。可以运行pip install intel Hex来安装它。根据不同操作系统,安装python-magic可能会有其他不同依赖关系https://github.com/ahupp/python-magic#dependencies

如果没有安装python-magic,脚本将尝试通过查看文件扩展名来自动检测固件类型,但这不是最优的。如果文件后缀名为.hex .ihx .ihex ,脚本会假定固件是Intel Hex,除此之外的其他后缀名,脚本都会将固件视为二进制文件。

CC2538

连接SOC后,需要确保启动串行boot loader(引导加载)程序,没有有效程序的芯片(刚出厂芯片)会自动启动boot loader。将图像上传到芯片后,“Image Valid”(图像有效)位会设置为0,表示闪存中存在有效图像。在下一次重置时,boot loader程序不会启动,立即执行图像。

为了保证不被锁定,比如无法通过串口与SOC中的boot loader进行通信,需要在你的图像中开启boot loader的接口(脚本当前只检查固件中的512K型号)如果boot loader 接口被使能,当芯片复位且特定引脚被拉高或拉低(可配置)时boot loader会启用。

boot loader接口可被使能,也可配置为闪存中CCA区域中的8位boot loader接口字段。如果字段设置为0xF3FFFFFF,PA3引脚为低电平时boot loader将被使能。这意味着在按下 EM 复位 按钮的同时按住SmartRF06板上的 选择 按钮。假设确实被锁定或已经有一个SOC上闪烁的图像,需要用JTAG程序擦除。SmartRF06包含一个JTAG编程器和一个USB转Uart转换器。

CC26XX和CC13XX

该脚本已通过SmartRF06EB+CC2650 EM测试。CC2650 Sensortag上的物理接线在串行接口配置方面不符合ROM boot loader的要求。因此,需要通过脚本与Sensortag进行交互。

对于CC13XX和CC26XX系列,Rom boot loader是通过 BL_CONFIG 寄存器配置。首先将 BOOTLOADER_ENABLE 设为 0xC5 以便启用boot loader。

如果芯片没有被编程过有效图像以上就足够,如果存在有效图像,则BL_CONFIGERASE_CONF 寄存器的其余字段也必须正确配置:

  • 通过设置 BL_PIN_NUMBER 选择DIO
  • 通过设置 BL_LEVEL 为DIO选择有效电平(低/高)
  • 通过将 BL_ENABLE 设置为 0xC5 启用失败分析。
  • 确保 BANK_ERASE 命令是使能的:必须设置CCFG中 ERASE_CONF 寄存器中的BANK_ERASE_DIS_N 位,默认情况下BANK_ERASE 是使能的。

如果使用CC13XX和CC26XXware Contiki相关,相关设置位于 startup_files/ccfg.c 下。

与CC2538类似,假设复位时启用故障分析并且发现所选DIO处于活动级别,boot loader将被激活。

例如,将boot loader接口绑定到SmartRF06EB上的KEY_SELECT ,需要设置如下:

  • BOOTLOADER_ENABLE = 0xC5 (boot loader使能,CC13XX和CC26XXware 中的SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE
  • BL_LEVEL = 0x00 (低电平有效,CC13XX和CC26XXware 中的SET_CCFG_BL_CONFIG_BL_LEVEL
  • BL_PIN_NUMBER = 0x0B (DIO 11,CC13XX和CC26XXware 中的SET_CCFG_BL_CONFIG_BL_PIN_NUMBER
  • BL_PIN_NUMBER = 0x0B (开启故障分析,CC13XX和CC26XXware 中的SET_CCFG_BL_CONFIG_BL_ENABLE

这些设置对开发非常有用,但是在部署固件中启用故障分析可能会让恶意用户读出设备闪存的内容或将其删除,除非您了解安全性的影响,否则请勿在部署中启用此功能。

用法

该脚本将自动从/dev (OSX,Liunx)中的USB到Uart转换器自动选择第一个串行端口进行上传。在Linux下的SmartRF06B板上要小心,可能是jtag接口而不是uart接口。这种情况下需要使用 -p 手动选择正确的串行端口。Windows下的串行端口选择需要测试。

上传图像之前,请确保在SOC上启动boot loader,在CC2538DK 上 选择复位 按钮。执行 python cc2538-bsl.py -h 可以找到有关不同选项的更多信息。

备注

  • 尚不支持同时对多个SOC进行编程。
  • 读取512K芯片的完整闪存需要很长时间,使用length选项只能读取您感兴趣的内容。

加入我们

文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。

CC2640R2F&BLE5.0-乐控畅联 © Copyright 2017, 成都乐控畅联科技有限公司.

cc2650/sbl.txt · 最后更改: 2021/06/22 23:14 (外部编辑)