DM8168 nand flash燒寫與啓動步驟


!先覺條件

0:確保硬件設計和使用正確!(中槍)

1:確保SD卡的boot分區有用於燒寫到nand flashUboot文件

2:確保EVMSW4 NAND FLASH選通開關正確

3:確保NAND FLASH 的位寬設置正確(中槍)

在設置過程中,官方文檔的描述:http://processors.wiki.ti.com/index.php/TI81XX_PSP_UBOOT_User_Guide#Flashing_TI816X_U-Boot_to_NAND_using_SD_boot

PsFlashing TI816X U-Boot to NAND using SD boot

Before proceeding with any of the commands given in this section please make sure that NAND is enabled on the EVM. The switch for enabling NAND on TI8168 EVM is SW4.

Copy the U-Boot image u-boot.noxip.bin built for NAND as described [#U-Boot_for_NAND_boot here] in the FAT partition on the SD card. (The release package contains a pre-built image u-boot.noxip.bin which can be used for this purpose)

Once the second stage of SD boot comes up use the following commands to flash to NAND

TI8168_EVM# mmc rescan 0

TI8168_EVM# fatload mmc 0 0x81000000 u-boot.noxip.bin

TI8168_EVM# nand erase 0x0 0x260000

TI8168_EVM# nand write.i 0x81000000 0x0 0x33800

After this the EVM switch settings can be changed to [#NAND_boot NAND boot mode] if boot out of NAND is required.

官方的這最新的wiki上全部的描述就是這樣,但是在實際的燒寫過程中:

TI8168_EVM# nand erase 0x0 0x1c0000命令返回的結果是

No available device

但是,通過nand device命令可以看到有nand flash設備存在

Device 0: <NULL>, sector size 128 KiB

各種百度,各種手冊,弄了半個上午,一無所獲,一氣之下,google之,在第一條結果就給出了有用的信息,原來除了wiki上的 SW4需要設置正確之外,在SW3上的CS0BW位也需要設置成16bit模式,這樣才能正確的燒寫,鄙視一下TI的這篇WIKI 和我大天朝的Baidu

所以完全正確的方式步驟是:

1:拷貝你想要燒寫的u-boot.noxip.bin到SD卡的boot分區

2SW4撥到nand flash啓動的位

3SW3CS0BW位撥到16bit模式【左邊】

4:按照wiki上的步驟燒寫即可,在新版本的修改中,對ecc校驗做了少許修改,所以在實際的燒寫中,有的前輩給出的燒寫代碼中添加了  【設置硬件ECC校驗模式爲BCH8】 的設置指令

Boot Pin Settings

 

SW-1/SW-3 

SW-2/SW-4/SW-5* 

Boot Mode

BTM 4

BTM 3

BTM 2

BTM 1

BTM 0

NAND

SPI

NAND

1

0

0

1

0

1

X

SPI

1

0

1

1

0

X

1

UART

0

0

0

0

1

X

X

SD

1

0

1

1

1

X

X

NOR

1

0

0

0

0

0

X

EMAC

0

0

1

0

0

X

X


注意:u-boot,kernel,ubifs的Size須與Nand Flash每頁Size(2048字節,0x800)嚴格對齊:
   
例如u-boot.noxip.bin: 210320字節,210320/2048 == 103, 103x2048 = 210944 (0x33800)
  kernel,ubifs方法同上



SW3設置爲SD mode[1:10]=1110100100;同時SW4 mode[1:2]=10 nand使能(16bit nand flash)


SD卡啓動進入Uboot命令行輸入以下指令:

燒寫UBoot


mmc rescan 0

mw.b 0x81000000 0xFF 0x260000             //初始化內存區域,全部置1
fatload mmc 0 81000000 u-boot.noxip.bin   //從SD卡中下載相應文件到初始化內存區域
nand erase 0x0 0x260000                   //對將要使用的nand flash內存區域進行擦除操作
nandecc hw 2                                 //設置硬件ECC校驗模式BCH8
nand write.i 0x81000000 0x0 0x33800           //把初始化內存區域下載的文件寫到nand flash
nandecc hw 0   //設置硬件ECC校驗模式Hamming Code




燒寫內核uImage
mw.b 0x81000000 0xFF 0x440000 
fatload mmc 0 81000000 uImage 
nand erase 0x00280000 0x00440000 
nandecc hw 2
nand write 0x81000000 0x00280000 0x00299000      //參照所使用uImage Size大小
nandecc hw 0


燒寫文件系統

mw.b 0x81000000 0xFF 0x0C820000 
fatload mmc 0 81000000 ubi.img 
nand erase 0x006C0000 0x0C820000 
nandecc hw 2
nand write 0x81000000 0x006C0000 0x001300000      //參照所使用ubi.img Size大小
nandecc hw 0



關機重啓,SW3設置爲Nand mode[1:10]=0100100100;同時SW4 mode[1:2]=10 nand使能(16bit nand flash)

Nand啓動進入Uboot命令行輸入以下指令設置env變量:


setenv bootcmd 'nand read 81000000 280000 440000;bootm 81000000'
setenv bootargs 'console=ttyO2,115200n8 noinitrd ip=off mem=256M rootwait=1 rw ubi.mtd=7,2048 rootfstype=ubifs root=ubi0:rootfs init=/init'





本文主要參照 http://blog.csdn.net/luhao806/article/details/7341439 

http://blog.csdn.net/aihu_1201/article/details/8963919

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章