一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

六大步驟了解Linux驅(qū)動(dòng)工程師

5RJg_mcuworld ? 來源:未知 ? 作者:劉勇 ? 2017-11-20 09:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

由于很多人總問這個(gè)問題,所以這里做一個(gè)總結(jié)供大家參考。這里必須先說明,以下的步驟都是針對(duì)Linux系統(tǒng)的,并不面向WinCE。也許你會(huì)注意到,現(xiàn)在做嵌入式的人中,做linux研究的人遠(yuǎn)比做WinCE的人多,很多產(chǎn)家提供的資料也是以linux為主。

我一直很難理解,其實(shí)WinCE的界面比linux的界面好看多了,使用起來也很方便,更為重要的是,WinCE的開發(fā)和Windows下的開發(fā)基本一樣,學(xué)起來簡(jiǎn)單得多,但是學(xué)linux或者使用linux做嵌入式的人就是遠(yuǎn)比WinCE多。

在和很多工作的人交流時(shí)我了解到,他們公司從沒考慮使用WinCE,因?yàn)槌杀靖?,都是使用linux進(jìn)行開發(fā)。我讀研究生的實(shí)驗(yàn)室中也沒有使用WinCE的,大都研究linux,也有少部分項(xiàng)目使用vxwork,但是就沒有聽說過使用WinCE的,原因就是開源!當(dāng)然現(xiàn)在WinCE6.0聽說也開源,不過在成本和資源上linux已經(jīng)有了無人能擋的優(yōu)勢(shì)。與此相對(duì)應(yīng)的是,越來越多的電子廠商已經(jīng)開始使用linux開發(fā)產(chǎn)品。

第一

學(xué)習(xí)基本的裸機(jī)編程

對(duì)于學(xué)硬件的人而言,必須先對(duì)硬件的基本使用方法有感性的認(rèn)識(shí),更必須深刻認(rèn)識(shí)該硬件的控制方式,如果一開始就學(xué)linux系統(tǒng)、學(xué)移植那么只會(huì)馬上就陷入一個(gè)很深的漩渦。我在剛剛開始學(xué)ARM的時(shí)候是選擇ARM7(主意是當(dāng)時(shí)ARM9還很貴),學(xué)ARM7的時(shí)候還是保持著學(xué)51單片機(jī)的思維,使用ADS去編程,第一個(gè)實(shí)驗(yàn)就是控制led。學(xué)過一段時(shí)間ARM的人都會(huì)笑這樣很笨,實(shí)際上也不是,我倒是覺得有這個(gè)過程會(huì)好很多,因?yàn)闊o論做多復(fù)雜的系統(tǒng)最終都會(huì)落實(shí)到這些最底層的硬件控制,因此對(duì)這些硬件的控制有了感性的認(rèn)識(shí)就好很多了,學(xué)習(xí)裸機(jī)的編程的同時(shí)要好好理解這個(gè)硬件的構(gòu)架、控制原理,這些我稱他為理解硬件。

所謂的理解硬件就是說,理解這個(gè)硬件是怎么組織這么多資源的,這些資源又是怎么由cpu、由編程進(jìn)行控制的。比如說,s3c2410中有AD轉(zhuǎn)換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個(gè)地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設(shè)備的運(yùn)轉(zhuǎn)?還有,norflash內(nèi)部的每一個(gè)單元在這個(gè)芯片的內(nèi)存中都有一個(gè)相應(yīng)的地址單元,那么這些地址與剛剛說的寄存器地址又有什么關(guān)系?他們是一樣的嗎?而與norflash相對(duì)應(yīng)的nandflash內(nèi)部的儲(chǔ)存單元并不是線性排放的,那么s3c2410怎么將nandflash的地址映射在內(nèi)存空間上進(jìn)行使用?或者簡(jiǎn)單地說應(yīng)該怎么用nandflash?

再有,使用ADS進(jìn)對(duì)ARM9行編程時(shí)都需要使用到一個(gè)初始化的匯編文件,這個(gè)文件究竟有什么用?他里面的代碼是什么意思?不要這個(gè)可以嗎?諸如此類都是對(duì)硬件的理解,理解了這些東西就對(duì)硬件有很深的理解了,這對(duì)以后更深一步的學(xué)習(xí)將有很大的幫助,如果跳過這一步,我相信越往后學(xué)越會(huì)覺得迷茫,越覺得這寫東西深不可測(cè)。因?yàn)?,你的根基沒打好。不過先聲明一下,本人并沒有使用ADS對(duì)ARM9進(jìn)行編程,我是學(xué)完ARM7后直接就使用ARM9學(xué)linux系統(tǒng)的,因此涉及使用ADS對(duì)ARM9進(jìn)行編程的問題我很難回答^_^,自己去研究研究吧。

對(duì)于這部分不久將提供一份教程,這個(gè)教程中的例程并不是我為我們所代理的板子寫的,是我在我們學(xué)院實(shí)驗(yàn)室拿的,英培特為他們自己的實(shí)驗(yàn)箱寫的,不過很有借鑒意義,可以作為一份有價(jià)值的參考。

第二

使用linux系統(tǒng)進(jìn)行一些基本的實(shí)驗(yàn)

在買一套板子的時(shí)候一般會(huì)提供一些linux的試驗(yàn)例程,好好做一段時(shí)間這個(gè)吧,這個(gè)過程也是很有意義的,也是為進(jìn)一步的學(xué)習(xí)積累感性認(rèn)識(shí),你能想象一個(gè)從沒有使用過linux系統(tǒng)的人能學(xué)好linux的編程嗎?好好按照手冊(cè)上的例程做一做里面的實(shí)驗(yàn),雖然有點(diǎn)娃娃學(xué)走路,有點(diǎn)弱智,但是我想很多高手都會(huì)經(jīng)歷這個(gè)過程。

第三

研究完整的linux系統(tǒng)的的運(yùn)行過程

所謂完整的linux系統(tǒng)包括哪些部分呢?

3部分:bootloader、linux kernel(linux內(nèi)核)、rootfile(根文件系統(tǒng))。

那么這3部分是怎么相互協(xié)作來構(gòu)成這個(gè)系統(tǒng)的呢?各自有什么用呢?三者有什么聯(lián)系?怎么聯(lián)系?系統(tǒng)的執(zhí)行流程又是怎么樣的呢?搞清楚這個(gè)問題你對(duì)整個(gè)系統(tǒng)的運(yùn)行就很清楚了,對(duì)于下一步制作這個(gè)linux系統(tǒng)就打下了另一個(gè)重要的根基。介紹這方面的資料網(wǎng)上可以挖掘到幾噸,自己好好研究吧。

第四

開始做系統(tǒng)移植

上面說到完整的linux有3部分,而且你也知道了他們之間的關(guān)系和作用,那么現(xiàn)在你要做的便是自己動(dòng)手學(xué)會(huì)制作這些東西。

當(dāng)然我不可能叫你編寫這些代碼,這不實(shí)現(xiàn)。事實(shí)上這個(gè)3者都能在網(wǎng)下載到相應(yīng)的源代碼,但是這個(gè)源代碼不可能下載編譯后就能在你的系統(tǒng)上運(yùn)行,需要很多的修改,直到他能運(yùn)行在你的板子上,這個(gè)修改的過程就叫移植。在進(jìn)行移植的過程中你要學(xué)的東西很多,要懂的相關(guān)知識(shí)也很多,等你完成了這個(gè)過程你會(huì)發(fā)現(xiàn)你已經(jīng)算是一個(gè)初出茅廬的高手了。

在這個(gè)過程中如果你很有研究精神的話你必然會(huì)想到看源代碼。很多書介紹你怎么閱讀linux源代碼,我不提倡無目的地去看linux源代碼,用許三多的話說,這沒有意義。等你在做移植的時(shí)候你覺得你必須去看源代碼時(shí)再去找?guī)妆竞脮纯?,這里我推薦一本好書倪繼利的《linux內(nèi)核的分析與編程》,這是一本針對(duì)linux-2.6.11內(nèi)核的書,說得很深,建議先提高自己的C語言編程水平再去看。

