Linux驅動開發錯誤整理

來源:互聯網
上載者:User
1)解決version magic 不一致的問題

原文: http://blog.sina.com.cn/s/blog_7d638eda010118rh.html

http://tldp.org/LDP/lkmpg/2.6/html/x380.html

編譯完一個kernel module後,如果安裝這個module的機器啟動並執行不是一致的kernel,會報

insmod: error inserting 'poet_atkm.ko': -1 Invalid module format仔細看一下/var/log/message 檔案可以發現是說, version magic不一致。
Jun 4 22:07:54 localhost kernel: poet_atkm: version magic '2.6.5-1.358custom 686 REGPARM 4KSTACKS gcc-3.3' should be '2.6.5-1.358 686 REGPARM 4KSTACKS gcc-3.3'

其實就是把Makefile裡面的值,改成現有kernel一致的就可以了。

VERSION = 2PATCHLEVEL = 6SUBLEVEL = 5EXTRAVERSION = -1.358custom

(即把上面的custom去掉,重新編譯燒寫核心即可)

2)Unknown symbol __aeabi_unwind_cpp_pr0

原文: http://johnmcu.blog.163.com/blog/static/17244625620109140555239/

“我相當鬱悶了,通過客服,剛開始以為是交叉編譯器的問題,可是測試後交叉編譯器是正常的,快崩潰了,最後才知道,是我的開發板裡燒的是光碟片提供給的鏡像,而我自己移植的驅動是在我自己編寫的核心裡產生.ko檔案,導致了致命的錯誤,模組和核心鏡像不匹配,後來燒入我自己的核心和檔案系統,雖然其中經曆了多番波折,總算守得雲開見月明了,終於可以載入和卸載模組了!”

3)自動產生字元裝置檔案的問題

在做字元裝置驅動的時候,我對照網上的文章寫了自動建立字元裝置檔案的驅動,結果每次載入驅動之後,產生的裝置檔案都是塊裝置檔案,而不是字元設別檔案。

所以我把交叉編譯工具確定在友善之臂的4.3.2版本上,然後重新編譯自己的核心,構建根檔案系統,然後在次掛載驅動,一切OK!!!!

4)request_irq
傳回值 -16

原文: http://blog.sina.com.cn/s/blog_636a55070101j9t8.html

照著韋東山二期視頻寫觸屏驅動的時候,發現request_irq 返回 -16, 這表示該中斷已經佔用。

解決辦法: request_irq 函數的flags 加上 IRQF_SHARED,最後一個參數不要為空白,一邊free_irq使用。

所以,寫程式的時候一定要檢查傳回值,這樣才能儘快找到錯誤。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.