ARM Linux驅動開發環境

2021-10-08 20:02:21 字數 1120 閱讀 2006

目的:梳理arm linux驅動開發所需的環境和流程,記錄遇到的問題。

環境介紹:

pc機:編寫驅動程式和測試**

伺服器:編譯驅動程式生成.ko檔案,編譯測試**生成執行程式

單板:jz2440

準備工作:

linux核心:linux-2.6.22.6以及對應的補丁檔案

工具鏈:gcc version 3.4.5

uboot:引導核心

uimage:引導根檔案系統

根檔案系統:執行應用程式

在進行驅動開發之前,單板上已經可以執行linux系統,在搭建開發環境以及驅動開發的過程中,工具鏈的版本要保持一致。

為了方便將.ko檔案和測試程式上傳到單板的上,筆者採用nfs掛載目錄的方式,簡要總結一下步驟和遇到的問題。

2.確定伺服器支援nfs功能後,在/etc/exports中新增被掛載目錄的路徑:

/home/fitz/mount_bd *(rw,sync,no_subtree_check,no_root_squash)

3.重啟nfs服務:sudo /etc/init.d/nfs-kernel-server restart

4.先嘗試在伺服器上掛載自身目錄,測試nfs功能是否正常

mount -t nfs -o nolock serverip:目錄 掛載的目錄

6.在單板的linux上mount -t nfs -o nolock serverip:目錄 掛載的目錄即可掛載對應目錄,以後將伺服器上生成.ko和測試**拷貝到該目錄,就可以直接在單板系統上使用。

在實際使用的過程中會出現如下問題:

nfs: server 192.168.xx.xx not responding, still trying在載入驅動尤其是驅動比較大的時候會出現該問題。

原因:nfs預設的傳輸協議是udp,而伺服器和單板系統通過udp互動時就會出現嚴重的網絡卡丟包現象。尤其是通過nfs複製較大檔案的時候。

解決方案:

更改掛載命令

mount -t nfs -o nolock,rsize=4096,wsize=4096 serverip:目錄 掛載的目錄

至於背後更深層次的含義暫不作深究,問題得以解決即可。

至此,就可以開展arm linux驅動的開發工作了。

arm linux驅動開發學習2

驅動測試階段 wifi模組始終無法載入成功,usb wifi插上之後,始終無法顯示wifi網路資訊 lib modules 4.1.15 ifconfig a eth0 link encap ethernet hwaddr00 04 9f 04 d2 35 inet addr 192.168 1.5...

arm linux驅動開發學習5

串列埠通訊 只要是使用串列埠通訊,不論是ttl還是232 485,其驅動程式都是一樣的,通過外接rs485晶元即可將串列埠轉換為rs485訊號。本節用的是串列埠3,串列埠驅動框架為 1 uart driver 註冊與登出 每個串列埠驅動都需要定義乙個 uart driver,載入驅動的時候通過 ua...

arm linux驅動開發學習6

靜態編譯 將驅動原始碼放到kernel核心原始碼所對應的資料夾下面 修改kconfig配置 修改makefile make menuconfig配置圖形介面 生成zimage映象檔案 動態編譯 將驅動檔案編譯成.ko檔案 將test.ko檔案拷貝到 lib module 4.1.15 目錄下 dep...