uboot的配置文件介紹

u-boot 支持很多開發板, 而開發板外設不同, 所以給每個開發板都會有一個自己的配置頭文件, 這個文件是 include\configs\板名.h,u-boot 中使用到所有宏定義都應該在定義在這個文件中, 這個文件有兩類宏定義, 一種 CFG_開頭, 一種是 CONFIG_開頭的。
CONFIG_開頭的宏一般使用來定義芯片級的功能, CFG_開頭的宏一般 是用來定義板級功能。頭文件中定義的宏應該全局宏, 而不是針對某個模塊內部使用的, 一般是裁剪功能的宏。以 tiny4412 開發板爲示例:
include\configs\tiny4412.h
系統時鐘配置, 根據開發板使用的外部晶振時鐘配置。

#define CONFIG_SYS_CLK_FREQ 24000000
/* DRAM 起始地址 */
#define CONFIG_SYS_SDRAM_BASE 0x40000000

像 EXYNOS4412 有兩個起始內存, 0x4000_0000 和 0xA000_0000, 要根據自己的硬件連接情況修改。
以下幾項是關於命令行功能開啓, 幾乎所有的版本都會支持。

#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_CMDLINE_TAG
#define CONFIG_INITRD_TAG
#define CONFIG_CMDLINE_EDITING
/* 配置 u-boot 的堆空間大小
* Size of malloc() pool
* 1MB = 0x100000, 0x100000 = 1024 * 1024
*/
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (1 << 20))
配置調試串口 , 一般是串口 0
#define CONFIG_SERIAL0 1
串口波特率配置
#define CONFIG_BAUDRATE 115200

以下是 u-boot 命令配置: 第個一個宏對應一個命令或一類命令。
宏特徵: CONFIG_CMD_命令前綴, 後面是命名名。
#include <config_cmd_default.h> //所有版本的 u-boot 都支持的命令。

#define CONFIG_CMD_PING // ping 命令
#define CONFIG_CMD_USB //usb 命令
#define CONFIG_CMD_MOVINAND //movi 命令
#undef CONFIG_CMD_FLASH //flash 命令
#undef CONFIG_CMD_IMLS
#define CONFIG_CMD_CACHE
//操作 cache 的命令
#define CONFIG_CMD_REGINFO
#define CONFIG_CMD_MMC
//mmc 類命令
#define CONFIG_CMD_MOVI //movi 命令
#define CONFIG_CMD_ELF //操作 elf 命令
#define CONFIG_CMD_FAT

//fat 類命令 fatls,fatload,fatinfo

#define CONFIG_CMD_MTDPARTS //mtd 分區命令, 一般針對 NandFlash
#define CONFIG_CMD_EXT2 //ext2 文件系統相關命令

所以, 用戶如果想增加或刪除某一個命令直接增加相應宏或取消相應的宏定義就可以了。 如果要取消的命令定義在 config_cmd_default.h 中, 可以使用#undef 取消宏定義。

環境變量配置: 非常重要! 以下默認配置, 可以通過 setenv 修改。
 

