目的:梳理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...