亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 885 | 回復(fù): 0
打印 上一主題 下一主題

嵌入式之對(duì)學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)的看法 (舒穩(wěn)) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-21 08:41 |只看該作者 |倒序?yàn)g覽
嵌入式之對(duì)學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)的看法


    從接觸ARM到現(xiàn)在半年多了(準(zhǔn)確地說(shuō)應(yīng)該是大三下學(xué)期才開始的),在這半年的時(shí)間里,有過(guò)快樂(lè),也有過(guò)痛苦,有過(guò)成功的高興,也有過(guò)失敗的難過(guò),總之,在這個(gè)程中,所嘗到了應(yīng)該嘗到的,由于在大二的時(shí)候?qū)W習(xí)過(guò)DSP,對(duì)嵌入式的概念有一點(diǎn)了解,所以,在接觸ARM時(shí),并沒(méi)有花大多的時(shí)間去入門,直接一邊看手冊(cè),一邊寫驅(qū)動(dòng)了。開發(fā)板一到手就開始了對(duì)ARM驅(qū)動(dòng)程序的開發(fā)。沒(méi)有多久就一邊學(xué)習(xí)裸機(jī)驅(qū)動(dòng),一邊學(xué)習(xí)基于Linux操作系的驅(qū)動(dòng),因?yàn)檫@樣可以一起學(xué)習(xí),其實(shí),裸機(jī)驅(qū)動(dòng)開發(fā)成功,再移植到Linux操作系統(tǒng)上不難,難的是怎樣寫出一個(gè)可移植的,穩(wěn)定的驅(qū)動(dòng)。

   很多人認(rèn)為只學(xué)習(xí)Linux驅(qū)動(dòng)就可以了,完全看不起裸機(jī)驅(qū)動(dòng)。不然,Linux驅(qū)動(dòng)是在你對(duì)裸機(jī)的了解的基礎(chǔ)上實(shí)現(xiàn)的,如果連裸機(jī)驅(qū)動(dòng)的寫不對(duì),何以對(duì)理解、修改,書寫基于Linux系統(tǒng)的驅(qū)動(dòng)呢?比如,SPI總線系統(tǒng),如果你連SPI協(xié)議都不清楚,你需要驅(qū)動(dòng)的是一般的SPI接口的EEPROM,還是CAN總線驅(qū)動(dòng)器,還是其它SPI接口的硬件,需要怎么樣的時(shí)序都不懂(在嵌入式領(lǐng)域,時(shí)序很重要,我在寫DS18B20驅(qū)動(dòng)時(shí),因?yàn)閹讉(gè)ns的時(shí)序,折騰了三天)。你能看懂內(nèi)核SPI總線子系統(tǒng)下的源碼,你能真正的應(yīng)用?所以,裸機(jī)也一樣的重要,在真正了解裸機(jī)驅(qū)動(dòng)的基礎(chǔ)上來(lái)了解Linux驅(qū)動(dòng),會(huì)更加內(nèi)容。

   沒(méi)有開始寫基于Linux驅(qū)動(dòng)程序之前,在網(wǎng)上聽(tīng)說(shuō)《LDD3》這本書不錯(cuò),但是,還好,在網(wǎng)上下載到相應(yīng)的chm格式文檔,也許是由于個(gè)人的原因?yàn)榘桑傁矚g看PDF格式的,所以花了點(diǎn)時(shí)間把它轉(zhuǎn)化為PDF格式,剛開始看的時(shí)候,怎么也看不懂,說(shuō)實(shí)在的,《LDD3》這本書不太適合初學(xué)者看,有幸在圖書館借到《Linux設(shè)備驅(qū)動(dòng)開發(fā)技術(shù)與應(yīng)用》,才慢慢的走進(jìn)基于Linux操作系統(tǒng)的驅(qū)動(dòng)的門,這本書這一學(xué)期來(lái)一直在我的手里,一直沒(méi)有還回去,繼借了一次,馬上還了又馬上借過(guò)來(lái),暑假區(qū)間,手里的資金還可以,就把這本書給買下來(lái)了,對(duì)于《LDD3》,雖然也不錯(cuò),還是看原版的吧,中文版看得不太明白,翻譯太差了,有個(gè)電子版的就行了,這兩本書在一起看的話,應(yīng)該很好入門了,但是更多時(shí)候還是看看《Linux設(shè)備驅(qū)動(dòng)開發(fā)技術(shù)與應(yīng)用》,這是個(gè)人的認(rèn)為,也許跟你的認(rèn)為不一樣,請(qǐng)?jiān)彙?/div>

    轉(zhuǎn)眼間,暑假就快完了,這個(gè)暑假?zèng)]有做多少事,很多時(shí)候是在看Linux內(nèi)核相關(guān)驅(qū)動(dòng)的源碼,終于明白了別人告訴我一句話,如果真的想學(xué)好Linux設(shè)備驅(qū)動(dòng),去看內(nèi)核相關(guān)的驅(qū)動(dòng)吧,里面的東西太多了,能看懂,再寫出相應(yīng)的應(yīng)用程序,那么證明你不錯(cuò)了。剛開始不以為然,后來(lái),由于IIC總線的需要的,所以開始看內(nèi)核提供的IIC總線子系統(tǒng),也看到了自己的C與別人的差距,有時(shí)候,別說(shuō)去了解某行代碼的用途,連看懂是怎么聲明的有點(diǎn)難,所以,這對(duì)C的要求有點(diǎn)高,但是,如果你的C夠用,那么,看Linux內(nèi)核源碼可以使你的C更進(jìn)一步,指針,特別是函數(shù)指針(非指針函數(shù)),在其中應(yīng)用得最多;再者宏定義技術(shù),內(nèi)聯(lián)函數(shù),應(yīng)用預(yù)定義處理控制調(diào)試信息,在源碼中保留調(diào)試信息,為以后的維護(hù)提供方便。

    好了,我們回到Linux驅(qū)動(dòng)上來(lái),在Linux內(nèi)核中,有很多穩(wěn)定的,很有價(jià)值的驅(qū)動(dòng)源碼,而且這些源碼都可以為我們提供服務(wù),我們直接應(yīng)用,也可修改一下就可以應(yīng)用的,所以,在商品化產(chǎn)品來(lái)說(shuō),還是直接應(yīng)用或者修改內(nèi)核提供的驅(qū)動(dòng)最好,因?yàn)檫@在穩(wěn)定性與可移植性上得到一定的認(rèn)可,當(dāng)然,前提是你能正確應(yīng)用與修改,這就得要求去了解與懂這些驅(qū)動(dòng)源碼。當(dāng)然,這不是一般的人都能懂的,你可以寫一個(gè)LED驅(qū)動(dòng),應(yīng)用register_chrdev_region或者register_chrdev進(jìn)行注冊(cè),應(yīng)用unregister_chrdev_region或者unregister_chrdev進(jìn)行注銷,也就可以應(yīng)用輸入子系統(tǒng)(input subsystem)所提供的   input_register_device來(lái)進(jìn)行注冊(cè),應(yīng)用input_unregister_device來(lái)進(jìn)行注銷,當(dāng)然,你也可以應(yīng)用其它的注冊(cè)與注銷方式來(lái)進(jìn)行,只要是你掌握的,你想怎么做都行,前提是你必須掌握。

    剛開始學(xué)習(xí)的時(shí)候,都是自己從頭開始寫驅(qū)動(dòng),自己實(shí)現(xiàn)read,write,ioctl,open等,沒(méi)有想到Linux內(nèi)核那么豐富而又穩(wěn)定的代碼,一般輸入類型的驅(qū)動(dòng),現(xiàn)在知道盡量應(yīng)用input subsystem來(lái)實(shí)現(xiàn),比如usbmouse,觸摸屏,游桿等應(yīng)用輸入子系統(tǒng)可以為我們提供很多東西,但是,前提是你必須了解輸入子系統(tǒng)的構(gòu)架,能看懂其源碼。其實(shí),看懂別人的源碼,有時(shí)候是很困難的一件事,不過(guò),還好,在內(nèi)核的Documentation目錄下有相關(guān)的幫助文檔。在這些幫助文檔的幫助下,應(yīng)該可以看懂,到應(yīng)用了吧,這需要時(shí)間,某些子系統(tǒng)內(nèi)部的結(jié)構(gòu)很復(fù)雜,沒(méi)有一兩天,或者更長(zhǎng)的時(shí)間是搞不懂的,也許你會(huì)問(wèn),一個(gè)LED驅(qū)動(dòng),太簡(jiǎn)單了,我自己寫一個(gè)也就一個(gè)小時(shí)不到的時(shí)間,何必花那么多時(shí)間去了解輸入子系統(tǒng)呢,這就是Linux操作系在嵌入式之所以受歡迎的原因?yàn),我是這樣認(rèn)為,當(dāng)你真正的了解,懂了輸入子系統(tǒng)的時(shí)候,你會(huì)的不只是LED驅(qū)動(dòng),在這個(gè)基礎(chǔ)上,你可以很順手地開發(fā)其它的輸入型驅(qū)動(dòng)了,這就是也許就是所謂的經(jīng)驗(yàn)吧。

    目前Linux中有多少子系統(tǒng),我不太清楚,但是堅(jiān)信,每一個(gè)子系統(tǒng)的存在,都是有用的,雖然沒(méi)有必要去把每個(gè)子系統(tǒng)都搞懂,這也是不可能的,但是,盡量搞懂你目前正在學(xué)習(xí)的子系統(tǒng),比如,一般IIC總線子系統(tǒng),SPI子系統(tǒng),CD卡,輸入子系統(tǒng),F(xiàn)ramebuffer(LCD相關(guān)驅(qū)動(dòng)構(gòu)架)子系統(tǒng)這些比較常見(jiàn)的子系統(tǒng),應(yīng)該得去了解吧,在工作中,我們還會(huì)接很多子系統(tǒng),硬件的發(fā)展,Linux內(nèi)核也在不斷更新其子系統(tǒng)的分類,所以,我認(rèn)為,能快速看懂內(nèi)核子系統(tǒng),并能正確應(yīng)用,這就是最終的目的,在Linux世界里,修改也是一種能力,能把內(nèi)核中相近類型的硬件驅(qū)動(dòng)修改為自己所用,這也是個(gè)人的修為。

    很多人都喜歡最新的Linux內(nèi)核,對(duì)于學(xué)習(xí)來(lái)說(shuō),我更加喜歡能應(yīng)用目前資料中的例子能應(yīng)行的,資料最多的內(nèi)核版本(我用的內(nèi)核版本還是Linux-2.6.13,還沒(méi)有自己移植過(guò)Linux操作系統(tǒng),在對(duì)Linux相關(guān)構(gòu)架不了解的情況下,不會(huì)去做,真正了解了,移植應(yīng)該不在話下),這樣在學(xué)習(xí)過(guò)程中會(huì)減少很多不必要的事,如果真正的在一個(gè)內(nèi)核版本中把想學(xué)的學(xué)好了,那么換個(gè)內(nèi)核,也就是頭文件所在的目錄不大相同,某此內(nèi)容不同罷了,看看一兩個(gè)例子,或者直接到內(nèi)核里面去看看,修改一下就行了,學(xué)習(xí),不是學(xué)習(xí)某一內(nèi)核版本下的驅(qū)動(dòng),學(xué)習(xí)是某一種操作系統(tǒng)下的思想,有了思想也就是所謂的神,還有什么不會(huì)的,在說(shuō),你在學(xué)校學(xué)習(xí)的是Linux2.6.32,但是,在公司,也許會(huì)讓你應(yīng)用2.6.13或者其它的版本來(lái)寫驅(qū)動(dòng),那么,如果你只會(huì)你學(xué)習(xí)過(guò)的,你可以走人了,證明你更本就沒(méi)有學(xué)會(huì),因?yàn)槟銢](méi)有思候。

    好了,這是個(gè)人的一點(diǎn)看法,也許你有你自己的看法,有不對(duì)的地放,請(qǐng)給予指正,讓我也有學(xué)習(xí)的機(jī)會(huì)。


舒穩(wěn)
2010-8-18于長(zhǎng)沙理工大學(xué)
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP