这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » ==ARM启动难点问题==问题已解决!

共11条 1/2 1 2 跳转至

==ARM启动难点问题==问题已解决!

菜鸟
2006-10-08 17:23:20     打赏
1、ARM启动是否从固定的地址开始,比如芯片内固化的BOOT;而不是一定从0地址开始?如果是这样,CPU如何控制使它从非0地址开始运行。
2、芯片内固化的BOOT和我们常说的BootLoader(Uboot等)有何不同,是使固化的BOOT引导Uboot,然后Uboot引导操作系统吗?
3、中断向量是绝对地址还是相对地址?
4、复位后PC指针是否一定为0,为什么我用AXD载入镜像后观察到PC为0x40000000(工程中设置了Image entry point为0x40000000);如果不是,如何执行不位于0地址的引导程序?例如芯片LPC2212等。
想听听权威的答案!
[align=right][color=#000066][此贴子已经被作者于2006-10-23 13:37:22编辑过][/color][/align]



关键词: 启动     难点     问题     解决    

菜鸟
2006-10-08 18:02:00     打赏
2楼

多谢版主热心帮忙!!

1、芯片内固化BOOT不普遍但也有,芯片内固化的BOOT和我们常说的BootLoader(Uboot等)有何不同,是使固化的BOOT引导Uboot,然后Uboot引导操作系统吗?

2、ARM启动是否从一定从0地址开始运行。LPC2000系列好像不是,内核如何让它从非0地址运行的。

3、这样说复位后pc不一定是0了?

[align=right][color=#000066][此贴子已经被作者于2006-10-8 10:21:37编辑过][/color][/align]

菜鸟
2006-10-08 18:36:00     打赏
3楼
再问一下,存储器映射是不是在内核执行第一条指令前进行的?不然如何执行不在0地址的boot block 。例如LPC2000系列

菜鸟
2006-10-08 19:36:00     打赏
4楼
有没有用知道怎样用arm核做cpu的,求大虾帮忙呀?这问题闹得我十一都一直再想!!!

菜鸟
2006-10-09 16:55:00     打赏
5楼

其实我问的是纯理论问题,对于你(lwx666)的情况应该有个寄存器位控制中断向量映射到不同的地址空间,比如LPC2000里的MAP1:0位:复位时为00就执行0x7fffe000的固化boot,启动后修改为11就执行外部存储器空间的程序0x80000000。

我是想知道没运行任何指令前cpu如何工作运行非0地址的程序。

我的问题归纳为四条

1、芯片内固化的BOOT和我们常说的BootLoader(Uboot等)有何不同,是使固化的BOOT引导Uboot,然后Uboot引导操作系统吗?

2、ARM启动是否从一定从0地址开始运行。如果不是,怎么工作的?

3、复位后pc不一定是0?

4、存储器映射是不是在内核执行第一条指令前进行的?(这和第二条是相联系的)

[align=right][color=#000066][此贴子已经被作者于2006-10-9 8:56:28编辑过][/color][/align]

菜鸟
2006-10-09 19:57:00     打赏
6楼
又研究了点资料,对于LPC2000总结如下:
一、上电复位瞬间,1、存储器映射:将CPU所拥有的地址编码资源向系统内各个物理存储器块分配;2、存储器重映射:将位于片内Flash存储器顶端的Boot Block(0x0001e000)映射到片内存储器顶端(0x7fffe000)。[问题:此时PC指针是什么?重映射能执行吗?]
二、启动片内固化的BOOT(0x7fffe000)[此时PC指针肯定是0了],判断是否执行ISP,根据map1:0的值执行不同地址空间的用户代码。[这个“用户代码”含有Uboot等吗?]
如果上面说法正确,ARM复位肯定不是“一定从0地址开始运行”了;复位后pc也不一定是0。cpu没有执行任何指令前如何跳到了非0地址呢?它是怎么工作的? [align=right][color=#000066][此贴子已经被作者于2006-10-9 12:14:01编辑过][/color][/align]

菜鸟
2006-10-09 23:52:00     打赏
7楼

是说remap改变了pc的值吗?重映射能在启动boot前进行吗?

还是不太清楚,能针对我说LPC2000启动说说吗?

多谢!!!

[align=right][color=#000066][此贴子已经被作者于2006-10-9 15:54:18编辑过][/color][/align]

菜鸟
2006-10-10 01:17:00     打赏
8楼

多谢版主的,让我对remap加深了认识。不过下面这篇文章说map是相当于预处理,但remap是程序修改。版主的意思是remap缺省是也算预处理。我也觉得这样更能解释cpu如何去执行非0地址的boot。

http://bbs.21ic.com/club/bbs/bbsView.asp?boardid=39


菜鸟
2006-10-10 01:32:00     打赏
9楼
我是否可以这样理解,arm核复位肯定从0地址运行,pc指针也是0。但具体cpu在内核复位后做了地址的映射、重映射(必须在第一条指令运行前,应为0地址此时没有任何程序)。之后pc虽为0开始,但执行的相当于高地址的boot。

菜鸟
2006-10-10 02:18:00     打赏
10楼

我想手册上说的visible也就是复位时做了重映射,把boot扇区的低64字节映射到了0地址。之后pc虽为0也相当于执行高地址的boot。

终于解决了大疑惑。这个论坛人气真不错。

还有一个小问题呢,固化的boot和uboot等有什么不同,是前者引导后者、后者再引导os吗?


共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]