Re: [問題] 在ARM板上執行Drivertest檔 發生錯誤
※ 引述《FUFrench (行在自我上)》之銘言:
: 好不容易 寫出driver
: 好不容易 讓arm板可以insmod
: 然後開開心心的寫了個 test.c 要和driver 溝通看看!!
: but.....
: 執行./test 後
: 9f80: 00000005 c0030088 c3b39fa4 c3b39f98 c009927c c0099174 00000000 c3b39fa8
: 9fa0: c002fee0 c0099268 00000000 00000000 000087e8 00000000 4014b000 00008590
: 9fc0: 00000000 00000000 00000000 00000005 00000000 00000000 40024000 beef9d54
: 9fe0: 00000000 beef9d40 000085b8 400daa6c 60000010 000087e8 00000000 00000000
: Backtrace:
: [<c009dc24>] (chrdev_open+0x0/0x160) from [<c0099374>]
: (__dentry_open+0xd4/0x26c
: Code: e58470e8 e1a03007 e5b3102c e28420e0 (e5812004)
: Segmentation fault
: [root@FriendlyARM /]#
: 出現以上一堆看不懂的東西 然後 顯示Segmentation fault ....
: 我有設定mknod
: /dev/ 下也找的到設定好的檔案
: 可是這個dev 檔 不管是 cat 還是用 open函數 呼叫 都會有類似錯誤....
: 請問我大概問題出在哪裡.....殘念 Orz
: 補充發現的新問題 rmmod 該 driver 系統會跟我說 沒有這個東西
: 可是lsmod 明明就有.... 這兩個問題 的原因 是不是相同啊...
目前問題解決了 可是自己也搞不清楚怎麼解決的.....
最開始時候 編好的driver 連insmod 都進不去 原因為
kernel 的版本不同 可是經過 uname-r 查詢 版本編號一樣 只是arm板的
kernel後面還有多這些訊息 -Friendly ARM
後來 解決的方法是 重編一個kernel 讓他版本後面沒有 友善之臂的字串
但是之後 能 insmod but 不能在shell層跟driver溝通..
cat /dev/mydevice 都會出現一大堆錯誤訊息
最後 上網找 不用改kernel 也能把driver 編成 符合他的方法
(找到的方法是 利用 .config 設定 些改device/char 下的Makefile
用make modules 請他幫忙編 我在去device/char 找我的.ko 檔案
之後 新編的driver 就可以cat /dev/mydevice 了
但其實我還是有修改過我的driver的code 可是我只改了
#define DEVICE_NAME "xxxxxxxxx" 這一行....
當初不懂這個定義是幹麼的 範例code 的內容也沒有使用這個define的地方..
可是卻好像影響了 dev/ 下 該driver 的檔名...
另外個問題 又讓我很傻眼 就是 insmod 後
mknod 的指令錯誤 他說該檔案已存在
我去 /dev/ 下找 還真的有mydevice 一般都是要 mknod 之後才會出現的說
然後直接 cat他 正常~~
用test程式和他溝通 正常 ~~
測量下達指令後 改變的GPIO腳 電位 如預期中改變....
雖然解決了很好.....但還是想搞清楚自己怎麼解決的 ORZ
--
_\^^^^^^^^/ ◣\◣◣◣◢)◢
\ \\\ // / 萬事屋的.. ★\/ \◣ /∠◢
★ \ /★ ◢\◤◤◤◤\◣
⊙ ⊙ ☆ ◥┬ ┬" ▼
○ o ◤
/|≡≡|\ /\▼/◣ by freijaking
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.236.24
→
06/22 23:50, , 1F
06/22 23:50, 1F
→
06/22 23:51, , 2F
06/22 23:51, 2F
→
06/22 23:51, , 3F
06/22 23:51, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):