mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	Move this section of the README into doc/ with some minor updates to mention SPL and user lower-case hex. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. 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]
 |