在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