u-boot下通過腳本更新內核和設備樹

之前的博客https://blog.csdn.net/daoshengtianxia/article/details/105775590是通過手動一步一步下載寫入flash升級dtb,kernel等,  

前提uboot需要移植好網絡等相關驅動,本文使用的硬件平臺是野火的limx6ull  mini的emmc版本;

1、需要uboot使能 FAT_WRITE功能,野火提供的uboot默認沒有使能,在ebf_6ull_uboot/include/configs/mx6ullevk.h的最後加入:

#define CONFIG_FAT_WRITE,然後重新編譯,位置如下圖;

2、編寫uboot的 執行腳本如下,

setenv update_uboot  'if tftpboot ${loadaddr} ${file_ubot}; then '\
'mmc dev ${mmcdev} 0; mmc write ${loadaddr} 0x2 0x3fe; fi;'
setenv update_dtb   'if tftpboot ${loadaddr} ${fdt_file}; then '\
'fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${fdt_file} ${filesize}; fi;'
setenv update_kernel  'if tftpboot ${loadaddr} ${image}; then '\
'fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} ${filesize}; fi;'
setenv update_scr   'if tftpboot ${loadaddr} ${file_scr}; then '\
'fatwrite mmc ${mmcdev}:${mmcpart} ${loadaddr} ${file_scr} ${filesize}; source ${loadaddr}; saveenv; fi;'

關於update_uboot腳本慎用!使用前請確保寫入地址是對的,目前尚未驗證這個腳本!

3、將如上的腳本保存到my_environment_emmc文本文件裏,放入u-boot的tools目錄下,執行:(關於這個編譯腳本的命令含義可以參考網絡上的)

編譯腳本:

./mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "autoscr example script" -d my_environment_emmc my_environment_emmc.scr

編譯出來結果如上圖,

4、啓動開發板,tftp下載到內存運行,

(1)前提定義好loadaddr,file_scr,運行:

tftpboot ${loadaddr} ${file_scr}

我的 loadaddr 變量如下:

我的 file_scr 變量如下:

(2)執行剛剛下載u-boot環境變量腳本(目的是將“更新腳本”等環境變量設置好):source ${loadaddr}

(3)執行:(保存環境變量以便重啓後還能使用)

saveenv

 

5、將需要更新的內核,dtb放到ftp目錄裏,在uboot下執行如下一些命令:

比如更新dtb:run update_dtb

更新kernel:  

最後重啓開發板即可驗證。

參考鏈接(野火論壇的自己編譯uboot內核等教程):https://www.firebbs.cn/forum.php?mod=viewthread&tid=28400&highlight=%E7%BC%96%E8%AF%91

 

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