[ZLG-MCU] EasyARM615开发板DEMO中uCOS_II移植中的错误

[复制链接]
 楼主| zizyang 发表于 2007-10-11 17:53 | 显示全部楼层 |阅读模式
<br />EasyARM615开发板的DEMO中提供的uCOS_II移植存在错误,所有的uCOS_II的例程都不能编译运行,经过多天查找,发现错误如下:<br />移植文件OS_Cpu_A.asm的第67行:<br /><br />AREA&nbsp;&nbsp;&nbsp;&nbsp;RESET,&nbsp;CODE,&nbsp;READONLY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----<br /><br />将段名“RESET”改成任意其他名称即可。<br /><br />该小小的错误耽误了我们许多天的时间,希望周立功以后在充分测试后再放出DEMO程序,不要再出现这这种低级错误。
zlgarm 发表于 2007-10-20 09:09 | 显示全部楼层

那可能是Keil的版本问题,请告诉我您使用的是什么版本的Keil?

  
zlgarm 发表于 2007-10-20 10:45 | 显示全部楼层

测试无问题。

&nbsp;&nbsp;&nbsp;&nbsp;我们重新对EasyARM615的uCOS-II模版编译测试,使用MDK3.11&nbsp;中国16K限制版,没有出现任何的错误。<br />&nbsp;&nbsp;&nbsp;&nbsp;请问你使用的KEIL是什么版本?是国际版还是中国版?有16K限制还是没有限制?
 楼主| zizyang 发表于 2007-10-20 16:50 | 显示全部楼层

to zlgarm

<br />我使用的是MDK3.05。<br /><br />我对该问题的理解:<br /><br />startup.s和OS_Cpu_A.asm都存在“RESET”段,链接器不知道应该把哪一段放在前面,经我们测试,在MDK3.05里,链接器将OS_Cpu_A.asm中的“RESET”段代码放到了中断向量区,造成程序无法运行。<br /><br />该问题可以通过两种方法解决:第一是我之前指出的不使用同一段名;方法二是如下所示的,在sct文件中指明将Startup.o的“RESET”段放在最前:<br /><br />LR_IROM1&nbsp;0x00000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;load&nbsp;region<br />&nbsp;&nbsp;ER_IROM1&nbsp;0x00000000&nbsp;0x00008000&nbsp;&nbsp;{&nbsp;&nbsp;;&nbsp;load&nbsp;address&nbsp;=&nbsp;execution&nbsp;address<br />&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(RESET,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;*(InRoot$$Sections)<br />&nbsp;&nbsp;&nbsp;.ANY&nbsp;(+RO)<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;RW_IRAM1&nbsp;0x20000000&nbsp;0x00002000&nbsp;&nbsp;{&nbsp;&nbsp;;&nbsp;RW&nbsp;data<br />&nbsp;&nbsp;&nbsp;.ANY&nbsp;(+RW&nbsp;+ZI)<br />&nbsp;&nbsp;}<br />}<br /><br />个人看法:没必要使用同一段名,简单重起一个段名就可以了。;-)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部