嵌入式軟件開(kāi)發(fā)視頻教程(嵌入式軟件開(kāi)發(fā)視頻教程下載)

軟件開(kāi)發(fā) 2250
今天給各位分享嵌入式軟件開(kāi)發(fā)視頻教程的知識,其中也會(huì)對(duì)嵌入式軟件開(kāi)發(fā)視頻教程下載進(jìn)行解釋,如果能(néng)碰巧解決你現在面(miàn)臨的問題,别忘了關注本站,現在開(kāi)始吧!本文目錄一覽: 1、嵌入式軟件開(kāi)發(fā)視頻教程

今天給各位分享嵌入式軟件開(kāi)發(fā)視頻教程的知識,其中也會(huì)對(duì)嵌入式軟件開(kāi)發(fā)視頻教程下載進(jìn)行解釋,如果能(néng)碰巧解決你現在面(miàn)臨的問題,别忘了關注本站,現在開(kāi)始吧!

本文目錄一覽:

嵌入式軟件開(kāi)發(fā)視頻教程

要學(xué)會(huì)真正到嵌入式就要一套完整到嵌入式視頻教程。完整的嵌入式教程可以看看IT學(xué)習聯盟的零基礎嵌入式就業班。零基礎嵌入式就業班包括嵌入式基礎 進(jìn)階 高級 項目。是一套完整的嵌入式視頻教程。這(zhè)套教程從零基礎開(kāi)始教起(qǐ),零基礎到就業水平。就算沒(méi)基礎也可以學(xué)習的。

……………………………………………………

看你問的問題,應該是對(duì)嵌入式很感興趣,其實你可以自學(xué)嵌入式。關于如何學(xué)習嵌入式,我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學(xué)嵌入式,并找到嵌入式的工作,裡(lǐ)面(miàn)介紹了他的學(xué)習方法和學(xué)習過(guò)程,希望對(duì)你有幫助。

先做個自我介紹,我07年考上一所很爛專科民辦的學(xué)校,學(xué)的是生物專業,具體的學(xué)校名稱我就不說出來獻醜了。09年我就辍學(xué)了,我在那樣(yàng)的學(xué)校,一年學(xué)費要1萬多,但是根本沒(méi)有人學(xué)習,我實在看不到希望,我就退學(xué)了。

退學(xué)後(hòu)我也迷茫,大專都(dōu)沒(méi)有畢業,我真的不知道(dào)我能(néng)幹什麼(me),我在糾結著(zhe)我能(néng)做什麼(me)。所以辍學(xué)後(hòu)我一段時間,我想去找工作,因爲我比較沉默寡言,不是很會(huì)說話,我不适合去應聘做業務。我想應聘做技術的,可是處處碰壁。

一次偶然的機會(huì),我才聽到嵌入式這(zhè)個行業。那天我去新華書店,在計算機分類那邊想找本書學(xué)習。後(hòu)來有個女孩子走過(guò)來,問我是不是讀計算機的,有沒(méi)有興趣學(xué)習嵌入式,然後(hòu)給我介紹了一下嵌入式現在的火熱情況,告訴我學(xué)嵌入式多麼(me)的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡(lǐ)癢癢的,确實我很想去學(xué)會(huì)一門自己的技術,靠自己的雙手吃飯。

回家後(hòu),我就上網查了下嵌入式,确實是當今比較熱門的行業,也是比較好(hǎo)找工作的,工資也是相對(duì)比較高。我就下決心想學(xué)嵌入式了。于是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道(dào)培訓是否真的能(néng)像他們宣傳的那樣(yàng)好(hǎo),所以我就想了解一段時間再做打算。

後(hòu)來,我在百度知道(dào)看到一篇讓我很鼓舞的文章,是一個嵌入式高手介紹沒(méi)有基礎的朋友怎麼(me)自學(xué)入門學(xué)嵌入式,文章寫的很好(hǎo),包含了如何學(xué)習,該怎麼(me)學(xué)習。他提到一個方法就是看視頻,因爲看書實在太枯燥和費解的,很多我們也看不懂。這(zhè)點我真的很認同,我自己看書往往看不了幾頁。

我在想,爲什麼(me)别人都(dōu)能(néng)自學(xué)成(chéng)才,我也可以的!我要相信自己,所以我就想自學(xué),如果實在學(xué)不會(huì)我再去培訓。

主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都(dōu)不系統,我是想找一個能(néng)夠告訴我該怎麼(me)學(xué)的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好(hǎo)能(néng)有老師教,不懂可以請教的。

後(hòu)來我又找到一份很好(hǎo)的視頻,是在IT學(xué)習聯盟網站推出的一份視頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的可以複制 sina.lt/qKh 粘貼浏覽器地址欄按回車鍵即打開(kāi))。裡(lǐ)面(miàn)的教程還(hái)不錯,很完整,可以讓我從基礎的開(kāi)始學(xué)起(qǐ)。視頻比較便宜。

下面(miàn)介紹下我的學(xué)習流程,希望對(duì)和我一樣(yàng)完全沒(méi)有基礎的朋友有所幫助。

收到他們寄過(guò)來的光盤後(hòu),我就開(kāi)始學(xué)習了,由于我沒(méi)有什麼(me)基礎,我就從最簡單的C語言視頻教程學(xué)起(qǐ),話說簡單,其實我還(hái)是很多不懂的,我隻好(hǎo)請教他們,他們還(hái)是很熱心的,都(dōu)幫我解決了。C語言我差不多學(xué)了一個禮拜,接下來我就學(xué)了linux的基本命令,我在他們提供linux虛拟機上都(dōu)有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都(dōu)在不停的寫一些簡單的代碼,這(zhè)樣(yàng)一月後(hòu)我基本掌握了C和linux的基本操作。

接下來我就去學(xué)習了人家的視頻的培訓教程,是整套的,和去參加培訓沒(méi)有多大的區别,這(zhè)一看就是兩(liǎng)個月,學(xué)習了ARM的基本原理,學(xué)習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對(duì)linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼(me)做的,但是驅動我隻是有一點點的了解,這(zhè)個相對(duì)難一點,我想以後(hòu)再慢慢啃。

