分享

UBL descriptor

 rookie 2012-10-25

1. 分析NAND ubl

dump uboot 描述符(一页大小0x800)

nanddump -o -s 0x320000 -l 0x20 -f ./nand_uboot_description_dump.bin /dev/mtd0

写 uboot 描述符

nandwrite -s 0x320000 /dev/mtd0 ./nand_uboot_description_dump.bin

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

Page 0 Address

Value

Address

32-Bits

Description

0

A1ACED00


0xA1AC EDxx

Magic number (0xA1ACEDxx)

4

00000100


Entry Point Address of UBL

Entry point address for the user bootloader (absolute address)

8

0000000A


Number of pages in UBL

Number of blocks (size of user bootloader in number of blocks)

12

00000001

1 * 20000 = 0x2 0000

Starting Block # of UBL

Block number where user bootloader is located

16

00000001

2K = 0x800

Starting Page # of UBL

Page number where user bootloader is present

20

00000000


PLL settings -M

PLL setting -Multiplier (only valid is Magic Number indicates PLL enable)

24

FFFFFFFFF


PLL settings -N

PLL setting -Divider (only valid is Magic Number indicates PLL enable)

28

FFFFFFFFF


Fast EMIF setting

Fast EMIF settings(only valid is Magic Number indicates fast EMIF boot)






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 ; .......????????

Page 0 Address

Value

Address

32-Bits

Description

0

A1ACED66


0xA1AC EDxx

Magic number (0xA1ACEDxx)

4

81080000


Entry Point Address of UBL

Entry point address for the user bootloader (absolute address)

8

00000098


Number of pages in UBL

Number of blocks (size of user bootloader in number of blocks)

12

00000019

0x19 * 0x20000 =

0x32 0000

Starting Block # of UBL

Block number where user bootloader is located

16

00000001

0x800

Starting Page # of UBL

Page number where user bootloader is present

20

81080000


PLL settings -M

PLL setting -Multiplier (only valid is Magic Number indicates PLL enable)

24

FFFFFFFFF


PLL settings -N

PLL setting -Divider (only valid is Magic Number indicates PLL enable)

28

FFFFFFFFF


Fast EMIF setting

Fast EMIF settings(only valid is Magic Number indicates fast EMIF boot)






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 #



[1] nanddump -o -l len -f <file> /dev/mtdX

现今比较理想的分配方式是:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多