標籤:
硬體採用nandflash,nandflash為8位元據寬度,沒有dataflash和norflash。
Nandflash空間分配為 bootstrap + u-boot + env + linux 。
|
| bootstrap | | u-boot | env | | linux |
|______________________________________________________________________________
0x0 0x1000 0x20000 0x60000 0x80000 0x200000
0 4K 128K 384K 512K 2M
uboot的啟動參數中定義linux核心鏡像在Nandflash中的位置。
uboot的CFG_NAND_BASE定義Nand起始地址。(起始地址為0x40000000,結束位址0x4FFFFFFF,共256M)
uboot的CFG_NAND_DBW_8定義資料寬度。
記憶體空間分配(起始地址0x2000 0000,結束位址0x2400 0000,共64M)
|
| | env | | linux | | u-boot |
|
0x2000 0000 0x100 0x2040 0000 0x23F0 0000
0 63M
uboot中CFG_LOAD_ADDR定義RAM中linux的load address。
CFG_ENV_OFFSET定義env在NandFlash的起始地址,CFG_ENV_OFFSET_REDUND定義env在NandFlash的結束位址,CFG_ENV_SIZE定義env在Nandflash中的空間大小。
board/atmel/at91sam9260ek/config.mk定義TEXT_BASE,其為u-boot在記憶體中的起始地址。
待解決:env在記憶體中位置????
(board/atmel/at91sam9260ek/at91sam9260ek.c--àboot_params)
答:env在記憶體中的空間是由malloc分配的(env_common.c中的env_relocate()),因此其在記憶體中的位置是一直變化的。每次系統啟動時,env在記憶體中位置可能都不一樣。
K9F2G08U0B大小為256MB,2048塊(0-2047),每塊大小為128KB。
uboot在nandflash儲存時記憶體和NandFlash儲存空間