<strike id="xh1ss"><address id="xh1ss"></address></strike>
  1. <legend id="xh1ss"></legend>
  2. 更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

    嵌入式該怎么學習?

    • 發布:嵌入式培訓
    • 來源:嵌入式教程
    • 時間:2019-10-16 17:38

    Part1 嵌入式學習的幾種線路圖

    嵌入式學習是一個循序漸進的過程,如果是希望向嵌入式軟件方向發展的話,目前最常見的是嵌入式Linux方向,關注這個方向,我認為大概分3個階段:

    1、嵌入式linux上層應用,包括QT的GUI開發

    2、嵌入式linux系統開發

    3、嵌入式linux驅動開發

    嵌入式目前主要面向的幾個操作系統是,LINUX,WINCE、VxWorks等等。

    Linux是開源免費的,而且其源代碼是開放的,更加適合我們學習嵌入式。

    你可以嘗試以下路線:

    (1) C語言是所有編程語言中的強者,單片機、DSP、類似ARM的種種芯片的編程都可以用C語言搞定),因此必須非常熟練的掌握。

    推薦書籍:《The C Programming Language》 這本經典的教材是老外寫的,也有中譯版本。

    (2) 操作系統原理,是必需的,如果你是計算機專業畢業那也就無所謂了,如果是非計算機專業的就必須找一本比較淺顯的計算機原理書籍看一看,把啥叫“進程”“線程”“系統調度”等等基本問題搞清楚。

    (3)Linux操作系統就是用C語言編寫的,所以你也應該先學習下Linux方面的編程,只有你會應用了,才能近一步去了解其內核的精髓。

    推薦書籍:《UNIX環境高級編程》(第2版)

    (4) 了解ARM的架構,原理,以及其匯編指令,我們在嵌入式開發中,一般很少去寫匯編,但是最起碼的要求是能夠看懂arm匯編。

    (5) 系統移植的時候,就需要你從最下層的

    bootloader開始,然后內核移植,文件系統移植等。而移植這部分對硬件的依賴是非常大的,其配置步驟也相對復雜,也沒有太多詳細資料。

    (6) 驅動開發

    linux驅動程序設計既是個極富有挑戰性的領域,又是一個博大精深的內容。

    linux驅動程序設計本質是屬于linux內核編程范疇的,因而是對linux內核和內核編程是有要求的。在學習前你要想了解linux內核的組成,因為每一部分要詳細研究的話足夠可以擴展成一本厚書。

    以上只不過是大概的框架,在實際的開發中還會涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學習嵌入式的周期較長,門檻較高,自學的話更是需要較強的學習能力和專業功底。只要能堅持下來一定會取得成功!

    嵌入式是一個比較大的概念,有四個分支(主要):

    1、微控制器(單片機為例);

    2、微處理器(arm為例);

    3、dsp(數字信號處理);

    4、soc(片上系統);

    對于我們初學者而言,首先要學習單片機,以51為代表,等你學好51之后,可以深入學習更艱難的東西;

    當然,并不是說你只需要學習單片機;要想學好單片機,你還得學c語言,得學匯編,得學一大堆應用軟件;等到單片機能夠掌握的不錯的時候又需要自己進行原理圖、PCB板的設計;還得掌握系統設計的工程管理什么的;比較多。。。。

    單片機還是比較簡單的,等到學好之后,開始學習arm的時候,你就接觸的多了,什么操作系統啊、驅動編寫啊、內核移植啊、應用程序的添加啊、上位機的編寫啊,,那個就多了,,不過到時候你就全知道了。。。

    ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟件開發目標:

    (1)掌握主流嵌入式微處理器的結構與原理(初步定為arm9)

    (2)必須掌握一個嵌入式操作系統(初步定為uclinux或linux,版本待定)

    (3)必須熟悉嵌入式軟件開發流程并至少做一個嵌入式軟件項目。

    從事嵌入式軟件開發的好處是:

    (1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切 入這一領域;另一方面,是因為這一領域較新,目前發展太快,大多數人無條件接觸。

    (2)與企業計算等應用軟件不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。

    (3)哪天若想創業,搞自已的產品,嵌入式不像應用軟件那樣容易被盜版。硬件設計一般 都是請其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設計軟件就變成自己的產品了。

    (4)興趣所在,這是最主要的。

    從事嵌入式軟件開發的缺點是:

    (1)入門起點較高,所用到的技術往往都有一定難度,若軟硬件基礎不好,特別是操作系統級軟件功底不深,則可能不適于此行。

    (2)這方面的企業數量要遠少于企業計算類企業。

    (3)有少數公司經常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數公司也并無此要求,只要有經驗即可。

    (4)平臺依托強,換平臺比較辛苦。

    興趣的由來:

    1、成功觀念不同,不虛度此生,就是我的成功。

    2、喜歡思考,挑戰邏輯思維。

    3、喜歡C語言

    4、喜歡底層開發,討厭vb類開發工具(并不是說vb不好)。

    5、發展前景好,適合創業,不想自己要死了的時候還是一個工程師。

    方法步驟:

    1、基礎知識:

    目的:能看懂硬件工作原理,但重點在嵌入式軟件,特別是操作系統級軟件,那將是我的優勢。

    科目:數字電路、計算機組成原理、嵌入式微處理器結構。

    匯編語言、C/C++、編譯原理、離散數學。

    數據結構和算法、操作系統、軟件工程、網絡、數據庫。

    方法:雖科目眾多,但都是較簡單的基礎,且大部分已掌握。不一定全學,可根據需要選修。

    thec++programminglanguage(一直沒時間讀)、數據結構-C2。

    2、學習linux:

    目的:深入掌握linux系統。

    方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深, 那主講原理。看幾遍后,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最后深入代碼。

    主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。

    3、學習嵌入式linux:

    目的:掌握嵌入式處理器其及系統.

    方法:

    (1)嵌入式微處理器結構與應用:直接arm原理及匯編即可,不要重復x86。

    (2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而后深入研究uClinux。

    (3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)

    主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm匯編指令等。

    4、深入學習:

    A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼算法和技術。

    B、通信協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDM A等。

    C、網絡與信息安全技術:如加密技術,數字證書CA等。

    D、DSP技術:DigitalSignalProcess,DSP處理器通過硬件實現數字信號處理算 法。

    說明:太多細節未說明,可根據實際情況調整。重點在于1、3,不必完全按照順序作。對于學習c++,理由是c++不只是一種語言,一種工具,她還是一種藝術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對于linux內核,學習編程,讀一些優秀代碼也是有必要的。

    注意: 要學會舉一反多,有強大的基礎,很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,并具有良好的邏輯思維。一定要理論結合實踐。

    不要一味鉆研技術,雖然擠出時間是很難做到的,但還是要留點余地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、游戲、科幻電影。還有一些不愿意做但必須要做的!

    技術是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創業(不要相信有奇跡發生,盲目創業很難成功,即便成功了發展空間也不一定很大)。

    嵌入式書籍推薦:

    Linux基礎

    1、《Linux與UnixShell編程指南》

    C語言基礎

    1、《CPrimerPlus,5thEdition》【美】StephenPrata著

    2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDav

    idM.Rithie(K&R)著

    3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)

    4、《嵌入式Linux應用程序開發詳解》

    Linux內核

    1、《深入理解Linux內核》(第三版)

    2、《Linux內核源代碼情景分析》毛德操胡希明著

    研發方向

    1、《UNIXNetworkProgramming》(UNP)

    2、《TCP/IP詳解》

    3、《Linux內核編程》

    4、《Linux設備驅動開發》(LDD)

    5、《Linux高級程序設計》楊宗德著

    硬件基礎

    1、《ARM體系結構與編程》杜春雷著

    2、S3C2410Datasheet

    英語基礎

    1、《計算機與通信專業英語》

    系統教程

    1、《嵌入式系統――體系結構、編程與設計》

    2、《嵌入式系統――采用公開源代碼和StrongARM/Xscale處理器》毛德操胡希明 著

    3、《BuildingEmbeddedLinuxSystems》

    4、《嵌入式ARM系統原理與實例開發》楊宗德著

    理論基礎

    1、《算法導論》

    2、《數據結構(C語言版)》

    3、《計算機組織與體系結構?性能分析》

    4、《深入理解計算機系統》【美】RandalE.Bryant DavidO''Hallaron著

    5、《操作系統:精髓與設計原理》

    6、《編譯原理》

    7、《數據通信與計算機網絡》

    8、《數據壓縮原理與應用》

    C語言書籍推薦

    1.TheCprogramminglanguage《C程序設計語言》

    2.PointersonC《C和指針》

    3.Ctrapsandpitfalls《C陷阱與缺陷》

    4.ExpertCLanuage《專家C編程》

    5.WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCPrograms《編程精粹--Microsoft編寫優質無錯C程序秘訣》

    6.ProgrammingEmbeddedSystemsinCandC++《嵌入式系統編程》

    7.《C語言嵌入式系統編程**》

    8.《高質量C++/C編程指南》林銳

    盡可能多的編碼,要學好C,不能只注重C本身。算法,架構方式等都很重要。 這里很多書其實是推薦而已,不必太在意,關鍵還是基礎,才是重中之重!!!

    Part2 嵌入式系統項目失敗的7個隱形殺手

    對工程師而言,沒有什么事情比投入大量心力、汗水和淚水到一個項目,但最終卻只得到一個失敗的結果這件事,來得令人沮喪。對那些參與項目開發的人來說,失敗確實可以增長其洞察力和經驗,但所時間和心力的損失卻也是毀滅性的一擊。有許多理由可以讓嵌入式系統的項目最終以失敗收場,但有7個隱形殺手會讓一個項目在不知不覺中慢慢地且不聲不響地走上失敗之路,任何項目的領導者或其中的成員對它們千萬不可等閑視之。

    #7 – 成員流動(Team turnover)

    每家公司都會經歷員工或承包商的流動,但關鍵人物太過于經常變動,可能是一個項目注定失敗的領先指標。有很多原因可以說明為什么人員流動對項目會有不利的影響。第一,它會造成其他團隊成員心理上的影響,而降低生產力。其次,失去關鍵人物可能會導致歷史性和重要的信息會永遠遺失,這會放緩發展的腳步。最后,替換隊員需要對新的成員進行訓練,并跟上團隊的腳步。這是一個會使人分心的工作,會讓其他成員放下手邊的開發工作來教導新的成員,結果會導致開發成本的增加和延長交付時間。

    #6 – 走走停停癥候群

    孩子被教導說,“不要喊狼來了。”這話是一個警告,不要誤發假警報。這種警告有一種“進行!停止!進行!”的周期,在項目中很容易被忽略。一位經理、客戶,或其他一些單位猛烈地催促他的團隊,聲稱該項目要在某一日之前完成。開發人員因此周末加班,投注更多的心力。然后,就像這股來得很快的催促之力,突然之間卻又嘎然而止。1個月后,它又再次告急。“快點,我們必須在X之前出貨!” 然后同樣的事情又再次發生。

    項目這種走走停停一再重復的緊迫性將會對開發團隊造成心理層面的影響。開發人員不再相信任何的迫切性。事實上,他們會有一種心態,開始覺得這個項目并不是一個需要認真對待的項目,它很快將再次停止,那么為什么還要投入任何的努力?

    所以,不要對項目喊狼來了!

    #5 - 完美主義者的態度

    許多工程師都有一種完美主義者的態度。這種態度所帶來的問題是,不可能開發出完美的系統,撰寫出完美的代碼,或者在最適當的時間推出產品。完美主義是鏡花水月,如果完美主義是公司文化的一部分,它將會是產品可能會不斷修正,直到公司破產倒閉的標志。

    正確的心態不是完美,而是成功。為了可以成功地推出產品,什么是最低的成功標準?設下成功的標準,并在一旦達成后,立即推出產品。之后可以用啟動加載器(boot-loader)來添加功能并解決那些小錯誤。

    #4 - 加速的時間表

    要迅速地開發出一個嵌入式系統,事實上,設計團隊事實上要放慢腳步,這似乎違反直覺。但依據加速的時間表(accelerated timetable)工作,會因為壓力和,更重要的是,有比較高的可能性會產生錯誤,而使得效率降低。錯誤將直接影響小缺陷的數量,而這些小缺陷隨后又會增加測試時間和返工的時間。

    另一個問題是,當開發人員都搶著和努力滿足加速的時間表時,他們會圖省事而走快捷方式。比如,代碼沒有批注及說明。像是架構圖和流程圖等設計文件也付之闕如。相反地,設計只留存在程序設人員的心中。放慢腳步,把事情做正確,會更快地得到最終的解決方案。

    #3 – 不良的結構化軟件

    嵌入式軟件是嵌入式系統的血液;沒有了它,產品就無法運作。不良的結構化軟件是一個很明確的失敗征兆。嵌入式系統的系統結構需要具有靈活性,以便未來成長之用。它要有用于測試、除錯和進行日志記錄的空間。一個架構不佳的系統將會使得施作不良,而導致該軟件錯誤百出而難以管理,從而注定要將它的歲月花在除錯上,直至項目最終死亡為止。

    #2 - 本末倒置

    開發一個新產品是一種會令人興奮的奮斗過程。其中有很多事情要做,而公司通常是急著想把產品從概念化成可以生產的產品。這種匆促的舉動是極其危險的,尤其是當生產決定浮現時。

    當產品的機械設計或外觀和感覺被拿來推動其電氣需求時,這就是一個很好的例子。在工作的電氣和軟件原型被驗證之前,生產工具就準備好要生產了。在這種情況下,似乎總是有電路板沒有檢查,需要進行調整的問題。對那些匆匆忙忙、且太快就試著要把所有的事情同時拉在一起的項目,最終結果總是由于修改而落入花更長時間和更多成本的結果。

    #1 - 范圍潛變

    每個項目都有范圍潛變(scope creep),但范圍潛變的程度可以是該項目是否會成功或失敗的決定性因素。范圍潛變最危險的一個領域是,它是暗中為害的。某天在電路板上增加了一個簡單的傳感器,幾個月后再加一些上去,這些看起來完全無害。但他們可能是致命的。

    范圍潛變的最大問題是,變化通常是微小的。乍看之下,改變看起來只是短短幾天的工作。但是,每次加一點點,系統的復雜性也隨之增加了。復雜的系統需要更多的測試,可能也需要更多的除錯。隨著時間的發展,范圍潛變可以將系統改變到使原來的軟件體系結構和設計變得過時,或甚至變成是不正確的解決方案!最終的結果是使一個項目變得遠遠地超出其預算范圍,實際進度落在交貨日期之后,此一項目很少或幾乎沒有結束的跡象。

    結論

    在開發新的嵌入式系統,并沒有確保其一定成功的保證,有很多因素會影響到項目的成功或失敗。這是筆者所看到的7大項目隱形殺手。你可以從這些細微的線索判斷出你的項目是否正走在一條緩慢且邁向失敗的發展之路上。任何項目的領導者或其中的成員對它們千萬不可等閑視之。

    免責聲明:內容來源于網絡,若涉及侵權聯系盡快刪除。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:為什么說嵌入式開發比單片機要難很多?
    下一篇:嵌入式系統基礎知識有哪些

    裸編程怎么做?裸編程具體做法

    嵌入式編程中你必須知道的小知識

    嵌入式C語言編程小知識總結

    有哪些工具可以讓嵌入式開發事半功倍?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    黄色一级全祼,欧美一级aa片,一级毛卡片,一级特黄大片,三级片视频 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>