国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

原創丨嵌入式IMX6ULL學習指引-四大要點-簡單也實用

發布時間:2021-8-2 09:50    發布者:就是塔塔
這個部分十分重要!初學者一定要認真看一遍!
我們主要討論嵌入式技術學習方法,這里主要是針對嵌入式軟件。
嵌入式技術是一門邊緣科學(又稱交叉科學),涉及的內容非常廣泛,前幾年很多學校,包括一流的大學都在討論要不要設置這個專業。不是說設置這個專業本身有什么問題,而是因為課程設置不容易安排,如果偏硬件的話就成了電子工程一類的專業,如果偏軟件一些就和計算機專業的課程體系雷同了。
正因為如此,很多人在學習嵌入式技術的時候,不知道從哪方面入手,因為知識體系非常龐雜,如果沒有指導,很可能會長時間不得要領,學習效率會很差。
那么,下面探討一下學習方法,我們將盡量用比較簡潔的方式,讓大家明白嵌入式系統知識體系,以及它的整個脈絡。


01 框架學習法
嵌入式系統的學習方法很多人都講過,相信大家在網上或者其他渠道接觸過一些思路和方法,在這里講一下個人的體會。首先來說,學習有沒有捷徑呢?一種說法是可以速成,幾天就可以學會,我們認為這種速成的說法太夸張了,那是不可能的。
有些人認為學習沒有捷徑,你必須經過長期的努力,所謂功到自然成。但是學習嵌入式技術,如果說沒有好的方法那也是不對的,學習一門新的知識體系肯定是要下工夫,但是也需要有好的指引,也就是捷徑,實際上這里是講的就是學習方法。
方法很重要,如果沒有方法,閉著眼亂學亂撞,肯定是不行的。就像我們去找一個沒有去過的地方,自己跟著感覺去找,找到的希望就很小,如果手頭有張地圖,并且還有指南針,那就要快很多;如果我們有導航,自然是更快更方便了。實際上,這就是方法的重要性。
那么在這里,我們來介紹一種學習方法,這種方法也是迅為公司多年培訓和產品開發經驗所總結出來的。
大家可能會問了,迅為也做過嵌入式培訓?實際上我們有很豐富的培訓經驗。我們覺得,“框架學習法”是最適合初學者的一種方法,這里面包含了快速原型的思想;也就是框架學習,快速原型。這里面的主導思想,即從一開始就要看到嵌入式系統知識領域的全貌,然后逐漸深入!
比如說,我們想了解北京這座城市,如果在胡同里轉來轉去,可能幾年都搞不清楚這個城市是什么情況,如果我們先通過北京地圖學習一下,了解下天安門在什么地方,鳥巢在什么地方,香山八達嶺在哪里。再加上我們到這些地方去看一看,可能很快就掌握了這座城市的全貌。
在這里需要注意的是,即便是有了地圖,也需要有一些基礎,比如我們需要知道什么是天安門,知道鳥巢的來歷,明白八達嶺是怎么回事,實際上這些就是基礎知識。也就是說我們在學習系統框架之前要具備一定的基礎,否則這張地圖也是看不懂的。
學習嵌入式技術也是需要一定的基礎的,關于基礎方面,下一節會專門討論。
接下來如果我們想進一步的了解這座城市,就要去研究這座城市的歷史,甚至是中國的歷史。更細一步呢,還可以進一步研究故宮本身的地圖。這樣一環套一環,經過不斷的研究,逐漸就會掌握這座城市的地理、文化、政治經濟等特點。
通過了解北京城這個簡要的例子,運用框架學習法,在對不同層次的框架的學習過程中,逐漸了解和掌握整個系統。
如果我們不注意方法,每天在胡同里面來回轉悠,肯定是事倍功半,很長時間將不得要領。
框架學習法視頻講解:bilibili搜索--【北京迅為】再談Linux學習方法-框架學習法


