TI CC13xx/CC2538/CC26xx串行引导加载程序。

cc2538的Python项目详细描述



ti cc13xx/cc2538/cc26xx串行引导加载程序[![构建状态](https://travis-ci.org/jelmert/cc2538-bsl.svg?branch=master)](https://travis ci.org/jelmert/cc2538 bsl)
====



此文件夹包含一个python脚本,该脚本与德州仪器cc2538、cc26xx和cc13xx socs(片上系统)的引导加载程序通信。
AM,用一个简单的USB到串行转换器验证并读取这些SOC的闪存。


\soc的端口您需要一个usb到串行转换器:
*如果您使用安装了评估模块(em)的smartrf06板,您可以使用板载ftdi芯片。确保板上设置了"启用UART"跳线。您可以查看[此处][contiki cc2538dk]以了解有关此芯片在不同操作系统上的驱动程序的更多信息。
*如果您使用不同的平台,则有许多廉价的USB到UART转换器可用,但请确保使用具有3.3V电压电平的转换器。

如果希望能够从英特尔十六进制文件对设备进行编程,则需要安装intel hex软件包:https://pypi.python.or g/pypi/intelhex(例如,通过运行"pip install intelhex")。

g python magic:
(https://pypi.python.org/pypi/python magic)。您可以通过运行'pip install python magic'来安装它。请记住,python magic的安装可能有其他依赖项,具体取决于您的操作系统:(https://github.com/ahupp/python magic dependencies)。

但这是次优的。如果扩展名是`.hex`、`.ihx`或`.ihex`,脚本将假定固件是Intel十六进制文件。在所有其他情况下,固件将被视为原始二进制文件。

一个没有有效映像(程序)的芯片,当它来自工厂时,将自动启动引导加载程序。将图像上载到芯片后,"图像有效"位设置为0,表示flash中存在有效图像。在下一次重置时,引导加载程序将不会启动,映像将立即执行。
要确保您不会被"锁定",即不再能够通过串行方式与SOC中的引导加载程序通信,您需要在映像中启用引导加载程序后门(脚本当前仅在512K型号的固件上检查此功能)。当启动加载程序后门被启用时,启动加载程序将在芯片复位并且soc的特定引脚被拉高或拉低(可配置)时启动。
可以启用引导加载程序后门,并使用闪存中CCA区域中的8位引导加载程序后门字段进行配置。如果将此字段设置为0xf3ffffff,则在引导期间将引脚pa3拉低时将启用引导加载程序。这意味着按住SmartRF06板上的"选择"按钮,同时按下"em reset"按钮。
如果您确实将自己锁在外面,或者SOC上已经有图像闪烁,则需要JTAG程序员擦除该图像。这将重置映像有效位,并在下次重置时启用引导加载程序。smartrf06eb包含jtag编程器和usb到uart转换器。


\cc26xx和cc13xx

ace配置。因此,通过这个脚本与sensortag交互是l保持)不可能。

对于cc13xx和cc26xx系列,rom引导加载程序是通过ccfg中的"bl_config"寄存器配置的。` bootloader_enable `应该设置为'0xc5',以便首先启用bootloader。

如果存在有效映像,则还必须正确配置"bl_config"和"erase_conf"寄存器的其余字段:

*通过设置"bl_pin_number"选择一个DIO `
*通过设置"bl_level"为DIO选择一个活动级别(低/高)
*通过sett启用"故障分析"将"bl_enable"设置为"0xc5"
*确保"bank_erase"命令已启用:必须设置ccfg中"erase_conf"寄存器中的"bank_erase"dis_n位。` bank_erase`默认启用。

如果您使用的是cc13xx/cc26xxware,则相关设置位于"startup_files/ccfg.c"下。如果您使用的是contiki,则会出现这种情况。

rtrf06eb,您需要设置以下内容:

*`bootloader_enable=0xc5`(bootloader enable。`在cc13xx/cc26xxware中设置"ccfg_bl_config_bootloader_enable"
*"bl_level=0x00"(活动低)。`在cc13xx/cc26xxware中设置"ccfg_bl_config_bl_level"
*"bl_pin_number=0x0b"(DIO 11)。`在cc13xx/cc26xxware中设置"ccfg_bl_config_bl_pin_number"
*"bl_enable=0xc5"(启用"故障分析")。`在cc13xx/cc26xxware中设置ccfg-bl-config-bl-enable,这些设置对开发非常有用,但在部署的固件中启用故障分析可能会允许恶意用户读取或擦除设备闪存的内容。除非您了解安全含义,否则不要在部署中启用此功能。

注意,在linux下的smartrf06b板上,这可能是与uart接口类似的jtag接口。在这种情况下,使用"-p"选项手动选择正确的串行端口。Windows下的串行端口选择需要测试。

上载映像之前,请确保在SOC上启动引导加载程序(CC2538DK上的"select`+`reset")。
通过执行"python cc2538-bsl.py-h",可以找到有关不同选项的更多信息。

还不支持同时命名多个soc。
*读取512K芯片的完整闪存需要很长时间,请使用length选项仅读取您目前感兴趣的内容。

如果发现错误或改进了部分代码,请提交问题或请求。.

[分析](https://ga-beacon.appspot.com/ua-3496907-10/jelmert/cc2538-bsl?pixel)(https://github.com/igrigorik/ga beacon)

[python]:http://www.python.org/download/"python download"
[contiki cc2538dk]:https://github.com/contiki-os/contiki/tree/master/platform/cc2538dk"contiki cc2538dk readme"
[stm32loader]:https://github.com/jsnyder/stm32loader"stm32装载机

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java数据未插入SQLite数据库   Java中内存有效的对象创建   java在方法内部使用“this”(不用于调用方法、构造函数或变量)   java为什么这里会出现NullPointerException?   在REST中使用HATEOAS导致的java循环依赖   java如何定制spring boot横幅?   Java数字基数计算器(即基数10到基数5)   如果在Kotlin vs Java中声明,用作全局上下文的安卓 MainApplication类将崩溃   用于过滤对象的Java lambda函数   java从字符串数组中获取整数列表   java为什么Maven找不到org。json JPMS自动模块?   java将字符串数组转换为int   仅当与阈值字节匹配时,java才会在映射中填充字符串值