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

    最近在海思3518e平臺下燒寫內核和文件系統,因爲項目須要,須要運行海思SDK中的測試軟件HiIspTool,不能使用精簡後的文件系統,須要刷一個比較大的文件系統,但在此過程當中因爲各類緣由,弄壞了一個板子,燒壞了一個uboot,因爲要卸下SPI NOR FLASH,從新燒寫實在太過麻煩,放棄了該板子。在此過程當中走了些彎路,在此記錄下主要過程和注意事項,但願可以提醒本身和剛如何這方面的新手,共勉!網絡

    

    1.板子上電時按住ctrl+c進入uboot模式ide

    2.設置UBOOT模式的板子的IP和PC服務端的IP,使用Tftpd進行內核和文件系統的下載,比較快,若是使用串口下載的話,須要使用超級終端軟件,很是慢。測試

    setenv ipaddr    192.168.1.106  設置本板子的IPspa

    setenv serverip  192.168.1.100  你的宿主機的IP,即開Tftpd的ipserver

    設置後ping下確保網絡通着。ip

  

    三、內核燒寫內存

       mw.b 82000000 ff 140000; 在內存0x82000000後填充140000個11111111cmd

       tftp 0x82000000  uImage_hi3518e_mini; 下載內核文件it

       sf probe 0;    選在當前Flashconsole

       sf erase  40000  140000;  擦除將要寫入內核的1.4M空間

       sf write 82000000 40000 140000;  將剛下載的內核寫入到40000內存開始處,大小爲1.4M,最後一個參數爲偏移地址       

       我使用的內核大小爲1.2M,給其分配了1.4M的空間,注意內核的大小不能大於給內核分配的空間大小,以上幾條命令能夠連在一塊兒進行操做,中間以;分隔便可,這樣效率比較高


    四、文件系統燒寫


    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的空間,在此沒有分配其餘的用戶等等分區。


    五、設置啓動參數

    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內核和文件系統的下載

    內核:

    文件系統:

    請進入個人資料 進行下載

相關文章
相關標籤/搜索