日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

arm linux驱动 知乎_学习linux驱动开发的方法?

發(fā)布時間:2023/12/8 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arm linux驱动 知乎_学习linux驱动开发的方法? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大二搞完51單片機(jī),大三搞了msp430,飛思卡爾,大四前開始arm9+linux,讀研三年就是折騰了linux和一些小項目,現(xiàn)在工作兩年多了,相對來說自我感覺成長比較快。C語言是最基礎(chǔ)最基礎(chǔ)的開始,但是所有人都是從第一行hello world開始的。虛擬機(jī)里安裝一個Linux發(fā)行版,桌上一款開發(fā)板,配上合適的教學(xué)視頻,多逛論壇,孜孜不倦的敲代碼做實驗,一定可以成長起來。以下是我在另一個問題的回答,一個字沒改,應(yīng)該對您有所幫助:

我調(diào)試過Linux,vxworks和另外一個國產(chǎn)嵌入式實時操作系統(tǒng)下的驅(qū)動,涉及的平臺從arm到zynq到ppc到龍芯到dsp都有,當(dāng)然不是每一個平臺都那么熟悉,今年就一直在調(diào)zynq。

第一,驅(qū)動的作用

基本就是你說的這樣子了,驅(qū)動硬件工作以及為上層屏蔽硬件細(xì)節(jié),提供操作接口。

第二,調(diào)試驅(qū)動要注意什么?

這個太多太多啦,胡亂說一些我的看法吧,總之不是滿足上面說的驅(qū)動的作用那么簡單。

驅(qū)動的調(diào)試一般都是很早起就進(jìn)行的,大多時候都要配合做硬件的工程師,他們很可能不懂軟件,這時候就需要你把板子跑起來,來驗證這個板子的硬件通路是OK的,功能是OK的,甚至性能是滿足需求的,硬件驗證完了,硬件工程師才會松一口氣。接著,看需求文檔,技術(shù)協(xié)議,需要你和上層去對接,上層需要什么接口,比如zynq,他可能只告訴你,我只要兩個接口一個writeddr一個readddr,readddr要是阻塞的。他根本不管底層是不是有pl和ps的通信協(xié)議,不會關(guān)心你如何絞盡腦汁去實現(xiàn)這個阻塞(ps:不是應(yīng)用中信號量那種阻塞同步)。說的好聽,承上啟下,說的不好聽,誰都要伺候好。

1.接線要注意,防靜電不可少

硬件在給你板卡的時候,很可能就是第一版,板子上還有飛線,電源也是正負(fù)線引出來,開關(guān)也沒焊上去,問清楚電壓電流的限制,正負(fù)極看好,接穩(wěn)壓電源的時候線接反了,一塊板子燒了事小,耽誤工期,等著狂加班吧。。。摸板子的時候,最好碰一下旁邊的金屬物體,即使在防靜電工作臺也最好這樣,把靜電放掉,不要小看靜電,敏感器件被靜電打壞的概率不低。測試的時例如ttl轉(zhuǎn)換芯片和gpio口的輸入輸出,一定要看原理圖做了隔離沒,沒有的話,不要輕易接地接線,燒壞bank可能芯片就廢了。

2.關(guān)注下bootloader

vxworks有vxboot,zynq在uboot之前還有fsbl,dsp(c6678)有ibl這些都是bootloader,大多數(shù)人接觸的都是u-boot,現(xiàn)在也越來越像Linux了。關(guān)注Bootloader是因為我經(jīng)常調(diào)試驅(qū)動的時候,比如網(wǎng)卡和flash,在uboot下是好的,但是我的操作系統(tǒng)起來之后,就不對了,那我就會把uboot下有關(guān)的寄存器信息打印出來,然后把操作系統(tǒng)起來之后的也打印出來,對比一下,就知道哪里出問題了。這個方法可以解決掉不少硬件配置問題。一般現(xiàn)在成熟的板卡供應(yīng)商,都會提供相應(yīng)的Bootloader和對應(yīng)的源碼,vx除外。要會利用這部分資源,了解bootloader都干了什么,如何啟動和加載系統(tǒng)的,整個框架是怎樣的,能編譯,能修改,這個一定會幫助調(diào)試驅(qū)動的。

