您好!
我最近尝试使用MSP430定制 BSL 包中的模板为 MSP430F5342器件创建定制 BSL。
我使用了 MSP430F543xA 器件的模板、并将存储器映射更改为 a)根据我的器件进行调整、b)将 BSL 代码加载到 BSL 部分(根据模板中的.map 文件、 代码从0x10000开始加载到闪存中、而不是从0x1000开始的 BSL 区域。) 当尝试将样本 BSL 代码加载到 BSL 区域时、空间不足、因此需要一个溢出区域。 为了适应这种情况、我对 lnk_msp430f5342.cmd 进行了以下修改:
在存储器部分:
/*删除信息 MEM 部分 INFOA :origin = 0x1980、length = 0x0080 信息 :origin = 0x1900,length = 0x0080 信息系统 :origin = 0x1880、length = 0x0080 信息系统 :origin = 0x1800、length = 0x0080 //使用此区域进行 BSL 溢出 */ //添加了 BSL & BSLOF (溢出)部分--- BSL:origin = 0x1042,length = 0x7AE BSLOF:origin = 0x1880,length = 0x200 //---------------
在部分中:
//将所有输出段放置到新定义的存储器段中 .text :{}>> BSL | BSLOF//代码 .text:_ISR:{}>> BSL | BSLOF// ISR 代码空间 .cinit :{}> BSL | BSLOF//初始化表 .const :{}>> BSL | BSLOF //常量数据 .cio :{}> RAM // C I/O 缓冲器 .pinit :{}> BSL | BSLOF // C++构造函数表 二进制文件 :{}> BSL | BSLOF //引导时初始化表 init_array:{}> BSL | BSLOF // C++构造函数表 .mspabi.exidx:{}> BSL | BSLOF // C++构造函数表 .mspabi.extab:{}> BSL | BSLOF // C++构造函数表 #ifdef __TI_Compiler_version__ #if __TI_Compiler_version__>=15009000 .TI.ramfunc:{} load=BSL | BSLOF、run=RAM、table (BINIT) #endif #endif
项目已成功编译、我能够将其加载到器件中。 但是、在加载几次之后、我无法再访问器件并获取该消息
"连接到目标时出错:
器件的调试接口已被保护"
我不明白为什么会这样做。 我检查了 BSL430_API.c 文件、并且在我的项目中锁定密钥仍然是0xFFFFFFFF、所以 JTAG 保险丝应该没有熔断。 导致此行为的原因是什么? 是否可以解锁器件?
谢谢、
svl123