OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » ==ARM启动难点问题==问题已解决!

共19条 1/2 1 2 跳转至

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

菜鸟
2006-10-08 17:23:00    评分
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 17:45:00    评分
2楼

1,2:芯片内固化的BOOT,这不是普遍的做法。仔细去看芯片手册。

3:绝对地址,如果你指的是interrupt exception vector的话。

4:你自己已经回答了(工程中设置了Image entry point为0x40000000)。arm的reset exception vector一般肯定是0。某些支持high vector address的arm也支持从0xffff0000启动。


菜鸟
2006-10-08 18:02:00    评分
3楼

多谢版主热心帮忙!!

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    评分
4楼
再问一下,存储器映射是不是在内核执行第一条指令前进行的?不然如何执行不在0地址的boot block 。例如LPC2000系列

院士
2006-10-08 19:16:00    评分
5楼

这问题实在是太深奥

理解不了~~~


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

菜鸟
2006-10-09 03:59:00    评分
7楼

我跟你遇到的情况差不多!急切希望朋友们给我出个招!我用的是AT91RM9200的CPU,内部也有一个bootloader,但是它只能引导下载到片内的SRAM,我想引导到扩展的SDRAM里面,该怎么做?

[em06]

菜鸟
2006-10-09 16:55:00    评分
8楼

其实我问的是纯理论问题,对于你(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    评分
9楼
又研究了点资料,对于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:41:00    评分
10楼

这不是什么理论问题,arm复位后PC肯定是0或0xffff0000。至于Philips当然可以在内核之外作些remap或boot loader之类的功能,只要能保证CPU在每个阶段都取得到指令就行。


共19条 1/2 1 2 跳转至

回复

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