1.嵌入式系統(tǒng)的組成:
通過? ? make->linux make busybox make uls 編譯通過,如果缺少的軟件,需要自己下載。
2.buil root
通過"build root" 裁剪,可以將軟件、命令、驅(qū)動等按需裁剪。
類比:個人感覺跟雨林木風(fēng)裁剪windows一樣。
(1)獲取buildroot
? ? http://buildroot.uclibc.org/download.html
????實(shí)際下載的源碼包是 buildroot-2016.02.tar.gz
解壓命令
(2)配置buildroot
將源碼包復(fù)制到XXX目錄下,并解壓tar -xvf buildroot-2015.02.tar.gz
進(jìn)入目錄,執(zhí)行配置命令:cd /XXX/buildroot-2015.02
執(zhí)行:make?ARCH=arm?menuconfig
配置界面如下:

進(jìn)入target options
配置CPU參數(shù):little endian?指的是小端存儲;二進(jìn)制格式是ELF;CPU是Cortex-A5;交叉工具支持eabihf;浮點(diǎn)書處理采用VFP-v4;采用精簡指令集Thumb2;
配置如下圖所示:

進(jìn)入toolchain
將Toolchaintype配置為Externaltoolchain,然后在Toolchain中選擇交叉編譯工具的版本,如Custom toolchain,在Toolchain origin中選擇Pre-installed toolchain,后面編譯時,buildroot將會根據(jù)Toolchain path找到我們的交叉編譯工具。選中Enable MMU?support,退回上一界面;

進(jìn)入System configuration
在system hostname一欄中輸入開發(fā)板的名稱,如ZHD-A5,在system banner中可輸入歡迎語,如welcome to Hi-Target。在Init system中選擇BusyBox,在/dev management中選擇Dynamic using mdev,即使用mdev動態(tài)加載設(shè)備節(jié)點(diǎn)的方式,然后在Path to thepermission tables中選擇設(shè)備節(jié)點(diǎn)的配置表,這里我們一定要選擇system/device_table_dev.txt,否則后面在dev目錄下將不會生成各 種設(shè)備節(jié)點(diǎn)。當(dāng)然我們也可以手動的配置該文件,添加必要的節(jié)點(diǎn)或刪除不需要的節(jié)點(diǎn)。Root password為配置進(jìn)入linux控制臺終端后的密碼,為空則登錄時不需要密碼,默認(rèn)登錄用戶名為root。選中Run agetty(login prompt)after boot。Remount root filesystem read-write during boot表示可以進(jìn)行動態(tài)的掛載;

再進(jìn)入下面的getty options選項(xiàng):
將TTY port配置為ttyS0,將baudrate配置為115200,對應(yīng)開發(fā)板的打印串口
進(jìn)入Filesystem images
選中ext2/3/4root filesystem,然后在ext2/3/4variant中選擇ext4,選中tar the root filesystem,最后保存當(dāng)前的配置并退出,配置完成。大家也可以根據(jù)自己的實(shí)際需要進(jìn)行配置。

進(jìn)入target packages
在target packages目錄下,有一大堆第三方的開源工具軟件,基本上嵌入式上可能會用到得或用不到的,在這里都用,如果你想要把這個工具軟件包含進(jìn)固件里面,很簡單,只要在這個軟件的名稱前面打個*星號,表示要編譯這個軟件到固件里面,從此和刀耕火種的源代碼移植say goodbye,今入工業(yè)文明時代。
下面以移植DNS服務(wù)器bind為例,做一個簡單的說明:

(3)編譯buildroot
只需在buildroot的根目錄下執(zhí)行make指令即可編譯整個buildroot。
編譯時,buildroot會自動下載第三方軟件的源碼,我們只要等一下,讓buildroot自己下載編譯。編譯完成后,會在output/image目錄下面生成固件的鏡像包,把這個包拷貝到RTK的platform目錄下,然后解壓,就可以使用了。在output/target下也可以看根文件,包含的內(nèi)容如下所示:

借助buildroot一個含有各項(xiàng)所需要包(busybox,apache,PHP,bind等)的文件系統(tǒng)就做好了,真是利器,讓很來需要花很多時間和精力的移植工作變得簡單而且高效。