VxWorks下s3c2410的BSP调试问题

xixileigehaha 2016-01-26 05:21:36
用ADS1.2调试bsp时,romInit.s文件中的ldr pc, L$_HiPosn会跳转到其他地方,并进入死循环。正常情况是什么样的,继续执行HiPosn吗?


其中,config.h中的配置如下:
#define LOCAL_MEM_LOCAL_ADRS 0x30000000 /* fixed at 0x30000000 */
#define LOCAL_MEM_BUS_ADRS LOCAL_MEM_LOCAL_ADRS /* fixed at 0x30000000 */
#define LOCAL_MEM_SIZE 0x04000000 /* 64 Mbytes */
#define LOCAL_MEM_END_ADRS (LOCAL_MEM_LOCAL_ADRS + LOCAL_MEM_SIZE)

#define ROM_BASE_ADRS 0x00000000 /* base of Flash/EPROM */
#define ROM_TEXT_ADRS ROM_BASE_ADRS /* code start addr in ROM */
#define ROM_WARM_ADRS 0x00000004 /* code start addr in ROM */
#define ROM_SIZE 0x00100000 /*size of ROM holding VxWorks*/

#define ROM_COPY_SIZE ROM_SIZE
#define ROM_SIZE_TOTAL 0x00200000 /* total size of ROM */

#define ROM_MAC_ADRS 0x00040000

#define RAM_LOW_ADRS 0x30010000 /* VxWorks image entry point */
#define RAM_HIGH_ADRS 0x33000000 /* RAM address for ROM boot */

#undef VEC_BASE_ADRS /*Add abnormity vector */
#define VEC_BASE_ADRS 0x30000000
...全文
595 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
夫人的泡泡鱼 2016-02-12
  • 打赏
  • 举报
回复
学习了,不过提个建议:可以让硬件厂家提供BSP的模板,然后参照修改,事半功倍!
土豆 2016-01-28
  • 打赏
  • 举报
回复
可以说是HiPosn,也可以说不是。 你要注意,这是bootrom位置无关代码的处理技术。在程序连接的时候,地址是按照内存中的布局来设定的,而这个程序运行的时候是在flash上。两个地址段是不一样的。对于HiPosn这个label来说,他指向的是内存中的地址,而这时候程序PC指针指向的是flash中的地址,二者并不一致,所以说程序下来运行的是是那一段代码,但位置并不是在HiPosn所在的地方。二者偏移的计算方式参见后面的L$_HiPosn定义。 L$_HiPosn: .long ROM_TEXT_ADRS + HiPosn - FUNC(romInit) 因为你有仿真器,其实你是可以看看指令运行的地址的: LDR pc, L$_HiPosn HiPosn: 肯定跟连接地址时候的地址不一样

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