環境描述
硬體型號: Freescale i.MX6 Ultralite (MCIMD6Y2CVM08AB XAD1910);
軟體版本: ubuntu18.04 ;
內核版本: BSP-Yocto-i.MX6UL-PD19.1.1
參考資料
- Phytec官網下載地址:phyCORE-i.MX 6UL/ULL
- FtpServer:/pub/SoftWare/Linux/Bsp-Yocto-i.MX6UL/
- Wiki資料:phyCORE-i.MX6UL
- BareBox資料:User manual
- i.Mx Linux學習資料:[野火]i.MX Linux開發實戰指南
環境搭建
軟體安裝
- Eclipse安裝,安裝步驟參考Eclipse 安裝環境指導 / Eclipse setup guide,
- Eclipse GDB除錯,參考Development Environment Guide Debugging an Example Project 章節,
- Qt安裝,安裝步驟參考phyCORE-i.MX6UL Qt 開發環境配置,
- FSearch,類everything官網地址,
硬體設定
- 開發板從網路啟動參考開發板從網路啟動 / boot board from network,
模塊開發
內核編譯
- 操作步驟參考檔案怎樣用SDK編譯內核模塊 / how to use SDK compile kernel module,
- 內核原始碼下載(下載地址)完成后,也可以通過git來管理內核原始碼,執行命令
git clone git://git.phytec.de/linux-mainline和git checkout v4.14.184-phy1加載內核原始碼,執行編譯步驟,內核原始碼解壓位置/opt/kernel/linux-mainline-4.14.184-phy1, - 在解壓檔案加下執行
source/opt/phytec-yogurt/BSP-Yocto-i.MX6UL-PD19.1.1/environment-setup-cortexa7hf-neon-vfpv4-phytec-linux-gnueabi執行make ARCH=arm imx_v6_v7_defconfig出現如下錯誤:

-
解決辦法:
sudo apt install build-essential -
執行
make menuconfig出現如下錯誤:

-
執行
make ARCH=arm imx_v6_v7_defconfig命令(注意:命令不能寫錯,否則報下圖所示錯誤)

-
執行 make ARCH=arm zImage 出現如下錯誤:

安裝lzop工具,執行sudo apt-get install lzop
8. 鏡像編譯完成后提示如下資訊:

設備樹
-
設備樹更改,以uart為例,設備樹配置在 imx6ul-phytec-segin.dtsi 檔案中,設備使能在檔案 imx6ull-phytec-segin-ff-rdk-nand.dts 檔案中,如下圖所示

-
設備樹編譯
make imx6ull-phytec-segin-ff-rdk-nand.dtb
內核升級
注意:開發板運行在BareBox下進行升級
- 創建tftp服務器,IP地址為192.168.3.10,
- 將內核檔案zIamge、設備數檔案imx6ull-phytec-segin-ff-rdk-nand.dtb放置于根目錄下,
- 進入BareBox下,依次執行下列命令:
ubiattach /dev/nand0.root
ubiupdatevol /dev/nand0.root.ubi.kernel /mnt/tftp/zImage
ubiupdatevol /dev/nand0.root.ubi.oftree /mnt/tftp/imx6ull-phytec-segin-ff-rdk-nand.dtb
模塊編譯
- 內核模塊編譯,Makefile檔案如下,

執行Makefile前需匯入環境變數,命令如下
source/opt/phytec-yogurt/BSP-Yocto-i.MX6UL-PD19.1.1/environment-setup-cortexa7hf-neon-vfpv4-phytec-linux-gnueabi
2. 執行make
模塊加載
- 對生成的.ko檔案執行insmod,出現如下錯誤:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RpFeJfuA-1609055314370)(/api/project/8088668/files/22358993/imagePreview)]
錯誤原因(編譯環境內核版本與開發板運行內核版本不一致)可參考鏈接,
解決辦法:升級開發板內核,保持編譯環境與運行環境內核版本一致,
模塊呼叫
- 參考鏈接:Writting a Linux Kernel Module
應用開發
- 開機自啟動程式,參考開機自啟動一個應用/系統服務 / start a service or application when boot,
- Mqtt移植,參考資料:MQTT協議,
- Linux+cMake構建工程 未完待續
- 串口應用編程(三種模式,詳細講解參考《UNIX環境高級編程 第二版》第18章 終端I/O)
- 終端屬性描述可參考ZLG產品用戶手冊,
- 在串口應用開發中,如果不是開發終端,只是資料傳輸,不處理串口資料,串口傳輸模式設定為原始模式,代碼如下
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); options.c_oflag &= ~OPOST;
注意:此時串口打開方式要設定為阻塞模式,否則每次只能讀取一個位元組,設定方式如下open(fd, O_RDWR | O_NOCTTY);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241914.html
標籤:其他