3.操作硬件的能力

好的驅(qū)動工程師,不是以你會一個牛逼的cpu或者架構(gòu)來判斷的,而是你能操作多少設(shè)備,cpu也是設(shè)備啊,低速總線rs232,spi,i2c.存儲設(shè)備,nand flash norflash,emmc,eeprom,高速總線pcie,srio,hyperlink。其他網(wǎng)卡以及和fpga通信等等。舉個例子,操作nand flash,都知道先寫命令,再讀寫數(shù)據(jù),但是DSP通過EMIF接口操作,zynq通過pl35x操作,arm有自己的nand 控制器,ppc走Loacal bus,讀寫數(shù)據(jù)各個平臺也是不一樣的,如何破,歸根結(jié)底,flash讀寫通過ba,pa和ca三個地址來實現(xiàn),分為5個周期,地址如何轉(zhuǎn)換的搞清楚。。上面說的那些接口和控制器,無非圍繞這個來開展,摸清他實現(xiàn)的方式,就可以了,這個需要經(jīng)驗和時間去積累,但是調(diào)驅(qū)動的時候,一定要注意去積累。

你以為操作硬件就是這些東西?萬用表示波器電烙鐵也是硬件。。。

4.驅(qū)動和系統(tǒng)是如何關(guān)聯(lián)的

linux的驅(qū)動層比較龐大,也比較強(qiáng)大,很多設(shè)備基本都有現(xiàn)成的驅(qū)動,你只需要probe一下,就會發(fā)現(xiàn)你要的設(shè)備或者相似的設(shè)備,改一改,修一修,估計就能用了。這樣的代價就是linux一層又一層的封裝以及設(shè)備驅(qū)動里較多的子系統(tǒng)。vxworks有vxbus,簡單粗暴,明晰好用,幾乎所有的設(shè)備都可以走vxbus,不管你是網(wǎng)絡(luò)設(shè)備還是塊設(shè)備。不管怎么樣,你需要知道,如何將我的驅(qū)動程序“注冊”到操縱系統(tǒng),如何讓應(yīng)用層在調(diào)用open,read,write的時候看到你的設(shè)備,不管是file_operations也好,pResource也好,都需要你了解整個系統(tǒng)的架構(gòu)。所以你發(fā)現(xiàn)沒,現(xiàn)在都是解析xxxlinux驅(qū)動,為什么要解析,不是寫xxxlinux驅(qū)動,在linux下做驅(qū)動,了解各個子系統(tǒng)和設(shè)備驅(qū)動的框架,比自己寫,要重要的多。甚至你可以不了解硬件的細(xì)節(jié),知道在哪里改基地址,在哪里改寄存器偏移地址,在哪里添加和刪除對應(yīng)的功能,你也可以把驅(qū)動調(diào)通,為什么, 因為linux真的很優(yōu)秀。

5.要有上下兼通的能力

下說過了,硬件。上就是,最起碼,你自己做的驅(qū)動,要能自己寫個應(yīng)用程序測試demo吧,必要的時候,還要給上層寫一個使用演示的例子,再完善一個驅(qū)動接口說明文檔,并不是所有的設(shè)備都可以open read write的。你的驅(qū)動函數(shù)的功能,參數(shù),返回值的說明。再進(jìn)階一下,要把上層當(dāng)做傻子,給他把底層通信協(xié)議都屏蔽了,只做上層的應(yīng)用協(xié)議,這個也需要一定的功底。

6.耐得住寂寞

驅(qū)動沒有花里胡哨的界面,沒有紛繁的數(shù)據(jù)處理,沒有那么高深的算法,需要的是穩(wěn)和毫無存在感。。。要讓硬件和軟件行云流水的時候都感受不到你的存在,那你就OK了。

工作時間純手打,良心不。。。

總結(jié)

以上是生活随笔為你收集整理的arm linux驱动 知乎_学习linux驱动开发的方法?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。