微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > arm(lpc22xx)存储器寻址

arm(lpc22xx)存储器寻址

时间:11-10 来源:互联网 点击:

用了三段地址编码空间:0x0~0x3f,0x3e000~0x3e03f,0x7fffe000~0x7fffe03f。

3.Boot(不受控制)复位后Boot运作就是从0x0处起始字中取出跳转指令,开始程序的执行。由于Boot Block中断向量映射到0x0,CPU实际执行的是Boot Block内的程序。然后,程序首先检查看门狗溢出标志,置位表明系统内部软复位。再检查BOOT1和BOOT0是不是都为1,如果不是,则CPU从片外BANK0(0x80000000)执行用户代码,如果BOOT1和BOOT0是都为1,则CPU将对内部Flash中的中断向量表进行加和校验,检查用户代码是否有效,如果结果为0,Bootload程序将撤消Boot Block中断向量表在0x0~0x3f地址空间的映射,恢复Flash中断向量表在这64字节地址空间的映射,然后跳转到地址0x00处转入用户程序的执行。如果加和校验结果不为0,Bootload程序将进行UART0接口的波特率自动侦测,随时响应ISP宿主机的编程请求,执行ISP编程工作。若Bootload没有发现看门狗溢出标志置位,则表明当前系统是外部硬复位,CPU将采样P0.14引脚外部逻辑电平输入。如为0,Bootload执行UART0的自动波特率侦测,随时响应ISP宿主机的编程请求,执行ISP编程工作;如为1,Bootload的后续运作将与前面检测到看门狗溢出标志置位的程序执行完全相同。 这部分复位流程具体可参见《ARM嵌入式基础教程(上)》

4.Remap(可以控制)Remap的对象是片内SRAM存储器的异常向量部分。用户可编程决定何时Remap,Remap后是否再修改中断向量表等等。引发Remap运作指令与建立SRAM块中异常向量的所有功能代码全部驻留在Flash块的用户编程区中,是用户软件的一部分。另:此Remap对IAP操作有重要意义。 整个过程存储器变化如下:1.Memory Map(不受控制)芯片上电复位后,CPU给各个物理存储器块分配地址编码资源。这时不存在多个地址对应同一个物理内存的现象。2.Remap(不受控制)在执行了Memory Map 后,Boot Block整体被Remap到了0x7fffe000~0x7fffffff,也就是将地址空间0x7fffe000~0x7fffffff用来表示Boot Block同一段物理内存。同时,0x0~0x3f的64字节中断向量区被暂时注销映射关系(因为在判断用户代码存在于哪个存储空间之前,能存放异常向量表的存储空间有两个,一个在片内flash的0x00-0x3f,另个在片内flash的顶端即bootblock区,所以在同一时间,二者只能有一个起作用。),由Boot Block中的中断向量代替。这时Boot Block中断向量表占用了三段地址编码空间:0x0~0x3f,0x3e000~0x3e03f,0x7fffe000~0x7fffe03f,即这三段地址编码空间都指向bootblock中的中断向量表。3与4同上所述。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top