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內核和文件系統的下載
? ? 內核:
? ? 文件系統:
? ? 請進入我的資料 進行下載
? ??
轉載于:https://blog.51cto.com/cto521/1584602
總結
以上是生活随笔為你收集整理的arm下如何烧写指定分区大小的内核和文件系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2014.11 总结
- 下一篇: ubuntu 系统相关有用的配置