這(zhè)兩(liǎng)個月,除了吃飯睡覺,我幾乎都(dōu)在學(xué)習。因爲我知道(dào)幾乎沒(méi)有基礎,比别人差勁,我隻能(néng)堅持努力著(zhe),我不能(néng)放棄,我必要要靠自己來養活自己,必須學(xué)好(hǎo)這(zhè)門技術,然後(hòu)我就把不懂的問題總結記下來,這(zhè)樣(yàng)慢慢積累了一段時間,我發(fā)現自己真的有點入門了。

最後(hòu)的一個月,我就去看關于實踐部分的内容,了解嵌入式項目具體的開(kāi)發(fā)流程,需要什麼(me)樣(yàng)的知識,我就開(kāi)始準備這(zhè)方面(miàn)的知識,也就是學(xué)習這(zhè)方面(miàn)的視頻,同時他們建議我去找了找一些嵌入式面(miàn)試的題目,爲自己以後(hòu)找工作做準備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這(zhè)樣(yàng)差不多準備了20天左右

我覺得自己差不多入門了,會(huì)做一些簡單的東西了。我就想去找工作看看,于是我就到51job瘋狂的投簡曆,因爲我學(xué)曆的問題,專科沒(méi)有畢業,說真的,大公司沒(méi)有人會(huì)要我,所以我投的都(dōu)是民營的小公司,我希望自己的努力有所回報。沒(méi)有想過(guò)幾天過(guò)後(hòu),就有面(miàn)試了,但是第一次面(miàn)試我失敗了,雖然我自認爲筆試很好(hǎo),因爲我之前做了準備,但是他們的要求比較嚴格,需要有一年的項目經(jīng)驗,所以我沒(méi)有被(bèi)選中。

後(hòu)來陸續面(miàn)試了幾家公司,終于功夫不負有心人。我終于面(miàn)試上的,是在闵行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開(kāi)發(fā),做安防産品的應用的。我想我也比較幸運,經(jīng)理很看重我的努力,就決定錄用我,開(kāi)的工資是3500一個月,雖然我知道(dào)在上海3500隻能(néng)過(guò)溫飽的生活,但是我想我足夠了。我至少不用每天都(dōu)要靠父母養,我自己也能(néng)養活自己的。我想隻要我繼續努力,我工資一定會(huì)翻倍的。

把本文寫出來,希望能(néng)讓和我一樣(yàng)的沒(méi)有基礎的朋友有信心,其實我們沒(méi)有必要自卑,我們不比别人笨,隻要我們肯努力,我們一樣(yàng)會(huì)成(chéng)功。

………………………………

嵌入式新手入門最佳視頻教程

原文鏈接:網頁鏈接

我是1999年上的大學(xué),物理專業。在大一時,我們班裡(lǐ)普遍彌漫著(zhe)對(duì)未來的不安,不知道(dào)學(xué)習了物理後(hòu)出去能(néng)做什麼(me)。你當下的經(jīng)曆、當下的學(xué)習,在未來的一天肯定會(huì)影響到你。畢業後(hòu)我們也各自找到了自己的職業:出國(guó)深造轉行做金融、留校任教做科研、設計芯片、寫程序、創辦公司等等,這(zhè)一切都(dōu)離不開(kāi)在校時學(xué)到的基礎技能(néng)(數學(xué)、IT、電子電路)、受過(guò)煅煉的自學(xué)能(néng)力。

所以,各位正在迷茫的在校生,各位正在嘗試轉行的程序員,未來一定有你的位置,是好(hǎo)是壞取決于你當下的努力與積累。

我不能(néng)預言幾年後(hòu)什麼(me)行業會(huì)熱門,也不能(néng)保證你照著(zhe)本文學(xué)習可以發(fā)财。我隻是一個有十幾年經(jīng)驗的程序員,給對(duì)編程有興趣的你,提供一些建議。

1.程序員的三大方向(xiàng)

程序員的方向(xiàng),一般可以分爲3類:專業領域、業務領域、操作系統領域。你了解它們後(hòu),按興趣選擇吧。

對(duì)于專業領域,我提供不了建議。

業務,也就是應用程序,它跟操作系統并不是截然分開(kāi)的:

①開(kāi)發(fā)實體産品時,應用程序寫得好(hǎo)的人,有時候需要操作系統的知識,比如調度優先級的設置、知道(dào)某些函數可能(néng)會(huì)令進(jìn)程休眠。

②寫應用程序的人進(jìn)階爲系統工程師時,他需要從上到下都(dōu)了解,這(zhè)時候就需要有操作系統領域的知識了,否則,你怎麼(me)設計整個系統的方案呢?

③做應用程序的人,需要了解行業的需求,理解業務的邏輯。所以,當領導的人,多是做應用的。一旦鑽入了某個行業,很難換行業。

④而操作系統領域,做好(hǎo)了這(zhè)是通殺各行業:他隻負責底層系統,在上面(miàn)開(kāi)發(fā)什麼(me)業務跟他沒(méi)關系。這(zhè)行很多是技術宅,行業專家。

⑤操作系統和業務之間并沒(méi)有一個界線。有操作系統經(jīng)驗,再去做應用,你會(huì)對(duì)系統知根知底,碰到問題時都(dōu)有解決思路。有了業務經(jīng)驗,你再了解一下操作系統,很快就可以組成(chéng)一個團隊自立門戶,至少做個CTO沒(méi)問題。

1.1 專業領域

它又可以分爲下面(miàn)2類。

1.1.1 學(xué)術研究

比如語音、圖像處理、人工智能(néng),這(zhè)類工作需要你有比較強的理論知識,我傾向(xiàng)于認爲這(zhè)類人是“科學(xué)家”,他們鑽研多年,很多時候是在做學(xué)術研究。

在嵌入式領域,需要把他們的成(chéng)果用某種(zhǒng)算法表達出來,針對(duì)某種(zhǒng)芯片進(jìn)行優化,這(zhè)部分工作也許有專人來做。

