天天看點

海思3536開發闆

海思3536開發闆預設是256M的nand,在實際的産品中容量遠遠不能滿足需求。根據上層軟體的需要,硬體工程師把nand擴容到1G的存儲空間。想要系統正常運作,需要以下操作:

1.修改Hitool的分區表

海思3536 使用Linux雙系統:主系統和從系統。主系統主要控制4個A17核心。從系統主要控制A7和多媒體單元。我使用的事主系統來引導 從系統。把所有的應用程式放到了mashter_fs中。修改nand之前住檔案系統隻有235M

硬體擴容到1G後,增加主檔案系統到900M

2.修改uboot加載的分區表

修改完燒寫工具分區隻能完成把對應的分區檔案燒寫到對應分區,燒寫完後還要對uboot的引導參數進行修改。

setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),235M(rootfs)'

setenv bootcmd 'nand read 0x42000000 0x100000 0x400000;bootm 0x42000000'

setenv slave_autostart 1

setenv slave_bootcmd 'nand read 0x81000000 0xF000000 0x80000;nand read 0x82000000 0xF100000 0x400000;nand read 0x83000000 0xF500000 0x600000;bootm 0x81000000 0x82000000 0x83000000'

setenv slave_bootargs 'mem=96M console=ttyAMA0,115200'

saveenv

解釋:

引導參數的第一句意思是我的記憶體是512M的,使用了序列槽0作為控制台,檔案系統位置在/dev/mtdblock2 這個分區,系統類型是yaffs2的。主系統的分區表分别對應1M 4M 和235M。第一句是大部分uboot系統必須有的引導參數

第二行意思是uboot啟動後将nand的0x100000(1M)位置往後4M的空間到記憶體的 0x42000000 這個位置,然後跳轉到0x42000000 執行。總結,uboot把kernel從nand加載到ddr,并開始由uboot進入kernel

第三行是海思雙系統獨有的,設定讓從系統自動加載,不需要主系統手動執行

第四行是uboot把從系統的uboot kernel 和檔案系統讀到記憶體中。起始位址分别是240M 241M 245M 轉成十六進制後就是 0xF000000 ,0xF100000 0xF500000 。讀取的大小分别是0x80000(1M) 0x400000(4M) 和0x600000(6M)

修改後的uboot引導參數:

setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),900M(rootfs)'

setenv slave_bootcmd 'nand read 0x81000000 0x38900000 0x80000;nand read 0x82000000 0x38A00000 0x400000;nand read 0x83000000 0x38E00000 0x600000;bootm 0x81000000 0x82000000 0x83000000'

在這裡我遇到一個yaffs檔案系統的問題

[點選并拖拽以移動]

Current hardware config, pagesize:4096, ecctype:24bits/1K

1.請檢查目前單闆Flash與燒寫分區中的Flash類型是否一緻;

2.目前fastboot不支援該指令;

這個問題是之前的nand pagesize和ecctype不一樣,隻需要重新制作yaffs2檔案系統即可。指令是:./mkyaffs2image610 rootfs_glibc_master rootfs_glibc_2k_4bit_zmj_1g.yaffs2 2 4

我隻是增大了主作業系統的大小,由235M到900M,其他分區大小沒有變化,但是從系統的起始位址發生了變化。從240M 241M 245M到905M 906M 910M。對應的uboot參數計算方法如下

最後進入Linux 主系統系統驗證是否成功

繼續閱讀