嵌入式Linux驅(qū)動入門!教大家一個Linux驅(qū)動開發(fā)的套路_第1頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、嵌入式linux驅(qū)動入門!教大家一個linux驅(qū)動開發(fā)的套路我們今日所要說的是驅(qū)動編寫?,F(xiàn)在linux驅(qū)動比較流行,主要有幾個方面的緣由:1)linux平臺免費,無數(shù)芯片廠商希翼linux平臺支持自己的產(chǎn)品;2)最近平臺很火,這在無形之中幫了linux的忙,搞linux驅(qū)動的人也開頭多了起來;3)還有就是收入了,根據(jù)目前基本行情來說,搞driver驅(qū)動的收入要比普通的開發(fā)工程師的收入要高一些,這可以從聘請網(wǎng)站上得到答案,因此無數(shù)伴侶也樂于轉(zhuǎn)到這一行。那么,此時無數(shù)伴侶可能就有疑問了,搞芯片驅(qū)動設(shè)計莫非真的要懂linux嗎?其實驅(qū)動和linux原來就是兩碼事。就拿一個lcd來說,我們可以在win

2、dows ce上編寫驅(qū)動,也可以利用linux framebuffer編寫驅(qū)動,固然假如是做通信的伴侶,也可以利用vxworks來做驅(qū)動。驅(qū)動沒有限制,但是它也要和詳細(xì)的操作系統(tǒng)平臺聯(lián)系起來,這樣才故意義。固然又有伴侶說了,非要操作系統(tǒng)不行嗎?其實不要操作系統(tǒng)也可以,做一個容易的while(1)前后臺系統(tǒng)系統(tǒng)也可以,只不過這樣開發(fā)的效率不高,而且可擴展性不好。既然linux已經(jīng)為我們把框架都搭好了,我們?yōu)槭裁床恍幸园阉χ蹦脕砼e行利用處理呢?認(rèn)識linux平臺的伴侶都知道。在linux上,全部的設(shè)備都可以看成是文件。我們對設(shè)備的全部操作基本上都可以簡化成open、close、read、writ

3、e、io control這幾個操作。至于這幾個操作詳細(xì)做了什么,那就需要我們自己實現(xiàn)了?,F(xiàn)在,linux驅(qū)動開發(fā)過程已經(jīng)進展得很成熟了,除了無數(shù)的demo代碼、書籍,網(wǎng)上還有無數(shù)的視頻可以學(xué)習(xí)。其中,宋寶華、韋東山的書都很不錯。前者偏向于理論多一些,后者的書越發(fā)注意于實踐部分的內(nèi)容。說了這么多,大家可能問怎么做好linux驅(qū)動的開發(fā)工作呢?對于我自己,普通是這么處理的,(01)找兩臺電腦,一臺電腦安裝windows系統(tǒng),另外一臺電腦安裝linux系統(tǒng),至于類型沒有限制;(02)查看linux系統(tǒng)的版本類型,輸入uname -r即可;(03)按照獵取的linux kernel版本,在www.ke

4、上面尋覓合適的kernel版本,挺直用wget下載即可;(04)用tar解壓內(nèi)核版本,將boot下config文件拷貝到本地,輸入make menuconfig,挺直保存即可;(05)輸入make -j2 & make modules_install & make install即可,系統(tǒng)重啟;(06)在linux系統(tǒng)起來后,注重在grub啟動的時候挑選剛剛編譯的內(nèi)核版本,這樣就可以在linux上開發(fā)kernel驅(qū)動了;(07)在windows 平臺安裝securecrt工具,和linux取得銜接;(08)輸入下面的代碼,分離是hello.c和makefile,

5、其中hello.c內(nèi)容如下cpp view plain copy1. include2. include3. include4.5. module_license("gpl");6. module_author("feixiaoxing");7. module_description("this is just a hello module!n");8.9. static int _init hello_init(void)10. 11. printk(kern_emerg "hello, initn");12.

6、return 0;13. 14.15. static void _exit hello_exit(void)16. 17. printk(kern_emerg "hello, exitn");18. 19.20. module_init(hello_init);21. module_exit(hello_exit);makefile的內(nèi)容如下所示cpp view plain copy1. ifneq ($(kernelrelease),)2. obj-m := hello.o3.4. else5. pwd := $(shell pwd)6. kver := $(shell

7、uname -r)7. kdir := /lib/modules/$(kver)/build8. all:9. $(make) -c $(kdir) m=$(pwd) modules10. clean:11. rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions12. endif(09)編譯的時候,挺直make即可,固然前提是這兩個文件必需在一個名目下;(10)編譯后生成hello.ko文件,大家可以把它想象成一個一般的執(zhí)行文件;(11)假如需要安裝,挺直insmod hello.ko即可,輸入dmesg | tail 可以看到打印的內(nèi)容,輸入lsmod | grep hello也可以看一下模塊是否已經(jīng)安裝;(12)假如刪除模塊,挺直輸入rmmod hello即可,固然添加和刪除的操作都需要在root模式下舉行操作。所以說,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論