天天看點

IMX6ULL驅動開發實戰連載-01搭建開發環境

哈喽,大家好。我是小仲。闆子在3.31号就收到了,但是,由于最近一直很忙,拖到了現在才開始搭建環境。接下來的一段時間,會基于野火IMX6ULL開發闆寫一系列教程,主要側重于驅動和核心的調試技巧。這方面的文章,我也是第一次寫,過程中可能會踩不少坑,可能更新時間間隔會很。如果有寫的不好的,大家可以及時指出,有任何意見和建議也可以聯系我。 今天分享的是本次測評的第一篇文章,開發闆的搭建環境教程。 本文由嵌入式與Linux那些事創作,未經作者授權,禁止轉載。 CSDN:嵌入式與Linux那些事

IMX6ULL驅動開發實戰連載系列總目錄

1. 開箱測評

1.1 資料下載下傳

1.2 開發闆簡介

2. 環境搭建

2.3.1 擷取核心源碼

2.3.2 編譯源碼

2.3.3 加載驅動程式

2.2.1 本機和虛拟機互ping

2.2.2 虛拟機和開發闆互ping

2.2.3 配置虛拟機NFS服務

2.2.4 臨時挂載NFS檔案系統

安裝NFS

安裝NFS用戶端

檢視NFS 伺服器共享目錄

2.1 燒寫鏡像到SD卡

2.2 挂載NFS網絡檔案系統

2.3 搭建交叉編譯環境

3. 總結

野火資料下載下傳連結如下。

綜合資料百度雲:https://pan.baidu.com/s/1kJdJ6xc12Yg4rPby_MatDA 提取碼:4u7d

線上文檔:http://doc.embedfire.com/linux/imx6/base/

第一期-零基礎入門篇-47集 :https://www.bilibili.com/video/BV1JK4y1t7io

第二期-核心程式設計篇-20集 :https://www.bilibili.com/video/BV1PK411T7MA

第三期-裸機開發篇-21集 :https://www.bilibili.com/video/BV1JK4y1Y7xQ

第四期-驅動開發篇-82集 :https://www.bilibili.com/video/BV1pf4y1974n

全部視訊雲盤下載下傳:https://pan.baidu.com/s/1jp15pPk5gCF3q2IKDF_95A 提取碼:wcfa

視訊課件雲盤下載下傳:https://pan.baidu.com/s/1NM47YIOC6JWu95uCDZ0NyA 提取碼:a0h9

視訊課件倉庫 :https://gitee.com/Embedfire-imx6/embed_linux_tutorial_ppt

建議觀看線上文檔。本地下載下傳的pdf版本會有一些錯誤。

之前學習驅動開發一直使用的是韋老師的S3C2440,搭配韋老師的第二期視訊一起學習,效果很不錯。由于馬上要工作了,是以,想換一個新一點的平台,熟悉下環境。正好看到了電子芯吧客的試用申請,于是,寒假在家的時候就送出了申請。今天終于收到了這塊闆子,話不多說,開箱測評。

這麼大一個袋子,快遞包裹的挺嚴實,裡面塞了氣泡膜,保護工作很到位。

IMX6ULL驅動開發實戰連載-01搭建開發環境
IMX6ULL驅動開發實戰連載-01搭建開發環境

精緻的盒子,來一張全家福,包括開發闆,電源,兩根USB線。

IMX6ULL驅動開發實戰連載-01搭建開發環境
IMX6ULL驅動開發實戰連載-01搭建開發環境

本次使用的是野火的IMX6ULL的NAND版本,具有512MB的NAND-FLASH,主頻為800MHZ。開發闆的底闆資源接口如下圖所示。野火提供了豐富的資料,對照教程我們可以輕松的讓開發闆跑起來。

IMX6ULL驅動開發實戰連載-01搭建開發環境

由于本次使用的開發闆為512M Nand 版本,是以,強烈建議大家準備一個2G以上的SD卡,将Debian鏡像放在SD卡中,将開發闆設定為SD卡啟動。否則,隻能燒寫Debian鏡像的純淨版。

