>
复位使AT91X40进入引导模式,初始化用户接口寄存器,使其变为缺省直。除了PC为0以外,ARM核内部的其它寄存器无定义。
AT91X40复位时,存储器映射将NVM放在0页面,片内RAM重定位到0X00300000。片内32位NVM或片外的8/16位NVM映射到0X00000000(片外NVM由NCS0选择)。重映射命令,即重映射寄存器的RCB位写1,可以使AT91X40退出引导模式,存储器映射返回到常规的映射关系。此时0页面处映射为片内RAM,以存放动态的(可修改的)异常向量表。外部的存储器映射到用户在片选寄存器0中定义的地址。注意: 如果这个寄存器没有写入相应的值,将会产生内部的冲突。
如果要访问外部芯片(即使用NCS1到NCS7),重映射命令是必须的。
重映射命令执行前后的AT91R40807 内存映射:
注意:在任何时间,内部的 RAM 和外部的引导存储器都在 2 个不同的地址。 有两个不同的方法执行 Remap 命令。 第一个是标准的。将在引导存储器(与 CS0 联接的)中的程序拷贝到片内 RAM 。 然后 remap 能安全地执行。 第二个是利用 ARM 核的流水线技术。下面的系列描述允许在不拷贝任何代码的情况下 执行 remap 。这个例子被 AT91 库使用, 在文件 LibraryInitin_reset.s 中。 - 拷贝存储控制器的映像 ldr r10 , PtInitTableEBI mov r10 , r10 , LSL #12 mov r10 , r10 , LSR #12 - 装载要跳转的地址 ldr r12 , PtInitRemap - 拷贝片选寄存器映像到存储控制器和命令 remap ldmia r10 !,{ r0-r9 , r11 } stmia r11 !,{ r0-r9 } - 在它的新地址跳到 ROM mov pc, r12 PtInitTableEBI DCD InitTableEBI PtInitRemap DCD InitRemap PtInitVector DCD __main - 程序启动 InitRemap 在这种情况中, " MOV pc , r12 " 指令在前面的“ STMIA ”执行以前,映射到地 址 0 的外部引导 ROM 中取指。然后 " MOV pc , lr " 执行并且这跳到外部的引导 区 ROM 的连接地址。 /******************************************************************* 在复位期间,BMS和NTRI须保持一个有效的电平。 NTRI的输入电平决定了AT91X40进入正常模式还是三态模式。 BMS告诉芯片引导程序的位置。 BMS 启动模式 1 无片内NVM 外部8位的存储器(CS0) 有片内NVM 内部的32位NVM 0 外部的16位存储器(CS0) 看门狗引起的复位不重新检查BMS和NTRI的电平值。 ********************************************************************/
本文章由英蓓特信息技术有限公司编辑整理,版权归该公司所有,转载请注明。