1. 分析NAND ubl
BLOCK ERASE : 128K+4K Bytes 块的大小 128K = 0x2 0000 PAGE SIZE: 2K + 64 byte 页大小2K = 0x800 nanddump[1] -o -f ./nand_ubl_dump.bin /dev/mtd0 ubl描述符 第1个块第0页: 0x20000 00020000h: 00 ED AC A1 00 01 00 00 0A 00 00 00 01 00 00 00 00020010h: 01 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
UBL内容开始地址20000+800 = 0x20800 第1个块第1页 结束地址 0x20800 + 0x7800(30K) = 0x28000 UBL二进制文件有数据的结束地方为20800 + 4550 = 0x24D50 00004550h: 44 4D 33 36 78 00 00 00 FF 00 00 00 00 00 00 00 ; DM36x...?....... 先烧写ubl描述符到 0x20000 再烧写ubl 到 0x20800
1.1. 先烧写ubl描述符到 0x20000 l 擦除nand nand erase 0 0x8000000 l 下载ubl_description.bin到内存 tftp 0x80700000 ubl_description.bin l 写32 字节uboot描述符到nand nand write 0x80700000 0x20000 0x20 1.2. 再烧写ubl 到 0x20800 l 下载ubl tftp 0x80700000 UBL_DM36x_NAND.bin l 写入nand nand write 0x80700000 0x20800 0x7800
2. U-boot uboot描述符 第0x19=25个块第0页: 0x320000 00320000h: 66 ED AC A1 00 00 08 81 98 00 00 00 19 00 00 00 ; f憩?..仒....... 00320010h: 01 00 00 00 00 00 08 81 FF FF FF FF FF FF FF FF ; .......????????
Uboot内容:第0x19=25块第1页:0x320800 Uboot大小 0x4bab0 ; 结束处:0x320800 + 0x4bab0 = 0x36C2B0 (此地址和dump下来的有些出入,可能是因为这里的uboot烧写文件和已烧到nand里面的不同吧) 0x320800 + 0x60000 = 0x38 0800 => 0x40 0000 先烧写uboot描述符到 0x320000 再烧写uboot 到 0x320800 2.1. 先烧写uboot描述符到 0x320000 l 擦除nand nand erase 0 0x8000000 l 下载uboot_description.bin到内存 tftp 0x80700000 uboot_description.bin l 写32 字节uboot描述符到nand 当前块为0x19 nand write 0x80700000 0x320000 0x20 2.2. 再烧写uboot到 0x320800 l 下载uboot tftp 0x80700000 u-boot.bin l 写入nand 需要先得到uboot大小 0x4bab0 < 0x60000 nand write 0x80700000 0x320800 0x60000 2.3. 写内核到nand 下载内核镜像到内存某个地方,镜像大小0x20c7a8 = 2M tftp 0x80700000 uImage.ti 擦除 nand erase 0x400000 0x400000 写入 nand write 0x80700000 0x400000 0x20c7a8
修改为nand启动 setenv bootcmd "nand read 0x80700000 0x400000 20c7a8 ; bootm 0x80700000" saveenv boot 3. NAND 正常引导信息 TI UBL Version: 1.50 Booting Catalog Boot Loader BootMode = NAND Starting NAND Copy... Valid magicnum, 0xA1ACED66, found in block 0x00000019. DONE Jumping to entry point at 0x81080000. U-Boot 2010.12-rc2 (Jan 12 2011 - 19:44:22) Cores: ARM 297 MHz DDR: 270 MHz I2C: ready DRAM: 128 MiB NAND: 2048 MiB MMC: davinci: 0, davinci: 1 Bad block table found at page 524224, version 0x01 Bad block table found at page 1048512, version 0x01 Bad block table found at page 524160, version 0x01 Bad block table found at page 1048448, version 0x01 nand_read_bbt: Bad block at 0x000000a00000 nand_read_bbt: Bad block at 0x000002fe0000 nand_read_bbt: Bad block at 0x000015b40000 nand_read_bbt: Bad block at 0x000017100000 nand_read_bbt: Bad block at 0x00001d420000 nand_read_bbt: Bad block at 0x00002ba80000 nand_read_bbt: Bad block at 0x000042440000 nand_read_bbt: Bad block at 0x000053320000 nand_read_bbt: Bad block at 0x000077be0000 Net: Ethernet PHY: GENERIC @ 0x00 DaVinci-EMAC Hit any key to stop autoboot: 0 DM365 EVM # |
|