一. 嵌入式軟體層次
1) Bootloader->引導載入程式
整個嵌入式系統的載入啟動任務完全交給Bootloader完成,它的主要任務是將核心映象從硬碟讀到RAM中,然後跳轉到核心入口啟動核心(作業系統)!通俗來講,Bootloader的作用就是初始化硬體,啟動作業系統。
U-BOOT是Bootloader最常用的一種,將uboot下載至開發板的nand flash(ROM)中,即可通過模擬軟體Secure CRT對開發板進行初始設定。 包括開發板的環境變數、IP等設定項,為後面下載核心、載入檔案系統做基礎。
2)Linux核心
實現不同的硬體、軟體需求配置不同的系統核心。一般基於已有的核心進行修改
配置核心 -> 編譯核心 -> 安裝核心 -> 清理核心過程檔案(make clean)
配置核心: make menuconfig ARCH=arm 選單式互動介面選擇所需的驅動、協議檔案
編譯核心:make uImage(核心名) ARCH=arm CROSS_COMPILE=arm-linux-
安裝核心:通過tftp伺服器,在基於uboot下下載uImage至 20000fc0(210開發板啟動地址) "tftp uImage 20007fc0"
3)檔案系統
檔案系統簡單說就是一種目錄結構,由於linux作業系統的裝置在系統中是以檔案的形式存在,將這些檔案分類管理以及提供和核心互動的介面,就形成了一定的目錄結構也就是檔案系統。
基本流程:a.設定根檔案系統目錄rootfs及內部儲存檔案目錄bin、dev、lib、sbin、sys、usr、mnt等;
b.檔案系統新增核心模組,在linux核心目錄下"/home/S4-Driver/linux-smart210/";
" make modules ARCH=arm CROSS_COMPILE=arm-linux- " 核心編譯
" make modules——install ARCH=arm INSTALL_MOD_PATH=/home/S5-/rootfs " 核心檔案複製到根檔案目錄下
c.根目錄"/.../rootfs"下安裝交叉編譯器busybox,配置核心->編譯核心->安裝拷貝make install;
d.掛載根檔案系統,使用nfs方式,可實時線上根檔案系統rootfs;
SecureCRT -> 通過uboot對開發板進行引數配置(nfs配置項) -> tftp伺服器下載Linux核心 -> bootm 20007fc0執行掛載即可!
二.偶遇問題
1. 開發板ping的系列問題
1) 模型結構搭建:PC機 -> 有線網路卡 -> 路由器 -> 直連網線 -> 開發板網口;
2)a. 設定虛擬機器為橋接模式,以保證外網可尋找到Linux虛擬機器ip;
b. PC機使用的是有線網路卡,則PC機及Linux虛擬網路介面卡覺選擇Realtak USB(有線網口);
c. 保證Linux虛擬機器、PC機、開發板三者ip處於同一網段;
3)關閉Linux虛擬機器、PC機的防火牆,使得PC可ping通Linux和開發板
再排除硬體介面問題,即可通訊。
2.nfs掛載問題
nfs掛載出現如:"Server is not responding"、" unable to mount root"等問題,其主要原因是nfs的掛在設定引數、下載地址有問題。如smart210下載地址為20007fc0(並非20008000),nfs預設是使用udp通訊協議,掛載引數網上都可喲搜尋到,多試一試就沒問題,前提是保證Linux的nfs伺服器能正常使用。