1.在Flash Programmer 2(E:\Program Files (x86)\Texas Instruments\SmartRF Tools\Flash Programmer 2\doc\help)的帮组文档中我们可以看到cc2640是可以用命令行的方式烧录的
我们使用的命令是:
srfprog -t soc(XDS-06EB12100300A,CC2538)-e -p -v -fc:\ test.hex
-t 后面是指定烧录目标
-e 表示擦除全部扇区
-p 表示在源文件中编程所有页面
-v 表示烧录检查默认是CRC check
-f 后面表示烧录用的hex文件
这些参数和Flash Programmer 2中所对应的参数是一一对应的
但是在烧录时如果我们在-f 参数后跟应用hex文件和协议栈的文件这样烧录是不会成功的,通过查看Flash Programmer 2的烧录日志我们可以发现它是将两个文件读入后合并再一起烧写的,但是它是怎样拼接两个文件我们不得而知
不过Flash Programmer 2给我们提供了一个功能,它可以读取flash中的数据并保存成文件
所以我们反其道而行之读取了flash中的文件保存成hex格式文件, 然后我们把读出的文件重新烧录发现成功了
下面是烧录日志:
-----------------------------------------------------------------------------------------------
>Initiate access to target: XDS-00000540.
>Reading file: F:/mywork/c2640/cc2640_code/ti/simplelink/ble_cc26xx_2_00_00_42893/Projects/ble/SimpleBLEPeripheral/CC26xx/IAR/Application/CC2640/FlashROM/Exe/SimpleBLEPeripheralAppFlashROM.hex.
>Reading file: F:/mywork/c2640/cc2640_code/ti/simplelink/ble_cc26xx_2_00_00_42893/Projects/ble/SimpleBLEPeripheral/CC26xx/IAR/Stack/CC2640/FlashROM/Exe/SimpleBLEPeripheralStackFlashROM.hex.
>Start flash erase ...
>Erase finished successfully.
>Start flash programming ...
>Programming finished successfully.
>Start flash verify ...
>Skip verification of unassigned page: 7.
>Skip verification of unassigned page: 8.
>Skip verification of unassigned page: 9.
>Skip verification of unassigned page: 10.
>Skip verification of unassigned page: 11.
>Skip verification of unassigned page: 12.
>Skip verification of unassigned page: 13.
>Page: 0 verified OK.
>Page: 1 verified OK.
>Page: 2 verified OK.
>Page: 3 verified OK.
>Page: 4 verified OK.
>Page: 5 verified OK.
>Page: 6 verified OK.
>Page: 14 verified OK.
>Page: 15 verified OK.
>Page: 16 verified OK.
>Page: 17 verified OK.
>Page: 18 verified OK.
>Page: 19 verified OK.
>Page: 20 verified OK.
>Page: 21 verified OK.
>Page: 22 verified OK.
>Page: 23 verified OK.
>Page: 24 verified OK.
>Page: 25 verified OK.
>Page: 26 verified OK.
>Page: 27 verified OK.
>Page: 28 verified OK.
>Page: 29 verified OK.
>Page: 30 verified OK.
>Page: 31 verified OK.
>Verification finished successfully.
>Reset target ...
>Reset of target successfull.
-----------------------------------------------------------------------------------------------
部分命令参考:
命令行界面(CLI)
命令行界面在脚本控制编程时可能很有用。Flash版本的CLI版本与GUI版本具有相同的功能。
如果没有任何参数启动CLI,则会列出CLI版本的所有可用选项。见下图。
可以通过单击GUI右上角的“工具”图标来启动“命令行界面”窗口。将启动一个命令窗口,其中使用CLI可执行文件的位置更新环境变量(路径)。只有启动CLI版本的Flash编程器才需要可执行文件的名称。
CLI选项
Flash Programmer支持以下命令行选项
> srfprog [Target] [Actions] [File] [Address]
参数的顺序是无关紧要的。
具体选项的说明可以通过以下方式获得:
> srfprog -h [target | 动作| 文件| 地址| 示例| 帮帮我]
只需要两个第一个字母:例如:srfprog -h ta
帮助符号: | |
[] | 方括号用于可选参数。 |
%% | 用于替换符号的百分比标记。 |
{} | 用于需要其中一个选项的卷曲括号。 |
| | 垂直条可供选择。 |
目标:{-t | --target} [soc | lsidx]
soc(%device id%[,%chip id%])SoC Device
%设备ID%:已连接EB的设备ID。此参数区分大小写。
%芯片ID%:芯片ID。如果没有给出XDS仿真器设备,
探测确定连接的SoC将是
执行,这将需要更长的时间。
芯片ID与COM设备结合使用是必需的。
lsidx(%index%)列表索引
%index%:从list命令返回的已连接设备的索引。
-------------------------------------------------- -----------------------------
操作:[-ls | --list] | [-e | --erase] | [-p | - 程序] |
[-v | --verify] | [-r | --read] | [-w | - 写] |
[-k | --keep] | [-c | --change] | [-rs | --reset] |
[-j4 | --jtag4]
{-ls | --list} [min | 全部| 汽车]
min:列出连接的Cebal设备(默认)。
全部:列出所有连接的设备。
自动:列出所有连接的设备,并自动尝试查找芯片ID
用于基于ARM的设备。
{-e | --erase} [all | p | pif | epfw | ep | 强制]
全部:清除所有未保护的页面(默认)。
p(%pages%):擦除给定的页面。
pif:清除源文件中的页面。
强制:强制质量擦除。不能合并
其他行为。
{-p | --program} [all | epfw | EP]
全部:在源文件(默认)中编程所有页面。
epfw(%value%):从给定值填充的源文件中排除页面。
ep(%pages%):从源文件中排除给定的页面。
{-v | --verify} [crc | rb] [pif | 全部| epfw | EP]
crc:使用CRC校验和验证页面(默认)。
rb:使用回读和对位比较验证页面。
all:验证源文件中的所有页面(默认)。
epfw(%value%):从给定值填充的源文件中排除页面。
ep(%pages%):排除给定页面。
{-r | --read} [all | p | addr | macpri | macpri154 | macprible |
macsec | macsec154 | macsecble]
全部:阅读所有页面(默认)。输出到文件。
p(%页%):阅读给定页面。输出到文件。
ADDR(0X%地址%,%长度%):
从给定的地址读取给定的长度。
macpri:读取主要IEEE 802.15.4 MAC地址。
macpri154:读主要IEEE 802.15.4 MAC地址。
macprible:读取主BLE MAC地址。
macsec:读取次要IEEE 802.15.4 MAC地址。
macsec154:读取次要IEEE 802.15.4 MAC地址。
macsecble:读取Secondary BLE MAC地址。
{-w | --write} {macpri | macsec | macsec154 | macsecble | ccfg | addr | p}
macpri = 01.02.03.04.05.06.07.08:
主节目IEEE 802.15.4 MAC地址。
主要地址的写入仅支持CC2538和
只有信息页面没有被锁定。
macsec = 01.02.03.04.05.06.07.08或
macsec154 = 01.02.03.04.05.06.07.08:
程序次要IEEE 802.15.4 MAC地址。
macsecble = 01.02.03.04.05.06:
程序二级BLE MAC地址。
ccfg({wpp(%pages%)| ldbg | disbl})
以下选项的组合是可能的,必须分开
通过','
wpp =%pages%:编程具有页面锁定的CCFG区域
给定页面的位。
ldbg:程序CCFG区域为bit
锁定调试接口
disbl:程序CCFG区域与位
禁用引导加载程序接口
ADDR(0X%地址%,%长度%)= 0X%值%
用给定的值填充闪存中的地址范围。
该值必须以一个字节的十六进制数给出
P(%页%)= 0X%值%
用给定的值填充Flash中的页面范围。
该值必须以一个字节的十六进制数给出
{-k | --keep} {mac | macble | mac154&macble | CCFG}
mac:从Target设备保留(或保留)IEEE Mac地址。
macble:从Target设备保留(或保留)Ble Mac地址。
mac154&macble:从目标设备保留(或保留)IEE和Ble Mac地址。
ccfg:保持(或保留)从目标设备完成CCFG区域。
{-c | --change} {mac | mac154 | macble | efk | ldbg | wpp | disbl}
选项的组合是可能的,必须分开
通过','
mac = 01.02.03.04.05.06.07.08或
mac154 = 01.02.03.04.05.06.07.08:
使用IEEE 802.15.4 MAC地址更改(补丁)闪存映像。
macble = 01.02.03.04.05.06:
使用BLE MAC地址更改(补丁)闪存映像。
mac154 = 01.02.03.04.05.06.07.08 macble = 01.02.03.04.05.06:
使用两个地址更改(补丁)闪存映像。
ekf(%file%,%address%):
使用加密密钥数据更改(补丁)闪存映像。
具有加密密钥证书和闪存的文件
必须给出地址。
WPP(%页数%):
更改(补丁)CCFG区域在闪存图像与页锁定
给定页面的位。
ldbg:
更改(补丁)闪存映像中的CCFG区域
锁定调试接口
disbl:
更改(补丁)闪存映像中的CCFG区域
禁用引导加载程序接口
{-rs | --reset} [normal | 无| 调试| 硬| pin | pinHib]
引脚复位是默认值。
有关详细信息,请参阅帮助文档
描述不同的重置选项。
复位动作必须与擦除或程序动作相结合。
{-j4 | --jtag4}
使用4针jtag。适用于XDS100v3 / XDS200的选件,作为2引脚cJTAG
这些模拟器的默认值。
{-up | --updateEmulator}
更新仿真器上的固件。选项适用于XDS110,不能
结合其他行动。更新过程中请勿拔下调试探头。
-------------------------------------------------- -----------------------------
文件:{-f | --file}%file%
%file%:完全或相对路径。例如C:\ myfolder \ test.bin。
带有空格的路径名必须用引号字符括起来。
例如“C:\ myfolder \ my test.bin”
或“C:\ Program Files \ myfolder \ test.bin”
-------------------------------------------------- -----------------------------
地址:{-a | - 地址} [0x]%地址%
%地址%:开始编程的Flash地址。
-------------------------------------------------- -----------------------------
例子:
> srfprog -ls
> srfprog -ls all
> srfprog -ls auto
> srfprog -t lsidx(0)-e all
> srfprog -t lsidx(0)-r macsec
> srfprog -t lsidx(0)-r all -f C:\ myfolder \ readback.bin
> srfprog -t lsidx(0)-rp(0-4)-f C:\ myfolder \ readback.bin
> srfprog -t lsidx(0)-r addr(0x200000,8)
> srfprog -t lsidx(0)-w macsec = 01.02.03.04.05.06.07.08
> srfprog -t lsidx(0)-e pif -p epfw(0)-f C:\ myfolder \ test.bin -a 0x200000
> srfprog -t lsidx(0)-e pif -p epfw(0)-v rb -f C:\ myfolder \ test.bin -a 0x200000
> srfprog -t lsidx(0)-e all -p -v rb epfw(0x55)-f C:\ myfolder \ test.bin -a 0x200000
> srfprog -t lsidx(0)-e all -p -v rb ep(0-1)-f C:\ myfolder \ test.bin -a 0x200000
> srfprog -t lsidx(0)-e pif -p epfw(0)-v crc -f C:\ myfolder \ test.bin -a 0x200000 -k mac
> srfprog -t lsidx(0)-e pif -p epfw(0)-v crc -f C:\ myfolder \ test.bin -a 0x200000 -c mac = 01.02.03.04.05.06.07.08
> srfprog -t lsidx(0)-e pif -p epfw(0)-v crc -f C:\ myfolder \ test.hex -c ekf(certificate.txt,0x27FF6C)
> srfprog -t soc(XDS-06EB12100300A,CC2538)-e -p -v -fc:\ test.hex
> srfprog -t soc(COM1,CC2640)-e -p -v -fc:\ test.hex
-------------------------------------------------- ---------------------
2.然后我们用bin下的srfprog.exe在cmd下烧录是可以的
烧录过程:
3.我们可以单独将srfprog.exe和他的配置文件拷贝出来用python调用下一个烧录工具(dill文件我们可以将srfprog.exe考出后双击就会提醒我们缺哪些dill文件,然后我们拷贝出来即可)
python中调用cmd命令
烧录工具: