一、配置檔案名稱和目錄
這個配置檔案的名稱為 開發闆名稱.txt。
這個配置檔案的目錄為 include/configs/ 目錄。
二、宏定義
整個檔案的内容使用條件宏定義
#ifndef __CONFIG_H
#define __CONFIG_H
xxxxxxxx
xxxxxxxx
xxxxxxxx
#endif
來包含起來。
三、内容
1、定義CPU類型和開發闆型号
定義 CPU 的體系結構:
#define CONFIG_MIPS32 1
定義 CPU 的家族
#define CONFIG_ClxRISC 1
定義 CPU 的型号
#define CONFIG_CQ8401 1
定義 開發闆的名稱
#define CONFIG_MINGDDIE 1
2、設定時鐘頻率
#define CFG_HZ CFG_EXTAL
這個 CFG_HZ 宏定義在 net/net.c 檔案中使用到了。
3、定義序列槽頻率
#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
在這個目錄下的每個配置檔案都需要定義,一般不改變,在 common/cmd_nvedit.c 檔案中需要使用到。
此 宏定義 是序列槽要設定的 比特率。
#define CONFIG_BAUDRATE 115200
此 宏定義 指明序列槽 比特率可以改變。
#define CFG_LOADS_BAUD_CHANGE 1
此 宏定義 指明序列槽 下載下傳顯示進度,可以不定義,但是大多數都進行了定義。
#define CONFIG_LOADS_ECHO 1
4、定義u-boot的指令
#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
CFG_CMD_ASKENV | \
CFG_CMD_DHCP | \
CFG_CMD_PING | \
CFG_CMD_IDE | \
CFG_CMD_PCI | \
CFG_CMD_EXT2FS | \
CFG_CMD_EXT2 | \
CFG_CMD_NET & ~CFG_CMD_FLASH)
可以自己添加,具體添加指令的步驟,可以參考《u-boot指令的添加》。
#include <cmd_confdefs.h>
包含 cmd_confdefs.h 這個頭檔案,必須在 CONFIG_COMMANDS 這個宏定義之後。
5、定義環境變量
#define CONFIG_BOOTDELAY 3
#define CONFIG_BOOTFILE "vmlinux-26"
#define CONFIG_BOOTARGS "mem=64M console=tty0 console=ttyS0,115200n8 ip=192.168.4.118 root=/dev/nfs nfsroot=192.168.4.120:/opt/cq8401 rw"
#define CONFIG_BOOTCOMMAND "set serverip 192.168.4.120; set ipaddr 192.168.4.118; tftp;bootm;"
#define CFG_AUTOLOAD "n"
#define CONFIG_NET_MULTI
#define CONFIG_ETHADDR 00:50:c2:1e:af:3e
6、定義雜項
定義指令的 HELP 資訊的顯示。
#define CFG_LONGHELP
定義u-boot指令行的提示符。
#define CFG_PROMPT "Mingddie # "
定義u-boot 指令行的 I/O Buffer 大小。
#define CFG_CBSIZE 256
定義u-boot 指令行 可顯示的 Buffer 大小。
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)
定義u-boot 的指令最多有多少個參數。
#define CFG_MAXARGS 16
定義 記憶體 布局的 MALLOC 和 BOOTPARAMS 段的長度。
#define CFG_MALLOC_LEN 128*1024
#define CFG_BOOTPARAMS_LEN 128*1024
定義 SDRAM 的起始位址。
#define CFG_SDRAM_BASE 0x80000000
定義 初始化時的 棧指針在 SDRAM 中的偏移。
#define CFG_INIT_SP_OFFSET 0x400000
定義下載下傳核心的 加載位址。
#define CFG_LOAD_ADDR 0x80700000
定義 u-boot 指令 mtest 的起始位址和結束位址。
#define CFG_MEMTEST_START 0x80100000
#define CFG_MEMTEST_END 0x80800000
定義 CQ8401 開發闆網卡的 接收和發送 buffer 數目。
#define CFG_RX_ETH_BUFFER 16
7、定義 FLASH 的配置
定義 FLASH 的 BANK 數目。
#define CFG_MAX_FLASH_BANKS 1
選擇 FLASH 的初始化和讀寫函數。
#define CFG_FLASH_CFI 1
#define CFG_FLASH_CFI_DRIVER 1
設定 FLASH 的基本實體特性,初始化時使用。
#define CFG_FLASH_USE_BUFFER_WRITE 1
#define CFG_MAX_FLASH_SECT 128
#define PHYS_FLASH_SECT_SIZE (128*1024)
#define PHYS_FLASH_1 0xbf000000
#define CFG_FLASH_BASE PHYS_FLASH_1
定義 Monitor 的長度和基位址。
#define CFG_MONITOR_BASE 0xbfc00000
#define CFG_MONITOR_LEN (256*1024)
定義 Flash 的讀寫逾時。
#define CFG_FLASH_ERASE_TOUT (20*CFG_HZ)
#define CFG_FLASH_WRITE_TOUT (20*CFG_HZ)
定義環境變量是否儲存在 Flash 中,選擇 環境變量儲存的媒體,不同的媒體,選擇common/目錄下不同的函數。
#define CFG_ENV_IS_IN_FLASH 1
還可以選擇
CFG_ENV_IS_IN_DATAFLASH 這個宏定義了 環境變量 是 Environment is in DataFlash
CFG_ENV_IS_IN_EEPROM
CFG_ENV_IS_IN_FLASH
CFG_ENV_IS_IN_NAND
CFG_ENV_IS_NOWHERE
CFG_ENV_IS_IN_NVRAM
定義環境變量所占用空間的總大小。
#define CFG_ENV_SECT_SIZE 0x20000
#define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
定義環境變量儲存的起始位址。
#define CFG_ENV_ADDR (CFG_MONITOR_BASE + CFG_MONITOR_LEN)
定義 u-boot 指令 tftp 指令執行時是否可以讀寫 flash。
#define CFG_DIRECT_FLASH_TFTP 1
定義 u-boot 指令 setenv 指令執行時是否可以設定 (ethaddr)和(serial#)環境變量。
#define CONFIG_ENV_OVERWRITE 1
8、 定義 SDRAM 的配置
定義 SDRAM 的 BANK 數目。
#define CONFIG_NR_DRAM_BANKS 1
// SDRAM paramters
#define SDRAM_BW16 0
#define SDRAM_BANK4 1
#define SDRAM_ROW 13
#define SDRAM_COL 9
#define SDRAM_CASL 2
//#define CFG_COL_NUMS SDRAM_COL-1
// SDRAM Timings, unit: ns
#define SDRAM_TRAS 45
#define SDRAM_RCD 20
#define SDRAM_TPC 20
#define SDRAM_TRWL 7
#define SDRAM_TREF 7812
9、 定義 CACHE 的配置
定義 Data Cache 大小。
#define CFG_DCACHE_SIZE 16384
定義 指令 Cache 大小。
#define CFG_ICACHE_SIZE 16384
定義 Cache line 大小。
#define CFG_CACHELINE_SIZE 32