1.引言
接觸Freescale/NXP的I.MX6處理器大概有了兩年多的時間,對於一個最初玩MCU的我來說,真是面臨了很多的挑戰。最讓我感到鬱悶和崩潰的是那個官方的基於Yocto的開發環境,搭建它要求真是太高了,機器得有上百G的空間,Ubuntu系統版本也有要求,還要能翻牆等等,另外還得去理解Yocto的架構。我在嘗試過兩次之後準備徹底的放棄研究它了。前兩天由於工作需要,不得不再一次面對要自己去編譯文件系統的問題,碰巧在網上看到有人用Buildroot弄成功過,我嘗試了下,沒太費力氣就成功了,Buildroot比Yocto簡單太多了。特以此文記錄下,希望對大家有所幫助。
2.環境介紹
對本文涉及到的硬體和軟體環境統一做個說明。
2.1.硬體
1)我使用的是米爾科技的I.MX6ULL的小板子,當時參加一個網上的活動,免費送我的,板子做的小巧精緻,和以前Freescale的Freedom開發板很像,贊,攜帶和使用太方便了。大家如果用的是I.MX其他系列,本文內容同樣適用。
2)一根Micro USB接口線,用於給小板供電、同時兼下載程序用,這個設計很好,不用單獨再接電源。
3)一個USB轉TTL串口,用於接調試串口,登錄系統用。
4)一根網線,用於連接PC和板子,驗證ssh和scp功能。
2.2.軟體
1) http://down.myir-tech.com/MYS-6ULX/ ,這個是米爾官方提供的板子資料連結,裡面包括了Uboot、Kernel、Yocto相關文件、下載工具、文檔等。
因為本文重點是Buildroot 製作根文件系統,所以其他相關內容不在這裡介紹。它提供的Mfgtool包裡已經包含了板子配套的Uboot、Kernel、設備樹文件、根文件系統。我這裡就只是把原來Yocto生成的根文件系統做個替換。
2)Buildroot,官方下載地址為:https://buildroot.org/downloads/
我使用的是buildroot-2019.02.tar.gz,較新的一個版本。我是把它解壓到Ubuntu的~(當前用戶的home目錄下)目錄下。
3)工具鏈,我這裡使用的是Linaro的gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz 這個版本,我是把它解壓到Ubuntu的/opt 目錄下。
工具鏈的官方下載連結:
關於工具鏈問題,這裡多嘮叨幾句。第一點要注意的是Buildroot可以使用已經安裝好的工具鏈,比如Linaro,但是它不支持Yocto生成的工具鏈,具體原因大家看下面這段英文描述吧,
我一開始就是用Yocto產生的工具鏈去編譯的,結果確實報了一個關於sysroot的錯誤,這裡大家要注意下。
至於我為什麼要用這個版本的工具鏈,原因是有一家模組廠,他們的一個通信模塊提供的SDK對交叉編譯鏈的gcc版本有指定要求,所以只能配合它選擇了這個版本。
3.Buildroot根文件系統製作
詳細步驟如下:
1)進入到buildroot解壓後的對應目錄中
cd buildroot-2019.02
2)用默認的配置文件生成.config文件,
sudo make imx6ulevk_defconfig
注1:imx6ulevk_defconfig 這個文件在/buildroot-2019.02/configs 目錄裡,需要根據你使用的具體晶片型號來選擇,因為我使用的6ULL,所以用這個。假設你使用的是I.MX7,那麼你就選擇imx7開頭的。
注2:因為我這邊沒加sudo編譯報錯,所以加上了sudo,你可以先不加sudo試試。
3)make menuconfig進行定製化配置
sudo make menuconfig
彈出如下界面:
Buildroot 的配置選項簡單介紹如下:
Target options
目標選項。包括處理器體系結構、二進位文件格式、架構系列、ABI、浮點運算、指令集。