BootLoader引导程序制作及移植(二)
生活随笔
收集整理的這篇文章主要介紹了
BootLoader引导程序制作及移植(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2、添加命令
U-Boot中提供了豐富的命令,smdk2410板增加一些命令。我們為我們的開發板配置了一部分命令,找到下面的幾行: #define CONFIG_CMD_CACHE #define CONFIG_CMD_DATE #define CONFIG_CMD_ELF 在其下面添加下面幾行: #define CONFIG_CMD_REGINFO #define CONFIG_CMD_NAND #define CONFIG_CMD_PING #define CONFIG_CMD_DLF #define CONFIG_CMD_ENV #define CONFIG_CMD_NET 這樣就添加了一些我們需要的命令。 ? 這樣就添加了一些我們需要的命令。 3、修改環境變量 環境變量是U-Boot運行時或者傳遞給內核的重要參數,需要正確設置。找到下面的一行: #define CONFIG_BOOTDELAY 3 /*#define CONFIG_BOOTARGS "root=ramfs devfs=mount console=ttySA0,9600" */ /*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */ #define CONFIG_NETMASK 255.255.255.0 #define CONFIG_IPADDR 10.0.0.110 #define CONFIG_SERVERIP 10.0.0.1 /*#define CONFIG_BOOTFILE "elinos-lart" */ /*#define CONFIG_BOOTCOMMAND "tftp; bootm" */ #if defined(CONFIG_CMD_KGDB) 注意上面的#if defined(CONFIG_CMD_KGDB)處,需要做的修改都在這之前進行修改。修改后的代碼如下: #define CONFIG_BOOTDELAY 3 #define CONFIG_BOOTARGS "root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200" #define CONFIG_ETHADDR 08:00:3e:26:0a:5b #define CONFIG_NETMASK 255.255.255.0 #define CONFIG_IPADDR 10.88.221.118 #define CONFIG_SERVERIP 10.88.221.117 #define CONFIG_BOOTFILE "uImage" #define CONFIG_BOOTCOMMAND "tftp; bootm" #define CONFIG_CMDLINE_TAG 1 #define CONFIG_SETUP_MEMORY_TAGS 1 #define CONFIG_INITRD_TAG 1 #if defined(CONFIG_CMD_KGDB)添加的環境變量在U-Boot啟動時作為U-Boot的默認環境變量,如果不執行saveenv命令,則這些變量只存在于SDRAM中;執行saveenv命令后,這些便量會保存到Flash中,下次上電,在從Flash中把它讀出來,作4、修改命令提示符為環境變量使用。
找到下面一行: #define CFG_PROMPT "SMDK2410 # " /* Monitor Command Prompt */ 修改為: #define CFG_PROMPT "[UP-2410 #]" 這樣,U-Boot的命令提示符就是[UP-2410 #]用的是經典。這樣做只是為了使用的時候知道我們使2410開發板上Bootloader,當然不改的話,也沒有什么影響。5、修改默認下載地址
找到下面的一行: #define CFG_LOAD_ADDR 0x33000000 /* default load address */ 這個變量定義的是在使用串口或者網卡下載文件到SDRAM址,則下載到這個宏指定的默認地址。我們用下面的兩行來替代:時,如果不指定下載地 #define CFG_LOAD_ADDR 0x30008000 #define CFG_TFTP_LOAD_ADDR 0x300080006、修改環境變量在Flash 中的存儲地址
找到下面的兩行: #define CFG_ENV_IS_IN_FLASH 1 #define CFG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */ 上面的定義說明環境變量是存在Flash中。我們的板子上只有Nand Flash量只能存在,因此環境變Nand Flash中。因此,注釋掉上面的兩行,用下面的幾行代替: #define CFG_ENV_IS_IN_NAND 1 #define CFG_ENV_SIZE 0x4000 #define CFG_ENV_OFFSET (0x80000-0x4000) 表示環境變量存儲在Nand Flash中,大小為16KB,起始地址是0.5M往下的16KB址處。這樣的話, 地U-Boot占用的Flash地址是前0.5M,對U-Boot來說,已經足夠了。到這里,配置文件的修改就完成了。 四、修改網卡驅動 前面提到,我們的開發板上是DM9000A網卡,不能直接只用U-Boot這動個,驅我動們的提實供現了代這碼個。網公卡有的兩驅個動文,件由:于修改的地方比較多,就不作詳細解釋了提,供直的接網給卡出驅dm9000x.c和dm9000x.h。這兩個文件在我們的src目錄中存放。把這兩個拷貝到u-boot源代碼目錄下的drivers/net下,替換掉U-Boot驅動文件。 [root@localhost u-boot-1.3.2]# cp /mnt/hgfs/linux/dm9000x.* drivers/net/ 五、編譯U-Boot 首先運行如下命令配置U-Boot: [root@vm-dev u-boot-1.3.2]# make up2410_config Configuring for up2410 board... [root@localhost u-boot-1.3.2]# vi Makefile CROSS_COMPILE = arm-softfloat-linux- 然后運行make命令編譯: [root@vm-dev u-boot-1.3.2]# make 編譯完成后,會在U-Boot的源代碼目錄下生成u-boot.bin文件。這個文件就是我們需要的二進制文件。?
編譯完成后,會在U-Boot的源代碼目錄下生成u-boot.bin文件。這個文件就是我們需要的二進制文件。 六、燒寫U-Boot 將編譯得到的u-boot.bin拷貝到XP的D盤下,將我們光盤中的sjf2410-s.exe貝到文件也拷D盤下。連接好開發板的電源、JTAG 下載線,打開發板的電源。在電腦桌面的左下角點擊開始,找到運行: 版權所有 1985-2001 Microsoft Corp. C:\Documents and Settings\Administrator>D: D:\> 這樣就進入了D盤,運行如下命令進行燒寫: D:\>sjf2410-s.exe /f:u-boot.bin 這樣就會啟動燒寫程序。在燒寫程序中需要我們做一些選擇,要分別輸入三次0,然后才開始真正的燒寫,燒寫完畢后,輸入2推出程序。如下面的內容: 七、測試U-Boot 現在U-Boot和主機之間的串口已、經網燒口寫,到斷開開發板發上板了的,可以啟動開發板檢測是否燒寫好。連接好開發板JTAG下載線,啟動開發板。如果燒寫成功,會在串口終端上出現如下內容: 注意上面內容中紅色的部分,主要是因為我們沒有把環境變臉寫入Flash令將環境變量寫入。運行如下命Flash中: [UP-2410 #]saveenv [UP-2410 #]printenv [UP-2410 #]ping 192.168.1.135 [UP-2410 #]help轉載于:https://blog.51cto.com/chenboqiang/484037
總結
以上是生活随笔為你收集整理的BootLoader引导程序制作及移植(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李开复老师:微博改变一切
- 下一篇: 我猜后台管理路径猜解