嵌入式linux插入內核模塊Error: could not insert module xxx.ko: Device or resource busy處理

設備號衝突致使windows

處理方法:app

1.輸入$cat /proc/devices 查看驅動的設備號google

2.選擇一個不衝突的設備號進行編譯spa

 

參考文獻:.net

1.http://blog.csdn.net/zzc_19/article/details/8648332調試

爲了防止網頁沒法訪問,現將引用文獻拷貝至此視頻

最近看了幾集國嵌的關於字符設備驅動視頻教程,本身跟着視頻上面敲代碼。字符設備驅動,用內存模擬一個字符設備,而後對其進行訪問,200多行代碼,基本代碼仍是在windows下經過sourceinsight3輸入,通過其檢驗,編譯前確信沒有任何問題,結果錯誤一頁都顯示不完(⊙﹏⊙b汗)。通過兩個多小時的調試,最終調好了,也回顧了很多c語言的基礎知識(固然,視頻上面仍是有幾個錯誤的,由於視頻上沒當場編譯)。畢業7年,還好,當初對C語言有種莫名的情切感,如今老師的不少話都記在心上。blog

言歸正傳,調試到沒有任何error或者warring再將memdev.ko和app_mendev經過ftp拷貝到開發板運行,一敲insmod memdev.ko 就提示:教程

 

[plain]  view plain  copy
 
  1. <span style="font-family:Arial;font-size:14px;">[root@FriendlyARM plg]# insmod memdev.ko  
  2. insmod: can't insert 'memdev.ko': Device or resource busy</span>  

 

圖1  模塊Device or resource busy提示
進程


什麼chmod,chown都用過了,6410板子也reboot過,ftp也by後重新鏈接過,仍是一樣的結果。最後求助google(最近好上一點,不會點一兩個連接就會出現連接不上),原來是設備號衝突,因而更改程序主設備號爲99。再次編譯模塊。順利insmod,嘿嘿!

圖2  memdev.h 裏面定義主設備號爲254,衝突

 

圖3  更改設備號爲99後順利insmod

 

圖4 cat /proc/devices 裏面看見99 memdev

 2.http://www.aichengxu.com/view/996172

今天是本身寫的第二個設備驅動程序,很不幸,中槍了

在insmod xxx.ko 時候老是出現Error: could not insert module testsecond.ko: Device or resource busy,

分析了各類狀況,都快崩潰了後來在很而然的看的一篇很不起眼的小短文,頓時靈感來了。

解決方法:在文本界面輸入$cat /proc/devices 查看你的驅動的進程號,例如個人驅動進程號以下所示






能夠看到這是字符設備的進程號,若是你寫的是快設備或者是FIFO之類的,那你要到塊設備裏面去查找



你能夠看到這進程號是否與你所定義的MAJOR衝突,若是衝突,那就是你insmod xxx.ko失敗的緣由了 ,你只要把MAJOR改一下,就沒有問題了

相關文章
相關標籤/搜索