arm下如何燒寫指定分區大小的內核和文件系統

    最近在海思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內核和文件系統的下載

    內核:

    文件系統:

    請進入我的資料 進行下載

    


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