==ARM启动难点问题==问题已解决!
只看楼主 1楼
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]
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]
关键词: 启动 难点 问题 解决
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]4楼
再问一下,存储器映射是不是在内核执行第一条指令前进行的?不然如何执行不在0地址的boot block 。例如LPC2000系列
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]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]
一、上电复位瞬间,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]
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |