久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > IT培訓問題庫 > 嵌入(ru)式linux驅動如何(he)學(xue)?小白入(ru)門必看

嵌入式(shi)linux驅動(dong)如何學?小白(bai)入門必(bi)看 時(shi)間:2018-07-19  ;    來(lai)源:未(wei)知

嵌(qian)入(ru)(ru)式(shi)發展(zhan)這么快,很多人都(dou)躋身在嵌(qian)入(ru)(ru)式(shi)行業(ye),對于(yu)新手小(xiao)白來說(shuo),學(xue)習嵌(qian)入(ru)(ru)式(shi)還是(shi)會遇到一(yi)些(xie)問題(ti),就比如說(shuo)嵌(qian)入(ru)(ru)式(shi)linux驅(qu)(qu)動(dong)(dong), 驅(qu)(qu)動(dong)(dong)程序(xu)開發是(shi)嵌(qian)入(ru)(ru)式(shi)Linux項(xiang)目(mu)中工作(zuo)量大(da)的(de)一(yi)部(bu)分內(nei)容,開發出高質量的(de)驅(qu)(qu)動(dong)(dong)程序(xu)是(shi)項(xiang)目(mu)成功的(de)關鍵,那么嵌(qian)入(ru)(ru)式(shi)linux驅(qu)(qu)動(dong)(dong)如何(he)學(xue)呢?那我就來談談學(xue)習嵌(qian)入(ru)(ru)式(shi)linux驅(qu)(qu)動(dong)(dong)的(de)小(xiao)竅(qiao)門(men),這可是(shi)珍藏版哦。

首(shou)先嵌入式linux驅(qu)動你要(yao)(yao)了(le)(le)解(jie),驅(qu)動和linux是(shi)兩碼事(shi),就拿一個(ge)lcd來(lai)說,我們(men)可(ke)(ke)以(yi)在windows ce上編寫驅(qu)動,也(ye)可(ke)(ke)以(yi)利用(yong)(yong)(yong)linux framebuffer編寫驅(qu)動,當(dang)然如果是(shi)做通信(xin)的(de)(de)朋友(you),也(ye)可(ke)(ke)以(yi)利用(yong)(yong)(yong)vxworks來(lai)做驅(qu)動。驅(qu)動沒有(you)限制,但(dan)是(shi)它也(ye)要(yao)(yao)和具體(ti)的(de)(de)操作系(xi)統(tong)平臺聯系(xi)起(qi)來(lai),這(zhe)樣(yang)才有(you)意義。當(dang)然又有(you)朋友(you)說了(le)(le),非要(yao)(yao)操作系(xi)統(tong)不(bu)可(ke)(ke)嗎?其(qi)實不(bu)要(yao)(yao)操作系(xi)統(tong)也(ye)可(ke)(ke)以(yi),做一個(ge)簡(jian)單的(de)(de)while(1)前(qian)后臺系(xi)統(tong)系(xi)統(tong)也(ye)可(ke)(ke)以(yi),只不(bu)過(guo)這(zhe)樣(yang)開發的(de)(de)效(xiao)率不(bu)高,而且(qie)可(ke)(ke)擴展性(xing)不(bu)好(hao)。既然linux已經(jing)為我們(men)把框架都搭好(hao)了(le)(le),我們(men)為什么不(bu)可(ke)(ke)以(yi)把它直接(jie)拿來(lai)進行利用(yong)(yong)(yong)處理呢?這(zhe)樣(yang)又方便又簡(jian)單。

嵌入式linux驅動

接下來就是嵌入(ru)式linux驅動必備(bei)的一些技能:

1、 編寫Linux設備(bei)驅動要求工(gong)程師有非常好的(de)硬件基礎(chu),懂得SRAM、Flash、SDRAM、磁盤的(de)讀寫方式,UART、I2C、USB等(deng)設

備的接(jie)口以(yi)及(ji)輪詢、中斷、DMA的原理(li)(li),PCI總線的工作方式(shi)以(yi)及(ji)CPU的內存管(guan)理(li)(li)單元(MMU)等(deng)。

2、編寫Linux設備驅動要求工程師(shi)有非常好的C語(yu)言基礎,能靈(ling)活(huo)地運(yun)用(yong)C語(yu)言的結(jie)構體、指針(zhen)、函數指針(zhen)及內(nei)存動態(tai)申請和

釋放等。

3、編(bian)寫(xie)Linux設備驅動要求工程師(shi)有一定(ding)的Linux內核(he)(he)基礎,雖然并(bing)不要求工程師(shi)對(dui)內核(he)(he)各個(ge)部分有深入的研(yan)究,但(dan)至少要明

白驅動(dong)與內核的(de)接口。尤其(qi)是對于塊(kuai)設備(bei)、網絡設備(bei)、Flash設備(bei)、串口設備(bei)等(deng)復雜設備(bei),內核定(ding)義的(de)驅動(dong)體系架構本身就非

常復雜。

4、編寫Linux設備(bei)驅動(dong)要求(qiu)工程師有非常(chang)好的多任(ren)務并發控制(zhi)和同步的基礎(chu),因為(wei)在驅動(dong)中會大量使用(yong)自旋(xuan)鎖、互斥、信號(hao)

量、等待隊列等并發與同步機制。

掌握了嵌入(ru)式linux驅動的知識(shi)點,那接下來就是(shi)(shi)重要的了,實踐,嵌入(ru)式linux驅動如何實踐,看看我(wo)是(shi)(shi)怎么(me)做的吧:

(01)找兩(liang)臺電腦(nao),一臺電腦(nao)安(an)裝windows系統(tong),另外一臺電腦(nao)安(an)裝linux系統(tong),至(zhi)于類型沒有限制;

(02)查看linux系統的版本類型,輸入uname -r即可(ke);

(03)根據獲取的(de)linux kernel版本(ben),在www.kernel.org上面尋找合適的(de)kernel版本(ben),直接用wget下載即(ji)可;

(04)用tar解壓內核版本,將(jiang)boot下config文件(jian)拷貝到本地(di),輸入make menuconfig,直(zhi)接(jie)保存即(ji)可;

(05)輸入(ru)make -j2 & make modules_install & make install即可(ke),系統重啟;

(06)在(zai)(zai)linux系(xi)統起來(lai)后,注意在(zai)(zai)grub啟動的時候選擇剛剛編(bian)譯的內核版本,這樣就可以(yi)在(zai)(zai)linux上開發kernel驅動了;

(07)在(zai)windows 平臺(tai)安裝secureCRT工具,和(he)linux取得連接;

(08)輸入下(xia)面的代碼,分別是(shi)hello.c和Makefile,其(qi)中hello.c內(nei)容如下(xia)

[cpp] view plain copy

1. #include

2. #include

3. #include

4.

5. MODULE_LICENSE("GPL");

6. MODULE_AUTHOR("feixiaoxing");

7. MODULE_DEION("This is just a hello module!n");

8.

9. static int __init hello_init(void)

10. {

11. printk(KERN_EMERG "hello, initn");

12. 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的內容如下所示

[cpp] view plain copy

1. ifneq ($(KERNELRELEASE),)

2. obj-m := hello.o

3.

4. else

5. PWD := $(shell pwd)

6. KVER := $(shell uname -r)

7. KDIR := /lib/modules/$(KVER)/build

8. all:

9. $(MAKE) -C $(KDIR) M=$(PWD) modules

10. clean:

11. rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions

12. endif

(09)編(bian)譯的(de)時候(hou),直接make即可,當然(ran)前(qian)提是這兩(liang)個文(wen)件必須(xu)在(zai)一個目錄下;

(10)編(bian)譯后生成hello.ko文件(jian),大(da)家可以把它想(xiang)象(xiang)成一(yi)個普(pu)通的執(zhi)行文件(jian);

(11)如果需(xu)要安裝(zhuang)(zhuang),直接insmod hello.ko即可(ke),輸(shu)入dmesg | tail 可(ke)以看到打印的內容,輸(shu)入lsmod | grep hello也(ye)可(ke)以看一下模塊(kuai)是否已經安裝(zhuang)(zhuang);

(12)如果(guo)刪除模(mo)塊,直接輸入(ru)rmmod hello即可,當然(ran)添加和刪除的操作(zuo)都需要在root模(mo)式下進行操作(zuo)。這是(shi)我在學習的時候(hou)的一些(xie)詳細步驟,你get到(dao)了嗎(ma)

嵌入式(shi)linux驅動的(de)學習就是這么簡單,不要覺得他很(hen)難,掌握了這些,它就會是so easy!

上一篇:如何學習arm嵌入式,資深程序員教會你

下一篇:硬件工程師都沒人干了?那你還不知道這些吧

熱(re)點(dian)文章推薦
華(hua)清(qing)學員就業榜(bang)單
高薪學員經(jing)驗分(fen)享
熱點新聞(wen)推薦
前(qian)臺(tai)專線:010-82525158 企業(ye)培訓洽(qia)談(tan)專線:010-82525379 院(yuan)校合作洽(qia)談(tan)專線(xian):010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部