uboot移植5-裁剪和修改默認參數

uboot啓動會從nandflash讀取環境變量,如果讀取失敗,會使用默認環境變量,如上圖是讀取失敗使用默認參數的打印信息。

修改默認參數:

1、搜索using default environment,發現默認環境變量存在全局變量default_environment結構體中(common/env_common.c)

如上圖,想修改哪個默認參數值,只需要要inclu/configs/smdk2440.h定義對應宏即可,如下,

#define CONFIG_BOOTARGS "console=ttySAC0 root=/dev/mtdblock3"
#define CONFIG_BOOTCOMMAND "nand read 30000000 kernel;bootm 30000000"
 

#define CONFIG_NETMASK        255.255.255.0
#define CONFIG_IPADDR            192.168.1.17
#define CONFIG_SERVERIP        192.168.1.1
#define CONFIG_ETHADDR        00:0c:29:4d:e4:f4
2、裁剪uboot,目前uboot編譯出來的u-boot.bin比較大,需要將不需要的命令刪除。只需要將inclu/configs/smdk2440.h不要的宏去掉即可(如果報錯,可以根據報錯信息進行解決)。

3、設置環境變量在nandflash。

uboot下通過saveenv命令進行將環境變量保存到nandflash,通過搜索saveenv查找需要哪些宏。

我們需要nand進行保存環境變量,由上圖,我用使用的文件是env_nand.c文件。要想將env_nand.c編譯進uboot,需要查看makefile需要什麼宏,如下圖,

我們需要宏CONFIG_ENV_IS_IN_NAND,同時需要去掉CONFIG_ENV_IS_IN_FLASH(norflash相關宏)。

編譯查看結果,查看env_nand.c文件需要哪些宏定義,修改後定義如下

inclu/configs/smdk2440.h:

編譯進行燒錄

啓動後依然會打打印using default environment,因爲我們沒有吧環境變量存到nandflash,執行save命令,重啓後就沒有了。

4、進行nandflash分區。inclu/configs/smdk2440.h:

MTDPARTS_DEFAULT根據uboot大小和環境偏移地址確定。

編譯。

之前燒寫程序命令如下

tftp 30000000 uImage(使用tftp命令前提要tftp服務端,網上可以下載)

nand erase 60000 200000
nand write 30000000 60000 200000

分區後可以使用如下命令進行燒寫程序

tftp 30000000 uImage
nand erase.part kernel
nand write 30000000 kernel
 

燒寫完成後可以啓動內核。

 

 

 

 

 

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