燒寫鏡像檔案,使用的是Etcher工具,在官網(https://www.balena.io/etcher/)可以根據自己電腦系統,進行下載下傳。

IMX6ULL驅動開發實戰連載-01搭建開發環境

野火的鏡像分為四個版本,在百度網盤可以下載下傳到。(http://products.embedfire.com/zh_CN/latest/linux/ebf_i.mx6ull.html#debian)

IMX6ULL驅動開發實戰連載-01搭建開發環境

imx6ull-debian-buster-console-armhf-2020-04-09.img.xz:Debian 的純淨版固件,沒有帶桌面環境和野火的QT App。(解壓後約340M)

imx6ull-debian-buster-desktop-armhf-2020-04-09.img.xz:帶有桌面環境的Debian 固件,系統啟動後會進入桌面環境。(解壓後約1.1G)

imx6ull-debian-buster-full-qt-app-armhf-2020-04-09.img.xz::具有完整QT App 功能的Debian 固件, 系統啟動後會進入QT App 的界面。

但是該固件體積超過了Nandflash 512M 的容量,是以不能燒錄到Nandflash 中。隻可燒錄于eMMC。(解壓後約900M)

imx6ull-debian-buster-part-qt-app-armhf-2020-04-09.img.xz:該固件移除了音視訊播放功能的QT App,系統啟動後會進入QT App 的界面。

該固件體積小于Nandflash 512M 的容量,可以分别燒錄到Nandflash 和eMMC 中。(解壓後約420M)

點選以下兩個按鈕,選擇合适的鏡像,燒錄即可。

IMX6ULL驅動開發實戰連載-01搭建開發環境

燒錄完成後,将開發闆上的撥碼開關的2-5-8位撥到on,其他位撥到0,即可啟動。

本教程中,使用的是Ubuntu18.03,在野火的資料包中可以找到Ubuntu18.03版本,在虛拟機中安裝好即可。

IMX6ULL驅動開發實戰連載-01搭建開發環境

嘗試将開發闆,本機,虛拟機連接配接在同一網段,在本機使用<code>ipconfig</code>指令,檢視本機ip位址。記下這個位址,202.193.61.216。

IMX6ULL驅動開發實戰連載-01搭建開發環境

在ubuntu18.04中,使用<code>ifconfig</code>指令檢視ip位址,但是報錯了。

IMX6ULL驅動開發實戰連載-01搭建開發環境

根據提示,使用 <code>sudo apt install net-tools</code> 指令,安裝網絡工具。

IMX6ULL驅動開發實戰連載-01搭建開發環境

以上說明apt被某個程序鎖住了,找到程序,kill 就完了,如下:

IMX6ULL驅動開發實戰連載-01搭建開發環境

強制重新配置軟體包,更新下apt,但是又報錯。

IMX6ULL驅動開發實戰連載-01搭建開發環境
IMX6ULL驅動開發實戰連載-01搭建開發環境

使用指令<code>sudo rm /var/lib/dpkg/lock-frontend</code>,<code>sudo rm /var/lib/dpkg/lock</code>删除占用程序

IMX6ULL驅動開發實戰連載-01搭建開發環境
IMX6ULL驅動開發實戰連載-01搭建開發環境

使用指令<code>sudo apt update</code>再次嘗試更新apt,成功!

IMX6ULL驅動開發實戰連載-01搭建開發環境

使用指令<code>sudo apt install net-tools</code>安裝網絡工具。

IMX6ULL驅動開發實戰連載-01搭建開發環境

使用<code>ifconfig</code>,檢視ip

IMX6ULL驅動開發實戰連載-01搭建開發環境
注意:虛拟機的網絡連結要設定成橋接模式,橋接到有線網卡。

嘗試使用ping指令,本機和虛拟機互ping,成功ping通。

IMX6ULL驅動開發實戰連載-01搭建開發環境

将開發闆通過路由器和本機相連,啟動開發闆,使用MobaXterm 配置一個序列槽與使用者互動,序列槽配置如下所示:

IMX6ULL驅動開發實戰連載-01搭建開發環境

啟動開發闆,通過序列槽就可以看到輸出的啟動資訊。開發闆出廠的預設賬号為debian,密碼為temppwd。

IMX6ULL驅動開發實戰連載-01搭建開發環境

使用<code>ifconfig</code>檢視開發闆的ip位址,開發闆位址和虛拟機位址已經處于同一網段,不需要額外配置。嘗試使用開發闆ping虛拟機成功ping通。

IMX6ULL驅動開發實戰連載-01搭建開發環境

開發闆ping主機也可以ping通。

IMX6ULL驅動開發實戰連載-01搭建開發環境

為了友善測試驅動程式。通過NFS 給開發闆共享開發主機編寫的應用程式。開發闆通過NFS與開發主機連接配接共享檔案。開發主機生成的目标闆應用程式放在NFS 的共享檔案夾内,開發闆通路該檔案夾執行應用程式進行測試。在另一方面,開發主機與開發闆通過序列槽連接配接,使用序列槽終端控制開發闆。

ubuntu中預設沒有安裝NFS服務,是以,需要使用<code>sudo apt install nfs-kernel-server</code>指令安裝NFS。

使用<code>sudo vim /etc/exports</code>修改配置檔案,配置檔案内容如下所示。

/home/embedfire/workdir:要共享的開發主機目錄,注意使用空格與後面的配置隔開。

202.193.61.0/24: 配置誰可以通路。/24表示 202.193.61.網段的所有機器都可以通路。

rw: 表示客戶機的權限,rw 表示可讀寫

sync:資料同步寫入到記憶體與硬碟中。

anonuid=1000:将客戶機上的使用者映射成指定的本地使用者ID的使用者,此處1000是開發主機zhongyi使用者的uid。

anongid=1000:将客戶機上的使用者映射成屬于指定的本地使用者組ID,此處1000是開發主機zhongyi使用者組gid。

no_subtree_check:不檢查子目錄權限,預設配置。

使用id指令可以檢視uid和gid。

IMX6ULL驅動開發實戰連載-01搭建開發環境

本配置中的anonuid 和anongid 把客戶機的使用者映射成本地uid/gid 為1000的使用者,即開發主機的embedfire,那麼,當在開發闆上使用與開發主機不同的使用者通路NFS 共享目錄時,都會具有zhongyi 的權限,友善互相通路。

修改完/etc/exports 檔案并儲存後,可使用<code>sudo exportfs -arv</code> 指令更新配置。

IMX6ULL驅動開發實戰連載-01搭建開發環境

開發主機開啟NFS 服務後,我們還需要在ubuntu安裝NFS 用戶端。執行<code>sudo apt install nfs-common -y</code>安裝NFS 用戶端。

IMX6ULL驅動開發實戰連載-01搭建開發環境

在開發闆上執行<code>showmount -e 202.193.61.234</code>檢視NFS共享目錄。

IMX6ULL驅動開發實戰連載-01搭建開發環境

在開發闆上,執行<code>sudo apt install nfs-common -y</code>安裝NFS用戶端。

注意,如果你的闆子是512M Nand 版本的,并且使用的是野火帶qt的鏡像。需要重新使用usb燒寫純淨版系統鏡像。否則會報錯,提示磁盤空間不足!
IMX6ULL驅動開發實戰連載-01搭建開發環境
USB燒寫鏡像教程:https://doc.embedfire.com/linux/imx6/quick_start/zh/latest/quick_start/install_debian/install_debian.html#usb

使用mount 指令挂載NFS 伺服器的共享目錄到開發闆/mnt 目錄下:

IMX6ULL驅動開發實戰連載-01搭建開發環境

在NFS主機中,使用<code>touch zhongyi.txt</code>指令建立一個檔案,測試下。

IMX6ULL驅動開發實戰連載-01搭建開發環境

在從機中,也顯示出了我們建立的檔案。

IMX6ULL驅動開發實戰連載-01搭建開發環境

在編譯和裝載驅動前,需要安裝一些工具。工具的名稱具體如下。

gcc-arm-linux-gnueabihf 交叉編譯器

bison 文法分析器

flex 詞法分析器

libssl-dev OpenSSL 通用庫

lzop LZO 壓縮庫的壓縮軟體

執行<code>sudo apt install make gcc-arm-linux-gnueabihf gcc bison flex libssl-dev dpkg-dev lzop</code>安裝即可。

首先,使用以下指令安裝git。

配置名字和郵箱。

使用git指令擷取gitee上的源碼。

野火已經配置好了腳本make_deb.sh,執行腳本就可以編譯核心。編譯好的核心存放在build_image/build。

make_deb.sh腳本内容如下。

使用git克隆下例程,嘗試将驅動加載到開發闆。

将拷貝下的源碼,放入核心源碼的同一級目錄中,如下圖所示。

IMX6ULL驅動開發實戰連載-01搭建開發環境

在hellomoudle中執行<code>make</code>,指令,就可以編譯子產品。

IMX6ULL驅動開發實戰連載-01搭建開發環境

下面,看下hellomodule的makefile是如何編寫的,具體如下所示。

在開發闆中,使用以下指令,挂載NFS網絡檔案系統。

進入hellomoudle中,加載子產品即可。

IMX6ULL驅動開發實戰連載-01搭建開發環境

至此,一個基本的驅動開發環境就搭載好了。下一節将開始介紹裝置樹的加載和編譯方法。我想吐槽下野火的文檔,有些地方是錯誤的,寫的不夠清楚。是以,大家在看的時候,注意下。我已經将不合适的地方,回報給他們,希望後面可以修改。

本文參考:野火Linux開發實戰指南

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。

本文連結:https://blog.csdn.net/qq_16933601/article/details/115577406