02 嵌入式系統學習的框架
學習嵌入式也是這樣。必須掌握一定的方法,才能比較快速有效的學習。這個方法就是框架學習法,如前所述,首先在了解這個基礎框架之前我們要有一定的基礎,那么這個基礎就是單片機和 C 語言,不需要掌握的有多好,但一定要具備一定的 C 語言編程能力。像其他有些課程,比如計算機專業課程中的編譯原理、數據結構,計算機系統體系結構,這些知識實際上還不太需要,了解一下就可以了。
有了 C 語言編程基礎,并且學過單片機,這個時候就可以學習一下嵌入式 Linux 的基本框架了,很簡單,那就是首先要搞清楚什么是 BootLoader、Linux 內核(kernel)、和文件系統,接下來簡單介紹一下。
什么是 BootLoader 呢?
實際上它是個引導程序,也就是硬件復位以后第一個要執行的程序,它主要工作就是初始化操作系統運行的環境,比如說內存、定時器、緩沖器等,當這個工作做完以后,再把操作系統的代碼加載到內存,然后操作系統就可以啟動并執行,到此為止,bootloader 的任務就完成了。
那么有人問了,沒有 bootloader 行不行呢,可以!但是因為操作系統本身一般是個通用的軟件,它要在不同的平臺上運行,比如 X86,ARM,POWERPC 等等,而不同的處理器的初始化操作是不同的,如果操作系統的軟硬要考慮在啟動時候各種平臺的差異性,那就顯得過于復雜。除此之外,也有其他方面的原因,比如燒寫系統的便捷性考慮等等,這里暫不做深入的探討。
常用的 bootloder 有很多種,比如 U-BOOT、REDBOOT、LILO 等等,我們開發板用的是 Uboot。
什么是 Kernel 呢?
Kernel 就是 Linux 的內核,也就是說 Linux 操作系統本身的代碼。那么 U-BOOT 啟動到最后,就是把它加載到內存,并且跳轉到 Kernel 來執行。
什么是文件系統呢?
現在我們來介紹一下文件系統,這里需要了解一個事實,就是說 Linux 啟動到最后一定要掛載一個文件系統。這個是 Linux 的一個特點,它不像其他操作系統,比如像 VxWorks,是不需要文件系統的,VxWORKS沒有文件系統也可以運行。 而且還需要了解一點,像 QT 系統、Android、以及 Ubuntu 系統它們的底層都是 Linux 內核,不同的是它們的文件系統不一樣,也就是說,Android 系統相關的一些代碼,比如說圖形界面系統、Android 的虛擬Android 的框架代碼都在 Linux 最后掛的文件系統里面。 如果大家理解了這點,那么這幾個系統的基本架構也就清楚了。
搞清楚了這幾個概念,實際我們就了解了 Linux 系統最基本的框架,然后我們根據開發板配套的資料,去學習如何編譯這幾個文件,因為像 Uboot、Kernel、文件系統,最后編譯生成出來分別是一個獨立的文件,就是說會生成三個文件,最后我們要學會把這幾個文件燒寫到板子上。
學會了編譯和燒寫,接下來呢,我們在這個框架的基礎上,去學習如何做 Linux 上面的應用程序。
什么是應用程序(APP)呢?它是運行在操作系統上面,通過調用操作系統的資源去工作,是最終的業務邏輯,比如我們 Windows 上面有很多的應用程序,像 QQ、暴風影音、WORD、EXEL 等,各種各樣 APP有很多。
根據我們后期的視頻教程,大家應該很快就能學會,比如說串口程序、網絡程序等等,這些都是應用程序,我們不需要做太多,學習幾個加深一下對框架的認識就可以了。
再接下來,我們就需要學習 Linux 驅動方面的一些知識了,這也是在基礎框架里面的,驅動程序可以看成是操作系統的一部分,它在底層專門和硬件打交道。那么大家稍微了解一下,就會知道 Linux 的驅動包括有三種:字符設備、塊設備以及網絡設備。
這個時候呢,大家要注意,只需要學習字符類設備驅動,其他兩種先不要去花時間研究。一定要記住,最初學習嵌入式技術的時候不要去研究塊設備和網絡設備。也就是說,把字符類設備搞明白就可以了。因為一般的公司開發嵌入式的產品僅限于字符設備的開發,掌握字符設備的框架思想和開發步驟就能夠勝任了。至于塊設備和網絡設備,直接用開發板或者某個開發平臺本身提供的驅動就足夠了,這些是一線處理器廠家做的事情,一般情況下不需要我們去完成,這些處理器研發的廠家在為處理器開發配套 BSP 的時候才會涉及這些工作。
當然了,有的同學可能會說,某某公司就是在做塊設備驅動,我的意思是講,從嵌入式這個行業總體上來講,大多數公司都不需要那么做,很多技術往往是直接拿來用的。我們掌握了字符設備驅動的開發方法,已經能夠應付大多數公司的開發要求,對于一個還沒有入門的學生來講,一定要按照我說的辦法來學習。等將來熟練掌握基本技能以后,可以根據框架學習的方法,再去研究更深入的編程。這個時候,那些計算機專業的課程,比如數據結構、計算機系統體系結構、各種算法等等就可以派上用場了,自己的水平也會在學習的過程中再次升華。
學習字符類設備驅動,請跟著迅為的視頻去學習 LED 的驅動編寫方法,以及蜂鳴器、AD 轉換等這些跟 GPIO 相關的驅動開發技巧。掌握了這些,可以講,我們已經成為了一個比較合格的嵌入式驅動工程師!
這個時候我進一步介紹一下什么是快速原型,如果學過軟件工程的話,那么大家會聽說過一種自頂向下的產品開發方法,這個方法很有效,多數產品的開發方法都是遵循這個思想,大概就是從最初的可行性分析,然后概要設計、詳細設計、編碼、測試等等。
除此之外呢,還有一種開發方法就是‘快速原型’,這個是微軟采用的一種方法,簡而言之呢,快速原型是個逐漸迭代的方法,就是說讓產品盡快把雛形開發出來,然后逐漸清晰,一步步走向成熟。在這里我們把快速原型法用到學習上,它原來是種開發方法,我們這里借鑒過來,借鑒到框架學習的思想上。也就是說,我們掌握一定的基礎以后,就要去學習框架,當這個基礎框架清晰以后,再去學習更新更深入的框架知識,這樣一環套一環,環環相扣,最終研究越來越深入,進而成為這個行業的專家。
那么在嵌入式行業的工程師的職位其實也是這個樣子的,大家看一下:
基本數字電路 + C 語言 + 基礎框架知識 -----> 嵌入式驅動工程師
數據結構+編譯原理 ------> 高級嵌入式驅動工程師
計算機系統體系結構 + 操作系統(從抽象到具體)-------> 系統架構工程師
因為在第一個階段,你會發現,只要熟練掌握 C 語言,有良好的編程功底就夠了,在工作的時候很少涉及到編譯原理、數據結構這些方面的知識,那么很多其他專業的畢業生,甚至原來學機械設計的同學都可以成為嵌入式驅動工程師。
實際也是這樣,在大多數嵌入式技術公司,尤其是應用產品開發的公司,只要了解基本的 Linux 架構的知識,并且能夠編寫字符類的驅動程序就夠了。因為像網絡設備驅動以及塊設備驅動,基本都有個 DEMO 設計,只要參考這個 DEMO 做就可以,根本不需要我們做什么,如果說需要做的話,那也是改一下 GPIO 的設置,修改一下中斷的引腳,僅此而已。


