TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280039: 安全启动模块移植无法正常运行

Part Number:TMS320F280039

TMS320F28003x 平台已有可以正常使用的源工程A,在源工程A上建立项目分支B与开发分支C。

现在在开发分支C上已经实现了boot安全启动,单独测试开发分支C是OK的。

现在将开发分支C集成到项目分支B上,B编译的hex无法跑起来,但是C编译的hex可以跑起来。

尝试过以开发分支C为基准,把项目分支B的代码移植到C上,编译生成的hex也跑不起来。

多次对比配置,未找到问题

对比C和B编译生成的文件,在bin文件的对比中找到异常:正常可以跑起来的hex,其bin文件大概在0x6exxx处有一段代码,看起来跟DCSM有关

但是不能跑起来的hex,bin文件相对于正常的bin文件,在前面塞了0x10000个字节,并且首地址为跟DCSM 相关的代码

大概示意如下:

正常bin:

0x00000  aa bb cc dd

……

0x6exxx  dd cc ss mm

不正常的bin:

0x00000 dd cc ss mm

……

0x10000  aa bb cc dd

在对比了之后,尝试把代码部分一部分一部分移植

开发分支C:ok

移植了项目分支B的uds模块的开发分支C:不行  B的uds模块比C的usd模块代码量要更大

移植了分支B bsw 的开发分支C:ok

移植了分支B bsw 与一部分应用bsw的开发分支C:不行,增加代码部分大概是多开了个中断?

由于是内网开发,靠记忆整理过程,无法传代码,请见谅。

想问下有没有什么解决思路,谢谢。

Ben Qin:

你好,为了更好的解决您的问题,我将咨询TI资深相关工程师,一旦有回复会立即回复您。

,

Z JC:

问题已解决。在反复移植代码测试后发现,

问题1:0x80002~0x80010被安全启动模块使用,源工程有设置RESET_FILL固定为0xff,应去掉。

问题2:项目分支B中有部分函数放到TI.ramfunc中,在将这部分函数从TI.ramfunc移出测试OK,

反复测试后确认,在linkinfo.xml中,分支C的TI.ramfunc固定起始地址在0x80100,当放入TI.ramfunc的函数增长linkinfo.xml中TI.ramfunc的末尾超过0x81000时,发生bin文件生成异常的情况,而分支B的TI.ramfunc起始地址不固定,有0x85xxx以上,对比分支B与分支C的flash.cmd文件,将分支C中某个“RUN”的设置(RAMS3S7)与分支B(RAMGS)一致,此时分支C中TI.ramfunc中长度不影响bin文件生成异常,并且测试OK

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280039: 安全启动模块移植无法正常运行
分享到: 更多 (0)