2015-07-21 54 views
0

嗨,我是ARM的新手,并且正在使用SAM3S4A ARM处理器和IAR编译器。ARM开始地址

了解闪存代码是从0x00400000 - 0x0043FFFF,并且处理器从地址零开始(0x00000000),PC如何跳到0x00400000,因为默认情况下VTOR寄存器为零。

+0

好吧,数据表中的内存映射显示0x00000000 - 0x003fffff为“启动内存”,第8.1.4节(“启动策略”)概述了这一点。你是否澄清了这些文件的说明? – Notlikethat

+0

我想要做的是将运行时位于0x00000004的应用程序起始地址更改为新值,然后重置处理器。这是我正在实施的一个引导程序。问题是,我如何写一个新值并将其保存到安全寄存器0x00000004? – IanDD

回答

0

从我可以从文档中理解的内容,ARM proc在复位时转到0x0。可以使用GPNVM寄存器将0x00000000处的4K地址空间映射到ROM或FLASH。所以在复位时,ARM开始从ROM或FLASH执行代码。 (ROM包含一些专有引导程序,您可以在Flash中拥有自己的OS/Bootloader)。一旦控制达到您写入闪存的代码,您可以设置一个新的矢量表并更新VTOR,以便在那里路由新的异常。