那么深入學習的話,分析操作系統源碼的時候就會發現,數據結構的知識逐漸排上用場,尤其是在某些專業公司,負責某個專用領域的時候,工作中可能會改寫操作系統的某部分代碼,來適應他們自己硬件的各種情況,將會深入分析某方面的技術,比如文件系統、網絡協議等,這個時候數據結構等方面知識就顯得很重要了。
有了基礎的原型以后,通過繼續學習新的知識,逐漸使自己的認識提高一個層次,更精深的了解嵌入式技術,同時知識體系更加完備,可以做更高層次的工作了。
應用這樣的學習方法,在學習過程中,也會使學習過程始終有目標,而不會感覺枯燥,每天都會有成就感,從一開始就能抓住嵌入式系統的脈絡,只要付諸努力,持久學習下去,就能成為嵌入式行業的專家。
最后我們總結下,要想比較快的掌握嵌入式技術,要應用框架學習的方法,在一定的知識基礎上就開始學習基礎的框架知識,這樣就很容易入門,隨著開發經驗的積累,再去學更深入的基礎知識,以及更深層次的框架知識。這樣相互迭代,直到能夠精通嵌入式技術。
這個方法也充分說明計算機科學是門實驗科學。那么在學習過程中,要注意,不用學習過多的基礎知識,也就是說有了 C 語言和單片機的基礎就可以學習嵌入式的基本框架,然后就能夠成為一個合格的嵌入式工程師;以后可以繼續深造,學習數據結構編譯原理操作系統等方面的知識,并深入學習算法,從而再去學習 Linux 更深層次的框架結構,使得整體水平得到進一步的升華。
現在我們總結一下,把學習嵌入式技術的路線圖跟大家澄清一下,那就是:
單片機 + C 語言 -----> 學習基礎框架知識(包括 bootloader,Linux 內核、文件系統的編譯和燒寫 ----->
再去學習 Linux 上層應用的編程,以及字符設備的驅動,學完以后就會覺得入門了,能做一些事情了-----> 最后深入學習計算機系統結構、數據結構、操作系統原理等等一些知識,通過分析 Linux 系統源碼,直到熟練掌握嵌入式編程技術。
框架學習法視頻講解:bilibili搜索-【北京迅為】再談Linux學習方法-框架學習法


03 關于裸機程序和仿真
有些用戶希望通過 ARM 開發板來學裸機程序,其實我們不建議這樣做,在 ARM 上做一些裸機程序,不是不可以,而是沒有太多價值,因為裸機程序根本發揮不了 ARM 處理器的性能,只有運行了操作系統才能夠充分挖掘 ARM 處理器的優勢,更能夠保證系統運行的安全和穩定性。
如果真的想學習裸機程序,單片機就夠了。從架構上來講,單片機和 ARM 是一樣的,都是 CPU,而且編程思想也沒有多少區別,只不過 ARM 速度太快了,只有在上面跑操作系統,并使用多任務的編程方法才能最大化的發揮 ARM 處理器的優勢。
在實際產品開發時也是這樣,幾乎沒有拿 ARM 跑裸機的方式來開發產品的。如果用裸機方式來編程,推薦使用單片機,這樣整體成本也會小很多,事實上也是這樣的。
早期的時候,我們在 ARM 上也做過很多裸機程序,并且用仿真器來調試;很多人,尤其從單片機轉過來的工程師,都希望學習下這種技術,因為他們感覺裸機程序更親切,而直接用操作系統覺得很不踏實,不能夠完全掌握系統的運行情況;其實這種想法是不對的。我們必須在抽象的層次上來開發產品,逐漸轉變觀念,不能說開發一款產品,就一定要對每個程序的細節都非常清楚,應該學會在操作系統這個抽象的軟件上來開發產品,這樣做才符合潮流,也是產品發展以及個人發展必須轉變的思路和觀念。我們看到很多原來做單片機開發的工程師,在轉型嵌入式產品開發的時候面臨很多困難,實際上觀念的轉變應該說是最大的障礙,希望引起大家的注意。


04 基于迅為開發板的學習步驟
本節結合迅為的終結者 I.MX6ULL 開發板來介紹一下嵌入式技術的學習步驟。
大家都知道,嵌入式技術的知識面非常廣,學起來往往不知道如何下手,我們通過這一小節給大家闡述一下嵌入式技術應該從哪里開始學起,以及按照什么樣的步驟深入下去,最后順利入門,成為一個合格的嵌入式工程師。
這節的教程很重要,希望通過這次的講解能起到提綱挈領的作用,讓大家能夠在大量的學習資料中有一個比較清晰的學習脈絡。
前面已經介紹過,嵌入式系統的學習方法,首先要掌握架構,那么什么是架構呢,這里再強調一遍,那就是要搞清楚幾個概念:弄明白什么是 BootLoader 引導程序,什么是 Linux 操作系統內核 Kernel,什么是文件系統。這個很重要,如果搞不明白,直接去學其他的內容,學起來就比較迷糊,實際上是在走彎路,這里推薦大家首先要看一篇文章,也就是迅為用戶 QQ 群的一個答疑記錄:《迅為技術支持群答疑記錄》,已經放到了開發板光盤的網盤鏈接中,路徑為:iTOP-i.MX6ULL 終結者光盤資料->10_其他參考資料->迅為技術支持群答疑記錄,大家可以去研讀一下。
相信大家看了這個對話以后,就應該明白 u-boot、Kernel 和文件系統這幾個文件的作用和意義。接下來大多數工作都是圍繞這幾個文件展開的,比如編譯環境的搭建, 源代碼的編譯和燒寫, 應用程序和驅動程序的編程等等,就是說這幾個文件是貫穿我們整個嵌入式學習的始終的。把這幾個文件搞明白了,后面的學習也就有了目標,所以說搞明白這幾個文件的含義非常重要。
接下來需要我們做的是搭建編譯環境,在 WIN7 或者 WIN10 系統上安裝虛擬機,然后在虛擬機上再安裝 ubuntu。這里需要說明的是,大家在初學的時候要盡量按照教程里的方法一步步的來,這樣學習的效率比較高,所以在可能的情況下一定要按照手冊的要求來做,尤其是初學者;當然大家熟練以后可以去做下創新,做不同的嘗試。
安裝編譯環境是個很費事的過程,雖然說沒有太多的技術含量,但是在這個過程中也要客服很多困難,開源系統就是這樣,時常會遇到一些這樣那樣的問題,很多時候是不可預測的,或許大家會覺得安裝系統是浪費時間很困惑,其實這個過程也是很重要的,中間要學習很多的知識,只要大家不怕折騰,這些過程當中的困難都是可以克服的,迅為公司為了讓大家少走彎路,已經把安裝步驟做了很大程度的簡化。
開發環境搭建起來以后,這個時候可以學習一下對源碼進行編譯,同時也可以學習一下燒寫,一步步按照教程去做就可以了。再次強調一下,所有這些工作都是圍繞我們前面所講的那三個文件進行的,也就是 Uboot, Kernel 和文件系統。
系統的編譯和燒寫都是依賴于這個開發環境的,也就是必須在虛擬機上安裝好 ubuntu,
并且把源代碼從光盤中拷貝到 ubuntu 的環境下面,只要按照教程的提示往下做就可以了。
看完 Linux 入門視頻,我想大家對 Linux 的體系有了基本的了解,這個時候其實已經算是入門了,萬事開頭難,只要邁進了 Linux 的大門,后面便是一馬平川,任你馳騁。

本文地址:http://m.qingdxww.cn/thread-771533-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品免费视频 | 国产精品欧美视频另类专区 | 一区二区三区 日韩 | 久久久久久久91精品免费观看 | 8天堂资源在线官网 | 91成人在线免费视频 | 日本精品一区二区三区在线视频 | 高清欧美一区二区免费影视 | 久久婷婷久久一区二区三区 | 久久精品国产400部免费看 | 大伊香蕉精品视频在线观看 | 四虎影院wwww| 国产在线观看一区精品 | 欧美一进一出抽搐大尺度视频 | 特级片毛片 | 久久综合丁香激情久久 | 国产精品99久久免费观看 | 欧美国产亚洲精品高清不卡 | 免费一级a毛片在线播 | 成人在线免费播放 | 久久亚洲这里只有精品18 | 国产精品香蕉在线一区二区 | 国产高清视频免费在线观看 | 色男人的天堂久久综合 | 一级黄色片在线看 | 国产一区二区三区免费观看 | 四虎影视8848a四虎在线播放 | 七次郎最新首页在线视频 | 亚洲手机在线观看 | 91香蕉国产亚洲一区二区三区 | 国产欧美日韩高清专区手机版 | 天堂网在线资源www最新版 | 成人精品视频 | 色视频在线观看视频 | 欧美在线看欧美高清视频免费 | xx视频在线永久免费观看 | 国产二区三区 | 亚洲麻豆一区 | 日韩 国产 欧美 精品 在线 | 日韩精选 | 91国语精品3p在线观看 |