最近在海思3518e平臺下燒寫內核和文件系統,由於項目需要,需要運行海思SDK中的測試軟件HiIspTool,不能使用精簡後的文件系統,需要刷一個比較大的文件系統,但在此過程中由於各種原因,弄壞了一個板子,燒壞了一個uboot,由於要卸下SPI NOR FLASH,重新燒寫實在太過麻煩,放棄了該板子。在此過程中走了些彎路,在此記錄下主要過程和注意事項,希望能夠提醒自己和剛如何這方面的新手,共勉!
1.板子上電時按住ctrl+c進入uboot模式
2.設置UBOOT模式的板子的IP和PC服務端的IP,使用Tftpd進行內核和文件系統的下載,比較快,如果使用串口下載的話,需要使用超級終端軟件,非常慢。
setenv ipaddr 192.168.1.106 設置本板子的IP
setenv serverip 192.168.1.100 你的宿主機的IP,即開Tftpd的ip
設置後ping下確保網絡通着。
3、內核燒寫
mw.b 82000000 ff 140000; 在內存0x82000000後填充140000個11111111
tftp 0x82000000 uImage_hi3518e_mini; 下載內核文件
sf probe 0; 選在當前Flash
sf erase 40000 140000; 擦除將要寫入內核的1.4M空間
sf write 82000000 40000 140000; 將剛下載的內核寫入到40000內存開始處,大小爲1.4M,最後一個參數爲偏移地址
我使用的內核大小爲1.2M,給其分配了1.4M的空間,注意內核的大小不能大於給內核分配的空間大小,以上幾條命令可以連在一起進行操作,中間以;分隔即可,這樣效率比較高
4、文件系統燒寫
mw.b 82000000 ff 620000;
tftp 0x82000000 rootfs_64k_mpp.jffs2;;
sf probe 0;
sf erase 180000 620000;
sf write 82000000 180000 620000;
給文件系統分配了6.2M的空間,在此沒有分配其他的用戶等等分區。
5、設置啓動參數
setenv bootargs 'mem=28M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:256K(boot),1280K(kernel),6144K(rootfs)';
最重要的是mtdparts參數的設置,本人使用的內核支持mtd驅動,即內核通過mtdparts參數可以找到文件系統並創建MTD分區,在此boot、kernel、rootfs的大小必須是spi Block大小的整倍數,如本人使用的Block大小爲64KB,另外還有128KB,256KB兩種,注意三快分區的大小之和不要超過整個Flash的大小。
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x40000 0x140000;bootm 0x82000000';
bootcmd在啓動時執行的命令,0x40000 0x140000代表從0x40000開始處讀取內核,大小爲140000。
另:提供本人此次燒錄的3518e內核和文件系統的下載
內核:
文件系統:
請進入我的資料 進行下載