1.1.2 工程實現

也有這(zhè)樣(yàng)一類人,他們懂得這(zhè)些專業領域的概念,但是沒(méi)有深入鑽研。可以使用各類開(kāi)源資料實現某個目标,做出産品。比如圖像處理,他懂得用opencv裡(lǐ)幾百個複雜函數來實現頭像識别。有時候還(hái)可以根據具體芯片來優化這(zhè)些函數。

“專業領域”不是我的菜,如果你要做這(zhè)一塊,我想最好(hǎo)的入門方法是在學(xué)校學(xué)習研究生、博士課程。

1.2 業務領域

換句話說,就是應用程序,這(zhè)又可以分爲下面(miàn)2類。

1.2.1 界面(miàn)顯示

做産品當然需要好(hǎo)的界面(miàn),但是,不是說它不重要,是沒(méi)什麼(me)發(fā)展後(hòu)勁。

現在的熱門詞是Android APP和IOS APP開(kāi)發(fā)。你不要被(bèi)Android、IOS兩(liǎng)個詞騙了,它們跟以前的VC、VB是同一路貨色,隻是、僅僅是一套GUI控件的實現。

希望沒(méi)有冒犯到你,我有理由。

一個程序需要有GUI界面(miàn),但是程序的内在邏輯才是核心。Android、IOS的開(kāi)發(fā)工具給我們簡化了GUI的開(kāi)發(fā),并提供了這(zhè)些控件的交互機制,封裝并提供了一些服務(比如網絡傳輸)。但是程序内部的業務邏輯、對(duì)視頻圖像聲音的處理等等,這(zhè)才是核心。另外别忘了服務器那邊的後(hòu)台程序:怎樣(yàng)更安全地保存數據、保護客戶的隐私,怎樣(yàng)處理成(chéng)千上萬上百萬的并發(fā)訪問,等等,這(zhè)也是核心。

但是,從Android、IOS APP入門入行,這(zhè)很快!如果你是大四,急于找到一份工作,那麼(me)花上1、2個月去學(xué)習Android或IOS,應該容易找到工作,畢竟APP的需求永遠是最大的,現在這(zhè)兩(liǎng)門技術還(hái)算熱門。在2011、2012年左右,Android程序員的起(qǐ)薪挺高,然後(hòu)開(kāi)始下滑。Android APP的入門基本隻要1個月,所以懂的人也越來越多。2013、2014年,IOS開(kāi)發(fā)的工資明顯比Android高了,于是各類IOS培訓也火曝起(qǐ)來。中華大地向(xiàng)來不缺速成(chéng)人才,估計再過(guò)一陣子IOS工程師也是白菜價了。

會(huì)Android、IOS隻是基本要求,不信去51job搜搜Android或IOS,職位要求裡(lǐ)肯定其他要求。

1.2.2 業務邏輯

舉個簡單例子,做一個打卡軟件,你需要考慮這(zhè)些東西:

①正常流程是上班下班時都(dōu)要打卡

②有人忘記了怎麼(me)辦?作爲異常記錄在案,推送給管理員

③請假時怎麼(me)處理?

④加班怎麼(me)處理?

對(duì)于更複雜的例子,視頻會(huì)議系統裡(lǐ),各個模塊怎麼(me)對(duì)接,各類協議怎麼(me)兼容,你不深入這(zhè)個行業,你根本搞不清楚。

應用開(kāi)發(fā)的職位永遠是最多的,入門門檻也低。基本上隻要你會(huì)C語言,面(miàn)試時表現比較得體,一般公司都(dōu)會(huì)給你機會(huì)。因爲:

①你進(jìn)公司後(hòu),還(hái)需要重新培訓你:熟悉它們的業務邏輯。

②你要做的,基本也就是一個個模塊,框架都(dōu)有人給你定好(hǎo)了,你去填代碼就可以了。

說點讓你高興的事(shì):軟件公司裡(lǐ),做領導的基本都(dōu)是寫應用程序的(當然還(hái)有做市場的)。寫應用程序的人,對(duì)外可以研究市場接待客戶,對(duì)内可以管理程序員完成(chéng)開(kāi)發(fā),不讓他做領導讓誰做?

如果你的志向(xiàng)是寫應用程序,那麼(me)我建議你先練好(hǎo)基本功:數據結構、算法是必備,然後(hòu)憑興趣選擇數據庫、網絡編程等等進(jìn)行深入鑽研。

最後(hòu),選擇你看好(hǎo)的、感興趣的行業深耕個10年吧。做應用開(kāi)發(fā)的人選擇了某個行業,後(hòu)面(miàn)是很難換行業的,選行很重要!

1.3 操作系統領域

UCOS太簡單,VxWorks太貴太專業,Windows不玩嵌入式了,IOS不開(kāi)源,所以對(duì)于操作系統領域我們也隻能(néng)玩Linux了。

在嵌入式領域Linux一家獨大!

Android呢?Android跟QT一樣(yàng),都(dōu)是一套GUI系統。隻是Google的實力太強了,現在Android無處不在,所以很多時候Linux+Android成(chéng)了标配。注意,在這(zhè)裡(lǐ)我們關心的是Android的整個系統、裡(lǐ)面(miàn)的機制,而不是學(xué)習幾個API然後(hòu)開(kāi)發(fā)界面(miàn)程序。操作系統領域所包含的内容,簡單地說,就是制作出一台裝好(hǎo)系統的專用“電腦”,可以分爲:

①爲産品規劃硬件:

按需求、性能(néng)、成(chéng)本選擇主芯片,搭配周邊外設,交由硬件開(kāi)發(fā)人員設計。

②給單闆制作、安裝操作系統、編寫驅動

③定制維護、升級等系統方案

④還(hái)可能(néng)要配置、安裝Android等GUI系統:

⑤爲應用開(kāi)發(fā)人員配置開(kāi)發(fā)環境

⑥從系統角度解決疑難問題

這(zhè)個領域,通常被(bèi)稱爲“底層系統”或是“驅動開(kāi)發(fā)”。

