This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
2big_nas [2013/07/04 02:24] hanno |
2big_nas [2013/07/04 05:57] (current) hanno |
||
---|---|---|---|
Line 513: | Line 513: | ||
|DEVICE CS3|16M|0xFF000000|Boot device|0xA|dis| | |DEVICE CS3|16M|0xFF000000|Boot device|0xA|dis| | ||
+ | Wish I found this earlier (kirkwood/cpu.c): Linux expects the internal registers to be at 0xF1000000 | ||
- | Bloody hell... | + | Internal registers base address is set in register offset 0x20080 (arch-kirkwood/kirkwood.h): i.e. 0xF1020080 = 0xF1000000 |
- | * #undef INTER_REGS_BASE | + | |
- | * #define INTER_REGS_BASE 0xd0000000 | + | |
- | * #define NAND_FLASH_BASE 0xffff0000 | + | |
- | * #define BOOTER_PAGE_NUM 2 | + | |
- | * #define BOOTER_BASE 0x00020000 + PAGE_SIZE | + | |
- | * #define BOOTER_END (BOOTER_BASE + (BOOTER_PAGE_NUM * PAGE_SIZE)) | + | |
- | * #define NAND_CMD_PORT (0x1 << (NFLASH_DEV_WIDTH >> 4)) | + | |
- | * #define NAND_ADDR_PORT (0x2 << (NFLASH_DEV_WIDTH >> 4)) | + | |
- | * #define NUM_BLOCKS 2048 | + | |
- | * #define PAGES_PER_BLOCK 64 | + | |
- | * #define PAGE_SIZE 2048 /* Bytes */ | + | |
- | * #define SPARE_SIZE 64 | + | |
- | * #define CFG_NAND_PAGE_SIZE (2048) /* NAND chip page size */ | + | |
- | * #define CFG_NAND_BLOCK_SIZE (128 << 10) /* NAND chip block size */ | + | |
- | * #define CFG_NAND_PAGE_COUNT (64) /* NAND chip page count */ | + | |
- | * #define CFG_NAND_BAD_BLOCK_POS (0) /* Location of bad block marker */ | + | |
- | * #define CFG_NAND_U_BOOT_OFFS CFG_MONITOR_BASE /* Offset to U-Boot image */ | + | |
- | * #define CFG_NAND_U_BOOT_SIZE CFG_MONITOR_LEN /* Size of RAM U-Boot image */ | + | |
- | * #define CFG_NAND_U_BOOT_DST CFG_MONITOR_IMAGE_DST /* Load NUB to this addr */ | + | |
- | * #define CFG_NAND_U_BOOT_START CFG_NAND_U_BOOT_DST /* Start NUB from this addr */ | + | |
- | = Trying to find ENV in NAND = | ||
- | |||
- | I think it uses /* Use the new NAND code. */ in mv_kw.h | ||
- | And it also #undef CFG_ENV_IS_IN_FLASH which is interesting... | ||
- | Think only need ENV_SIZE and ENV_OFFSET when in NAND | ||
- | |||
- | #define CFG_ENV_OFFSET 0xA0000 (640 << 10) /* environment starts here */ | ||
- | #define CFG_ENV_SECT_SIZE 0x20000 (128 << 10) /* environment take 1 block */ | ||
- | #define CFG_ENV_SIZE 0x20000 (CFG_ENV_SECT_SIZE) /* environment take 1 block */ | ||
- | #define CFG_NBOOT_BASE 0 | ||
- | #define CFG_NBOOT_LEN 0x01000 (4 << 10) /* Reserved 4KB for boot strap */ | ||
- | #define CFG_MONITOR_LEN 0xA0000 (640 << 10) /* Reserve 4 * 128KB + ENV = 640KB for Monitor */ | ||
- | #define CFG_MONITOR_BASE 0 | ||
- | #define CFG_MONITOR_IMAGE_OFFSET 0 /* offset of the monitor from the u-boot image */ | ||
- | #define CFG_MONITOR_IMAGE_DST 0x60000?(TEXT_BASE) /* Load NUB to this addr */ | ||
- | #define CFG_ENV_ADDR 0xA0000 (CFG_ENV_OFFSET) | ||
- | |||
- | ./tools/doimage -T nand -D 0x06000000 -E 0x6070000 -P 2048 -R dramregs_533ddr3_2big_A.txt u-boot-nas2big-revB-2.0.7.bin u-boot-nas2big-revB-2.0.7-nand.kwb |