環境搭建
一 pc機和嵌入式設備
1.pc機
[1]BIOS (硬件初始化:系統時鍾,內存(SDRAM/DDR2/DDR3/DDR4),啟動方式:USB 硬盤 光驅 ...)
[2]引導程序 (grub,lilo,...) =>加載操作系統
[3]OS (windows,Linux,Mac os)
[4]掛載文件系統(NTFS,FAT(16/32),EXT(2,3,4))
[5]應用程序
2.嵌入式設備(exynos4412)
[1]iROM固化代碼(基本硬件初始化,判別啟動方式(SD/USB/EMMC),
讀取存儲介質一部分數據到iRAM
)
[2]iRAM代碼運行bootloader第一階段(初始化系統時鍾,初始化內存,搬移bootloader到內存)
[3]內存中運行bootloader第二階段(初始化基本的硬件設備(串口,EMMC,SD),加載OS到內存)
[4]內存中運行操作系統(Linux,windows CE,Mac OS)
[5]掛載文件系統
[6]運行應用程序
bootloader = BIOS + 引導程序
二 Linux 解壓命令
tar -xvf xxx.tar.*
xxx.tar.gz -> tar -zxvf xxx.tar.gz
xxx.tar.bz2 -> tar -jxvf xxx.tar.bz2
xxx.tar.xz -> tar -Jxvf xxx.tar.xz
三 添加交叉開發工具鏈
交叉開發:在PC機完成代碼的編寫與編譯,在開發板運行編譯好的程序
export PATH=$PATH:交叉開發工具鏈絕對路徑
例如:
在/home/linux/.bashrc(針對當前的登陸用戶有效)或/etc/bash.bashrc(所有用戶都有效)文件中添加如下內容:
TOOL_CHAIN=/home/linux/workdir/15071/fs4412/gcc-4.6.4/bin
export PATH=$PATH:$TOOL_CHAIN
注意:
64bit ubuntu需要在線安裝32bit運行庫
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1
四 sd卡燒寫u_boot
(1)mkuboot.sh -> 在燒寫一個uboot到sd卡
(2)通過撥碼開關從sd卡啟動
(2)在sd卡中新建一個sdupdate目錄
(4)將自己編譯好的u-boot-fs4412.bin拷貝到了sdupdate目錄
(5)從sd卡啟動,在啟動的uboot中,
輸入命令:(將bootloader寫到emmc)
(6)撥動撥碼開關從emmc啟動
五 用u_boot引導Linux內核
1.配置tftp服務(文件傳輸)
(1)安裝軟件包
離線方式安裝:
sudo dpkg -i *.deb
在線方式安裝:
sudo apt-get install tftp-hpa (客戶端程序)
sudo apt-get install tftpd-hpa (服務端程序)
注意:
lsb_release -a 查看ubuntu版本信息
(2)修改默認的配置文件 /etc/default/tftpd-hpa
TFTP_DIRECTORY="/home/linux/fs4412/tftpboot" 自己的tftpboot路徑
(3)重新啟動tftp服務
sudo /etc/init.d/tftpd-hpa restart
或
sudo service tftpd-hpa restart
測試:
tftp 127.0.0.1
tftp>get 下載的文件
tftp>quit
2.配置nfs服務(設置目錄為網絡上的共享目錄)
(1)安裝軟件包
sudo apt-get install nfs-kernel-server
(2)修改默認的配置文件 /etc/exports
自己電腦上需要共享的目錄路徑
/home/linux/fs4412/share *(rw,sync,no_root_squash)
(3)重新啟動nfs服務
sudo /etc/init.d/nfs-kernel-server restart
或
sudo service nfs-kernel-server restart
測試:
sudo mount IP:共享路徑 自己的掛載點目錄
例如:
sudo mount 127.0.0.1:/home/linux/fs4412/share ./nfs(自己電腦上當前目錄下的nfs子目錄)
撤銷:
sudo umount 掛載點目錄
六 u_boot常用命令
(1)設置開發板ip地址
setenv ipaddr ip地址
(2)設置tftp服務器端的ip地址
setenv serverip 服務器端的地址
開發板和ubuntu之間網絡通信(板子Ping ubuntu):
<1>板子IP地址和Ubuntu的IP地址的網絡號一樣
<2>虛擬機橋接模式
<3>無線網卡禁用
<4>防火牆關閉
-------------------------------------------------------------
還是沒有效果:
[1]網線有問題
[2]板子網卡芯片有問題
------------------------------------------------------------
開發板通過tftp從ubuntu下載程序:
<1>ubuntu已經安裝過tftp服務
<2>需要下載的文件已經存放在tftp服務指定的工作目錄下
<3>在開發板中需要設置serverip (ubuntu的IP地址)
------------------------------------------------------------
如果沒有效果:
[1]網絡問題
[2]ubuntu的tftp服務死掉----->重啟服務
------------------------------------------------------------
(3)保存設置好的環境變量
save
(4)引導Linux內核的命令
tftp 41000000 uImage
tftp 42000000 exynos4412-fs4412.dtb
tftp 43000000 ramdisk.img
bootm 內核在內存地址 ramdisk在內存地址 設備樹在內存地址
bootm 41000000 43000000 42000000
注意:
如果沒有ramdisk,第二個參數用"-"代替
(5)設置開發板啟動后,自動執行的命令(uboot 倒計時完成之后)
setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000
ipaddr : 設置板子IP
serverip: 設置tftp的服務端IP
bootcmd : u_boot倒計時之后,自動執行的命令
bootargs: 告訴操作系統掛載文件系統的方式
tftp : 下載文件
bootm : 啟動操作系統