先解決2個常見誤區:

①這(zhè)份工作是寫驅動程序嗎?

看看上面(miàn)羅列的6點,應該說,它包含驅動開(kāi)發(fā),但遠遠不隻有驅動開(kāi)發(fā)。

②我們還(hái)需要寫驅動嗎?不是有原廠嗎?或者隻需要改改就可以?

經(jīng)常有人說,芯片原廠都(dōu)做好(hǎo)驅動了,拿過(guò)來改改就可以了。如果,你的硬件跟原廠的公闆完全一樣(yàng),原廠源碼毫無BUG,不想優化性能(néng)、削減成(chéng)本,不想做一些有特色的産品,那這(zhè)話是正确的。

但是在這(zhè)個不創新就是找死的年代,可能(néng)嗎?!原因有二:

①即使隻是修改代碼,能(néng)修改的前提是能(néng)理解;能(néng)理解的最好(hǎo)煅煉方法是從零寫出若幹驅動程序。

②很多時候,需要你深度定制系統。

以前做聯發(fā)科手機隻需要改改界面(miàn)就可以出貨了,現在山寨廠一批批倒下。大家都(dōu)使用原廠的方案而不加修改時,最後(hòu)隻能(néng)拼成(chéng)本。

舉個例子,深圳有2家做交通攝像頭、監控攝像頭的廠家,他們曾經(jīng)找我做過(guò)4個項目:

①改進(jìn)廠家給的SD卡驅動性能(néng),使用DMA。

②換了Flash型号後(hòu),系統經(jīng)常出問題,需要修改驅動BUG。

③觸摸屏點擊不準,找原因,後(hòu)來發(fā)現是旁路電容導緻的。

④裁減成(chéng)本,把4片DDR換爲2片DDR,需要改bootloader對(duì)DDR的初始化。

這(zhè)些項目都(dōu)很急,搞不定就無法出貨,這(zhè)時候找原廠?除非你是中興華爲等大客戶,否則誰理你?

我在中興公司上班時,寫驅動的時間其實是很少的,大部分時間是調試:系統調優,上幫APP工程師、下幫硬件工程師查找問題。我們從廠家、網上得到的源碼,很多都(dōu)是标準的,當然可以直接用。但是在你的産品上也許優化一下更好(hǎo)。比如我們可以把攝像頭驅動和DMA驅動揉合起(qǐ)來,讓攝像頭的數據直接通過(guò)DMA發(fā)到DSP去。我們可以在軟件和硬件之間起(qǐ)橋梁作用,對(duì)于實體産品,有可能(néng)是軟件出問題也可能(néng)是硬件出問題,一般是底層系統工程師比較容易找出問題。

當硬件、軟件應用出現問題,他們解決不了時,從底層軟件角度給他們出主意,給他們提供工具。再比如方案選擇:芯片性能(néng)能(néng)否達标、可用的BSP是否完善等等,這(zhè)隻能(néng)由負責整個方案的人來考慮,他必須懂底層。

在操作系統領域,對(duì)知識的要求很多:

①懂硬件知識才能(néng)看懂電路圖

②英文好(hǎo)會(huì)看芯片手冊

③有編寫、移植驅動程序的能(néng)力

④對(duì)操作系統本身有一定的理解,才能(néng)解決各類疑難問題

⑤理解Android内部機制

⑥懂彙編、C語言、C++、JAVA

它絕對(duì)是一個大坑,沒(méi)有興趣、沒(méi)有毅力的人慎選。

①這(zhè)行的入門,絕對(duì)需要半年以上,即使全天學(xué)習也要半年。

②它的職位,絕對(duì)比APP的職位少

③并且你沒(méi)有1、2年經(jīng)驗,招你到公司後(hòu)一開(kāi)始你做的還(hái)是APP。

優點就是:

①學(xué)好(hǎo)後(hòu),行業通殺,想換行就換行;想自己做産品就自己做産品。

②相比做應用程序的人,不會(huì)被(bèi)經(jīng)常變動的需求搞得天天加班。

③門檻高,當然薪水相對(duì)就高。

操作系統領域,我認爲适合于這(zhè)些人:

①硬件工程師想轉軟件工程師,從底層軟件入門會(huì)比較好(hǎo)

②單片機工程師,想升級一下。會(huì)Linux底層的人肯定會(huì)單片機,會(huì)單片機的人不一定會(huì)Linux。

③時間充足的學(xué)生:如果你正讀大二大三,那麼(me)花上半年學(xué)習嵌入式Linux底層多有益處。

④想掌握整個系統的人,比如你正在公司裡(lǐ)寫APP,但是想升爲系統工程師,那麼(me)底層不得不學(xué)。

⑤想自己創業做實體産品的工程師,你有錢的話什麼(me)技術都(dōu)不用學(xué),但是如果沒(méi)錢又想做産品,那麼(me)Linux底層不得不學(xué)。

⑥做Linux APP的人,沒(méi)錯,他們也要學(xué)習。

這(zhè)部分人不需要深入,了解個大概就可以:bootloader是用來啓動内核,Linux的文件系統(第1個程序是什麼(me)、做什麼(me)、各目錄幹嘛用)、APP跟驅動程序的調用關系、工具鏈,有這(zhè)些概念就可以了

本文中,就把操作系統默認爲Linux,講講怎麼(me)學(xué)習嵌入式Linux+Android系統。

1.4 嵌入式Linux+Android系統包含哪些内容

嵌入式Linux系統包含哪些東西?不要急,舉一個例子你就知道(dào)了。

①電腦一開(kāi)機,那些界面(miàn)是誰顯示的?

是BIOS,它做什麼(me)?一些自檢,然後(hòu)從硬盤上讀入windows,并啓動它。

類似的,這(zhè)個BIOS對(duì)應于嵌入式Linux裡(lǐ)的bootloader。這(zhè)個bootloader要去Flash上讀入Linux内核,并啓動它。

②啓動windows的目的是什麼(me)?

當然運行應用程序以便上網、聊天什麼(me)的了。