至于每個(gè)部分的移植網(wǎng)上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經(jīng)驗(yàn)的東西都或多或少有所保留,你按照他說的去做總有一些問題,但是他不會(huì)告訴你怎么解決,這時(shí)就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因?yàn)槲椅幢赜龅竭^你的問題,不過我相信能給你一點(diǎn)建議,也許有助你解決問題。

這一步的最終目的是,從源代碼的官方主頁上(都是外國(guó)的,悲哀)下載標(biāo)準(zhǔn)的源代碼包,然后進(jìn)行修改,最終運(yùn)行在板子上。

盜用阿基米德的一句話:“給我一根網(wǎng)線,我能將linux搞定”。

第五

研究linux驅(qū)動(dòng)程序的編寫

移植系統(tǒng)并不是最終的目的,最終的目的是開發(fā)產(chǎn)品,做項(xiàng)目,這些都要進(jìn)行驅(qū)動(dòng)程序的開發(fā)。

Linux的驅(qū)動(dòng)程序可以說是五花八門,linux2.4和linux2.6的編寫有相當(dāng)大的區(qū)別,就是同為linux2.6但是不同版本間的驅(qū)動(dòng)程序也有區(qū)別,因此編寫linux的驅(qū)動(dòng)程序變都不是那么容易的事情,對(duì)于最新版本的驅(qū)動(dòng)程序的編寫甚至還沒有足夠的參考資料。那么我的建議就是使用、移植一個(gè)不算很新的版本內(nèi)核,這樣到時(shí)學(xué)驅(qū)動(dòng)的編程就有足夠的資料了。

第六

研究應(yīng)用程序的編寫

做作品做項(xiàng)目除了編寫驅(qū)動(dòng)程序,最后還要編寫應(yīng)用程序?,F(xiàn)在的趨勢(shì)是圖形應(yīng)用程序的開發(fā),而圖形應(yīng)用程序中用得最多的還是qt/e函數(shù)庫。我一直就使用這個(gè)函數(shù)庫來開發(fā)自己的應(yīng)用程序,不過我希望你能使用國(guó)產(chǎn)的MiniGUI函數(shù)庫。盜用周杰倫的廣告詞就是“支持國(guó)產(chǎn),支持MiniGUI”。MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應(yīng)該說是相當(dāng)不錯(cuò)的,我曾使用過來開發(fā)ARM7的程序。

不過MiniGUI最大的不好就是沒有像qtopia這樣的圖形操作平臺(tái),這大大限制了他的推廣,我曾經(jīng)幻想過與北京飛漫公司(就是MiniGUI的版權(quán)擁有者)合作使用MiniGUI函數(shù)庫開發(fā)像qtopia這樣的圖形操作平臺(tái),不過由于水平有限這只能是幻想了,呵呵。完成這一步你基本就學(xué)完了嵌入式linux的全部?jī)?nèi)容了。

還有一個(gè)小小的經(jīng)驗(yàn)想和大家分享。我在學(xué)習(xí)嵌入式linux的過程中很少問人,客觀原因是身邊的老師、同學(xué)師兄都沒有這方面的高手,主觀原因是我不喜歡問人,喜歡自己研究解決問題。這樣做有個(gè)好處,就是可以提高自己解決問題的能力,因?yàn)樽鲞@些東西總有很多問題你難以理解,別人也沒有這方面的經(jīng)驗(yàn),也不是所有問題都有人給你答案,這時(shí)必須要自己解決問題,這樣,個(gè)人的解決問題能力就顯得非常關(guān)鍵了。因此我的建議就是一般的問題到網(wǎng)上搜索一下,確實(shí)找不到答案了就問問高手,還是不行了就自己去研究,不要一味去等別人幫你解決問題。記住,問題是學(xué)習(xí)的最好機(jī)會(huì)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19678

    瀏覽量

    317784
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11512

    瀏覽量

    213908
  • 驅(qū)動(dòng)電路
    +關(guān)注

    關(guān)注

    155

    文章

    1585

    瀏覽量

    109981

