==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]
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】+与同事对定时器输出相位可调PWM移相全桥控制分享被打赏50分 | |
【换取手持数字示波器】+LP-MSPM0L1306开发板试用体验+串口被打赏40分 | |
CC-RL编译器相关问题求助被打赏10分 | |
【换取手持数字示波器】+与同事对ESP-12开发调试经验分享被打赏50分 | |
【换取手持数字示波器】+同事tek示波器调试spi解析被打赏50分 | |
【换取手持数字示波器】+2.6寸墨水屏调试经验被打赏50分 | |
换取手持数字示波器+个人开关电源的设计经验被打赏50分 | |
【换取手持数字示波器】+【APT32F173测评】+URAT被打赏20分 | |
【换取手持数字示波器】CH32X035的定时器以及外部中断体验被打赏50分 | |
【换取手持数字示波器】CH32X035搭建开发环境(RISC-V)被打赏50分 |