這(zhè)些上網程序、聊天程序在哪?

在C盤、D盤上。

所以,windows要先識别出C盤、D盤。在Linux下我們稱之爲根文件系統。

③windows能(néng)識别出C盤、D盤,那麼(me)肯定有讀寫硬盤的能(néng)力。

這(zhè)個能(néng)力我們稱之爲驅動程序。當然不僅僅是操作硬盤,還(hái)有網卡、USB等等其他硬件。嵌入式Linux能(néng)從Flash上讀出并執行應用程序,肯定也得有Flash的驅動程序啊,當然也不僅僅是Flash。

簡單地說,嵌入式LINUX系統裡(lǐ)含有bootloader、内核、驅動程序、根文件系統、應用程序這(zhè)5大塊。而應用程序,我們又可以分爲:C/C++、Android。

所以,嵌入式Linux+Android系統包含以下6部分内容:

①bootloader

②Linux内核

③驅動程序

④使用C/C++編寫的應用程序

⑤Android系統本身

⑥Android應用程序

Android跟Linux的聯系實在太大了,它的應用是如此廣泛,學(xué)習了Linux之後(hòu)沒(méi)有理由停下來不學(xué)習Android。在大多數智能(néng)設備中,運行的是Linux操作系統;它上面(miàn)要麼(me)安裝有Android,要麼(me)可以跟Android手機互聯。現在,Linux+Android已成(chéng)标配。

2. 怎麼(me)學(xué)習嵌入式Linux操作系統

本文假設您是零基礎,以實用爲主,用最快的時間讓你入門;後(hòu)面(miàn)也會(huì)附上想深入學(xué)習時可以參考的資料。

在實際工作中,我們從事(shì)的是“操作系統”周邊的開(kāi)發(fā),并不會(huì)太深入學(xué)習、修改操作系統本身。

①操作系統具有進(jìn)程管理、存儲管理、文件管理和設備管理等功能(néng),這(zhè)些核心功能(néng)非常穩定可靠,基本上不需要我們修改代碼。我們隻需要針對(duì)自己的硬件完善驅動程序

②學(xué)習驅動時必定會(huì)涉及其他知識,比如存儲管理、進(jìn)程調度。當你深入理解了驅動程序後(hòu),也會(huì)加深對(duì)操作系統其他部分的理解

③Linux内核中大部分代碼都(dōu)是設備驅動程序,可以認爲Linux内核由各類驅動構成(chéng)

但是,要成(chéng)爲該領域的高手,一定要深入理解Linux操作系統本身,要去研讀它的源代碼。

在忙完工作,閑暇之餘,可以看看這(zhè)些書:

①趙炯的《linux内核完全注釋》,這(zhè)本比較薄,推薦這(zhè)本。他後(hòu)來又出了《Linux 内核完全剖析》,太厚了,搞不好(hǎo)看了後(hòu)面(miàn)就忘記前面(miàn)了。

②毛德操、胡希明的《LINUX核心源代碼情景分析》,此書分上下冊,巨厚無比。當作字典看即可:想深入理解某方面(miàn)的知識,就去看某章節。

③其他好(hǎo)書還(hái)有很多,我沒(méi)怎麼(me)看,沒(méi)有更多建議

基于快速入門,上手工作的目的,您先不用看上面(miàn)的書,先按本文學(xué)習。

2.1 入門路線圖

假設您是零基礎,我們規劃了如下入門路線圖。前面(miàn)的知識,是後(hòu)面(miàn)知識的基礎,建議按順序學(xué)習。每一部分,不一定需要學(xué)得很深入透徹,下面(miàn)分章節描述。

2.2 學(xué)習驅動程序之前的基礎知識

2.2.1 C語言

隻要是理工科專業的,似乎都(dōu)會(huì)教C語言。我見過(guò)很多C語言考試90、100分的,一上機就傻了,我懷疑他們都(dōu)沒(méi)在電腦上寫過(guò)程序。

理論再好(hǎo),沒(méi)有實踐不能(néng)幹活的話,公司招你去幹嘛?

反過(guò)來,實踐出真知,學(xué)習C語言,必須練練練、寫寫寫!

當你掌握基本語法後(hòu),就可以在電腦上練習一些C語言習題了;

當你寫過(guò)幾個C程序後(hòu),就可以進(jìn)入下一階段的裸機開(kāi)發(fā)了。

①不需要太深入

作爲快速入門,隻要你會(huì)編寫“Hello, world!”,會(huì)寫冒泡排序,會(huì)一些基礎的語法操作,暫時就夠了。

指針操作是重點,多練習;

不需要去學(xué)習過(guò)多的數據結構知識,隻需要掌握鏈表操作,其他不用學(xué)習,比如:隊列、二叉樹等等都(dōu)不用學(xué);不需要去學(xué)習任何的函數使用,比如文件操作、多線程編程、網絡編程等等;這(zhè)些知識,在編寫Linux應用程序時會(huì)用,但是在操作系統特别是驅動學(xué)習時,用不著(zhe)!

永往直前吧,以後(hòu)碰到不懂的C語言問題,我們再回過(guò)頭來學(xué)習。

在後(hòu)續的“裸機開(kāi)發(fā)”中,會(huì)讓你繼續練習C語言,那會(huì)更實戰化。

C語言是在寫代碼中精進(jìn)的。

②可以在Visual Studio下學(xué)習,也可以在Linux下學(xué)習,後(hòu)者需要掌握一些編譯命令,我們暫時沒(méi)有提供C語言的教程,找一本C語言書,網上找找免費的C語言視頻(主要看怎麼(me)搭建環境),就可以自學(xué)了。

2.2.2 PC Linux基本操作:

對(duì)于PC Linux,我們推薦使用Ubuntu,在它上面(miàn)安裝軟件非常簡便。