原文標(biāo)題:Linux工程師傳道解惑:嵌入式linux入門六步曲

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    六大步驟防雷,Hold住雷擊不是問題

    導(dǎo)致被雷電損壞的設(shè)備量增加、IC隨著集成度增加越來越脆弱:雷擊似乎越來越顯示出它的可怕!雷擊確實(shí)很有破壞力,但是,采取正確步驟防雷,雷電原本不是問題!這里提出對(duì)抗雷擊的六大步驟和四大措施,Hold住雷擊,遠(yuǎn)離雷擊故障!步驟一:分
    發(fā)表于 03-16 17:28

    上海:PC底層驅(qū)動(dòng)工程師

    一家新成立的高科技公司,招聘PC底層驅(qū)動(dòng)工程師1名。公司位于上海市寶山區(qū)長(zhǎng)江南路,長(zhǎng)江軟件園,鄰近地鐵3號(hào)線長(zhǎng)江南路站。公司將提供有競(jìng)爭(zhēng)力的待遇。有意者請(qǐng)發(fā)簡(jiǎn)歷到
    發(fā)表于 03-03 22:26

    招電機(jī)驅(qū)動(dòng)工程師 大牛小??催^來

    技術(shù)大神們,幫忙擴(kuò)散下!誠(chéng)求電機(jī)驅(qū)動(dòng)工程師技術(shù)大神,坐標(biāo)深圳南山。1.2年以上電機(jī)驅(qū)動(dòng)設(shè)計(jì)調(diào)試經(jīng)驗(yàn),熟悉電機(jī)相關(guān)構(gòu)造原理2.精通直流無刷電機(jī)(BLDC)驅(qū)動(dòng)控制開發(fā),熟悉方波 /正弦波(FOC)等
    發(fā)表于 03-21 11:38

    高薪聘電機(jī)驅(qū)動(dòng)工程師2名

    電機(jī)驅(qū)動(dòng)工程師(8W~20W稅前年薪/雙休/五險(xiǎn)一金/河南南陽市宛城區(qū)) 崗位職責(zé):1、負(fù)責(zé)永磁同步電機(jī)或者異步電機(jī)的驅(qū)動(dòng)控制研發(fā);任職資格:1、研究生以上學(xué)歷,電機(jī)與電氣、自動(dòng)化、電力電子、電子
    發(fā)表于 05-24 14:22

    高級(jí)驅(qū)動(dòng)工程師看這里~~這里~~這里!

    和穩(wěn)定性3.編寫測(cè)試用例及相關(guān)文檔編碼4.相關(guān)音視頻處理5.與硬件工程師緊密合作解決開發(fā)和產(chǎn)品優(yōu)化過程中遇到的各種問題6.參與公司產(chǎn)品線規(guī)劃,以及硬件平臺(tái)的選型職位要求:1.計(jì)算機(jī)、通信、電子信息等
    發(fā)表于 11-02 11:43

    【深圳】誠(chéng)聘Camera驅(qū)動(dòng)工程

    獵頭招聘:Camera驅(qū)動(dòng)工程師(薪資:25-50 K/月)工作職責(zé):1、相機(jī)穩(wěn)定性調(diào)試;2、相機(jī)相關(guān)外設(shè)硬件驅(qū)動(dòng)開發(fā)和調(diào)試。崗位要求:1、2年以上相機(jī)相關(guān)驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn);2、3年以上Linux
    發(fā)表于 11-22 13:20

    嵌入式Linux工程師的成長(zhǎng)經(jīng)歷

    Linux開發(fā)工程師首先成長(zhǎng)為一名Linux開發(fā)工程師,這是最基本的目標(biāo),他應(yīng)該具備如下的素質(zhì):(1)了解
    發(fā)表于 08-21 14:35

    嵌入式軟件工程師筆試面試的相關(guān)資料分享

    嵌入式軟件筆試,嵌入式軟件面試,程序員簡(jiǎn)歷書寫,Linux驅(qū)動(dòng)工程師筆試,Linux驅(qū)動(dòng)工程師面試,BSP工程師筆試,BSP
    發(fā)表于 12-24 07:46

    開關(guān)電源PCB設(shè)計(jì)六大步驟所需注意的事項(xiàng)進(jìn)行分析

    開關(guān)電源PCB設(shè)計(jì)六大步驟在任何開關(guān)電源設(shè)計(jì)中,PCB板的物理設(shè)計(jì)都是最后一個(gè)環(huán)節(jié),如果設(shè)計(jì)方法不當(dāng),PCB可能會(huì)輻射過多的電磁干擾,造成電源工作不穩(wěn)定,以下針對(duì)各個(gè)步驟中所需注意的事項(xiàng)進(jìn)行分析。01原理圖到PCB的設(shè)計(jì)流程02相關(guān)參數(shù)設(shè)置相鄰導(dǎo)線間距必須能滿足電氣安全要
    發(fā)表于 12-28 08:28

    中高級(jí)【嵌入式驅(qū)動(dòng)工程師】年薪50w內(nèi)可談

    中高級(jí)【嵌入式驅(qū)動(dòng)工程師】 年薪50w以內(nèi)可談 工作?地點(diǎn):北京市 了解更多 ?5年以上內(nèi)核驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn) ??需要有國(guó)產(chǎn)化操作系統(tǒng)/芯片平臺(tái)的驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)(必須) 交換機(jī)/交換芯片
    發(fā)表于 11-23 13:35

    提高LED固晶品質(zhì)六大步驟

    提高LED固晶品質(zhì)六大步驟  一、嚴(yán)格檢測(cè)固晶站的LED原物料1.芯片:主要表現(xiàn)為焊墊污染、芯片破損、芯片切割大小不一、芯片切割傾斜等
    發(fā)表于 11-13 09:51 ?1206次閱讀

    MES系統(tǒng)實(shí)行精細(xì)化管理的六大步驟

    本文主要介紹了MES系統(tǒng)實(shí)行精細(xì)化管理的六大步驟。
    發(fā)表于 06-04 08:00 ?4次下載

    如何成為Linux驅(qū)動(dòng)工程師

    由于很多人總問這個(gè)問題,所以這里做一個(gè)總結(jié)供大家參考。這里必須先說明,以下的步驟都是針對(duì)Linux系統(tǒng)的,并不面向WinCE。也許你會(huì)注意到,現(xiàn)在做嵌入式的人中,做linux研究的人遠(yuǎn)比做WinCE的人多,很多產(chǎn)家提供的資料也是
    的頭像 發(fā)表于 11-28 15:50 ?6471次閱讀

    開關(guān)電源PCB設(shè)計(jì)六大步驟

    開關(guān)電源PCB設(shè)計(jì)六大步驟在任何開關(guān)電源設(shè)計(jì)中,PCB板的物理設(shè)計(jì)都是最后一個(gè)環(huán)節(jié),如果設(shè)計(jì)方法不當(dāng),PCB可能會(huì)輻射過多的電磁干擾,造成電源工作不穩(wěn)定,以下針對(duì)各個(gè)步驟中所需注意的事項(xiàng)進(jìn)行分析。01原理圖到PCB的設(shè)計(jì)流程02相關(guān)參數(shù)設(shè)置相鄰導(dǎo)線間距必須能滿足電氣安全要
    發(fā)表于 01-06 12:41 ?30次下載
    開關(guān)電源PCB設(shè)計(jì)<b class='flag-5'>六大步驟</b>

    EMC整改的六大步驟

    EMC(電磁兼容性)整改的六大步驟是確保電子設(shè)備在電磁環(huán)境中能夠正常工作且不對(duì)其他設(shè)備產(chǎn)生干擾的重要過程。以下是EMC整改的六大步驟及其詳細(xì)說明: 一、查找確認(rèn)輻射源 這是整改的第一步,目的是確定
    的頭像 發(fā)表于 12-10 14:15 ?1629次閱讀
    EMC整改的<b class='flag-5'>六大步驟</b>