歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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