嵌入式產品開發流程
1. 硬體設計,網卡、USB控制器等
2. BootLoader移植
3. Kernel移植。核心移植又名最小系統移植,移植後的核心具備網路通、串口通、根檔案系統可用等基
本條件。
4. 5. 應用程式的開發。C函式館(Uclibc/Glibc)、QT圖形化應用程式開發、網路應用程式開發
6. 功能測試、性能測試、系統集成測試、實驗局、新產品發布
交叉工具鏈
宿步驟如下:
1. #tar zxvf arm-linux-gcc-4.3.2.tar.gz -C /
2. (1)一次性:執行export在PATH環境變數中添加路徑 #export PATH=$PATH:/usr/local/arm/4.3.2/bin (2)永久性:修改/etc/profile,添加 pathmunge /usr/local/arm/4.3.2/bin
編譯器: #arm-linux-gcc hello.c -o hello
反彙編工具:#arm-linux-objdump -D -S hello >log
#arm-linux-gcc -g hello.c -o hello #arm-linux-objdump -D -S hello >log 這兩句執行後將在log檔案生成彙編、C逐句對照信息
ELF檔案查看工具:#arm-linux-readelf -a hello 可查看檔案運行架構、大小端等信息。 #arm-linux-readelf -a hello 可產看檔案所用到的動態共享程式庫,一般編譯時加上"-static"選項
核心製作
嵌入式Linux系統由Linux核心與根檔案系統兩部分構成,二者缺一不可。核心製作步驟如下:
1. 清除原有配置與中間檔案 #make distclean
2. 配置核心
X86:#make menuconfig arm:#make menuconfig ARCH=arm
參考配置在arch/arm/configs目錄下,注意配置NFS與ramdisk檔案系統的區別
3. 編譯核心
X86:#make bzImage
arm:#make uImage ARCH=arm CROSS_COMPILE=arm-linux- 首先得將u-boot/tools/目錄中的mkimage cp至/bin目錄下
根檔案系統
根檔案系統是Linux啟動使用的第一個檔案系統,由一系列目錄組成,包括應用程式、C庫以及相關配置文
件
1. 創建根檔案系統的目錄
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/sbin usr/lib lib/modules
2. 創建設備檔案
#cd dev/
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
#cd ..
3. 安裝/etc
#tar zxvf etc.tar.gz -C /XXX/rootfs
4. 編譯核心模組
進入核心根目錄執行命令:
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
5. 安裝核心模組
#make modules_install ARCH=arm INSTALL_MOD_PATH=/XXX/rootfs 實質是將編譯好的核心模組從核心代碼中cp至/XXX/rootfs/lib/modules路徑下
6. 配置Busybox
進入busybox目錄執行 #make menuconfig
(1)進入Busybox Settings->Build Options->
選中“Build Busybox as a static binary”,靜態連結
Cross Compiler Prefix (arm-linux-)
(2)進入Busybox Settings->Installation Options->
選中“Don't use /usr”避免busybox被安裝到宿主機/usr目錄下,破壞宿主機系統
Busybox Installation Prefix (/XXX/rootfs) 指明編譯後Busybox的安裝位置
7. 編譯、安裝busybox
#make ARCH=arm CROSS_COMPILE=arm-linux-
#make install
ramdisk製作
#genext2fs -b 8192 -d /XXX/rootfs ramdisk
#gzip -9 -f ramdisk
檔案系統
常見的檔案系統類型有:Jffs2,Yaffs,Cramfs,Ramdisk,NFS等,配置核心時選擇檔案系統類型。
Jffs2: 用於NorFlash,可讀寫,可壓縮
Yaffs: 用於NandFlash,速度快,不支持數據壓縮
Cramfs:用於NandFlash和NorFlash,唯讀的壓縮檔案系統
Ramdisk:實質並非檔案系統,是將實際檔案系統(如:ext2)裝入記憶體的機制
NFS:網路檔案系統
嵌入式產品的特點
嵌入式產品的核心
嵌入式產品的核心是嵌入式微處理器。嵌入式微處理器一般就具備以下4個特點:
1.對實時多任務有很強的支持能力,能完成多任務並且有較短的中斷回響時間,從而使內部的代碼和實時核心心的執行時間減少到最低限度。
2.具有功能很強的存儲區保護功能。這是由於嵌入式產品的軟體結構已模組化,而為了避免在軟體模組之間出現錯誤的交叉作用,需要設計強大的存儲區保護功能,同時也有利於軟體診斷。
3.可擴展的處理器結構,以能最迅速地開展出滿足套用的最高性能的嵌入式微處理器。
4.嵌入式微處理器必須功耗很低,尤其是用於攜帶型的無線及移動的計算和通信設備中靠電池供電的嵌入式產品更是如此,如需要功耗只有mW甚至μW級。
嵌入式產品的優勢
嵌入式計算機系統同通用型計算機系統相比具有以下特點:
1.嵌入式產品通常是面向特定套用的嵌入式CPU與通用型的最大不同就是嵌入式CPU大多工作在為特定用戶群設計的系統中,它通常都具有低功耗、體積小、集成度高等特點,能夠把通用CPU中許多由板卡完成的任務集成在晶片內部,從而有利於嵌入式產品設計趨於小型化,移動能力大大增強,跟網路的耦合也越來越緊密。
2.嵌入式產品是將先進的計算機技術、半導體技術和電子技術與各個行業的具體套用相結合後的產物。這一點就決定了它必然是一個技術密集、資金密集、高度分散、不斷創新的知識集成系統。
3.嵌入式產品的硬體和軟體都必須高效率地設計,量體裁衣、去除冗餘,力爭在同樣的矽片面積上實現更高的性能,這樣才能在具體套用中對處理器的選擇更具有競爭力。
4.嵌入式產品和具體套用有機地結合在一起,它的升級換代也是和具體產品同步進行,因此嵌入式產品產品一旦進入市場,具有較長的生命周期。
5.為了提高執行速度和系統可靠性,嵌入式產品中的軟體一般都固化在存儲器晶片或單片機本身中,而不是存貯於磁碟等載體中。
6.嵌入式產品本身不具備自舉開發能力,即使設計完成以後用戶通常也是不能對其中的程式功能進行修改的,必須有一套開發工具和環境才能進行開發。