红联Linux门户
Linux帮助

ARM的学习历程

发布时间:2011-02-27 19:46:25来源:红联作者:txgc_wm
[i=s] 本帖最后由 txgc_wm 于 2011-3-20 21:18 编辑 [/i]

为什么程序只能通过KEIL仿真,而编译后的HEX代码烧写到开发板上后无法运行?

可以通过修改一下修改实现:

点击魔术棒-linker-edit进入:RUNINARM.SCT分散加载文件,对其进行修改。

LR_ROM1 0x30000000 { ; load region
ER_ROM1 0x30000000 0x0200000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_RAM1 0x30800000 0x0800000 { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM1 0x40000000 0x00001000 {
.ANY (+RW +ZI)
}
}
LR_ROM1:0X30000000;下载到内存,将其修改到下载到NOR FLASH即可,即修改为:
LR_ROM1:0X00000000
ER_ROM1 0x30000000 0x0200000修改为: ER_ROM1 0x00000000 0x0200000.
修该保存后然后进行编译即可。


RESET为启动代码中定义的代码域标识!
文章评论

共有 9 条评论

  1. vac1314 于 2011-03-15 00:17:40发表:

    我的flash 不知道怎么回事不能烧写 {:2_91:}

  2. txgc_wm 于 2011-03-14 23:55:46发表:

    相信一切问题都是能够得到解决的!

  3. smallhappiness 于 2011-03-11 19:57:49发表:

    好复杂,学习

  4. cjzhang 于 2011-03-06 22:49:20发表:

    支持一下!

  5. txgc_wm 于 2011-03-02 19:23:43发表:

    5# 张无忌1987


    三星的!

  6. 张无忌1987 于 2011-03-01 22:13:45发表:

    什么开发板啊?

  7. singleym 于 2011-02-28 10:09:50发表:

    技术帖,不过不是很懂~
    支持下~

  8. deepwhite 于 2011-02-27 22:23:21发表:

    引用:
    改为0X00000000是因为nor flash是从该地址处开始执行的,而0X30000000是sdram的起始地址,仿真是直接将bin文件下载到sdram中,所以之前设置0X30000000为起始code的地址。
    txgc_wm 发表于 2011-2-27 21:17


    这个东西应该是硬件相关的,不是所有的板子都一样的。个人感觉。

  9. txgc_wm 于 2011-02-27 21:17:55发表:

    改为0X00000000是因为nor flash是从该地址处开始执行的,而0X30000000是sdram的起始地址,仿真是直接将bin文件下载到sdram中,所以之前设置0X30000000为起始code的地址。