嵌入式(編譯內(nèi)核、根文件系統(tǒng)等)

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)就做好了,真是利器,讓很來需要花很多時間和精力的移植工作變得簡單而且高效。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容