我們的工作模式通常是這(zhè)樣(yàng):在Windows下閱讀、編寫代碼,然後(hòu)把代碼上傳到PC Linux去編譯。實際上,Ubuntu的桌面(miàn)系統已經(jīng)很好(hǎo)用了,我們拿到各種(zhǒng)智能(néng)機可以很快上手,相信Ubuntu的桌面(miàn)系統也可以讓你很快上手。爲了提高工作效率,我們通常使用命令行來操作Ubuntu。

不用擔心,你前期隻需要掌握這(zhè)幾條命令就可以了,它們是如此簡單,我幹脆列出它們:

①cd : Change Directory(改變目錄)

cd 目錄名          // 進(jìn)入某個目錄cd ..            // cd “兩(liǎng)個點”:返回上一級目錄cd -             // cd “短橫”:返回上一次所在目錄

②pwd : Print Work Directory(打印當前目錄 顯示出當前工作目錄的絕對(duì)路徑)

③mkdir : Make Directory(創建目錄)

mkdir abc         // 創建文件夾abc

mkdir -p a/b/c    // 創建文件夾a,再a下創建文件夾b,再在b下創建文件夾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  //對(duì)/work目錄及其下所有内容,屬主改爲book用戶,組改爲book

⑧chmod : Change mode(改變權限),下面(miàn)的例子很簡單粗暴

chmod 777 /work -R  // 對(duì)/work目錄及其下所有内容,權限改爲可讀、可寫、可執行

⑨vi : Linux下最常用的編輯命令,使用稍微複雜,請自己搜索用法。

要練習這(zhè)些命令,你可以進(jìn)入Ubuntu桌面(miàn)系統後(hòu),打開(kāi)終端輸入那些命令;或是用SecureCRT、putty等工具遠程登錄Ubuntu後(hòu)練習。

2.2.3 硬件知識

我們學(xué)習硬件知識的目的在于能(néng)看懂原理圖,看懂通信協議,看懂芯片手冊;不求能(néng)設計原理圖,更不求能(néng)設計電路闆。

對(duì)于正統的方法,你應該這(zhè)樣(yàng)學(xué)習:

①學(xué)習《微機原理》,理解一個計算機的組成(chéng)及各個部件的交互原理。

②學(xué)習《數字電路》,理解各種(zhǒng)門電路的原理及使用,還(hái)可以掌握一些邏輯運算(與、或等)。

③《模拟電路》?好(hǎo)吧,這(zhè)個不用學(xué),至少我在工作中基本用不到它,現在全忘光了。

就我個人經(jīng)驗來說,這(zhè)些課程是有用的,但是:

①原理有用,實戰性不強。

比如《微機原理》是基于x86系統,跟ARM闆子有很大差别,當然原理相通。

我是在接觸嵌入式編程後(hòu),才理解了這(zhè)些課程。

②每本書都(dōu)那麼(me)厚,内容都(dōu)很多,學(xué)習時間過(guò)長(cháng),自學(xué)有難度。

針對(duì)這(zhè)些校園教材的不足,并結合實際開(kāi)發(fā)過(guò)程中要用到的知識點,我們推出了《學(xué)前班_怎麼(me)看原理圖》的系列視頻:

學(xué)前班第1課第1節___怎麼(me)看原理圖之GPIO和門電路.wmv

學(xué)前班第1課第2.1節_怎麼(me)看原理圖之協議類接口之UART.wmv

學(xué)前班第1課第2.2節_怎麼(me)看原理圖之協議類接口之I2C.wmv

學(xué)前班第1課第2.3節_怎麼(me)看原理圖之協議類接口之SPI.wmv

學(xué)前班第1課第2.4節_怎麼(me)看原理圖之協議類接口之NAND Flash.wmv

學(xué)前班第1課第2.5節_怎麼(me)看原理圖之協議類接口之LCD.wmv

學(xué)前班第1課第3節___怎麼(me)看原理圖之内存類接口.wmv

學(xué)前班第1課第4.1節_怎麼(me)看原理圖之分析S3C2410開(kāi)發(fā)闆.wmv

學(xué)前班第1課第4.2節_怎麼(me)看原理圖之分析S3C2440開(kāi)發(fā)闆.wmv

學(xué)前班第1課第4.3節_怎麼(me)看原理圖之分析S3C6410開(kāi)發(fā)闆.wmv

即使你隻具備初中物理課的電路知識,我也希望能(néng)通過(guò)這(zhè)些視頻,讓你可以看懂原理圖,理解一些常見的通信協議;如果你想掌握更多的硬件知識,這(zhè)些視頻也可以起(qǐ)個索引作用,讓你知道(dào)缺乏什麼(me)知識。

這(zhè)些視頻所講到的硬件知識,將(jiāng)在《裸闆開(kāi)發(fā)》系列視頻中用到,到時可以相互對(duì)照著(zhe)看,加深理解。

2.2.4 要不要專門學(xué)習Windows下的單片機開(kāi)發(fā)

很多學(xué)校都(dōu)開(kāi)通了單片機的課程,很多人都(dōu)是從51單片機、AVR單片機,現在比較新的STM32單片機開(kāi)始接觸嵌入式領域,并且使用Windows下的開(kāi)發(fā)軟件,比如keil、MDK等。

問題來了,要不要專門學(xué)習Windows下的單片機開(kāi)發(fā)?

①如果這(zhè)是你們專業的必修課,那就學(xué)吧

②如果你的專業跟單片機密切相關,比如機械控制等,那就學(xué)吧

③如果你隻是想從單片機入門,然後(hòu)學(xué)習更廣闊的嵌入式Linux,那麼(me)放棄在Windows下學(xué)習單片機吧!

理由如下:

①Windows下的單片機學(xué)習,深度不夠

Windows下有很好(hǎo)的圖形界面(miàn)單片機開(kāi)發(fā)軟件,比如keil、MDK等。

它們封裝了很多技術細節,比如:

你隻會(huì)從main函數開(kāi)始編寫代碼,卻不知道(dào)上電後(hòu)第1條代碼是怎麼(me)執行的;

你可以編寫中斷處理函數,但是卻不知道(dào)它是怎麼(me)被(bèi)調用的;

你不知道(dào)程序怎麼(me)從Flash上被(bèi)讀入内存;