#define CONFIG_ETHADDR 00:40:5c:26:0a:5b // MAC 地址
#define CONFIG_NETMASK 255.255.255.0 // 子網掩碼
#define CONFIG_IPADDR 192.168.0.20 //開發板 IP 地址
#define CONFIG_SERVERIP 192.168.0.10 //網絡服務器 IP 地址
#define CONFIG_GATEWAYIP 192.168.0.1 //網關 IP
#define CONFIG_BOOTDELAY 3 //啓動延時參數
/* Default boot commands for Android booting. */
#define CONFIG_BOOTCOMMAND "movi read kernel 0 40008000;movi read rootfs 0 41000000
100000;bootm 40008000 41000000"
CONFIG_BOOTCOMMAND: 對應於環境變量的 bootcmd, 默認啓動命令, 就是倒計時爲 0 時候會執行命
名。
#define CONFIG_BOOTARGS "root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200
init=/linuxrc uhost0=y ctp=2 skipcali=y" //傳遞給操作系統的啓動參數
CONFIG_BOOTARGS : 對應於環境變量的 bootargs, 是傳遞給內核的信息。
串口命令提示符號: 一般都會修改成自己的喜歡的
#define CONFIG_SYS_PROMPT "TINY4412 # "
表示可以輸入多少個字節再回車
#define CONFIG_SYS_CBSIZE 256 /*串口緩衝區大小 */
串口打印緩衝大小, 最小應該是串口緩衝區大小加命令提示符號大小
#define CONFIG_SYS_PBSIZE CONFIG_SYS_CBSIZE+ sizeof(CONFIG_SYS_PROMPT) /* Print Buffer Size */
命令最多能帶個多少參數(以空格分割的字符串)
#define CONFIG_SYS_MAXARGS 16
啓動參數緩衝區大小, 一般等於串口緩衝區大小
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
定時器 1 秒計數多少次, 這個定時器配置有關, 用於倒計時。
#define CONFIG_SYS_HZ 1000
有效波特率, 通過 setenv 可以設置的波特率速度定義:
#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
棧區大小, 根據自己的需要配置, 一般 256K 夠了。
#define CONFIG_STACKSIZE (1 << 10) /* 256 KiB */
板上有多少個內存芯片數量, tiny4412 有 4 片 256M 內存。
#define CONFIG_NR_DRAM_BANKS 4
一片內存大小: tiny4412 是 256 MB
#define SDRAM_BANK_SIZE 0x10000000 /* 256 MB */
第 1 片內存的起始地址:
#define PHYS_SDRAM_1 CONFIG_SYS_SDRAM_BASE /* SDRAM Bank #1 */
第 1 片內存的大小:
#define PHYS_SDRAM_1_SIZE SDRAM_BANK_SIZE
第 2 片內存的起始地址: 等於第 1 片地址加上大小
#define PHYS_SDRAM_2 (CONFIG_SYS_SDRAM_BASE + SDRAM_BANK_SIZE) /* SDRAM Bank #2
*/
第 2 片內存的大小:
#define PHYS_SDRAM_2_SIZE SDRAM_BANK_SIZE
第 3 片內存的起始地址: 等於第 1 片地址加上 2*第 1 片大小(大小都相同)
#define PHYS_SDRAM_3 (CONFIG_SYS_SDRAM_BASE + 2 * SDRAM_BANK_SIZE) /* SDRAM Bank
#3 */
#define PHYS_SDRAM_3_SIZE SDRAM_BANK_SIZE
#define PHYS_SDRAM_4 (CONFIG_SYS_SDRAM_BASE + 3 * SDRAM_BANK_SIZE) /* SDRAM Bank
#4 */
#define PHYS_SDRAM_4_SIZE SDRAM_BANK_SIZE
#define PHYS_SDRAM_5 (CONFIG_SYS_SDRAM_BASE + 4 * SDRAM_BANK_SIZE) /* SDRAM Bank
#5 */
#define PHYS_SDRAM_5_SIZE SDRAM_BANK_SIZE
#define PHYS_SDRAM_6 (CONFIG_SYS_SDRAM_BASE + 5 * SDRAM_BANK_SIZE) /* SDRAM Bank
#6 */
#define PHYS_SDRAM_6_SIZE SDRAM_BANK_SIZE
#define PHYS_SDRAM_7 (CONFIG_SYS_SDRAM_BASE + 6 * SDRAM_BANK_SIZE) /* SDRAM Bank
#7 */
#define PHYS_SDRAM_7_SIZE SDRAM_BANK_SIZE
#define PHYS_SDRAM_8 (CONFIG_SYS_SDRAM_BASE + 7 * SDRAM_BANK_SIZE) /* SDRAM Bank
#8 */
#define PHYS_SDRAM_8_SIZE SDRAM_BANK_SIZE

環境變量存儲位置配置:
沒有 NorFlash 則定義 CONFIG_SYS_NO_FLASH
#define CONFIG_SYS_NO_FLASH 1
長度:
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* 256 KiB */
 

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