共2条
1/1 1 跳转至页

重新启动后,AT91内部RAM的地址是:0x300000. 片选线地址线:0.当Remap命令执行时,外部存储器在0号片选寄存器中用户定义的地址处产生地址转换。 注意:如果不是以一个连续的值写到该寄存器,将会产生内部冲突。内部RAM将会在0号地址线处产生地址转换。 注意,在任何时候,无论是内部RAM还是外部引导存储器都不能视为处在2个不同的地址。 有2种方法可以执行Remap命令: 第一种就是标准方法,将引导存储器(连接到CS0)复制到内部RAM, 这样就可以安全的执行Remap命令。 第二种方法就是使用ARM内核的管道法。 按照下面代码操作,可以执行Remap命令,而无需复制任何代码。这个例子是使用AT91程序库中的文件,该文件的路径是Library\Init\in_reset.s" 复制存储器控制器的映像,指令代码是: ldr r10, PtInitTableEBI mov r10, r10, LSL #12 mov r10, r10, LSR #12 装载地址并跳转到: ldr r12, PtInitRemap 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"指令从在0号地址线产生地址转换(在前面"STMIA"执行前)的外部引导存储器中取出, 然后执行"MOV pc, lr"指令, 该指令执行完毕后,再跳转到链接地址处的外部引导ROM. |
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 |