也不知道(dào)内存是怎麼(me)劃分使用的,不知道(dào)棧在哪、堆在哪;

當你想裁剪程序降低對(duì)Flash、内存的使用時,你無從下手;

當你新建一個文件時,它被(bèi)自動加入到工程裡(lǐ),但是其中的機理你完全不懂;

等等等。

②基于ARM+Linux裸機學(xué)習,可以學(xué)得更深,并且更貼合後(hòu)續的Linux學(xué)習。實際上它就是Linux下的單片機學(xué)習,隻是一切更加原始:所有的代碼需要你自己來編寫;哪些文件加入工程,需要你自己來管理。

在工作中,我們當然傾向(xiàng)于使用Windows下更便利的工具,但是在學(xué)習階段,我們更想學(xué)習到程序的本質。

一切從零編寫代碼、管理代碼,可以讓我們學(xué)習到更多知識:

你需要了解芯片的上電啓動過(guò)程,知道(dào)第1條代碼如何運行;

你需要掌握怎麼(me)把程序從Flash上讀入内存;

需要理解内存怎麼(me)規劃使用,比如棧在哪,堆在哪;

需要理解代碼重定位;

需要知道(dào)中斷發(fā)生後(hòu),軟硬件怎麼(me)保護現場、跳到中斷入口、調用中斷程序、恢複現場;

你會(huì)知道(dào),main函數不是我們編寫的第1個函數;

你會(huì)知道(dào),芯片從上電開(kāi)始,程序是怎麼(me)被(bèi)搬運執行的;

你會(huì)知道(dào),函數調用過(guò)程中,參數是如何傳遞的;

你會(huì)知道(dào),中斷發(fā)生時,每一個寄存器的值都(dōu)要小心對(duì)待;

等等等。

你掌握了ARM+Linux的裸機開(kāi)發(fā),再回去看Windows下的單片機開(kāi)發(fā),會(huì)驚呼:怎麼(me)那麼(me)簡單!并且你會(huì)完全明白這(zhè)些工具沒(méi)有向(xiàng)你展示的技術細節。

驅動程序=Linux驅動程序軟件框架+ARM開(kāi)發(fā)闆硬件操作,我們可以從簡單的裸機開(kāi)發(fā)入手,先掌握硬件操作,并且還(hái)可以:

①掌握如何在PC Linux下編譯程序、把程序燒錄到闆子上并運行它

②爲學(xué)習bootloader打基礎:掌握了各種(zhǒng)硬件操作後(hòu),後(hòu)面(miàn)一組合就是一個bootloader

2.2.5 爲什麼(me)選擇ARM9 S3C2440開(kāi)發(fā)闆,而不是其他性能(néng)更好(hǎo)的?

有一個錯誤的概念:S3C2440過(guò)時了、ARM9過(guò)時了。

這(zhè)是不對(duì)的,如果你是軟件工程師,無論是ARM9、ARM11、A8還(hái)是A9,對(duì)我們來說是沒(méi)有差别的。

一款芯片,上面(miàn)有CPU,還(hái)有衆多的片上設備(比如UART、USB、LCD控制器)。我們寫程序時,并不涉及CPU,隻是去操作那些片上設備。

所以:差别在于片上設備,不在于CPU核;差别在于寄存器操作不一樣(yàng)。

因爲我們寫驅動并不涉及CPU的核心,隻是操作CPU之外的設備,隻是讀寫這(zhè)些設備的寄存器。

之所以推薦S3C2440,是因爲它的Linux學(xué)習資料最豐富,并有配套的第1、2期視頻。

2.2.6 怎麼(me)學(xué)習ARM+Linux的裸機開(kāi)發(fā)

學(xué)習裸機開(kāi)發(fā)的目的有兩(liǎng)個:

①掌握裸機程序的結構,爲後(hòu)續的u-boot作準備

②練習硬件知識,即:怎麼(me)看原理圖、芯片手冊,怎麼(me)寫代碼來操作硬件

後(hòu)面(miàn)的u-boot可以認爲是裸機程序的集合,我們在裸機開(kāi)發(fā)中逐個掌握各個部件,再集合起(qǐ)來就可以得到一個u-boot了。

後(hòu)續的驅動開(kāi)發(fā),也涉及硬件操作,你可以在裸機開(kāi)發(fā)中學(xué)習硬件知識。

注意:如果你并不關心裸機的程序結構,不關心bootloader的實現,這(zhè)部分是可以先略過(guò)的。在後(hòu)面(miàn)的驅動視頻中,我們也會(huì)重新講解所涉及的硬件知識。

推薦兩(liǎng)本書:杜春蕾的《ARM體系結構與編程》,韋東山的《嵌入式Linux應用開(kāi)發(fā)完全手冊》。後(hòu)者也許是國(guó)内第1本涉及在PC Linux環境下開(kāi)發(fā)的ARM裸機程序的書,如果我說錯了,請原諒我書讀得少。

對(duì)于裸機開(kāi)發(fā),我們提供有2部分視頻:

①環境搭建

第0課第1節_剛接觸開(kāi)發(fā)闆之接口接線.wmv

第0課第2節_剛接觸開(kāi)發(fā)闆之燒寫裸闆程序.wmv

第0課第3節_剛接觸開(kāi)發(fā)闆之重燒整個系統.wmv

第0課第4節_剛接觸開(kāi)發(fā)闆之使用vmwae和預先做好(hǎo)的ubuntu.wmv

第0課第5節_剛接觸開(kāi)發(fā)闆之u-boot打補丁編譯使用及建sourceinsight工程.wmv

第0課第6節_剛接觸開(kāi)發(fā)闆之内核u-boot打補丁編譯使用及建sourceinsight工程.wmv

第0課第7節_剛接觸開(kāi)發(fā)闆之制作根文件系統及初試驅動.wmv

第0課第8節_在TQ2440,MINI2440上搭建視頻所用系統.wmv

第0課第9節_win7下不能(néng)使用dnw燒寫的替代方法.wmv

.................

原文鏈接:網頁鏈接

