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

使用TMS32OF2812,将CCS3.1下正常的在线烧写flash工程移植到CCS4.2上遇到的问题,求助各位专家和高手们?

在CCS3.1下,升级工程updata和主应用工程app能互相引导配合,实现在线烧写flash功能,长期运行过,在线升级一直没问题。主要过程是:app.Out烧写至CDE区,updata.out烧写至A区,程序正常启动时由updata程序引导至0x3E8000即app程序入口,需要升级时由app程序跳转至0x3F7FF6开始运行updata程序。

最近更换了xds560v2的仿真器,想将平台迁移至CCS4.2上,移植工程编译通过了,主应用工程app单独运行正常,但配合升级工程updata时出现了不能引导app程序的问题,后经反汇编单步调试,发现程序跳转至0x3E8000后进入死循环找不到app程序的_c_int00和mian(),对比两个平台生产的map文件发现,经过CCS4.2编译后的app程序的_c_int00地址变化了,而且不是个固定值,跟之前CCS3.1下编译后_c_int00固定在地址0x3E8000的结果不一样,自己怀疑是这个原因造成程序引导失败,但不知道怎么解决?查资料说_c_int00在rst2800.lib中定义,尝试分别加载rst2800.lib和rst2800_ml.lib两种库结果都一样,为什么移植到CCS4.2编译后_c_int00地址变化了?移植后需要更改CMD文件吗?或是编译连接选项设置有问题吗?被这个问题困扰很久了,请大家帮帮忙吧,非常感谢!

user1548186:

回复 Forrest:

谢谢Forrest,我将codestart指定到0x3E8000后,程序可以顺利引导了。

另外再想请教个问题,CCS4下的hex2000和CCS3.1下的hex2000生成的二进制文件有区别不?我用原来编写的coff转换程序转换CCS4下生成的out文件好像有问题

在CCS3.1下,升级工程updata和主应用工程app能互相引导配合,实现在线烧写flash功能,长期运行过,在线升级一直没问题。主要过程是:app.Out烧写至CDE区,updata.out烧写至A区,程序正常启动时由updata程序引导至0x3E8000即app程序入口,需要升级时由app程序跳转至0x3F7FF6开始运行updata程序。

最近更换了xds560v2的仿真器,想将平台迁移至CCS4.2上,移植工程编译通过了,主应用工程app单独运行正常,但配合升级工程updata时出现了不能引导app程序的问题,后经反汇编单步调试,发现程序跳转至0x3E8000后进入死循环找不到app程序的_c_int00和mian(),对比两个平台生产的map文件发现,经过CCS4.2编译后的app程序的_c_int00地址变化了,而且不是个固定值,跟之前CCS3.1下编译后_c_int00固定在地址0x3E8000的结果不一样,自己怀疑是这个原因造成程序引导失败,但不知道怎么解决?查资料说_c_int00在rst2800.lib中定义,尝试分别加载rst2800.lib和rst2800_ml.lib两种库结果都一样,为什么移植到CCS4.2编译后_c_int00地址变化了?移植后需要更改CMD文件吗?或是编译连接选项设置有问题吗?被这个问题困扰很久了,请大家帮帮忙吧,非常感谢!

Forrest:

回复 user1548186:

二个hex2000会有不同,因为hex2000是编译器的组成部分,CCSV3.1中的编译器很老,是几年前的,V4中的是最新的。

请以V4中的hex2000转换结果为准,如有问题可以拿到坛上讨论讨论。

在CCS3.1下,升级工程updata和主应用工程app能互相引导配合,实现在线烧写flash功能,长期运行过,在线升级一直没问题。主要过程是:app.Out烧写至CDE区,updata.out烧写至A区,程序正常启动时由updata程序引导至0x3E8000即app程序入口,需要升级时由app程序跳转至0x3F7FF6开始运行updata程序。

最近更换了xds560v2的仿真器,想将平台迁移至CCS4.2上,移植工程编译通过了,主应用工程app单独运行正常,但配合升级工程updata时出现了不能引导app程序的问题,后经反汇编单步调试,发现程序跳转至0x3E8000后进入死循环找不到app程序的_c_int00和mian(),对比两个平台生产的map文件发现,经过CCS4.2编译后的app程序的_c_int00地址变化了,而且不是个固定值,跟之前CCS3.1下编译后_c_int00固定在地址0x3E8000的结果不一样,自己怀疑是这个原因造成程序引导失败,但不知道怎么解决?查资料说_c_int00在rst2800.lib中定义,尝试分别加载rst2800.lib和rst2800_ml.lib两种库结果都一样,为什么移植到CCS4.2编译后_c_int00地址变化了?移植后需要更改CMD文件吗?或是编译连接选项设置有问题吗?被这个问题困扰很久了,请大家帮帮忙吧,非常感谢!

lianqiang wen:

您好 能详细说说您是怎么实现的么   能留个联系方式 咱们交流下么

在CCS3.1下,升级工程updata和主应用工程app能互相引导配合,实现在线烧写flash功能,长期运行过,在线升级一直没问题。主要过程是:app.Out烧写至CDE区,updata.out烧写至A区,程序正常启动时由updata程序引导至0x3E8000即app程序入口,需要升级时由app程序跳转至0x3F7FF6开始运行updata程序。

最近更换了xds560v2的仿真器,想将平台迁移至CCS4.2上,移植工程编译通过了,主应用工程app单独运行正常,但配合升级工程updata时出现了不能引导app程序的问题,后经反汇编单步调试,发现程序跳转至0x3E8000后进入死循环找不到app程序的_c_int00和mian(),对比两个平台生产的map文件发现,经过CCS4.2编译后的app程序的_c_int00地址变化了,而且不是个固定值,跟之前CCS3.1下编译后_c_int00固定在地址0x3E8000的结果不一样,自己怀疑是这个原因造成程序引导失败,但不知道怎么解决?查资料说_c_int00在rst2800.lib中定义,尝试分别加载rst2800.lib和rst2800_ml.lib两种库结果都一样,为什么移植到CCS4.2编译后_c_int00地址变化了?移植后需要更改CMD文件吗?或是编译连接选项设置有问题吗?被这个问题困扰很久了,请大家帮帮忙吧,非常感谢!

lianqiang wen:

我的  qq635957059   邮箱 wenlianqiang@163.com

赞(0)
未经允许不得转载:TI中文支持网 » 使用TMS32OF2812,将CCS3.1下正常的在线烧写flash工程移植到CCS4.2上遇到的问题,求助各位专家和高手们?
分享到: 更多 (0)