| .. SPDX-License-Identifier: GPL-2.0-or-later | |
| Memory Management | |
| ----------------- | |
| .. note:: | |
| This information is outdated and needs to be updated. | |
| U-Boot runs in system state and uses physical addresses, i.e. the | |
| MMU is not used either for address mapping nor for memory protection. | |
| The available memory is mapped to fixed addresses using the | |
| memory-controller. In this process, a contiguous block is formed for each | |
| memory type (Flash, SDRAM, SRAM), even when it consists of several | |
| physical-memory banks. | |
| U-Boot is installed in XIP flash memory, or may be loaded into a lower region of | |
| RAM by a secondary program loader (SPL). After | |
| booting and sizing and initialising DRAM, the code relocates itself | |
| to the upper end of DRAM. Immediately below the U-Boot code some | |
| memory is reserved for use by malloc() [see CONFIG_SYS_MALLOC_LEN | |
| configuration setting]. Below that, a structure with global Board-Info | |
| data is placed, followed by the stack (growing downward). | |
| Additionally, some exception handler code may be copied to the low 8 kB | |
| of DRAM (0x00000000 ... 0x00001fff). | |
| So a typical memory configuration with 16 MB of DRAM could look like | |
| this:: | |
| 0x0000 0000 Exception Vector code | |
| : | |
| 0x0000 1fff | |
| 0x0000 2000 Free for Application Use | |
| : | |
| : | |
| : | |
| : | |
| 0x00fb ff20 Monitor Stack (Growing downward) | |
| 0x00fb ffac Board Info Data and permanent copy of global data | |
| 0x00fc 0000 Malloc Arena | |
| : | |
| 0x00fd ffff | |
| 0x00fe 0000 RAM Copy of Monitor Code | |
| ... eventually: LCD or video framebuffer | |
| ... eventually: pRAM (Protected RAM - unchanged by reset) | |
| 0x00ff ffff [End of RAM] |