嵌入式軟件開(kāi)發(fā)入門

其實說真的,和性别沒(méi)有多大的關系,我的同事(shì)有好(hǎo)多都(dōu)是女的,都(dōu)是芯片設計的高手呢。所以隻要你肯學(xué)就夠了

關于怎麼(me)學(xué)好(hǎo)嵌入式,給你看看我寫的一篇文章《如何學(xué)習嵌入式》,希望對(duì)你有把幫助。

最近很多朋友都(dōu)在問,如何學(xué)習嵌入式,作爲嵌入式的老鳥,我想我可以做一些唠叨,嵌入式的入門門檻稍微高一點,但是再高的城牆也是小磚頭築起(qǐ)來的,所以沒(méi)有必要因爲門檻高就覺得很困難,一步一個腳印,貴在堅持就可以了。

學(xué)習嵌入式,該學(xué)習什麼(me)基本的知識呢?

首先C語言,這(zhè)個是毋庸置疑的,不管是做嵌入式軟件還(hái)是硬件開(kāi)發(fā)的人員,對(duì)C語言的掌握這(zhè)個是必需的,特别是對(duì)于以後(hòu)緻力于嵌入式軟件開(kāi)發(fā)的人,現在絕大部分都(dōu)是用C語言,你說不掌握它可以嗎?至于如何學(xué)習C語言,我想這(zhè)些基礎的知識每個人都(dōu)有自己的方法,關鍵要去學(xué)習,看書也好(hǎo),網上找些視頻看也好(hǎo)。很多人會(huì)問,C語言要學(xué)到怎麼(me)樣(yàng),我覺得這(zhè)沒(méi)有标準的答案。我想至少你在明白了一些基礎的概念後(hòu),就該寫代碼了,動手才是最重要的,當你動手了,遇到問題了,再反過(guò)來學(xué)習,反過(guò)來查查課本,那時的收獲就不是你死看書能(néng)得到的。

其次,應該對(duì)操作系統有所了解,這(zhè)對(duì)你對(duì)硬件和軟件的理解,絕對(duì)有很大的幫助。應該把系統的管理理解一下,比如進(jìn)程、線程,系統如何來分配資源的,系統如何來管理硬件的,當然,不是看書就能(néng)把這(zhè)些理解透,如果不是一時能(néng)理解,沒(méi)關系,多看看,結合以後(hòu)的項目經(jīng)驗,會(huì)有更好(hǎo)的理解的。

還(hái)有應該學(xué)習嵌入式系統,如linux或者wince下的編程,這(zhè)些對(duì)以後(hòu)做應用的編程很有幫助,當然,如果做手機的話,那可以學(xué)習MTK、塞班、Android等操作系統,Android是以後(hòu)發(fā)展的趨勢,現在很熱門,Android也是基于linux系統封裝的,所以建議先學(xué)習下linux。

還(hái)有,應該學(xué)習下單片機或者ARM或者MIPS,很多人說我沒(méi)有單片機的經(jīng)驗,直接學(xué)ARM可以嗎?我覺得那完全沒(méi)有問題的,當然如果你學(xué)習過(guò)單片機,那最好(hǎo)不過(guò)了,以後(hòu)學(xué)習ARM就更簡單了。

最後(hòu)如果你把以上的知識都(dōu)有所了解後(hòu),就該去閱讀閱讀一些優秀的代碼,比如結合arm芯片手冊學(xué)習去學(xué)習下UBOOT的源代碼,了解下最小的系統開(kāi)發(fā),那對(duì)你整個嵌入式開(kāi)發(fā)的非常有幫助的,可以的話,還(hái)可以學(xué)習下linux的源代碼,當然如果你直接閱讀2.6的代碼,我想你會(huì)很痛苦的,可以先看看linux 代碼早期的版本,比如0.12 的代碼等等,麻雀雖小,五髒俱全,如果你全看完了,那我想你就是一名很成(chéng)功的嵌入式工程師。

至于上面(miàn)說的知識如何學(xué)習呢?每個人都(dōu)應該去找自己最好(hǎo)的方法,所謂的最好(hǎo)的方法就是最适合自己的方法。很多人看不進(jìn)書,那就去看看視頻吧。視頻也應該要選擇,不是随便看看,應該要有所選擇,有所挑選。我也是這(zhè)樣(yàng)一路走過(guò)來的,不過(guò)我這(zhè)人比較懶,我看不進(jìn)書,一看書我就想睡覺,所以這(zhè)幾年我都(dōu)是看視頻過(guò)來的,現在也算學(xué)有所成(chéng),但也不敢說是高手吧。

我在網上看到,有人把自己學(xué)習嵌入式的視頻總結出來,嵌入式系列實踐和視頻教程,大家可以看看網址

我仔細看了覺得很不錯,我本來也想整理下,可是奈何我自己的電腦硬盤空間才40G,沒(méi)有辦法,時間也是不夠,心有餘而力不足,我不是在幫他做廣告,雖然要花錢,我覺得算不錯,至少自己不用去整理和花大量的時間去找資源,當然如果網上有的下,你網速和硬盤都(dōu)夠的話,我建議大家自己網上下也好(hǎo)。想想我自己該開(kāi)始學(xué)的時候,那時視頻資源少之又少,我買書和買視頻至少花了幾千塊,但是我覺得那很值,至少我現在賺回來了很多知識。

最後(hòu),希望這(zhè)篇文章對(duì)熱愛嵌入式,想緻力于嵌入式開(kāi)發(fā)的朋友有所幫助。送給大家一句簡單而又樸素的話,堅持就是勝利,貴在堅持,也可以看看如何堅持嵌入式學(xué)習!

轉自嵌入式學(xué)習網!

關于嵌入式軟件開(kāi)發(fā)視頻教程和嵌入式軟件開(kāi)發(fā)視頻教程下載的介紹到此就結束了,不知道(dào)你從中找到你需要的信息了嗎 ?如果你還(hái)想了解更多這(zhè)方面(miàn)的信息,記得收藏關注本站。

掃碼二維碼