首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ROM and RAM remapping(ARM)

ROM and RAM remapping(ARM)

NoteThis information does not apply to ARMv6-M and ARMv7-M profiles.
You must consider what sort of memory your system has at address 0x0, the address of the first instruction executed.
NoteThis information assumes that an ARM processor begins fetching instructions at 0x0. This is the standard behavior for systems based on ARM processors. However, some ARM processors can be configured to begin fetching instructions from 0xFFFF0000.

There has to be a valid instruction at 0x0 at startup, so you must have nonvolatile memory located at 0x0 at the moment of power-on reset. One way to achieve this is to have ROM located at 0x0. However, there are some drawbacks to this configuration.
Example ROM/RAM remapping
The following example shows a solution implementing ROM/RAM remapping after reset. The constants shown in this example are specific to the Versatile board, but the same method is applicable to any platform that implements remapping in a similar way. Scatter-loading description files must describe the memory map after remapping.

Example 5. ROM/RAM remapping
;  System memory locationsVersatile_ctl_reg     EQU 0x101E0000 ; Address of control registerDEVCHIP_Remap_bit     EQU 0x100      ; Bit 8 is remap bit of control register    ENTRY; Code execution starts here on reset; On reset, an alias of ROM is at 0x0, so jump to 'real' ROM.        LDR     pc, =Instruct_2Instruct_2 ; Remap by setting remap bit of the control register; Clear the DEVCHIP_Remap_bit by writing 1 to bit 8 of the control register        LDR     R1, =Versatile_ctl_reg        LDR     R0, [R1]        ORR     R0, R0, #DEVCHIP_Remap_bit        STR     R0, [R1]; RAM is now at 0x0.; The exception vectors must be copied from ROM to RAM; The copying is done later by the C library code inside __main; Reset_Handler follows on from here


继承事业,薪火相传
返回列表