嵌入式新手入門最佳視頻教程 有什么嵌入式視頻教程適合自學的
嵌入式新手入門最佳視頻教程
一、光盤01
1.軟件視頻包-嵌入式linux軟件開發(fā)入門培訓視頻.iso
共有46個視頻,介紹嵌入式linux入門需要掌握的基礎知識,包括linux的基礎知識,shell基礎,vi編輯器,包括嵌入式linux的C語言編程,非常詳細,非常精辟,我當初剛出學校做嵌入式的時候,就是看這個視頻的。
2.軟件視頻包-嵌入式系統(tǒng)30學時.iso
共有16個視頻,講述嵌入式系統(tǒng)概述,還有基本概念,嵌入式微處理器及ARM體系結構,已經嵌入式系統(tǒng)的基本硬件知識,嵌入式實時操作系統(tǒng)的介紹,介紹us, os-II,介紹嵌入式wince,linux等操作系統(tǒng)。
3.軟件視頻包-嵌入式系統(tǒng)設計培訓教程.iso
共有25個視頻,講述嵌入式系統(tǒng)硬件和軟件的知識,嵌入式系統(tǒng)的基本知識,講述嵌入式軟件和硬件的協(xié)同設計,最后還講述了U-BOOT程序設計,MP3播放器的設計。
4.軟件視頻包-計算機系統(tǒng)結構和匯編培訓.iso
共有51個視頻,將計算機系統(tǒng)結構和匯編語言程序設計,對于以后進行底層的開發(fā)很有幫助。
二、光盤02
5.軟件視頻包-底層內核和驅動培訓視頻.iso
共有28個視頻,講述linux內核介紹,內核的源代碼結構,如何編譯和配置內核,如何開發(fā)內核模塊,內核的啟動流程分析,內核的內存管理,進程內存空間管理,linux2.6內存管理和分配,內核的鏈表操作,包括一些內核的實驗。
驅動部分講述字符設備驅動程序和字符驅動例子解析,驅動調試技術,并發(fā)控制技術,Ioctl的實現,驅動如何訪問硬件,中斷處理,LED驅動程序設計,等待隊列,阻塞,Poll方法實現,時間度量,內核定時器,網絡體系架構,網卡驅動設計,觸摸屏驅動分析等等。
三、光盤03
6.軟件視頻包-linux系統(tǒng)編程培訓教程.iso
共有22個視頻,講述基于linux系統(tǒng)的編程,里面介紹很多l(xiāng)inux實例代碼的分析,非常不錯。
7.軟件視頻包-嵌入式系統(tǒng)及應用開發(fā)培訓視頻.iso
共有40個視頻,講述嵌入式系統(tǒng)結構、外設驅動和應用開發(fā)調試技術,嵌入式系統(tǒng)開發(fā)模式,嵌入式硬件開發(fā),實時/嵌入式系統(tǒng)開發(fā)方法,還講述了嵌入式系統(tǒng)硬件結構,嵌入式處理器,ARM介紹,片內周邊電路,外圍電路,外設等等。
四、光盤04
8.軟件視頻包-嵌入式培訓視頻1.iso
這是RetHat的企業(yè)安裝盤,還有samba安裝方法介紹,適合新手學習,還有包括linux命令,腳本,Makefile和GCC的材料。
五、光盤05
9.軟件視頻包-linux內核編程初級班培訓教程.rar
共有30個視頻,都是基于代碼分析的,講述linux內核的基礎知識,匯編及保護模式,linux內核體系結構,linux引導程序分析,linux內核代碼分析,linux塊設備驅動程序分析。
10.軟件視頻包-嵌入式培訓視頻2.iso
共 有20個視頻,講述linux文件編程,庫函數方式訪問文件,系統(tǒng)調用方式訪問文件,時間編程,進程控制理論,進程創(chuàng)建,進程等待,進程通訊概述,管道通 訊,信號通訊,共享內存通訊,消息隊列,信號量,線程創(chuàng)建,線程等待與清除, ARM概述, mini2440, ARM寄存器, ARM尋址方式, ARM指令1, ARM指令2.
六、光盤06
11.軟件視頻包-嵌入式培訓視頻3.iso
共有 20個視頻,講述內核簡介,Linux內核源代碼,Linux內核配置與編譯,內核模塊-1,內核模塊-2,Linux內存管理,Linux進程與內核地 址空間,Linux內核鏈表,內核定時器,內核進程,進程調度,系統(tǒng)調用,Proc文件系統(tǒng),異常分析,交叉工具鏈,嵌入式系統(tǒng)構 建,bootloader介紹,Uboot簡介,UBoot命令,Uboot移植。
七、光盤07
12.軟件視頻包-嵌入式培訓視頻4.iso
共 有25個視頻,講述Linux驅動程序介紹,字符設備驅動,簡單字符設備驅動實例分析,并發(fā)控制,Ioctl設備控制,內核等待隊列,阻塞型字符設備驅 動, poll設備方法,自動創(chuàng)建設備文件, mmap設備方法,硬件訪問, LED驅動程序,總線,設備,驅動, platform驅動,中斷處理程序,按鍵驅動,網卡驅動程序設計, CS8900A網卡驅動程序分析,輸入子系統(tǒng),觸摸屏驅動程序, PCI總線, PCI驅動程序設計,串口驅動程序,
八、光盤08
13.軟件視頻包-中嵌培訓視頻1
共有21個視頻,如圖1
九、光盤09
14.軟件視頻包-中嵌視頻2
共有22個視頻,如圖2,
十、光盤10
15.軟件視頻包-中嵌視頻3
共有26個視頻,包括課件
十一、光盤11
1.軟件視頻包-linux內核編程高級班培訓教程.rar
共有29個視頻,詳細介紹2.6內核的代碼,非常不錯,如果想學習內核,值得推薦!
2.硬件視頻包-CPLD系統(tǒng)設計和VHDL語言培訓教程
共有10個視頻,介紹CPLD系統(tǒng)設計和VHDL的程序設計,包括視頻和課件還有相關的資料。
3.硬件視頻包-電路分析培訓教程
共有30個視頻,詳細的介紹了電路分析,電路原理。
4.軟件視頻包-ARM S3C44B0 嵌入式微處理器原理及應用
共 有48個視頻,主要內容包括:嵌入式系統(tǒng)基礎知識、嵌入式交叉編譯環(huán)境與嵌入式開發(fā)環(huán)境的搭建、基于Linux的嵌入式軟件開發(fā)流程、MiniGUI應用 程序設計、嵌入式數據庫應用、Qt圖形界面應用程序開發(fā)。《嵌入式系統(tǒng)開發(fā)基礎——基于ARM微處理器和Linux操作系統(tǒng)》涉及嵌入式系統(tǒng)從底層驅動到 頂層應用的各個部分,配合實驗操作循序漸進地幫助讀者完成各個章節(jié)內容的學習,引領初學者順利進入嵌入式世界。
十二、光盤12
5.硬件視頻包-單品機經典培訓教程01-11
共有11個視頻,講述單片機的基本所有的內容,老師現場寫代碼,非常棒,可以從一個完全不懂單品機的人到熟悉單品機,到單片機編程,為以后ARM編程打好基礎!
十三、光盤13
6.實踐開發(fā)包-ARM 2410開發(fā)板資料.zip
包括用戶手冊,網上資料,芯片手冊,目標代碼和支持包,USB 驅動程序,原理圖,里面還有實驗的指導,很好!
7.實踐開發(fā)包-ARM FS44B0開發(fā)板資料.zip
包括用戶手冊,ADS120評估板,BOIS和測試程序的源代碼,uCLinux代碼和編譯工具,芯片手冊,目標代碼和支持包,USB 驅動程序,原理圖,里面還有實驗的指導,很好!
8.硬件視頻包-計算機電路基礎培訓教程.iso
共有14個視頻,講述計算機的電路基礎,適合初學者入門。
9.硬件視頻包-PCB設計培訓教程 Altium Designer
共有14個視頻,講述Altium Designed,電子設計基礎知識,原理圖初步設計,進階,提高,深入,pcb庫的設計,集成庫的作用和制作,pcb設計初步,PCB設計提高,PCB深入。
10.硬件視頻包-單品機經典培訓教程12-13
接光盤12
十四、光盤14
11.實踐開發(fā)包-ARM 6410開發(fā)板資料.rar
這是我們購買了一塊7000元的開發(fā)板配套的完整資料,包括開發(fā)套件源代碼壓縮包,套件使用手冊、CPU及其它各種芯片的datasheet,開發(fā)板電路圖,仿真器的驅動文件及說明文檔等等。
12.實踐開發(fā)包-MIPS CPU開發(fā)板資料.rar
這是我們購買了一塊3000元的開發(fā)板配套的完整資料,現在市場上 MIPS的開發(fā)板非常少,當然資料更少了。包括整套的文檔,軟件和硬件所有的資料,包括工具。
13.實踐開發(fā)包-USB實踐開發(fā)包.iso
關于USB的實踐開發(fā)包,里面有介紹關于U盤和MP3的工具,軟件的程序,硬件的原理圖,制作的工具,和相關的資料手冊。
14.實踐開發(fā)包-嵌入式linux網絡的遠程控制開發(fā)包.iso
關于嵌入式linux網絡遠程控制的實踐開發(fā)包,里面有詳細的一步步圖文操作的電子書,軟件的程序,硬件的原理圖,制作的工具,和相關的工具。
15.實踐開發(fā)包-電子相冊開發(fā)包.iso
關于電子相冊的實踐開發(fā)包,里面有詳細的配套說明和實驗指導書,軟件的程序,硬件的原理圖,制作的工具,和相關的工具。
16.行業(yè)視頻包-MTK手機開發(fā)培訓.iso
介紹MTK的資料,有10個視頻教程,還包括新手如何學習MTK手機開發(fā)的資料,MTK開發(fā)平臺大集合,入門導讀,全套資料,MMI的資料等等。
17.行業(yè)視頻包-VOIP視頻教程
共有12個視頻,介紹VOIP網絡電話開發(fā),非常不錯,這對以后找這方面的工作非常有幫助,是高薪的行業(yè)。
十五、光盤15
18.開發(fā)工具包-Wince開發(fā)平臺platform builder5.0
這是platform builder 5.0的安裝包,可以基于它開發(fā) wince.
十六、光盤16
19.電子書籍包.iso
這是我們多年來積累的電子書籍,是你學習嵌入式的不可多得的材料,太多經典的教材,太多經典的好文章,一定會讓你流連忘返!共有近900本關于嵌入式的電子書籍,覆蓋了嵌入式方方面面的內容!
20.開發(fā)工具包-安裝好的fedora9
已經安裝好的Fedora(一種基于linux的操作系統(tǒng)和平臺,,從硬盤直接可以拷貝到硬盤linux,方便linux初學者免去安裝linux的麻煩。
原文鏈接:網頁鏈接
我是1999年上的大學,物理專業(yè)。在大一時,我們班里普遍彌漫著對未來的不安,不知道學習了物理后出去能做什么。你當下的經歷、當下的學習,在未來的一天肯定會影響到你。畢業(yè)后我們也各自找到了自己的職業(yè):出國深造轉行做金融、留校任教做科研、設計芯片、寫程序、創(chuàng)辦公司等等,這一切都離不開在校時學到的基礎技能(數學、IT、電子電路)、受過煅煉的自學能力。
所以,各位正在迷茫的在校生,各位正在嘗試轉行的程序員,未來一定有你的位置,是好是壞取決于你當下的努力與積累。
我不能預言幾年后什么行業(yè)會熱門,也不能保證你照著本文學習可以發(fā)財。我只是一個有十幾年經驗的程序員,給對編程有興趣的你,提供一些建議。
1.程序員的三大方向
程序員的方向,一般可以分為3類:專業(yè)領域、業(yè)務領域、操作系統(tǒng)領域。你了解它們后,按興趣選擇吧。
對于專業(yè)領域,我提供不了建議。
業(yè)務,也就是應用程序,它跟操作系統(tǒng)并不是截然分開的:
①開發(fā)實體產品時,應用程序寫得好的人,有時候需要操作系統(tǒng)的知識,比如調度優(yōu)先級的設置、知道某些函數可能會令進程休眠。
②寫應用程序的人進階為系統(tǒng)工程師時,他需要從上到下都了解,這時候就需要有操作系統(tǒng)領域的知識了,否則,你怎么設計整個系統(tǒng)的方案呢?
③做應用程序的人,需要了解行業(yè)的需求,理解業(yè)務的邏輯。所以,當領導的人,多是做應用的。一旦鉆入了某個行業(yè),很難換行業(yè)。
④而操作系統(tǒng)領域,做好了這是通殺各行業(yè):他只負責底層系統(tǒng),在上面開發(fā)什么業(yè)務跟他沒關系。這行很多是技術宅,行業(yè)專家。
⑤操作系統(tǒng)和業(yè)務之間并沒有一個界線。有操作系統(tǒng)經驗,再去做應用,你會對系統(tǒng)知根知底,碰到問題時都有解決思路。有了業(yè)務經驗,你再了解一下操作系統(tǒng),很快就可以組成一個團隊自立門戶,至少做個CTO沒問題。
1.1 專業(yè)領域
它又可以分為下面2類。
1.1.1 學術研究
比如語音、圖像處理、人工智能,這類工作需要你有比較強的理論知識,我傾向于認為這類人是“科學家”,他們鉆研多年,很多時候是在做學術研究。
在嵌入式領域,需要把他們的成果用某種算法表達出來,針對某種芯片進行優(yōu)化,這部分工作也許有專人來做。
1.1.2 工程實現
也有這樣一類人,他們懂得這些專業(yè)領域的概念,但是沒有深入鉆研。可以使用各類開源資料實現某個目標,做出產品。比如圖像處理,他懂得用opencv里幾百個復雜函數來實現頭像識別。有時候還可以根據具體芯片來優(yōu)化這些函數。
“專業(yè)領域”不是我的菜,如果你要做這一塊,我想最好的入門方法是在學校學習研究生、博士課程。
1.2 業(yè)務領域
換句話說,就是應用程序,這又可以分為下面2類。
1.2.1 界面顯示
做產品當然需要好的界面,但是,不是說它不重要,是沒什么發(fā)展后勁。
現在的熱門詞是Android APP和IOS APP開發(fā)。你不要被Android、IOS兩個詞騙了,它們跟以前的VC、VB是同一路貨色,只是、僅僅是一套GUI控件的實現。
希望沒有冒犯到你,我有理由。
一個程序需要有GUI界面,但是程序的內在邏輯才是核心。Android、IOS的開發(fā)工具給我們簡化了GUI的開發(fā),并提供了這些控件的交互機制,封裝并提供了一些服務(比如網絡傳輸)。但是程序內部的業(yè)務邏輯、對視頻圖像聲音的處理等等,這才是核心。另外別忘了服務器那邊的后臺程序:怎樣更安全地保存數據、保護客戶的隱私,怎樣處理成千上萬上百萬的并發(fā)訪問,等等,這也是核心。
但是,從Android、IOS APP入門入行,這很快!如果你是大四,急于找到一份工作,那么花上1、2個月去學習Android或IOS,應該容易找到工作,畢竟APP的需求永遠是最大的,現在這兩門技術還算熱門。在2011、2012年左右,Android程序員的起薪挺高,然后開始下滑。Android APP的入門基本只要1個月,所以懂的人也越來越多。2013、2014年,IOS開發(fā)的工資明顯比Android高了,于是各類IOS培訓也火曝起來。中華大地向來不缺速成人才,估計再過一陣子IOS工程師也是白菜價了。
會Android、IOS只是基本要求,不信去51job搜搜Android或IOS,職位要求里肯定其他要求。
1.2.2 業(yè)務邏輯
舉個簡單例子,做一個打卡軟件,你需要考慮這些東西:
①正常流程是上班下班時都要打卡
②有人忘記了怎么辦?作為異常記錄在案,推送給管理員
③請假時怎么處理?
④加班怎么處理?
對于更復雜的例子,視頻會議系統(tǒng)里,各個模塊怎么對接,各類協(xié)議怎么兼容,你不深入這個行業(yè),你根本搞不清楚。
應用開發(fā)的職位永遠是最多的,入門門檻也低。基本上只要你會C語言,面試時表現比較得體,一般公司都會給你機會。因為:
①你進公司后,還需要重新培訓你:熟悉它們的業(yè)務邏輯。
②你要做的,基本也就是一個個模塊,框架都有人給你定好了,你去填代碼就可以了。
說點讓你高興的事:軟件公司里,做領導的基本都是寫應用程序的(當然還有做市場的)。寫應用程序的人,對外可以研究市場接待客戶,對內可以管理程序員完成開發(fā),不讓他做領導讓誰做?
如果你的志向是寫應用程序,那么我建議你先練好基本功:數據結構、算法是必備,然后憑興趣選擇數據庫、網絡編程等等進行深入鉆研。
最后,選擇你看好的、感興趣的行業(yè)深耕個10年吧。做應用開發(fā)的人選擇了某個行業(yè),后面是很難換行業(yè)的,選行很重要!
1.3 操作系統(tǒng)領域
UCOS太簡單,VxWorks太貴太專業(yè),Windows不玩嵌入式了,IOS不開源,所以對于操作系統(tǒng)領域我們也只能玩Linux了。
在嵌入式領域Linux一家獨大!
Android呢?Android跟QT一樣,都是一套GUI系統(tǒng)。只是Google的實力太強了,現在Android無處不在,所以很多時候Linux+Android成了標配。注意,在這里我們關心的是Android的整個系統(tǒng)、里面的機制,而不是學習幾個API然后開發(fā)界面程序。操作系統(tǒng)領域所包含的內容,簡單地說,就是制作出一臺裝好系統(tǒng)的專用“電腦”,可以分為:
①為產品規(guī)劃硬件:
按需求、性能、成本選擇主芯片,搭配周邊外設,交由硬件開發(fā)人員設計。
②給單板制作、安裝操作系統(tǒng)、編寫驅動
③定制維護、升級等系統(tǒng)方案
④還可能要配置、安裝Android等GUI系統(tǒng):
⑤為應用開發(fā)人員配置開發(fā)環(huán)境
⑥從系統(tǒng)角度解決疑難問題
這個領域,通常被稱為“底層系統(tǒng)”或是“驅動開發(fā)”。
先解決2個常見誤區(qū):
①這份工作是寫驅動程序嗎?
看看上面羅列的6點,應該說,它包含驅動開發(fā),但遠遠不只有驅動開發(fā)。
②我們還需要寫驅動嗎?不是有原廠嗎?或者只需要改改就可以?
經常有人說,芯片原廠都做好驅動了,拿過來改改就可以了。如果,你的硬件跟原廠的公板完全一樣,原廠源碼毫無BUG,不想優(yōu)化性能、削減成本,不想做一些有特色的產品,那這話是正確的。
但是在這個不創(chuàng)新就是找死的年代,可能嗎?!原因有二:
①即使只是修改代碼,能修改的前提是能理解;能理解的最好煅煉方法是從零寫出若干驅動程序。
②很多時候,需要你深度定制系統(tǒng)。
以前做聯發(fā)科手機只需要改改界面就可以出貨了,現在山寨廠一批批倒下。大家都使用原廠的方案而不加修改時,最后只能拼成本。
舉個例子,深圳有2家做交通攝像頭、監(jiān)控攝像頭的廠家,他們曾經找我做過4個項目:
①改進廠家給的SD卡驅動性能,使用DMA。
②換了Flash型號后,系統(tǒng)經常出問題,需要修改驅動BUG。
③觸摸屏點擊不準,找原因,后來發(fā)現是旁路電容導致的。
④裁減成本,把4片DDR換為2片DDR,需要改bootloader對DDR的初始化。
這些項目都很急,搞不定就無法出貨,這時候找原廠?除非你是中興華為等大客戶,否則誰理你?
我在中興公司上班時,寫驅動的時間其實是很少的,大部分時間是調試:系統(tǒng)調優(yōu),上幫APP工程師、下幫硬件工程師查找問題。我們從廠家、網上得到的源碼,很多都是標準的,當然可以直接用。但是在你的產品上也許優(yōu)化一下更好。比如我們可以把攝像頭驅動和DMA驅動揉合起來,讓攝像頭的數據直接通過DMA發(fā)到DSP去。我們可以在軟件和硬件之間起橋梁作用,對于實體產品,有可能是軟件出問題也可能是硬件出問題,一般是底層系統(tǒng)工程師比較容易找出問題。
當硬件、軟件應用出現問題,他們解決不了時,從底層軟件角度給他們出主意,給他們提供工具。再比如方案選擇:芯片性能能否達標、可用的BSP是否完善等等,這只能由負責整個方案的人來考慮,他必須懂底層。
在操作系統(tǒng)領域,對知識的要求很多:
①懂硬件知識才能看懂電路圖
②英文好會看芯片手冊
③有編寫、移植驅動程序的能力
④對操作系統(tǒng)本身有一定的理解,才能解決各類疑難問題
⑤理解Android內部機制
⑥懂匯編、C語言、C++、JAVA
它絕對是一個大坑,沒有興趣、沒有毅力的人慎選。
①這行的入門,絕對需要半年以上,即使全天學習也要半年。
②它的職位,絕對比APP的職位少
③并且你沒有1、2年經驗,招你到公司后一開始你做的還是APP。
優(yōu)點就是:
①學好后,行業(yè)通殺,想換行就換行;想自己做產品就自己做產品。
②相比做應用程序的人,不會被經常變動的需求搞得天天加班。
③門檻高,當然薪水相對就高。
操作系統(tǒng)領域,我認為適合于這些人:
①硬件工程師想轉軟件工程師,從底層軟件入門會比較好
②單片機工程師,想升級一下。會Linux底層的人肯定會單片機,會單片機的人不一定會Linux。
③時間充足的學生:如果你正讀大二大三,那么花上半年學習嵌入式Linux底層多有益處。
④想掌握整個系統(tǒng)的人,比如你正在公司里寫APP,但是想升為系統(tǒng)工程師,那么底層不得不學。
⑤想自己創(chuàng)業(yè)做實體產品的工程師,你有錢的話什么技術都不用學,但是如果沒錢又想做產品,那么Linux底層不得不學。
⑥做Linux APP的人,沒錯,他們也要學習。
這部分人不需要深入,了解個大概就可以:bootloader是用來啟動內核,Linux的文件系統(tǒng)(第1個程序是什么、做什么、各目錄干嘛用)、APP跟驅動程序的調用關系、工具鏈,有這些概念就可以了
本文中,就把操作系統(tǒng)默認為Linux,講講怎么學習嵌入式Linux+Android系統(tǒng)。
1.4 嵌入式Linux+Android系統(tǒng)包含哪些內容
嵌入式Linux系統(tǒng)包含哪些東西?不要急,舉一個例子你就知道了。
①電腦一開機,那些界面是誰顯示的?
是BIOS,它做什么?一些自檢,然后從硬盤上讀入windows,并啟動它。
類似的,這個BIOS對應于嵌入式Linux里的bootloader。這個bootloader要去Flash上讀入Linux內核,并啟動它。
②啟動windows的目的是什么?
當然運行應用程序以便上網、聊天什么的了。
這些上網程序、聊天程序在哪?
在C盤、D盤上。
所以,windows要先識別出C盤、D盤。在Linux下我們稱之為根文件系統(tǒng)。
③windows能識別出C盤、D盤,那么肯定有讀寫硬盤的能力。
這個能力我們稱之為驅動程序。當然不僅僅是操作硬盤,還有網卡、USB等等其他硬件。嵌入式Linux能從Flash上讀出并執(zhí)行應用程序,肯定也得有Flash的驅動程序啊,當然也不僅僅是Flash。
簡單地說,嵌入式LINUX系統(tǒng)里含有bootloader、內核、驅動程序、根文件系統(tǒng)、應用程序這5大塊。而應用程序,我們又可以分為:C/C++、Android。
所以,嵌入式Linux+Android系統(tǒng)包含以下6部分內容:
①bootloader
②Linux內核
③驅動程序
④使用C/C++編寫的應用程序
⑤Android系統(tǒng)本身
⑥Android應用程序
Android跟Linux的聯系實在太大了,它的應用是如此廣泛,學習了Linux之后沒有理由停下來不學習Android。在大多數智能設備中,運行的是Linux操作系統(tǒng);它上面要么安裝有Android,要么可以跟Android手機互聯。現在,Linux+Android已成標配。
2. 怎么學習嵌入式Linux操作系統(tǒng)
本文假設您是零基礎,以實用為主,用最快的時間讓你入門;后面也會附上想深入學習時可以參考的資料。
在實際工作中,我們從事的是“操作系統(tǒng)”周邊的開發(fā),并不會太深入學習、修改操作系統(tǒng)本身。
①操作系統(tǒng)具有進程管理、存儲管理、文件管理和設備管理等功能,這些核心功能非常穩(wěn)定可靠,基本上不需要我們修改代碼。我們只需要針對自己的硬件完善驅動程序
②學習驅動時必定會涉及其他知識,比如存儲管理、進程調度。當你深入理解了驅動程序后,也會加深對操作系統(tǒng)其他部分的理解
③Linux內核中大部分代碼都是設備驅動程序,可以認為Linux內核由各類驅動構成
但是,要成為該領域的高手,一定要深入理解Linux操作系統(tǒng)本身,要去研讀它的源代碼。
在忙完工作,閑暇之余,可以看看這些書:
①趙炯的《linux內核完全注釋》,這本比較薄,推薦這本。他后來又出了《Linux 內核完全剖析》,太厚了,搞不好看了后面就忘記前面了。
②毛德操、胡希明的《LINUX核心源代碼情景分析》,此書分上下冊,巨厚無比。當作字典看即可:想深入理解某方面的知識,就去看某章節(jié)。
③其他好書還有很多,我沒怎么看,沒有更多建議
基于快速入門,上手工作的目的,您先不用看上面的書,先按本文學習。
2.1 入門路線圖
假設您是零基礎,我們規(guī)劃了如下入門路線圖。前面的知識,是后面知識的基礎,建議按順序學習。每一部分,不一定需要學得很深入透徹,下面分章節(jié)描述。
2.2 學習驅動程序之前的基礎知識
2.2.1 C語言
只要是理工科專業(yè)的,似乎都會教C語言。我見過很多C語言考試90、100分的,一上機就傻了,我懷疑他們都沒在電腦上寫過程序。
理論再好,沒有實踐不能干活的話,公司招你去干嘛?
反過來,實踐出真知,學習C語言,必須練練練、寫寫寫!
當你掌握基本語法后,就可以在電腦上練習一些C語言習題了;
當你寫過幾個C程序后,就可以進入下一階段的裸機開發(fā)了。
①不需要太深入
作為快速入門,只要你會編寫“Hello, world!”,會寫冒泡排序,會一些基礎的語法操作,暫時就夠了。
指針操作是重點,多練習;
不需要去學習過多的數據結構知識,只需要掌握鏈表操作,其他不用學習,比如:隊列、二叉樹等等都不用學;不需要去學習任何的函數使用,比如文件操作、多線程編程、網絡編程等等;這些知識,在編寫Linux應用程序時會用,但是在操作系統(tǒng)特別是驅動學習時,用不著!
永往直前吧,以后碰到不懂的C語言問題,我們再回過頭來學習。
在后續(xù)的“裸機開發(fā)”中,會讓你繼續(xù)練習C語言,那會更實戰(zhàn)化。
C語言是在寫代碼中精進的。
②可以在Visual Studio下學習,也可以在Linux下學習,后者需要掌握一些編譯命令,我們暫時沒有提供C語言的教程,找一本C語言書,網上找找免費的C語言視頻(主要看怎么搭建環(huán)境),就可以自學了。
2.2.2 PC Linux基本操作:
對于PC Linux,我們推薦使用Ubuntu,在它上面安裝軟件非常簡便。
我們的工作模式通常是這樣:在Windows下閱讀、編寫代碼,然后把代碼上傳到PC Linux去編譯。實際上,Ubuntu的桌面系統(tǒng)已經很好用了,我們拿到各種智能機可以很快上手,相信Ubuntu的桌面系統(tǒng)也可以讓你很快上手。為了提高工作效率,我們通常使用命令行來操作Ubuntu。
不用擔心,你前期只需要掌握這幾條命令就可以了,它們是如此簡單,我干脆列出它們:
①cd : Change Directory(改變目錄)
cd 目錄名 // 進入某個目錄cd .. // cd “兩個點”:返回上一級目錄cd - // cd “短橫”:返回上一次所在目錄
②pwd : Print Work Directory(打印當前目錄 顯示出當前工作目錄的絕對路徑)
③mkdir : Make Directory(創(chuàng)建目錄)
mkdir abc // 創(chuàng)建文件夾abc
mkdir -p a/b/c // 創(chuàng)建文件夾a,再a下創(chuàng)建文件夾b,再在b下創(chuàng)建文件夾c
④rm : Remove(刪除目錄或文件)
rm file // 刪除名為file的文件
rm -rf dir // 刪除名為dir的目錄
⑤ls : List(列出目錄內容)
⑥mount : 掛載
mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mnt
mount -t yaffs /dev/mtdblock3 /mnt
⑦chown : Change owner(改變文件的屬主,即擁有者)
chown book:book /work -R //對/work目錄及其下所有內容,屬主改為book用戶,組改為book
⑧chmod : Change mode(改變權限),下面的例子很簡單粗暴
chmod 777 /work -R // 對/work目錄及其下所有內容,權限改為可讀、可寫、可執(zhí)行
⑨vi : Linux下最常用的編輯命令,使用稍微復雜,請自己搜索用法。
要練習這些命令,你可以進入Ubuntu桌面系統(tǒng)后,打開終端輸入那些命令;或是用SecureCRT、putty等工具遠程登錄Ubuntu后練習。
2.2.3 硬件知識
我們學習硬件知識的目的在于能看懂原理圖,看懂通信協(xié)議,看懂芯片手冊;不求能設計原理圖,更不求能設計電路板。
對于正統(tǒng)的方法,你應該這樣學習:
①學習《微機原理》,理解一個計算機的組成及各個部件的交互原理。
②學習《數字電路》,理解各種門電路的原理及使用,還可以掌握一些邏輯運算(與、或等)。
③《模擬電路》?好吧,這個不用學,至少我在工作中基本用不到它,現在全忘光了。
就我個人經驗來說,這些課程是有用的,但是:
①原理有用,實戰(zhàn)性不強。
比如《微機原理》是基于x86系統(tǒng),跟ARM板子有很大差別,當然原理相通。
我是在接觸嵌入式編程后,才理解了這些課程。
②每本書都那么厚,內容都很多,學習時間過長,自學有難度。
針對這些校園教材的不足,并結合實際開發(fā)過程中要用到的知識點,我們推出了《學前班_怎么看原理圖》的系列視頻:
學前班第1課第1節(jié)___怎么看原理圖之GPIO和門電路.wmv
學前班第1課第2.1節(jié)_怎么看原理圖之協(xié)議類接口之UART.wmv
學前班第1課第2.2節(jié)_怎么看原理圖之協(xié)議類接口之I2C.wmv
學前班第1課第2.3節(jié)_怎么看原理圖之協(xié)議類接口之SPI.wmv
學前班第1課第2.4節(jié)_怎么看原理圖之協(xié)議類接口之NAND Flash.wmv
學前班第1課第2.5節(jié)_怎么看原理圖之協(xié)議類接口之LCD.wmv
學前班第1課第3節(jié)___怎么看原理圖之內存類接口.wmv
學前班第1課第4.1節(jié)_怎么看原理圖之分析S3C2410開發(fā)板.wmv
學前班第1課第4.2節(jié)_怎么看原理圖之分析S3C2440開發(fā)板.wmv
學前班第1課第4.3節(jié)_怎么看原理圖之分析S3C6410開發(fā)板.wmv
即使你只具備初中物理課的電路知識,我也希望能通過這些視頻,讓你可以看懂原理圖,理解一些常見的通信協(xié)議;如果你想掌握更多的硬件知識,這些視頻也可以起個索引作用,讓你知道缺乏什么知識。
這些視頻所講到的硬件知識,將在《裸板開發(fā)》系列視頻中用到,到時可以相互對照著看,加深理解。
2.2.4 要不要專門學習Windows下的單片機開發(fā)
很多學校都開通了單片機的課程,很多人都是從51單片機、AVR單片機,現在比較新的STM32單片機開始接觸嵌入式領域,并且使用Windows下的開發(fā)軟件,比如keil、MDK等。
問題來了,要不要專門學習Windows下的單片機開發(fā)?
①如果這是你們專業(yè)的必修課,那就學吧
②如果你的專業(yè)跟單片機密切相關,比如機械控制等,那就學吧
③如果你只是想從單片機入門,然后學習更廣闊的嵌入式Linux,那么放棄在Windows下學習單片機吧!
理由如下:
①Windows下的單片機學習,深度不夠
Windows下有很好的圖形界面單片機開發(fā)軟件,比如keil、MDK等。
它們封裝了很多技術細節(jié),比如:
你只會從main函數開始編寫代碼,卻不知道上電后第1條代碼是怎么執(zhí)行的;
你可以編寫中斷處理函數,但是卻不知道它是怎么被調用的;
你不知道程序怎么從Flash上被讀入內存;
也不知道內存是怎么劃分使用的,不知道棧在哪、堆在哪;
當你想裁剪程序降低對Flash、內存的使用時,你無從下手;
當你新建一個文件時,它被自動加入到工程里,但是其中的機理你完全不懂;
等等等。
②基于ARM+Linux裸機學習,可以學得更深,并且更貼合后續(xù)的Linux學習。實際上它就是Linux下的單片機學習,只是一切更加原始:所有的代碼需要你自己來編寫;哪些文件加入工程,需要你自己來管理。
在工作中,我們當然傾向于使用Windows下更便利的工具,但是在學習階段,我們更想學習到程序的本質。
一切從零編寫代碼、管理代碼,可以讓我們學習到更多知識:
你需要了解芯片的上電啟動過程,知道第1條代碼如何運行;
你需要掌握怎么把程序從Flash上讀入內存;
需要理解內存怎么規(guī)劃使用,比如棧在哪,堆在哪;
需要理解代碼重定位;
需要知道中斷發(fā)生后,軟硬件怎么保護現場、跳到中斷入口、調用中斷程序、恢復現場;
你會知道,main函數不是我們編寫的第1個函數;
你會知道,芯片從上電開始,程序是怎么被搬運執(zhí)行的;
你會知道,函數調用過程中,參數是如何傳遞的;
你會知道,中斷發(fā)生時,每一個寄存器的值都要小心對待;
等等等。
你掌握了ARM+Linux的裸機開發(fā),再回去看Windows下的單片機開發(fā),會驚呼:怎么那么簡單!并且你會完全明白這些工具沒有向你展示的技術細節(jié)。
驅動程序=Linux驅動程序軟件框架+ARM開發(fā)板硬件操作,我們可以從簡單的裸機開發(fā)入手,先掌握硬件操作,并且還可以:
①掌握如何在PC Linux下編譯程序、把程序燒錄到板子上并運行它
②為學習bootloader打基礎:掌握了各種硬件操作后,后面一組合就是一個bootloader
2.2.5 為什么選擇ARM9 S3C2440開發(fā)板,而不是其他性能更好的?
有一個錯誤的概念:S3C2440過時了、ARM9過時了。
這是不對的,如果你是軟件工程師,無論是ARM9、ARM11、A8還是A9,對我們來說是沒有差別的。
一款芯片,上面有CPU,還有眾多的片上設備(比如UART、USB、LCD控制器)。我們寫程序時,并不涉及CPU,只是去操作那些片上設備。
所以:差別在于片上設備,不在于CPU核;差別在于寄存器操作不一樣。
因為我們寫驅動并不涉及CPU的核心,只是操作CPU之外的設備,只是讀寫這些設備的寄存器。
之所以推薦S3C2440,是因為它的Linux學習資料最豐富,并有配套的第1、2期視頻。
2.2.6 怎么學習ARM+Linux的裸機開發(fā)
學習裸機開發(fā)的目的有兩個:
①掌握裸機程序的結構,為后續(xù)的u-boot作準備
②練習硬件知識,即:怎么看原理圖、芯片手冊,怎么寫代碼來操作硬件
后面的u-boot可以認為是裸機程序的集合,我們在裸機開發(fā)中逐個掌握各個部件,再集合起來就可以得到一個u-boot了。
后續(xù)的驅動開發(fā),也涉及硬件操作,你可以在裸機開發(fā)中學習硬件知識。
注意:如果你并不關心裸機的程序結構,不關心bootloader的實現,這部分是可以先略過的。在后面的驅動視頻中,我們也會重新講解所涉及的硬件知識。
推薦兩本書:杜春蕾的《ARM體系結構與編程》,韋東山的《嵌入式Linux應用開發(fā)完全手冊》。后者也許是國內第1本涉及在PC Linux環(huán)境下開發(fā)的ARM裸機程序的書,如果我說錯了,請原諒我書讀得少。
對于裸機開發(fā),我們提供有2部分視頻:
①環(huán)境搭建
第0課第1節(jié)_剛接觸開發(fā)板之接口接線.wmv
第0課第2節(jié)_剛接觸開發(fā)板之燒寫裸板程序.wmv
第0課第3節(jié)_剛接觸開發(fā)板之重燒整個系統(tǒng).wmv
第0課第4節(jié)_剛接觸開發(fā)板之使用vmwae和預先做好的ubuntu.wmv
第0課第5節(jié)_剛接觸開發(fā)板之u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第6節(jié)_剛接觸開發(fā)板之內核u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第7節(jié)_剛接觸開發(fā)板之制作根文件系統(tǒng)及初試驅動.wmv
第0課第8節(jié)_在TQ2440,MINI2440上搭建視頻所用系統(tǒng).wmv
第0課第9節(jié)_win7下不能使用dnw燒寫的替代方法.wmv
.................
原文鏈接:網頁鏈接
IT學習聯盟有
做短視頻新手怎么入門
無需任何插件和物理外掛!輕松助你解決不適宜! 火神社視頻號新機制與不刷贊擼養(yǎng)生茶玩法,輕松日賺1000+【視頻教程】 媒老板·8堂0基礎直播帶貨課 9.12J總不適宜公開和全平臺實時轉播技術 秋葉視頻號訓練營 9.9日398火神社視頻號新機制與不刷贊擼養(yǎng)生茶 抓住2020年最大風口,小白...
求手繪板新手入門繪畫基礎教程
[新手專用]基礎教程百度網盤免費資源在線學習 鏈接: https:\/\/pan.baidu.com\/s\/1LQTcEl6Cf5Sn595L1bf7IQ 提取碼: h2r2 [新手專用]基礎教程 93.變亮模式.mp4 92.變化.mp4 91.變暗模式.mp4 90.背景橡皮擦工具.mp4 9.動作{待修復}.mp4 89.HDR色調.mp4 88.D材質吸管工具.mp4 87.字符面板....
求一個學唱歌的入門視頻教程
聲樂 鏈接: https:\/\/pan.baidu.com\/s\/1jR49TZFwzlUYTMJ0TciKzA 提取碼: 4y38 若資源有問題歡迎追問~
pr基礎教程新手入門
2、然后在“常規(guī)”這里,可以選擇項目存儲位置,以及給項目命名 3、然后“暫存盤”這里,可以將路徑設置到與項目存儲位置一致,也可以不管這里 4、設置好之后,點擊“確定”5、有些人可能會出現這個窗口,可以直接點擊“確定”6、首先點擊頂部菜單欄文件->新建->序列 7、接著設置視頻分辨率,我一般設置...
自媒體零基礎入門教程
所以作為自媒體新手,最好先選擇一個自媒體平臺去運營,有些成效后再去發(fā)展其他的平臺。除了這些,其中最重要的`還有沉下心去學習。自媒體零基礎入門教程2 快速入門方法一:領域垂直 剛開始做自媒體的時候,腦袋里幾乎是一片空白,這個時候先不要著急發(fā)布作品。首先要考慮我會什么,在哪個領域非常擅長;...
笛子教學視頻免費網站誰推薦一些笛子視頻教程
8. 哪里有笛子的教程下載.不要BT的鏈接: https:\/\/pan..com\/s\/19rs4ahcMnhwKTzjw8MTpRg 提取碼: gqbw笛子教學,網絡網盤標清視頻。 9. 高分求笛子新手入門的教學視頻。。。鏈接: https:\/\/pan..com\/s\/19rs4ahcMnhwKTzjw8MTpRg 提取碼: gqbw笛子...
三階魔方教程新手入門
我認為三階魔方是魔方新手入門的首選 首先了解構造和顏色塊后 學習基本轉動方法 然后嘗試解決魔方 可先學基礎還原法 觀看視頻或閱讀教程 保持耐心和細心 反復練習直到熟練掌握
【干貨】海外版抖音Tik Tok 新手入門實戰(zhàn)教程
如萌寵類視頻,輕而易舉就能吸引數十萬的觀眾。高轉化率:以海外用戶為主,他們對平臺上的商品和服務有更高的接受度,即使沒有直接需求,也能通過內容激發(fā)購買欲望。總之,現在正是進入TikTok江湖的最佳時機,點擊卡片,立即加入我的實戰(zhàn)訓練,領取專業(yè)課程!二、新手如何高效入門 作為非中國用戶,操作...
有什么嵌入式視頻教程適合自學的
本人想自學嵌入式,請問有什么嵌入式視頻教程適合自學的嗎?... 本人想自學嵌入式,請問有什么嵌入式...但是,從Android、IOS APP入門入行,這很快!如果你是大四,急于找到一份工作,那么花上1、2個月去學習
剪輯短視頻教程新手入門
短視頻剪輯教程如下:1、學習短視頻剪輯,首先要明確自己的學習目的,再根據學習目的確定需要學習的剪輯軟件和剪輯理論,最后確定學習方法。2、單純作為日常分享的,使用剪映、快影等大眾化剪輯軟件就能達到要求,以職業(yè)發(fā)展為目的的,則需要學習專業(yè)剪輯軟件,比如Premiere、After Effects等。3、做短視頻的話...
相關評說:
德保縣鉆床: ______ 難分為2種:一種是超出你的知識體系,你理解不了,比如相對論、量子通信之類的,我們的理論知識體系是牛頓經典物理學定律,解釋不了量子學,需要你重新構建自己的理論體系.另一種是難是復雜、繁雜,由大量簡單的知識點堆建而成....
德保縣鉆床: ______ 買套開發(fā)板,他們會送DVD(視頻)教程的,非常全,51系列的大約150,ARM系列的600左右. 零星的看可以去土豆、酷六等視頻站上搜.
德保縣鉆床: ______ 首先要知道嵌入式需要學習什么.嵌入式學習的內容有C語言,匯編,數據結構,linux高級編程,ARM系統(tǒng),嵌入式內核,嵌入式驅動.所以要入門首先要學會C語言 匯編 數據結構.把這幾個學好差不多...
德保縣鉆床: ______ 我和你一樣,也是0基礎學嵌入式呢.首先得先把C基礎打好.我是看視頻學C呢.我現在看的是夏老師的,感覺還行,最吸引我的的地方就是講的一聽就能聽懂,而且不繁瑣啰嗦,簡明清晰,都是重點.之前看過郝斌金文什么的,康輝的也看了一點,感覺都講的太高深了,而且聽不出哪些是重點,有用沒用的都講,像我這樣初學者都看的失去學的信心了.
德保縣鉆床: ______ 嵌入式Linux操作系統(tǒng)學習規(guī)劃 ARM+LINUX路線,主攻嵌入式Linux操作系統(tǒng)及其上應用軟件開發(fā)目標: (1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9) (2) 必須掌握一個嵌入式操作系統(tǒng) (初步定為uclinux或linux,版本待定) (...
德保縣鉆床: ______ 其實如果你的基礎不錯,單片機和C語言的基礎還可以,那么學習arm還是比較容易上手的,但是他和單片機還是有很大區(qū)別的.對于你的情況,我建議你盡快買一個ARM9開發(fā)板,用的比較多的是s3c2440開發(fā)板,這個板子網上的資料有很多,而且價格在500多,性價比還是比較高的.然后你首先要對arm有個整體性的了解,現在資料比較好的是華清遠見推出的arm7視頻培訓教程,無論是初學者還是開發(fā)人員,都能學到很多有用的東西.我現在也在學習中.對他有個了解后,你再確定自己的最終方向,可以做驅動開發(fā),可以做應用開發(fā).總之做的東西很多.我的qq1206744689
德保縣鉆床: ______ C語言是嵌入式最重要的基礎知識,主要把C語言學好,但是掌握了它并不代表你的基礎已經很好了,嵌入式學習相關的入門基礎主要是這些: 一是程序設計的基礎,例如:基本的編程語言基礎,至少對數據類型、程序的結構及流程控制等最基...
德保縣鉆床: ______ 我猜你是裝了桌面版的吧 你如果是裝帶桌面的CentOS就肯定會很卡,因為很占內存,尤其你的內存才2G...裝個CentOS minima版的,不帶桌面和一些軟件,分少一點內存給虛擬機,應該會好點...另,2G內存對于運行虛擬機來說只能算勉強,尤其有些實驗是要開多臺虛擬機的,你最好還是多加條內存...
德保縣鉆床: ______ 作為嵌入式培訓的專業(yè)教師,給你一個建議吧:請你考慮一定要帶串口和并口,串口最好不止一個.今后會用到的.網卡有條件也最好有兩個.至于臺式電腦,還是筆記本電腦,就看你的用處了.建議剛開始學用臺式電腦,因為串口和并口容易實現.今后可以考慮筆記本電腦,可以買個帶串口和并口的二手經典筆記本.或者全新的筆記本電腦,配串口和并口的pcie卡的.
德保縣鉆床: ______ 匯編語言 數據結構