歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 嵌入式系統搭建之一U-Boot移植

嵌入式系統搭建之一U-Boot移植

日期:2017/3/1 10:33:03   编辑:Linux編程

1. 配置好交叉編譯工具鏈
假設 pwd 得到 /timkyle-dev/techer/arm11-resources/
a.解壓交叉編譯工具鏈包
#tar xf arm-4.3.2.tar.bz2 得到文件夾 arm-4.3.2
b.增加PATH路徑
#vim ~/.bash_profile 增加 PATH=$PATH:/timkyle-dev/techer/arm11-resources/arm-4.3.2/bin
c.使新增加的PATH路徑立即生效
注銷用戶後重新登錄
d.驗證新增PATH是否生效
#arm-none-linux-gnueabi-gcc --version
上述命令成功運行,並有結果輸出,則交叉編譯工具鏈已經配置正確。

相關閱讀:

嵌入式系統搭建之二內核移植 http://www.linuxidc.com/Linux/2012-02/54021.htm

嵌入式系統搭建之三文件系統制作 http://www.linuxidc.com/Linux/2012-02/54022.htm

U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm

2. 編譯並燒寫u-boot到sd卡
假設 pwd 得到 /timkyle-dev/techer/arm11-resources/
a.解壓u-boot源碼包
#tar xf u-boot-1.1.6.tar.bz2 得到文件夾 u-boot-1.1.6_smdk6410
b.配置並編譯u-boot為sd卡啟動
#cd u-boot-1.1.6_smdk6410
#make smdk6410_config
#vim include/configs/smdk6410.h
原內容如下:
445 /* Boot configuration (define only one of next) */
446 //#define CONFIG_BOOT_NOR
447 #define CONFIG_BOOT_NAND
448 //#define CONFIG_BOOT_MOVINAND
449 //#define CONFIG_BOOT_ONENAND
450 //#define CONFIG_BOOT_ONENAND_IROM
修為後如下:
445 /* Boot configuration (define only one of next) */
446 //#define CONFIG_BOOT_NOR
447 //#define CONFIG_BOOT_NAND
448 #define CONFIG_BOOT_MOVINAND
449 //#define CONFIG_BOOT_ONENAND
450 //#define CONFIG_BOOT_ONENAND_IROM
配置說明:
CONFIG_BOOT_NAND 為 NAND flash啟動
CONFIG_BOOT_MOVINAND 為 sd卡啟動
這裡先配置為sd卡啟動
#make clean
#make
#cp u-boot.bin u-boot-sd.bin
c.燒寫u-boot到sd卡
插入sd卡到電腦
#ls /dev/sd* 知道剛插入的sd卡設備是 /dev/sdb1
#cd /timkyle-dev/techer/arm11-resources/
#tar xf s3c6410_sd.tar.bz2 得到文件夾 s3c6410_sd
#cd s3c6410_sd
#./mksdboot /dev/sdb1 ../u-boot-1.1.6_smdk6410/u-boot-sd.bin
d.最後把sd卡插入開發板卡槽, 撥碼開關撥到sd處。
3. 配置並啟動minicom
a.從電腦usb口連接usb-232線到開發板串口
#ls /dev/ttyUSB* 知道剛連接的usb-232線設備是 /dev/ttyUSB0
#minicom -s
首先選擇Serial port setup選項,具體配置如下:
A - Serial Device : /dev/ttyUSB0
B - Lockfile Location : /var/lock
C - Callin Program :
D - Callout Program :
E - Bps/Par/Bits : 115200 8N1
F - Hardware Flow Control : No
G - Software Flow Control : No
接著選擇Save setup as dfl選項
最後選擇exit選項,推出配置並運行minicom處於等待數據狀態
b.開發板通電,minicom就收到數據,顯示已經成功啟動並進入u-boot。
4. 配通開發板與主機的網絡
a.連接網線
b.查看開發板的IP地址
在minicom(即開發板)上運行
$printenv
從得到輸出中,找到ipaddr=192.168.1.20,即為開發板IP地址
c.配置主機IP地址
#ifconfig eth0 192.168.1.10
d.驗證開發板與主機網絡是否暢通
在minicom(即開發板)上運行
$ping 192.168.1.10
結果如下代表暢通
dm9000 i/o: 0x18000300, id: 0x90000a46
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
host 192.168.1.10 is alive
5. 配置主機的tftp服務器
a.安裝tftp服務器
#yum install xinetd
#yum install tftp-server
b.修改啟動腳本,允許tftp服務啟動。
#vim /etc/xinetd.d/tftp
把disable = yes改為disable = no,
把server_args = -s /var/lib/tftpboot改為server_args = -s /tftpboot -c
保存退出。
c.重啟xinetd服務,則tftp也就啟動了
#service xinetd restart
d.設置xinetd開機就啟動服務
#chkconfig --level 2345 xinetd on
e.驗證xinet及tftp是否啟動成功
#chkconfig --list
看到結果如下
xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetd based services:
tftp: on
f.關閉防火牆
#system-config-firewall
點擊Disable按鈕
g.關閉SELinux
#vim /etc/sysconfig/selinux
改為SELINUX=disabled
保存推出,並重啟電腦
6. 編譯u-boot為nand flash啟動
假設 pwd 得到 /timkyle-dev/techer/arm11-resources/
a編譯u-boot
#cd u-boot-1.1.6_smdk6410
#make smdk6410_config
#vim include/configs/smdk6410.h
修為後如下:
445 /* Boot configuration (define only one of next) */
446 //#define CONFIG_BOOT_NOR
447 #define CONFIG_BOOT_NAND
448 //#define CONFIG_BOOT_MOVINAND
449 //#define CONFIG_BOOT_ONENAND
450 //#define CONFIG_BOOT_ONENAND_IROM
配置說明:
CONFIG_BOOT_NAND 為 NAND flash啟動
CONFIG_BOOT_MOVINAND 為 sd卡啟動
這裡要配置為nand flash啟動
#make
#cp u-boot.bin u-boot-nand.bin
b.復制到tftp服務目錄/tftpboot
#cp u-boot.bin /tftpboot/u-boot-nand.bin
7. 通過tftp服務把u-boot下載並燒寫到開發板的nand flash上
a.下載u-boot到開發板內存的0x5000800地址處
在minicom(即開發板)上運行
$tftp 0x50008000 u-boot-nand.bin
b.從nandflash的0地址開始擦處0x100000大小
$nand erase 0 0x100000
c.把在從0x50008000內存地址開始的數據寫到nand的零地址處,寫0x100000大小
$nand write 0x50008000 0 0x100000
e.開發板關電,把撥碼開關撥到nand,再開電啟動開發板。

Copyright © Linux教程網 All Rights Reserved