打印
[ZLG-MCU]

EasyARM615开发板DEMO中uCOS_II移植中的错误

[复制链接]
1692|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zizyang|  楼主 | 2007-10-11 17:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EasyARM615开发板的DEMO中提供的uCOS_II移植存在错误,所有的uCOS_II的例程都不能编译运行,经过多天查找,发现错误如下:
移植文件OS_Cpu_A.asm的第67行:

AREA    RESET, CODE, READONLY
        -----

将段名“RESET”改成任意其他名称即可。

该小小的错误耽误了我们许多天的时间,希望周立功以后在充分测试后再放出DEMO程序,不要再出现这这种低级错误。

相关帖子

沙发
zlgarm| | 2007-10-20 09:09 | 只看该作者

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

使用特权

评论回复
板凳
zlgarm| | 2007-10-20 10:45 | 只看该作者

测试无问题。

    我们重新对EasyARM615的uCOS-II模版编译测试,使用MDK3.11 中国16K限制版,没有出现任何的错误。
    请问你使用的KEIL是什么版本?是国际版还是中国版?有16K限制还是没有限制?

使用特权

评论回复
地板
zizyang|  楼主 | 2007-10-20 16:50 | 只看该作者

to zlgarm


我使用的是MDK3.05。

我对该问题的理解:

startup.s和OS_Cpu_A.asm都存在“RESET”段,链接器不知道应该把哪一段放在前面,经我们测试,在MDK3.05里,链接器将OS_Cpu_A.asm中的“RESET”段代码放到了中断向量区,造成程序无法运行。

该问题可以通过两种方法解决:第一是我之前指出的不使用同一段名;方法二是如下所示的,在sct文件中指明将Startup.o的“RESET”段放在最前:

LR_IROM1 0x00000000         {    ; load region
  ER_IROM1 0x00000000 0x00008000  {  ; load address = execution address
   Startup.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00002000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

个人看法:没必要使用同一段名,简单重起一个段名就可以了。;-)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

1

粉丝