嵌入式軟件開發視(shì)頻教程(嵌入式軟件的(de)開發過程與架構)
本篇文章(zhāng)給大家談談嵌入式軟件開發視(shì)頻教程,以及嵌入式軟件的(de)開發過程與架構對應的(de)知識點,希望對各位有(yǒu)所幫助,不要忘了收藏本站喔。
本文目錄一(yī)覽:
嵌入式軟件開發視(shì)頻教程
要學(xué)會真正到嵌入式就要一(yī)套完整到嵌入式視(shì)頻教程。完整的(de)嵌入式教程可(kě)以看看IT學(xué)習聯盟的(de)零基礎嵌入式就業班。零基礎嵌入式就業班包括嵌入式基礎 進階 高(gāo)級 項目。是一(yī)套完整的(de)嵌入式視(shì)頻教程。這套教程從零基礎開始教起,零基礎到就業水平。就算沒基礎也可(kě)以學(xué)習的(de)。
……………………………………………………
看你問的(de)問題,應該是對嵌入式很感興趣,其實你可(kě)以自(zì)學(xué)嵌入式。關于如(rú)何學(xué)習嵌入式,我(wǒ)剛才看到一(yī)篇很不錯的(de)文章(zhāng),是一(yī)個專科(kē)生介紹自(zì)己如(rú)何自(zì)學(xué)嵌入式,并找到嵌入式的(de)工作,裏面介紹了他的(de)學(xué)習方法和(hé)學(xué)習過程,希望對你有(yǒu)幫助。
先做(zuò)個自(zì)我(wǒ)介紹,我(wǒ)07年(nián)考上一(yī)所很爛專科(kē)民辦的(de)學(xué)校,學(xué)的(de)是生物專業,具體的(de)學(xué)校名稱我(wǒ)就不說出來獻醜了。09年(nián)我(wǒ)就辍學(xué)了,我(wǒ)在那樣的(de)學(xué)校,一(yī)年(nián)學(xué)費要1萬多,但是根本沒有(yǒu)人學(xué)習,我(wǒ)實在看不到希望,我(wǒ)就退學(xué)了。
退學(xué)後我(wǒ)也迷茫,大專都沒有(yǒu)畢業,我(wǒ)真的(de)不知道(dào)我(wǒ)能幹什麽,我(wǒ)在糾結着我(wǒ)能做(zuò)什麽。所以辍學(xué)後我(wǒ)一(yī)段時間,我(wǒ)想去(qù)找工作,因為(wèi)我(wǒ)比較沉默寡言,不是很會說話,我(wǒ)不适合去(qù)應聘做(zuò)業務。我(wǒ)想應聘做(zuò)技術的(de),可(kě)是處處碰壁。
一(yī)次偶然的(de)機(jī)會,我(wǒ)才聽到嵌入式這個行(xíng)業。那天我(wǒ)去(qù)新華書店,在計算機(jī)分類那邊想找本書學(xué)習。後來有(yǒu)個女孩子(zǐ)走過來,問我(wǒ)是不是讀計算機(jī)的(de),有(yǒu)沒有(yǒu)興趣學(xué)習嵌入式,然後給我(wǒ)介紹了一(yī)下嵌入式現在的(de)火熱情況,告訴我(wǒ)學(xué)嵌入式多麽的(de)有(yǒu)前景,給我(wǒ)了一(yī)份傳單,嵌入式培訓的(de)廣告。聽了她的(de)介紹,我(wǒ)心裏癢癢的(de),确實我(wǒ)很想去(qù)學(xué)會一(yī)門自(zì)己的(de)技術,靠自(zì)己的(de)雙手吃飯。
回家後,我(wǒ)就上網查了下嵌入式,确實是當今比較熱門的(de)行(xíng)業,也是比較好找工作的(de),工資也是相對比較高(gāo)。我(wǒ)就下決心想學(xué)嵌入式了。于是我(wǒ)去(qù)找嵌入式培訓的(de)相關信息,說真的(de),我(wǒ)也很迷茫,我(wǒ)不知道(dào)培訓是否真的(de)能像他們(men)宣傳的(de)那樣好,所以我(wǒ)就想了解一(yī)段時間再做(zuò)打算。
後來,我(wǒ)在百度知道(dào)看到一(yī)篇讓我(wǒ)很鼓舞的(de)文章(zhāng),是一(yī)個嵌入式高(gāo)手介紹沒有(yǒu)基礎的(de)朋(péng)友怎麽自(zì)學(xué)入門學(xué)嵌入式,文章(zhāng)寫的(de)很好,包含了如(rú)何學(xué)習,該怎麽學(xué)習。他提到一(yī)個方法就是看視(shì)頻,因為(wèi)看書實在太枯燥和(hé)費解的(de),很多我(wǒ)們(men)也看不懂。這點我(wǒ)真的(de)很認同,我(wǒ)自(zì)己看書往往看不了幾頁。
我(wǒ)在想,為(wèi)什麽别人都能自(zì)學(xué)成才,我(wǒ)也可(kě)以的(de)!我(wǒ)要相信自(zì)己,所以我(wǒ)就想自(zì)學(xué),如(rú)果實在學(xué)不會我(wǒ)再去(qù)培訓。
主意一(yī)定,我(wǒ)就去(qù)搜索嵌入式的(de)視(shì)頻,雖然零星找到一(yī)些嵌入式的(de)視(shì)頻,但是都不系統,我(wǒ)是想找一(yī)個能夠告訴我(wǒ)該怎麽學(xué)的(de)視(shì)頻,一(yī)套從入門到精通的(de)視(shì)頻,一(yī)個比較完整的(de)資料,最好能有(yǒu)老師教,不懂可(kě)以請教的(de)。
後來我(wǒ)又找到一(yī)份很好的(de)視(shì)頻,是在IT學(xué)習聯盟網站推出的(de)一(yī)份視(shì)頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的(de)可(kě)以複制 sina.lt/qKh 粘貼浏覽器地(dì)址欄按回車鍵即打開)。裏面的(de)教程還不錯,很完整,可(kě)以讓我(wǒ)從基礎的(de)開始學(xué)起。視(shì)頻比較便宜。
下面介紹下我(wǒ)的(de)學(xué)習流程,希望對和(hé)我(wǒ)一(yī)樣完全沒有(yǒu)基礎的(de)朋(péng)友有(yǒu)所幫助。
收到他們(men)寄過來的(de)光盤後,我(wǒ)就開始學(xué)習了,由于我(wǒ)沒有(yǒu)什麽基礎,我(wǒ)就從最簡單的(de)C語言視(shì)頻教程學(xué)起,話說簡單,其實我(wǒ)還是很多不懂的(de),我(wǒ)隻好請教他們(men),他們(men)還是很熱心的(de),都幫我(wǒ)解決了。C語言我(wǒ)差不多學(xué)了一(yī)個禮拜,接下來我(wǒ)就學(xué)了linux的(de)基本命令,我(wǒ)在他們(men)提供linux虛拟機(jī)上都有(yǒu)做(zuò)練習,敲linux的(de)基本命令,寫簡單的(de)C語言代碼,差不多也就三個禮拜。我(wǒ)每天都在不停的(de)寫一(yī)些簡單的(de)代碼,這樣一(yī)月後我(wǒ)基本掌握了C和(hé)linux的(de)基本操作。
接下來我(wǒ)就去(qù)學(xué)習了人家的(de)視(shì)頻的(de)培訓教程,是整套的(de),和(hé)去(qù)參加培訓沒有(yǒu)多大的(de)區别,這一(yī)看就是兩個月,學(xué)習了ARM的(de)基本原理(lǐ),學(xué)習嵌入式系統的(de)概念,也掌握了嵌入式的(de)環境的(de)一(yī)些搭建,對linux也有(yǒu)更深層次的(de)理(lǐ)解了,明白了嵌入式應用到底是怎麽做(zuò)的(de),但是驅動我(wǒ)隻是有(yǒu)一(yī)點點的(de)了解,這個相對難一(yī)點,我(wǒ)想以後再慢慢啃。
這兩個月,除了吃飯睡覺,我(wǒ)幾乎都在學(xué)習。因為(wèi)我(wǒ)知道(dào)幾乎沒有(yǒu)基礎,比别人差勁,我(wǒ)隻能堅持努力着,我(wǒ)不能放棄,我(wǒ)必要要靠自(zì)己來養活自(zì)己,必須學(xué)好這門技術,然後我(wǒ)就把不懂的(de)問題總結記下來,這樣慢慢積累了一(yī)段時間,我(wǒ)發現自(zì)己真的(de)有(yǒu)點入門了。
最後的(de)一(yī)個月,我(wǒ)就去(qù)看關于實踐部分的(de)內(nèi)容,了解嵌入式項目具體的(de)開發流程,需要什麽樣的(de)知識,我(wǒ)就開始準備這方面的(de)知識,也就是學(xué)習這方面的(de)視(shì)頻,同時他們(men)建議我(wǒ)去(qù)找了找一(yī)些嵌入式面試的(de)題目,為(wèi)自(zì)己以後找工作做(zuò)準備。我(wǒ)就到網上找了很多嵌入式的(de)題目,把他們(men)理(lǐ)解的(de)記下來,這樣差不多準備了20天左右
我(wǒ)覺得自(zì)己差不多入門了,會做(zuò)一(yī)些簡單的(de)東西了。我(wǒ)就想去(qù)找工作看看,于是我(wǒ)就到51job瘋狂的(de)投簡曆,因為(wèi)我(wǒ)學(xué)曆的(de)問題,專科(kē)沒有(yǒu)畢業,說真的(de),大公司沒有(yǒu)人會要我(wǒ),所以我(wǒ)投的(de)都是民營的(de)小公司,我(wǒ)希望自(zì)己的(de)努力有(yǒu)所回報。沒有(yǒu)想過幾天過後,就有(yǒu)面試了,但是第一(yī)次面試我(wǒ)失敗了,雖然我(wǒ)自(zì)認為(wèi)筆(bǐ)試很好,因為(wèi)我(wǒ)之前做(zuò)了準備,但是他們(men)的(de)要求比較嚴格,需要有(yǒu)一(yī)年(nián)的(de)項目經驗,所以我(wǒ)沒有(yǒu)被選中。
後來陸續面試了幾家公司,終于功夫不負有(yǒu)心人。我(wǒ)終于面試上的(de),是在闵行(xíng)的(de)一(yī)家民營的(de)企業,公司規模比較小,我(wǒ)的(de)職務是嵌入式linux應用開發,做(zuò)安防産品的(de)應用的(de)。我(wǒ)想我(wǒ)也比較幸運,經理(lǐ)很看重我(wǒ)的(de)努力,就決定錄用我(wǒ),開的(de)工資是3500一(yī)個月,雖然我(wǒ)知道(dào)在上海3500隻能過溫飽的(de)生活,但是我(wǒ)想我(wǒ)足夠了。我(wǒ)至少不用每天都要靠父母養,我(wǒ)自(zì)己也能養活自(zì)己的(de)。我(wǒ)想隻要我(wǒ)繼續努力,我(wǒ)工資一(yī)定會翻倍的(de)。
把本文寫出來,希望能讓和(hé)我(wǒ)一(yī)樣的(de)沒有(yǒu)基礎的(de)朋(péng)友有(yǒu)信心,其實我(wǒ)們(men)沒有(yǒu)必要自(zì)卑,我(wǒ)們(men)不比别人笨,隻要我(wǒ)們(men)肯努力,我(wǒ)們(men)一(yī)樣會成功。
………………………………
學(xué)習嵌入式開發要學(xué)習哪些知識?
嵌入式系統是計算機(jī)軟件和(hé)硬件的(de)綜合體,我(wǒ)有(yǒu)全套嵌入式視(shì)頻課可(kě)以發給你自(zì)學(xué)。
課程內(nèi)容主要包括:
①C,Java核心編程:c語言核心編程,Java核心編程;
②Linux核心操作與算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;
③核心操作與算法:Linux系統編程,Linux網絡編程核心技術,UI編程,Java核心編程,安卓核心技術;
④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;
⑤大型項目實踐:每期安排各類型真實的(de)項目,詳細可(kě)以找我(wǒ)要資料。
學(xué)完可(kě)以從事:
ESE(嵌入式軟件工程師);
ADE(嵌入式應用開發工程師);
FWE(嵌入式底層開發工程師);
FEC(嵌入式固件開發工程師)
你也可(kě)以考察對比一(yī)下南京課工場、北(běi)大青鳥、中博軟件學(xué)院等開設有(yǒu)嵌入式開發專業的(de)學(xué)校。記得找我(wǒ)要全套嵌入式開發視(shì)頻課,祝學(xué)有(yǒu)所成!望采納!
嵌入式軟件開發入門
其實說真的(de),和(hé)性别沒有(yǒu)多大的(de)關系,我(wǒ)的(de)同事有(yǒu)好多都是女的(de),都是芯片設計的(de)高(gāo)手呢(ne)。所以隻要你肯學(xué)就夠了
關于怎麽學(xué)好嵌入式,給你看看我(wǒ)寫的(de)一(yī)篇文章(zhāng)《如(rú)何學(xué)習嵌入式》,希望對你有(yǒu)把幫助。
最近很多朋(péng)友都在問,如(rú)何學(xué)習嵌入式,作為(wèi)嵌入式的(de)老鳥,我(wǒ)想我(wǒ)可(kě)以做(zuò)一(yī)些唠叨,嵌入式的(de)入門門檻稍微高(gāo)一(yī)點,但是再高(gāo)的(de)城牆也是小磚頭築起來的(de),所以沒有(yǒu)必要因為(wèi)門檻高(gāo)就覺得很困難,一(yī)步一(yī)個腳印,貴在堅持就可(kě)以了。
學(xué)習嵌入式,該學(xué)習什麽基本的(de)知識呢(ne)?
首先C語言,這個是毋庸置疑的(de),不管是做(zuò)嵌入式軟件還是硬件開發的(de)人員,對C語言的(de)掌握這個是必需的(de),特别是對于以後緻力于嵌入式軟件開發的(de)人,現在絕大部分都是用C語言,你說不掌握它可(kě)以嗎?至于如(rú)何學(xué)習C語言,我(wǒ)想這些基礎的(de)知識每個人都有(yǒu)自(zì)己的(de)方法,關鍵要去(qù)學(xué)習,看書也好,網上找些視(shì)頻看也好。很多人會問,C語言要學(xué)到怎麽樣,我(wǒ)覺得這沒有(yǒu)标準的(de)答案。我(wǒ)想至少你在明白了一(yī)些基礎的(de)概念後,就該寫代碼了,動手才是最重要的(de),當你動手了,遇到問題了,再反過來學(xué)習,反過來查查課本,那時的(de)收獲就不是你死看書能得到的(de)。
其次,應該對操作系統有(yǒu)所了解,這對你對硬件和(hé)軟件的(de)理(lǐ)解,絕對有(yǒu)很大的(de)幫助。應該把系統的(de)管理(lǐ)理(lǐ)解一(yī)下,比如(rú)進程、線程,系統如(rú)何來分配資源的(de),系統如(rú)何來管理(lǐ)硬件的(de),當然,不是看書就能把這些理(lǐ)解透,如(rú)果不是一(yī)時能理(lǐ)解,沒關系,多看看,結合以後的(de)項目經驗,會有(yǒu)更好的(de)理(lǐ)解的(de)。
還有(yǒu)應該學(xué)習嵌入式系統,如(rú)linux或者wince下的(de)編程,這些對以後做(zuò)應用的(de)編程很有(yǒu)幫助,當然,如(rú)果做(zuò)手機(jī)的(de)話,那可(kě)以學(xué)習MTK、塞班、Android等操作系統,Android是以後發展的(de)趨勢,現在很熱門,Android也是基于linux系統封裝的(de),所以建議先學(xué)習下linux。
還有(yǒu),應該學(xué)習下單片機(jī)或者ARM或者MIPS,很多人說我(wǒ)沒有(yǒu)單片機(jī)的(de)經驗,直接學(xué)ARM可(kě)以嗎?我(wǒ)覺得那完全沒有(yǒu)問題的(de),當然如(rú)果你學(xué)習過單片機(jī),那最好不過了,以後學(xué)習ARM就更簡單了。
最後如(rú)果你把以上的(de)知識都有(yǒu)所了解後,就該去(qù)閱讀閱讀一(yī)些優秀的(de)代碼,比如(rú)結合arm芯片手冊學(xué)習去(qù)學(xué)習下UBOOT的(de)源代碼,了解下最小的(de)系統開發,那對你整個嵌入式開發的(de)非常有(yǒu)幫助的(de),可(kě)以的(de)話,還可(kě)以學(xué)習下linux的(de)源代碼,當然如(rú)果你直接閱讀2.6的(de)代碼,我(wǒ)想你會很痛苦的(de),可(kě)以先看看linux 代碼早期的(de)版本,比如(rú)0.12 的(de)代碼等等,麻雀雖小,五髒俱全,如(rú)果你全看完了,那我(wǒ)想你就是一(yī)名很成功的(de)嵌入式工程師。
至于上面說的(de)知識如(rú)何學(xué)習呢(ne)?每個人都應該去(qù)找自(zì)己最好的(de)方法,所謂的(de)最好的(de)方法就是最适合自(zì)己的(de)方法。很多人看不進書,那就去(qù)看看視(shì)頻吧(ba)。視(shì)頻也應該要選擇,不是随便看看,應該要有(yǒu)所選擇,有(yǒu)所挑選。我(wǒ)也是這樣一(yī)路走過來的(de),不過我(wǒ)這人比較懶,我(wǒ)看不進書,一(yī)看書我(wǒ)就想睡覺,所以這幾年(nián)我(wǒ)都是看視(shì)頻過來的(de),現在也算學(xué)有(yǒu)所成,但也不敢說是高(gāo)手吧(ba)。
我(wǒ)在網上看到,有(yǒu)人把自(zì)己學(xué)習嵌入式的(de)視(shì)頻總結出來,嵌入式系列實踐和(hé)視(shì)頻教程,大家可(kě)以看看網址
我(wǒ)仔細看了覺得很不錯,我(wǒ)本來也想整理(lǐ)下,可(kě)是奈何我(wǒ)自(zì)己的(de)電腦硬盤空間才40G,沒有(yǒu)辦法,時間也是不夠,心有(yǒu)餘而力不足,我(wǒ)不是在幫他做(zuò)廣告,雖然要花錢,我(wǒ)覺得算不錯,至少自(zì)己不用去(qù)整理(lǐ)和(hé)花大量的(de)時間去(qù)找資源,當然如(rú)果網上有(yǒu)的(de)下,你網速和(hé)硬盤都夠的(de)話,我(wǒ)建議大家自(zì)己網上下也好。想想我(wǒ)自(zì)己該開始學(xué)的(de)時候,那時視(shì)頻資源少之又少,我(wǒ)買書和(hé)買視(shì)頻至少花了幾千塊,但是我(wǒ)覺得那很值,至少我(wǒ)現在賺回來了很多知識。
最後,希望這篇文章(zhāng)對熱愛嵌入式,想緻力于嵌入式開發的(de)朋(péng)友有(yǒu)所幫助。送給大家一(yī)句簡單而又樸素的(de)話,堅持就是勝利,貴在堅持,也可(kě)以看看如(rú)何堅持嵌入式學(xué)習!
轉自(zì)嵌入式學(xué)習網!
嵌入式軟件開發是什麽?
什麽是嵌入式開發和(hé)軟件開發
其實很簡單,你百度一(yī)下就知道(dào)的(de),但是既然你提問了,我(wǒ)就說哈,我(wǒ)也是學(xué)嵌入式開發的(de),雖然還沒畢業。
1.自(zì)從有(yǒu)了單片機(jī),就有(yǒu)了嵌入式
2.嵌入式系統是軟件和(hé)硬件的(de)綜合體,有(yǒu)嵌入式軟件開發和(hé)嵌入式硬件開發,一(yī)般都是軟件開發,硬件太難了(要學(xué)習硬件的(de)知識,數字電路和(hé)模拟電路是必修的(de),計算機(jī)的(de)架構。。。),既然叫嵌入式就不是純軟件了,還得一(yī)些硬件的(de)知識,多數時候搞得是燒寫,調試電子(zǐ)器件。
3.嵌入式系統是可(kě)以自(zì)己定制的(de)系統(顧名思義,就是要什麽就留下什麽,可(kě)以剪切的(de)系統,追求的(de)是小型化,适用,低(dī)成本,低(dī)功耗,可(kě)擴展),多數撫采用的(de)linux的(de)內(nèi)核(最簡單的(de)ucOS-||,新手接觸),一(yī)大特點就是專用,定制,內(nèi)核是一(yī)大難。
4.應用:手機(jī)(像現在android手機(jī)的(de)遊戲開發,運用開發等),各種手持終端,車載系統,各種監控各種帶程序的(de)電子(zǐ)器件,隻能家居,隻能機(jī)器人。。。。
什麽是嵌入式軟件和(hé)非嵌入式軟件
簡單的(de)說,嵌入式軟件就是基于嵌入式平台(比如(rú)ARM+Linux)的(de)應用軟件或者系統軟件;而非嵌入式軟件大多指基于通用處理(lǐ)器和(hé)操作系統平台俯軟件(比如(rú)桌面應用軟件)。
嵌入式應用軟件開發與嵌入式系統軟件開發區别
你好,就我(wǒ)自(zì)身而言,兩者都在做(zuò)。應用軟件主要是PC機(jī)的(de)軟件或者手機(jī)上的(de)各種app,而嵌入式系統是指更底層的(de),也就是應用軟件的(de)平台。給你舉個例子(zǐ)吧(ba),我(wǒ)是做(zuò)智能卡的(de),比如(rú)公交卡,CPU卡芯片內(nèi)存有(yǒu)操作系統(cos)這屬于嵌入式系統軟件,而你要往卡裏充值時就要用到電腦上的(de)充值軟件(上位機(jī)),這個則是應用軟件!
什麽是嵌入式軟件開發如(rú)何學(xué)習
嵌入式自(zì)學(xué)的(de)話非常難,因為(wèi)嵌入式需要學(xué)習的(de)東西很多而且很難,如(rú)果你沒掌握學(xué)習嵌入式的(de)方法的(de)話,可(kě)能1-2年(nián)都隻能入門,如(rú)果你掌握嵌入式的(de)學(xué)習的(de)方法的(de)話,半年(nián)就能學(xué)會嵌入式。
…………………………………………
看你問的(de)問題,應該是對嵌入式很感興趣,其實你可(kě)以自(zì)學(xué)嵌入式。關于如(rú)何學(xué)習嵌入式,我(wǒ)剛才看到一(yī)篇很不錯的(de)文章(zhāng),是一(yī)個專科(kē)生介紹自(zì)己如(rú)何自(zì)學(xué)嵌入式,并找到嵌入式的(de)工作,裏面介紹了他的(de)學(xué)習方法和(hé)學(xué)習過程,希望對你有(yǒu)幫助。
先做(zuò)個自(zì)我(wǒ)介紹,我(wǒ)07年(nián)考上一(yī)所很爛專科(kē)民辦的(de)學(xué)校,學(xué)的(de)是生物專業,具體的(de)學(xué)校名稱我(wǒ)就不說出來獻醜了。09年(nián)我(wǒ)就辍學(xué)了,我(wǒ)在那樣的(de)學(xué)校,一(yī)年(nián)學(xué)費要1萬多,但是根本沒有(yǒu)人學(xué)習,我(wǒ)實在看不到希望,我(wǒ)就退學(xué)了。
退學(xué)後我(wǒ)也迷茫,大專都沒有(yǒu)畢業,我(wǒ)真的(de)不知道(dào)我(wǒ)能幹什麽,我(wǒ)在糾結着我(wǒ)能做(zuò)什麽。所以辍學(xué)後我(wǒ)一(yī)段時間,我(wǒ)想去(qù)找工作,因為(wèi)我(wǒ)比較沉默寡言,不是很會說話,我(wǒ)不适合去(qù)應聘做(zuò)業務。我(wǒ)想應聘做(zuò)技術的(de),可(kě)是處處碰壁。
一(yī)次偶然的(de)機(jī)會,我(wǒ)才聽到嵌入式這個行(xíng)業。那天我(wǒ)去(qù)新華書店,在計算機(jī)分類那邊想找本書學(xué)習。後來有(yǒu)個女孩子(zǐ)走過來,問我(wǒ)是不是讀計算機(jī)的(de),有(yǒu)沒有(yǒu)興趣學(xué)習嵌入式,然後給我(wǒ)介紹了一(yī)下嵌入式現在的(de)火熱情況,告訴我(wǒ)學(xué)嵌入式多麽的(de)有(yǒu)前景,給我(wǒ)了一(yī)份傳單,嵌入式培訓的(de)廣告。聽了她的(de)介紹,我(wǒ)心裏癢癢的(de),确實我(wǒ)很想去(qù)學(xué)會一(yī)門自(zì)己的(de)技術,靠自(zì)己的(de)雙手吃飯。
回家後,我(wǒ)就上網查了下嵌入式,确實是當今比較熱門的(de)行(xíng)業,也是比較好找工作的(de),工資也是相對比較高(gāo)。我(wǒ)就下決心想學(xué)嵌入式了。于是我(wǒ)去(qù)找嵌入式培訓的(de)相關信息,說真的(de),我(wǒ)也很迷茫,我(wǒ)不知道(dào)培訓是否真的(de)能像他們(men)宣傳的(de)那樣好,所以我(wǒ)就想了解一(yī)段時間再做(zuò)打算。
後來,我(wǒ)在百度知道(dào)看到一(yī)篇讓我(wǒ)很鼓舞的(de)文章(zhāng),是一(yī)個嵌入式高(gāo)手介紹沒有(yǒu)基礎的(de)朋(péng)友怎麽自(zì)學(xué)入門學(xué)嵌入式,文章(zhāng)寫的(de)很好,包含了如(rú)何學(xué)習,該怎麽學(xué)習。他提到一(yī)個方法就是看視(shì)頻,因為(wèi)看書實在太枯燥和(hé)費解的(de),很多我(wǒ)們(men)也看不懂。這點我(wǒ)真的(de)很認同,我(wǒ)自(zì)己看書往往看不了幾頁。
我(wǒ)在想,為(wèi)什麽别人都能自(zì)學(xué)成才,我(wǒ)也可(kě)以的(de)!我(wǒ)要相信自(zì)己,所以我(wǒ)就想自(zì)學(xué),如(rú)果實在學(xué)不會我(wǒ)再去(qù)培訓。
主意一(yī)定,我(wǒ)就去(qù)搜索嵌入式的(de)視(shì)頻,雖然零星找到一(yī)些嵌入式的(de)視(shì)頻,但是都不系統,我(wǒ)是想找一(yī)個能夠告訴我(wǒ)該怎麽學(xué)的(de)視(shì)頻,一(yī)套從入門到精通的(de)視(shì)頻,一(yī)個比較完整的(de)資料,最好能有(yǒu)老師教,不懂可(kě)以請教的(de)。
後來我(wǒ)又找到一(yī)份很好的(de)視(shì)頻,是在IT學(xué)習聯盟網站推出的(de)一(yī)份視(shì)頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的(de)可(kě)以複制 sina.lt/qKh 粘貼浏覽器地(dì)址欄按回車鍵即打開)。裏面的(de)教程還不錯,很完整,可(kě)以讓我(wǒ)從基礎的(de)開始學(xué)起。視(shì)頻比較便宜。
下面介紹下我(wǒ)的(de)學(xué)習流程,希望對和(hé)我(wǒ)一(yī)樣完全沒有(yǒu)基礎的(de)朋(péng)友有(yǒu)所幫助。
收到他們(men)寄過來的(de)光盤後,我(wǒ)就開始學(xué)習了,由于我(wǒ)沒有(yǒu)什麽基礎,我(wǒ)就從最簡單的(de)C語言視(shì)頻教程學(xué)起,話說簡單,其實我(wǒ)還是很多不懂的(de),我(wǒ)隻好請教他們(men),他們(men)還是很熱心的(de),都幫我(wǒ)解決了。C語言我(wǒ)差不多學(xué)了一(yī)個禮拜,接下來我(wǒ)就學(xué)了linux的(de)基本命令,我(wǒ)在他們(men)提供linux虛拟機(jī)上都有(yǒu)做(zuò)練習,敲linux的(de)基本命令,寫簡單的(de)C語言代碼,差不多也就三個禮拜。我(wǒ)每天都在不停的(de)寫一(yī)些簡單的(de)代碼,這樣一(yī)月後我(wǒ)基本掌握了C和(hé)linux的(de)基本操作。
接下來我(wǒ)就去(qù)學(xué)習了人家的(de)視(shì)頻的(de)培訓教程,是整套的(de),和(hé)去(qù)參加培訓沒有(yǒu)多大的(de)區别,這一(yī)看就是兩個月,學(xué)習了ARM的(de)基本原理(lǐ),學(xué)習嵌入式系統的(de)概念,也......
嵌入式軟件開發和(hé)軟件開發有(yǒu)區别嗎
操作系統不一(yī)樣,嵌入式軟件開發屬于軟件開發的(de)一(yī)種。
嵌入式軟件開發主要針對計算能力有(yǒu)限的(de)CPU進行(xíng)的(de)軟件開發,比如(rú)INTEL的(de)CPU芯片時鍾頻率可(kě)以達到1G HZ,雖然INTEL的(de)CPU運算能力強大,但是體積大,發熱大,不适合使用在某些場合,這個時候就要使用一(yī)些體積小,功耗低(dī),運算能力有(yǒu)限的(de)專用CPU,比如(rú)手機(jī)上使用的(de)CPU處理(lǐ)器,在這種CPU上運行(xíng)的(de)操作系統就是嵌入式操作系統,這些操作系統占用比較小的(de)硬件資源,但是卻有(yǒu)相對較高(gāo)的(de)執行(xíng)調度效率。
嵌入于宿主設備,智能地(dì)完成宿主設備功能的(de)計算機(jī)就是嵌入式計算機(jī),或簡稱為(wèi)嵌入式。嵌入式計算機(jī)的(de)構成:可(kě)以是單片的(de)微控制器(MC-micro-controller),在我(wǒ)國(guó)習慣于稱做(zuò)單片機(jī);也可(kě)以是由微處理(lǐ)器(MP-microprocessor)另加存儲器及外部設備構成;還可(kě)以在MC/MP的(de)基礎上附加數字信号處理(lǐ)器(DSP)核心部件,構成多核MP/MC。
新一(yī)代嵌入式計算機(jī)的(de)主要特征:是繼承了整個PC機(jī)時期的(de)技術成就,特别是進入90年(nián)代後的(de)全球萬維網(Web)技術(産品有(yǒu)可(kě)接入萬維網的(de)手持式PDA設備等)和(hé)多媒體技術(産品有(yǒu)高(gāo)質量數字音響、數字視(shì)盤播放器,數碼靜态相機(jī)、數碼視(shì)頻攝像機(jī)等等)。這類嵌入式的(de)目标是想把桌面PC機(jī)上成熟的(de)技術拆解下來,放入手持設備或移動設備,供用戶随時随地(dì)進行(xíng)消費。全球網中行(xíng)之有(yǒu)效的(de)衆多通信協議,多媒體的(de)MP3、JPEG、MPEG等所采用的(de)标準數據格式及各種庫函數都使用32位格式和(hé)32位的(de)編程軟件,所以嵌入式也注定要使用32位的(de)微處理(lǐ)器。
為(wèi)順應形勢發展的(de)需要,32位手持設備用的(de)嵌入式操作系統應運而生,著名的(de)有(yǒu)Windows CE、Epoch、 Palm OS等等,可(kě)見今日嵌入式的(de)立點水平是很高(gāo)的(de)。
新一(yī)代嵌入式主要面向手持或移動消費類設備,電池供電和(hé)低(dī)價位是重要考慮因素,這就從根本上決定了它不可(kě)能照搬PC機(jī)上原來使用的(de)微處理(lǐ)器。下面先介紹嵌入式32位微處理(lǐ)器的(de)技術進步,然後再舉一(yī)些新型嵌入式微處理(lǐ)器的(de)實例,使讀者對新一(yī)代嵌入式有(yǒu)一(yī)個較清晰的(de)認識。
由上述可(kě)見,當前嵌入式所用MP多是32位RISC DSP雙核或RISC/DSP單核結構。過去(qù)比較著名的(de)RISC生産廠家起著基石作用。許多新興的(de)嵌入式廠家購買他們(men)的(de)RISC專利嫁接到自(zì)己的(de)DSP核上。一(yī)些著名的(de)生産CISC微處理(lǐ)器的(de)廠家不甘心丢失嵌入式市(shì)場,也紛紛向RISC及DSP靠攏。
從1981年(nián)Ready System發展了世界上第1個商(shāng)業嵌入式實時內(nèi)核(VRTX32),到今天已經有(yǒu)近20年(nián)的(de)曆史。20世紀80年(nián)代的(de)産品還隻支持一(yī)些16位的(de)微處理(lǐ)器,如(rú)68k,8086等。這時候的(de)RTOS還隻有(yǒu)內(nèi)核,以銷售二進制代碼為(wèi)主。當時的(de)産品除VRTX外,還有(yǒu)IPI公司的(de)MTOS和(hé)80年(nián)代末ISI公司的(de)PSOS。産品主要用于軍事和(hé)電信設備。進入20世紀90年(nián)代,現代操作系統的(de)設計思想,如(rú)微內(nèi)核設計技術和(hé)模塊化設計思想,開始滲入RTOS領域。老牌的(de)RTOS廠家如(rú)Ready System(在1995年(nián)與Microtec Research合并),也推出新一(yī)代的(de)VRTXsa實時內(nèi)核,新一(yī)代的(de)RTOS廠家Windriver推出了Vxwork。另外在這個時期,各家公司都有(yǒu)力求擺脫完全依賴第三方工具的(de)制約,而通過自(zì)己收購、授權或使用免費工具鏈的(de)方式,組成1套完整的(de)開發環境。例如(rú),ISI公司的(de)Pri *** t、著名的(de)Tornado(Windriver)和(hé)老牌的(de)Spectra(VRTX開發系統)等。
進入2......
嵌入式軟件開發應該學(xué)什麽
如(rú)果是希望向嵌入式軟件方向發展的(de)話,目前最常見的(de)是嵌入式Linux+ARM方向,關于這個方向,我(wǒ)認為(wèi)大概分3個階段:
1、嵌入式linux上層應用,包括QT的(de)GUI開發
2、嵌入式linux系統開發
3、嵌入式linux驅動開發嵌入式目前主要面向的(de)幾個操作系統是,LINUX,WINCE、VxWorks等等
Linux是開源免費的(de),而且其源代碼是開放的(de),更加适合我(wǒ)們(men)學(xué)習嵌入式。所以自(zì)學(xué)的(de)話你可(kě)以嘗試以下路線:
(1) C語言是所有(yǒu)編程語言中的(de)強者,單片機(jī)、DSP、類似ARM的(de)種種芯片的(de)編程都可(kě)以用C語言搞定),因此必須非常熟練的(de)掌握。
推薦書籍:譚浩強的(de)很不錯,《The C Programming Language》 這本經典的(de)教材是老外寫的(de),也有(yǒu)中譯版本。
(2) 操作系統原理(lǐ),是必需的(de),如(rú)果你是計算機(jī)專業畢業那也就無所謂了,如(rú)果是非計算機(jī)專業的(de)就必須找一(yī)本比較淺顯的(de)計算機(jī)原理(lǐ)書籍看一(yī)看,把啥叫“進程”“線程”“系統調度”等等基本問題搞清楚。
(3) Linux操作系統就是用C語言編寫的(de),所以你也應該先學(xué)習下Linux方面的(de)編程,隻有(yǒu)你會應用了,才能近一(yī)步去(qù)了解其內(nèi)核的(de)精髓。
推薦書籍:《UNIX環境高(gāo)級編程》(第2版)
(4) 了解ARM的(de)架構,原理(lǐ),以及其彙編指令,我(wǒ)們(men)在嵌入式開發中,一(yī)般很少去(qù)寫彙編,但是最起碼的(de)要求是能夠看懂arm彙編。
(5) 系統移植的(de)時候,就需要你從最下層的(de)bootloader開始,然後內(nèi)核移植,文件系統移植等。而移植這部分對硬件的(de)依賴是非常大的(de),其配置步驟也相對複雜,也沒有(yǒu)太多詳細資料。
(6) 驅動開發
linux驅動程序設計既是個極富有(yǒu)挑戰性的(de)領域,又是一(yī)個博大精深的(de)內(nèi)容。
linux驅動程序設計本質是屬于linux內(nèi)核編程範疇的(de),因而是對linux內(nèi)核和(hé)內(nèi)核編程是有(yǒu)要求的(de)。在學(xué)習前你要想了解linux內(nèi)核的(de)組成,因為(wèi)每一(yī)部分要詳細研究的(de)話足夠可(kě)以擴展成一(yī)本厚書。以上隻不過是大概的(de)框架,在實際的(de)開發中還會涉及很多東西,比如(rú):交叉編譯、makefile、shell腳本等等,所以說學(xué)習嵌入式的(de)周期較長(cháng),門檻較高(gāo),自(zì)學(xué)的(de)話更是需要較強的(de)學(xué)習能力和(hé)專業功底。隻要能堅持下來一(yī)定會取得成功!推薦到華清遠見的(de)網站上了解嵌入式的(de)課程體系和(hé)學(xué)習方法,還有(yǒu)很多資料和(hé)視(shì)頻教程可(kě)以下載。
嵌入式軟件開發好還是硬件開發好
硬件相對比較死闆固定,但軟件特别是系統架構的(de)設計就很能鍛煉
人的(de)腦力。巨立安技術一(yī)直認為(wèi)做(zuò)軟件更能體現人腦的(de)價值。
不過對工作,尤其是嵌入式這個方向的(de)開發來說,也許最好的(de)策略
就是堅持 linux 內(nèi)核裏面多任務調度時所采用的(de) “完全公平的(de)調度(C
FS)”哲學(xué)。任何一(yī)個進程,隻要它最需要cpu、或者已得到cpu時間
相對于其他進程最少,那調度器就優先調度cpu給他。
軟件硬件的(de)學(xué)習也是一(yī)樣,什麽時候哪方面需要你花時間多一(yī)些、
或者你自(zì)己不擅長(cháng)哪一(yī)方面,那就堅持往那方面發展用勁。如(rú)此,
到最後,你就會發現已然成為(wèi)一(yī)個嵌入式乃至計算機(jī)系統的(de)專家。
什麽是嵌入式開發和(hé)軟件開發
嵌入式開發和(hé)硬件關系稍顯密切,主要是編寫程序操作硬件,比如(rú):手機(jī)、打印機(jī)、電子(zǐ)顯示屏等等
軟件開發主要是編寫程序操作計算機(jī)。
嵌入式系統開發與軟件開發的(de)區别
嵌入式系統開發是軟件開發的(de)一(yī)種,嵌入式系統開發就是對于除了電腦之外的(de)所有(yǒu)電子(zǐ)設備上操作系統的(de)開發,開發對象有(yǒu)手機(jī),掌上電腦,機(jī)電系統等。
嵌入式系統是以應用為(wèi)中心,以計算機(jī)技術為(wèi)基礎,并且軟硬件可(kě)裁剪,适用于應用系統對功能、可(kě)靠性、成本、體積、功耗有(yǒu)嚴格要求的(de)專用計算機(jī)系統。它一(yī)般由嵌入式微處理(lǐ)器、外圍硬件設備、嵌入式操作系統以及用 戶的(de)應用程序等四個部分組成,用于實現對其他設備的(de)控制、監視(shì)或管理(lǐ)等功能
嵌入式系統一(yī)般指非PC系統,它包括硬件和(hé)軟件兩部分。硬件包括處理(lǐ)器/微處理(lǐ)器、存儲器及外設器件和(hé)I/O端口、圖形控制器等。軟件部分包括操作系統軟件(OS)(要求實時和(hé)多任務操作)和(hé)應用程序編程。有(yǒu)時設計人員把這兩種軟件組合在一(yī)起。應用程序控制着系統的(de)運作和(hé)行(xíng)為(wèi);而操作系統控制着應用程序編程與硬件的(de)交互作用。
嵌入式非常難,到底怎麽學(xué)習嵌入式,我(wǒ)剛才看到一(yī)篇很不錯的(de)文章(zhāng),是一(yī)個專科(kē)生介紹自(zì)己如(rú)何自(zì)學(xué)嵌入式,并找到嵌入式的(de)工作,裏面介紹了他的(de)學(xué)習方法和(hé)學(xué)習過程,希望對你有(yǒu)幫助。
==========================================
先做(zuò)個自(zì)我(wǒ)介紹,我(wǒ)07年(nián)考上一(yī)所很爛專科(kē)民辦的(de)學(xué)校,學(xué)的(de)是生物專業,具體的(de)學(xué)校名稱我(wǒ)就不說出來獻醜了。09年(nián)我(wǒ)就辍學(xué)了,我(wǒ)在那樣的(de)學(xué)校,一(yī)年(nián)學(xué)費要1萬多,但是根本沒有(yǒu)人學(xué)習,我(wǒ)實在看不到希望,我(wǒ)就退學(xué)了。
退學(xué)後我(wǒ)也迷茫,大專都沒有(yǒu)畢業,我(wǒ)真的(de)不知道(dào)我(wǒ)能幹什麽,我(wǒ)在糾結着我(wǒ)能做(zuò)什麽。所以辍學(xué)後我(wǒ)一(yī)段時間,我(wǒ)想去(qù)找工作,因為(wèi)我(wǒ)比較沉默寡言,不是很會說話,我(wǒ)不适合去(qù)應聘做(zuò)業務。我(wǒ)想應聘做(zuò)技術的(de),可(kě)是處處碰壁。
一(yī)次偶然的(de)機(jī)會,我(wǒ)才聽到嵌入式這個行(xíng)業。那天我(wǒ)去(qù)新華書店,在計算機(jī)分類那邊想找本書學(xué)習。後來有(yǒu)個女孩子(zǐ)走過來,問我(wǒ)是不是讀計算機(jī)的(de),有(yǒu)沒有(yǒu)興趣學(xué)習嵌入式,然後給我(wǒ)介紹了一(yī)下嵌入式現在的(de)火熱情況,告訴我(wǒ)學(xué)嵌入式多麽的(de)有(yǒu)前景,給我(wǒ)了一(yī)份傳單,嵌入式培訓的(de)廣告。聽了她的(de)介紹,我(wǒ)心裏癢癢的(de),确實我(wǒ)很想去(qù)學(xué)會一(yī)門自(zì)己的(de)技術,靠自(zì)己的(de)雙手吃飯。
回家後,我(wǒ)就上網查了下嵌入式,确實是當今比較熱門的(de)行(xíng)業,也是比較好找工作的(de),工資也是相對比較高(gāo)。我(wǒ)就下決心想學(xué)嵌入式了。于是我(wǒ)去(qù)找嵌入式培訓的(de)相關信息,說真的(de),我(wǒ)也很迷茫,我(wǒ)不知道(dào)培訓是否真的(de)能像他們(men)宣傳的(de)那樣好,所以我(wǒ)就想了解一(yī)段時間再做(zuò)打算。
後來,我(wǒ)在百度知道(dào)看到一(yī)篇讓我(wǒ)很鼓舞的(de)文章(zhāng),是一(yī)個嵌入式高(gāo)手介紹沒有(yǒu)基礎的(de)朋(péng)友怎麽自(zì)學(xué)入門學(xué)嵌入式,文章(zhāng)寫的(de)很好,包含了如(rú)何學(xué)習,該怎麽學(xué)習。他提到一(yī)個方法就是看視(shì)頻,因為(wèi)看書實在太枯燥和(hé)費解的(de),很多我(wǒ)們(men)也看不懂。這點我(wǒ)真的(de)很認同,我(wǒ)自(zì)己看書往往看不了幾頁。
我(wǒ)在想,為(wèi)什麽别人都能自(zì)學(xué)成才,我(wǒ)也可(kě)以的(de)!我(wǒ)要相信自(zì)己,所以我(wǒ)就想自(zì)學(xué),如(rú)果實在學(xué)不會我(wǒ)再去(qù)培訓。
主意一(yī)定,我(wǒ)就去(qù)搜索嵌入式的(de)視(shì)頻,雖然零星找到一(yī)些嵌入式的(de)視(shì)頻,但是都不系統,我(wǒ)是想找一(yī)個能夠告訴我(wǒ)該怎麽學(xué)的(de)視(shì)頻,一(yī)套從入門到精通的(de)視(shì)頻,一(yī)個比較完整的(de)資料,最好能有(yǒu)老師教,不懂可(kě)以請教的(de)。
後來我(wǒ)又找到一(yī)份很好的(de)視(shì)頻,是在IT學(xué)習聯盟網站推出的(de)一(yī)份視(shì)頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的(de)可(kě)以複制 sina.lt/qKh 粘貼浏覽器地(dì)址欄按回車鍵即打開)。裏面的(de)教程還不錯,很完整,可(kě)以讓我(wǒ)從基礎的(de)開始學(xué)起。視(shì)頻比較便宜。
下面介紹下我(wǒ)的(de)學(xué)習流程,希望對和(hé)我(wǒ)一(yī)樣完全沒有(yǒu)基礎的(de)朋(péng)友有(yǒu)所幫助。
收到他們(men)寄過來的(de)光盤後,......
嵌入式軟件開發與軟件開發有(yǒu)什麽區别
1、嵌入式軟件開發指的(de)是針對單片機(jī)、ARM、FPGA的(de)編程,沒有(yǒu)window或linux操作系統,即使有(yǒu),也是功能較為(wèi)簡單的(de)操作系統,比如(rú)ucos。總之嵌入式軟件開發和(hé)硬件關系比較緊密,一(yī)般需要編寫硬件驅動。
2、軟件開發一(yī)般指在已經安裝了像window或linux的(de)電路闆上編寫應用,軟件開發不直接編寫硬件驅動,因為(wèi)驅動已經 *** 作系統實現了,軟件開發注重邏輯功能的(de)實現,比如(rú)要實現拍照,隻需調用攝像頭驅動即可(kě)。
嵌入式新手入門最佳視(shì)頻教程
原文鏈接:網頁鏈接
我(wǒ)是1999年(nián)上的(de)大學(xué),物理(lǐ)專業。在大一(yī)時,我(wǒ)們(men)班裏普遍彌漫着對未來的(de)不安,不知道(dào)學(xué)習了物理(lǐ)後出去(qù)能做(zuò)什麽。你當下的(de)經曆、當下的(de)學(xué)習,在未來的(de)一(yī)天肯定會影響到你。畢業後我(wǒ)們(men)也各自(zì)找到了自(zì)己的(de)職業:出國(guó)深造轉行(xíng)做(zuò)金融、留校任教做(zuò)科(kē)研、設計芯片、寫程序、創辦公司等等,這一(yī)切都離(lí)不開在校時學(xué)到的(de)基礎技能(數學(xué)、IT、電子(zǐ)電路)、受過煅煉的(de)自(zì)學(xué)能力。
所以,各位正在迷茫的(de)在校生,各位正在嘗試轉行(xíng)的(de)程序員,未來一(yī)定有(yǒu)你的(de)位置,是好是壞取決于你當下的(de)努力與積累。
我(wǒ)不能預言幾年(nián)後什麽行(xíng)業會熱門,也不能保證你照着本文學(xué)習可(kě)以發财。我(wǒ)隻是一(yī)個有(yǒu)十幾年(nián)經驗的(de)程序員,給對編程有(yǒu)興趣的(de)你,提供一(yī)些建議。
1.程序員的(de)三大方向
程序員的(de)方向,一(yī)般可(kě)以分為(wèi)3類:專業領域、業務領域、操作系統領域。你了解它們(men)後,按興趣選擇吧(ba)。
對于專業領域,我(wǒ)提供不了建議。
業務,也就是應用程序,它跟操作系統并不是截然分開的(de):
①開發實體産品時,應用程序寫得好的(de)人,有(yǒu)時候需要操作系統的(de)知識,比如(rú)調度優先級的(de)設置、知道(dào)某些函數可(kě)能會令進程休眠。
②寫應用程序的(de)人進階為(wèi)系統工程師時,他需要從上到下都了解,這時候就需要有(yǒu)操作系統領域的(de)知識了,否則,你怎麽設計整個系統的(de)方案呢(ne)?
③做(zuò)應用程序的(de)人,需要了解行(xíng)業的(de)需求,理(lǐ)解業務的(de)邏輯。所以,當領導的(de)人,多是做(zuò)應用的(de)。一(yī)旦鑽入了某個行(xíng)業,很難換行(xíng)業。
④而操作系統領域,做(zuò)好了這是通殺各行(xíng)業:他隻負責底層系統,在上面開發什麽業務跟他沒關系。這行(xíng)很多是技術宅,行(xíng)業專家。
⑤操作系統和(hé)業務之間并沒有(yǒu)一(yī)個界線。有(yǒu)操作系統經驗,再去(qù)做(zuò)應用,你會對系統知根知底,碰到問題時都有(yǒu)解決思路。有(yǒu)了業務經驗,你再了解一(yī)下操作系統,很快就可(kě)以組成一(yī)個團隊自(zì)立門戶,至少做(zuò)個CTO沒問題。
1.1 專業領域
它又可(kě)以分為(wèi)下面2類。
1.1.1 學(xué)術研究
比如(rú)語音、圖像處理(lǐ)、人工智能,這類工作需要你有(yǒu)比較強的(de)理(lǐ)論知識,我(wǒ)傾向于認為(wèi)這類人是“科(kē)學(xué)家”,他們(men)鑽研多年(nián),很多時候是在做(zuò)學(xué)術研究。
在嵌入式領域,需要把他們(men)的(de)成果用某種算法表達出來,針對某種芯片進行(xíng)優化,這部分工作也許有(yǒu)專人來做(zuò)。
1.1.2 工程實現
也有(yǒu)這樣一(yī)類人,他們(men)懂得這些專業領域的(de)概念,但是沒有(yǒu)深入鑽研。可(kě)以使用各類開源資料實現某個目标,做(zuò)出産品。比如(rú)圖像處理(lǐ),他懂得用opencv裏幾百個複雜函數來實現頭像識别。有(yǒu)時候還可(kě)以根據具體芯片來優化這些函數。
“專業領域”不是我(wǒ)的(de)菜,如(rú)果你要做(zuò)這一(yī)塊,我(wǒ)想最好的(de)入門方法是在學(xué)校學(xué)習研究生、博士課程。
1.2 業務領域
換句話說,就是應用程序,這又可(kě)以分為(wèi)下面2類。
1.2.1 界面顯示
做(zuò)産品當然需要好的(de)界面,但是,不是說它不重要,是沒什麽發展後勁。
現在的(de)熱門詞是Android APP和(hé)IOS APP開發。你不要被Android、IOS兩個詞騙了,它們(men)跟以前的(de)VC、VB是同一(yī)路貨色,隻是、僅僅是一(yī)套GUI控件的(de)實現。
希望沒有(yǒu)冒犯到你,我(wǒ)有(yǒu)理(lǐ)由。
一(yī)個程序需要有(yǒu)GUI界面,但是程序的(de)內(nèi)在邏輯才是核心。Android、IOS的(de)開發工具給我(wǒ)們(men)簡化了GUI的(de)開發,并提供了這些控件的(de)交互機(jī)制,封裝并提供了一(yī)些服務(比如(rú)網絡傳輸)。但是程序內(nèi)部的(de)業務邏輯、對視(shì)頻圖像聲音的(de)處理(lǐ)等等,這才是核心。另外别忘了服務器那邊的(de)後台程序:怎樣更安全地(dì)保存數據、保護客戶的(de)隐私,怎樣處理(lǐ)成千上萬上百萬的(de)并發訪問,等等,這也是核心。
但是,從Android、IOS APP入門入行(xíng),這很快!如(rú)果你是大四,急于找到一(yī)份工作,那麽花上1、2個月去(qù)學(xué)習Android或IOS,應該容易找到工作,畢竟APP的(de)需求永遠是最大的(de),現在這兩門技術還算熱門。在2011、2012年(nián)左右,Android程序員的(de)起薪挺高(gāo),然後開始下滑。Android APP的(de)入門基本隻要1個月,所以懂的(de)人也越來越多。2013、2014年(nián),IOS開發的(de)工資明顯比Android高(gāo)了,于是各類IOS培訓也火曝起來。中華大地(dì)向來不缺速成人才,估計再過一(yī)陣子(zǐ)IOS工程師也是白菜價了。
會Android、IOS隻是基本要求,不信去(qù)51job搜搜Android或IOS,職位要求裏肯定其他要求。
1.2.2 業務邏輯
舉個簡單例子(zǐ),做(zuò)一(yī)個打卡軟件,你需要考慮這些東西:
①正常流程是上班下班時都要打卡
②有(yǒu)人忘記了怎麽辦?作為(wèi)異常記錄在案,推送給管理(lǐ)員
③請假時怎麽處理(lǐ)?
④加班怎麽處理(lǐ)?
對于更複雜的(de)例子(zǐ),視(shì)頻會議系統裏,各個模塊怎麽對接,各類協議怎麽兼容,你不深入這個行(xíng)業,你根本搞不清楚。
應用開發的(de)職位永遠是最多的(de),入門門檻也低(dī)。基本上隻要你會C語言,面試時表現比較得體,一(yī)般公司都會給你機(jī)會。因為(wèi):
①你進公司後,還需要重新培訓你:熟悉它們(men)的(de)業務邏輯。
②你要做(zuò)的(de),基本也就是一(yī)個個模塊,框架都有(yǒu)人給你定好了,你去(qù)填代碼就可(kě)以了。
說點讓你高(gāo)興的(de)事:軟件公司裏,做(zuò)領導的(de)基本都是寫應用程序的(de)(當然還有(yǒu)做(zuò)市(shì)場的(de))。寫應用程序的(de)人,對外可(kě)以研究市(shì)場接待客戶,對內(nèi)可(kě)以管理(lǐ)程序員完成開發,不讓他做(zuò)領導讓誰做(zuò)?
如(rú)果你的(de)志向是寫應用程序,那麽我(wǒ)建議你先練好基本功:數據結構、算法是必備,然後憑興趣選擇數據庫、網絡編程等等進行(xíng)深入鑽研。
最後,選擇你看好的(de)、感興趣的(de)行(xíng)業深耕個10年(nián)吧(ba)。做(zuò)應用開發的(de)人選擇了某個行(xíng)業,後面是很難換行(xíng)業的(de),選行(xíng)很重要!
1.3 操作系統領域
UCOS太簡單,VxWorks太貴太專業,Windows不玩嵌入式了,IOS不開源,所以對于操作系統領域我(wǒ)們(men)也隻能玩Linux了。
在嵌入式領域Linux一(yī)家獨大!
Android呢(ne)?Android跟QT一(yī)樣,都是一(yī)套GUI系統。隻是Google的(de)實力太強了,現在Android無處不在,所以很多時候Linux+Android成了标配。注意,在這裏我(wǒ)們(men)關心的(de)是Android的(de)整個系統、裏面的(de)機(jī)制,而不是學(xué)習幾個API然後開發界面程序。操作系統領域所包含的(de)內(nèi)容,簡單地(dì)說,就是制作出一(yī)台裝好系統的(de)專用“電腦”,可(kě)以分為(wèi):
①為(wèi)産品規劃硬件:
按需求、性能、成本選擇主芯片,搭配周邊外設,交由硬件開發人員設計。
②給單闆制作、安裝操作系統、編寫驅動
③定制維護、升級等系統方案
④還可(kě)能要配置、安裝Android等GUI系統:
⑤為(wèi)應用開發人員配置開發環境
⑥從系統角度解決疑難問題
這個領域,通常被稱為(wèi)“底層系統”或是“驅動開發”。
先解決2個常見誤區:
①這份工作是寫驅動程序嗎?
看看上面羅列的(de)6點,應該說,它包含驅動開發,但遠遠不隻有(yǒu)驅動開發。
②我(wǒ)們(men)還需要寫驅動嗎?不是有(yǒu)原廠嗎?或者隻需要改改就可(kě)以?
經常有(yǒu)人說,芯片原廠都做(zuò)好驅動了,拿過來改改就可(kě)以了。如(rú)果,你的(de)硬件跟原廠的(de)公闆完全一(yī)樣,原廠源碼毫無BUG,不想優化性能、削減成本,不想做(zuò)一(yī)些有(yǒu)特色的(de)産品,那這話是正确的(de)。
但是在這個不創新就是找死的(de)年(nián)代,可(kě)能嗎?!原因有(yǒu)二:
①即使隻是修改代碼,能修改的(de)前提是能理(lǐ)解;能理(lǐ)解的(de)最好煅煉方法是從零寫出若幹驅動程序。
②很多時候,需要你深度定制系統。
以前做(zuò)聯發科(kē)手機(jī)隻需要改改界面就可(kě)以出貨了,現在山寨廠一(yī)批批倒下。大家都使用原廠的(de)方案而不加修改時,最後隻能拼成本。
舉個例子(zǐ),深圳有(yǒu)2家做(zuò)交通攝像頭、監控攝像頭的(de)廠家,他們(men)曾經找我(wǒ)做(zuò)過4個項目:
①改進廠家給的(de)SD卡驅動性能,使用DMA。
②換了Flash型号後,系統經常出問題,需要修改驅動BUG。
③觸摸屏點擊不準,找原因,後來發現是旁路電容導緻的(de)。
④裁減成本,把4片DDR換為(wèi)2片DDR,需要改bootloader對DDR的(de)初始化。
這些項目都很急,搞不定就無法出貨,這時候找原廠?除非你是中興華為(wèi)等大客戶,否則誰理(lǐ)你?
我(wǒ)在中興公司上班時,寫驅動的(de)時間其實是很少的(de),大部分時間是調試:系統調優,上幫APP工程師、下幫硬件工程師查找問題。我(wǒ)們(men)從廠家、網上得到的(de)源碼,很多都是标準的(de),當然可(kě)以直接用。但是在你的(de)産品上也許優化一(yī)下更好。比如(rú)我(wǒ)們(men)可(kě)以把攝像頭驅動和(hé)DMA驅動揉合起來,讓攝像頭的(de)數據直接通過DMA發到DSP去(qù)。我(wǒ)們(men)可(kě)以在軟件和(hé)硬件之間起橋梁作用,對于實體産品,有(yǒu)可(kě)能是軟件出問題也可(kě)能是硬件出問題,一(yī)般是底層系統工程師比較容易找出問題。
當硬件、軟件應用出現問題,他們(men)解決不了時,從底層軟件角度給他們(men)出主意,給他們(men)提供工具。再比如(rú)方案選擇:芯片性能能否達标、可(kě)用的(de)BSP是否完善等等,這隻能由負責整個方案的(de)人來考慮,他必須懂底層。
在操作系統領域,對知識的(de)要求很多:
①懂硬件知識才能看懂電路圖
②英文好會看芯片手冊
③有(yǒu)編寫、移植驅動程序的(de)能力
④對操作系統本身有(yǒu)一(yī)定的(de)理(lǐ)解,才能解決各類疑難問題
⑤理(lǐ)解Android內(nèi)部機(jī)制
⑥懂彙編、C語言、C++、JAVA
它絕對是一(yī)個大坑,沒有(yǒu)興趣、沒有(yǒu)毅力的(de)人慎選。
①這行(xíng)的(de)入門,絕對需要半年(nián)以上,即使全天學(xué)習也要半年(nián)。
②它的(de)職位,絕對比APP的(de)職位少
③并且你沒有(yǒu)1、2年(nián)經驗,招你到公司後一(yī)開始你做(zuò)的(de)還是APP。
優點就是:
①學(xué)好後,行(xíng)業通殺,想換行(xíng)就換行(xíng);想自(zì)己做(zuò)産品就自(zì)己做(zuò)産品。
②相比做(zuò)應用程序的(de)人,不會被經常變動的(de)需求搞得天天加班。
③門檻高(gāo),當然薪水相對就高(gāo)。
操作系統領域,我(wǒ)認為(wèi)适合于這些人:
①硬件工程師想轉軟件工程師,從底層軟件入門會比較好
②單片機(jī)工程師,想升級一(yī)下。會Linux底層的(de)人肯定會單片機(jī),會單片機(jī)的(de)人不一(yī)定會Linux。
③時間充足的(de)學(xué)生:如(rú)果你正讀大二大三,那麽花上半年(nián)學(xué)習嵌入式Linux底層多有(yǒu)益處。
④想掌握整個系統的(de)人,比如(rú)你正在公司裏寫APP,但是想升為(wèi)系統工程師,那麽底層不得不學(xué)。
⑤想自(zì)己創業做(zuò)實體産品的(de)工程師,你有(yǒu)錢的(de)話什麽技術都不用學(xué),但是如(rú)果沒錢又想做(zuò)産品,那麽Linux底層不得不學(xué)。
⑥做(zuò)Linux APP的(de)人,沒錯,他們(men)也要學(xué)習。
這部分人不需要深入,了解個大概就可(kě)以:bootloader是用來啓動內(nèi)核,Linux的(de)文件系統(第1個程序是什麽、做(zuò)什麽、各目錄幹嘛用)、APP跟驅動程序的(de)調用關系、工具鏈,有(yǒu)這些概念就可(kě)以了
本文中,就把操作系統默認為(wèi)Linux,講講怎麽學(xué)習嵌入式Linux+Android系統。
1.4 嵌入式Linux+Android系統包含哪些內(nèi)容
嵌入式Linux系統包含哪些東西?不要急,舉一(yī)個例子(zǐ)你就知道(dào)了。
①電腦一(yī)開機(jī),那些界面是誰顯示的(de)?
是BIOS,它做(zuò)什麽?一(yī)些自(zì)檢,然後從硬盤上讀入windows,并啓動它。
類似的(de),這個BIOS對應于嵌入式Linux裏的(de)bootloader。這個bootloader要去(qù)Flash上讀入Linux內(nèi)核,并啓動它。
②啓動windows的(de)目的(de)是什麽?
當然運行(xíng)應用程序以便上網、聊天什麽的(de)了。
這些上網程序、聊天程序在哪?
在C盤、D盤上。
所以,windows要先識别出C盤、D盤。在Linux下我(wǒ)們(men)稱之為(wèi)根文件系統。
③windows能識别出C盤、D盤,那麽肯定有(yǒu)讀寫硬盤的(de)能力。
這個能力我(wǒ)們(men)稱之為(wèi)驅動程序。當然不僅僅是操作硬盤,還有(yǒu)網卡、USB等等其他硬件。嵌入式Linux能從Flash上讀出并執行(xíng)應用程序,肯定也得有(yǒu)Flash的(de)驅動程序啊,當然也不僅僅是Flash。
簡單地(dì)說,嵌入式LINUX系統裏含有(yǒu)bootloader、內(nèi)核、驅動程序、根文件系統、應用程序這5大塊。而應用程序,我(wǒ)們(men)又可(kě)以分為(wèi):C/C++、Android。
所以,嵌入式Linux+Android系統包含以下6部分內(nèi)容:
①bootloader
②Linux內(nèi)核
③驅動程序
④使用C/C++編寫的(de)應用程序
⑤Android系統本身
⑥Android應用程序
Android跟Linux的(de)聯系實在太大了,它的(de)應用是如(rú)此廣泛,學(xué)習了Linux之後沒有(yǒu)理(lǐ)由停下來不學(xué)習Android。在大多數智能設備中,運行(xíng)的(de)是Linux操作系統;它上面要麽安裝有(yǒu)Android,要麽可(kě)以跟Android手機(jī)互聯。現在,Linux+Android已成标配。
2. 怎麽學(xué)習嵌入式Linux操作系統
本文假設您是零基礎,以實用為(wèi)主,用最快的(de)時間讓你入門;後面也會附上想深入學(xué)習時可(kě)以參考的(de)資料。
①操作系統具有(yǒu)進程管理(lǐ)、存儲管理(lǐ)、文件管理(lǐ)和(hé)設備管理(lǐ)等功能,這些核心功能非常穩定可(kě)靠,基本上不需要我(wǒ)們(men)修改代碼。我(wǒ)們(men)隻需要針對自(zì)己的(de)硬件完善驅動程序
②學(xué)習驅動時必定會涉及其他知識,比如(rú)存儲管理(lǐ)、進程調度。當你深入理(lǐ)解了驅動程序後,也會加深對操作系統其他部分的(de)理(lǐ)解
③Linux內(nèi)核中大部分代碼都是設備驅動程序,可(kě)以認為(wèi)Linux內(nèi)核由各類驅動構成
但是,要成為(wèi)該領域的(de)高(gāo)手,一(yī)定要深入理(lǐ)解Linux操作系統本身,要去(qù)研讀它的(de)源代碼。
在忙完工作,閑暇之餘,可(kě)以看看這些書:
①趙炯的(de)《linux內(nèi)核完全注釋》,這本比較薄,推薦這本。他後來又出了《Linux 內(nèi)核完全剖析》,太厚了,搞不好看了後面就忘記前面了。
②毛德操、胡希明的(de)《LINUX核心源代碼情景分析》,此書分上下冊,巨厚無比。當作字典看即可(kě):想深入理(lǐ)解某方面的(de)知識,就去(qù)看某章(zhāng)節。
③其他好書還有(yǒu)很多,我(wǒ)沒怎麽看,沒有(yǒu)更多建議
基于快速入門,上手工作的(de)目的(de),您先不用看上面的(de)書,先按本文學(xué)習。
2.1 入門路線圖
假設您是零基礎,我(wǒ)們(men)規劃了如(rú)下入門路線圖。前面的(de)知識,是後面知識的(de)基礎,建議按順序學(xué)習。每一(yī)部分,不一(yī)定需要學(xué)得很深入透徹,下面分章(zhāng)節描述。
2.2 學(xué)習驅動程序之前的(de)基礎知識
2.2.1 C語言
隻要是理(lǐ)工科(kē)專業的(de),似乎都會教C語言。我(wǒ)見過很多C語言考試90、100分的(de),一(yī)上機(jī)就傻了,我(wǒ)懷疑他們(men)都沒在電腦上寫過程序。
理(lǐ)論再好,沒有(yǒu)實踐不能幹活的(de)話,公司招你去(qù)幹嘛?
反過來,實踐出真知,學(xué)習C語言,必須練練練、寫寫寫!
當你掌握基本語法後,就可(kě)以在電腦上練習一(yī)些C語言習題了;
當你寫過幾個C程序後,就可(kě)以進入下一(yī)階段的(de)裸機(jī)開發了。
①不需要太深入
作為(wèi)快速入門,隻要你會編寫“Hello, world!”,會寫冒泡排序,會一(yī)些基礎的(de)語法操作,暫時就夠了。
指針操作是重點,多練習;
不需要去(qù)學(xué)習過多的(de)數據結構知識,隻需要掌握鏈表操作,其他不用學(xué)習,比如(rú):隊列、二叉樹等等都不用學(xué);不需要去(qù)學(xué)習任何的(de)函數使用,比如(rú)文件操作、多線程編程、網絡編程等等;這些知識,在編寫Linux應用程序時會用,但是在操作系統特别是驅動學(xué)習時,用不着!
永往直前吧(ba),以後碰到不懂的(de)C語言問題,我(wǒ)們(men)再回過頭來學(xué)習。
在後續的(de)“裸機(jī)開發”中,會讓你繼續練習C語言,那會更實戰化。
C語言是在寫代碼中精進的(de)。
②可(kě)以在Visual Studio下學(xué)習,也可(kě)以在Linux下學(xué)習,後者需要掌握一(yī)些編譯命令,我(wǒ)們(men)暫時沒有(yǒu)提供C語言的(de)教程,找一(yī)本C語言書,網上找找免費的(de)C語言視(shì)頻(主要看怎麽搭建環境),就可(kě)以自(zì)學(xué)了。
2.2.2 PC Linux基本操作:
對于PC Linux,我(wǒ)們(men)推薦使用Ubuntu,在它上面安裝軟件非常簡便。
我(wǒ)們(men)的(de)工作模式通常是這樣:在Windows下閱讀、編寫代碼,然後把代碼上傳到PC Linux去(qù)編譯。實際上,Ubuntu的(de)桌面系統已經很好用了,我(wǒ)們(men)拿到各種智能機(jī)可(kě)以很快上手,相信Ubuntu的(de)桌面系統也可(kě)以讓你很快上手。為(wèi)了提高(gāo)工作效率,我(wǒ)們(men)通常使用命令行(xíng)來操作Ubuntu。
不用擔心,你前期隻需要掌握這幾條命令就可(kě)以了,它們(men)是如(rú)此簡單,我(wǒ)幹脆列出它們(men):
①cd : Change Directory(改變目錄)
cd 目錄名 // 進入某個目錄cd .. // cd “兩個點”:返回上一(yī)級目錄cd - // cd “短(duǎn)橫”:返回上一(yī)次所在目錄
②pwd : Print Work Directory(打印當前目錄 顯示出當前工作目錄的(de)絕對路徑)
③mkdir : Make Directory(創建目錄)
mkdir abc // 創建文件夾abc
mkdir -p a/b/c // 創建文件夾a,再a下創建文件夾b,再在b下創建文件夾c
④rm : Remove(删除目錄或文件)
rm file // 删除名為(wèi)file的(de)文件
rm -rf dir // 删除名為(wèi)dir的(de)目錄
⑤ls : List(列出目錄內(nèi)容)
⑥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(改變文件的(de)屬主,即擁有(yǒu)者)
chown book:book /work -R //對/work目錄及其下所有(yǒu)內(nèi)容,屬主改為(wèi)book用戶,組改為(wèi)book
⑧chmod : Change mode(改變權限),下面的(de)例子(zǐ)很簡單粗暴
chmod 777 /work -R // 對/work目錄及其下所有(yǒu)內(nèi)容,權限改為(wèi)可(kě)讀、可(kě)寫、可(kě)執行(xíng)
⑨vi : Linux下最常用的(de)編輯命令,使用稍微複雜,請自(zì)己搜索用法。
要練習這些命令,你可(kě)以進入Ubuntu桌面系統後,打開終端輸入那些命令;或是用SecureCRT、putty等工具遠程登錄Ubuntu後練習。
2.2.3 硬件知識
我(wǒ)們(men)學(xué)習硬件知識的(de)目的(de)在于能看懂原理(lǐ)圖,看懂通信協議,看懂芯片手冊;不求能設計原理(lǐ)圖,更不求能設計電路闆。
對于正統的(de)方法,你應該這樣學(xué)習:
①學(xué)習《微機(jī)原理(lǐ)》,理(lǐ)解一(yī)個計算機(jī)的(de)組成及各個部件的(de)交互原理(lǐ)。
②學(xué)習《數字電路》,理(lǐ)解各種門電路的(de)原理(lǐ)及使用,還可(kě)以掌握一(yī)些邏輯運算(與、或等)。
③《模拟電路》?好吧(ba),這個不用學(xué),至少我(wǒ)在工作中基本用不到它,現在全忘光了。
就我(wǒ)個人經驗來說,這些課程是有(yǒu)用的(de),但是:
①原理(lǐ)有(yǒu)用,實戰性不強。
比如(rú)《微機(jī)原理(lǐ)》是基于x86系統,跟ARM闆子(zǐ)有(yǒu)很大差别,當然原理(lǐ)相通。
我(wǒ)是在接觸嵌入式編程後,才理(lǐ)解了這些課程。
②每本書都那麽厚,內(nèi)容都很多,學(xué)習時間過長(cháng),自(zì)學(xué)有(yǒu)難度。
針對這些校園教材的(de)不足,并結合實際開發過程中要用到的(de)知識點,我(wǒ)們(men)推出了《學(xué)前班_怎麽看原理(lǐ)圖》的(de)系列視(shì)頻:
學(xué)前班第1課第1節___怎麽看原理(lǐ)圖之GPIO和(hé)門電路.wmv
學(xué)前班第1課第2.1節_怎麽看原理(lǐ)圖之協議類接口之UART.wmv
學(xué)前班第1課第2.2節_怎麽看原理(lǐ)圖之協議類接口之I2C.wmv
學(xué)前班第1課第2.3節_怎麽看原理(lǐ)圖之協議類接口之SPI.wmv
學(xué)前班第1課第2.4節_怎麽看原理(lǐ)圖之協議類接口之NAND Flash.wmv
學(xué)前班第1課第2.5節_怎麽看原理(lǐ)圖之協議類接口之LCD.wmv
學(xué)前班第1課第3節___怎麽看原理(lǐ)圖之內(nèi)存類接口.wmv
學(xué)前班第1課第4.1節_怎麽看原理(lǐ)圖之分析S3C2410開發闆.wmv
學(xué)前班第1課第4.2節_怎麽看原理(lǐ)圖之分析S3C2440開發闆.wmv
學(xué)前班第1課第4.3節_怎麽看原理(lǐ)圖之分析S3C6410開發闆.wmv
即使你隻具備初中物理(lǐ)課的(de)電路知識,我(wǒ)也希望能通過這些視(shì)頻,讓你可(kě)以看懂原理(lǐ)圖,理(lǐ)解一(yī)些常見的(de)通信協議;如(rú)果你想掌握更多的(de)硬件知識,這些視(shì)頻也可(kě)以起個索引作用,讓你知道(dào)缺乏什麽知識。
這些視(shì)頻所講到的(de)硬件知識,将在《裸闆開發》系列視(shì)頻中用到,到時可(kě)以相互對照着看,加深理(lǐ)解。
2.2.4 要不要專門學(xué)習Windows下的(de)單片機(jī)開發
很多學(xué)校都開通了單片機(jī)的(de)課程,很多人都是從51單片機(jī)、AVR單片機(jī),現在比較新的(de)STM32單片機(jī)開始接觸嵌入式領域,并且使用Windows下的(de)開發軟件,比如(rú)keil、MDK等。
問題來了,要不要專門學(xué)習Windows下的(de)單片機(jī)開發?
①如(rú)果這是你們(men)專業的(de)必修課,那就學(xué)吧(ba)
②如(rú)果你的(de)專業跟單片機(jī)密切相關,比如(rú)機(jī)械控制等,那就學(xué)吧(ba)
③如(rú)果你隻是想從單片機(jī)入門,然後學(xué)習更廣闊的(de)嵌入式Linux,那麽放棄在Windows下學(xué)習單片機(jī)吧(ba)!
理(lǐ)由如(rú)下:
①Windows下的(de)單片機(jī)學(xué)習,深度不夠
Windows下有(yǒu)很好的(de)圖形界面單片機(jī)開發軟件,比如(rú)keil、MDK等。
它們(men)封裝了很多技術細節,比如(rú):
你隻會從main函數開始編寫代碼,卻不知道(dào)上電後第1條代碼是怎麽執行(xíng)的(de);
你可(kě)以編寫中斷處理(lǐ)函數,但是卻不知道(dào)它是怎麽被調用的(de);
你不知道(dào)程序怎麽從Flash上被讀入內(nèi)存;
也不知道(dào)內(nèi)存是怎麽劃分使用的(de),不知道(dào)棧在哪、堆在哪;
當你想裁剪程序降低(dī)對Flash、內(nèi)存的(de)使用時,你無從下手;
當你新建一(yī)個文件時,它被自(zì)動加入到工程裏,但是其中的(de)機(jī)理(lǐ)你完全不懂;
等等等。
②基于ARM+Linux裸機(jī)學(xué)習,可(kě)以學(xué)得更深,并且更貼合後續的(de)Linux學(xué)習。實際上它就是Linux下的(de)單片機(jī)學(xué)習,隻是一(yī)切更加原始:所有(yǒu)的(de)代碼需要你自(zì)己來編寫;哪些文件加入工程,需要你自(zì)己來管理(lǐ)。
在工作中,我(wǒ)們(men)當然傾向于使用Windows下更便利的(de)工具,但是在學(xué)習階段,我(wǒ)們(men)更想學(xué)習到程序的(de)本質。
一(yī)切從零編寫代碼、管理(lǐ)代碼,可(kě)以讓我(wǒ)們(men)學(xué)習到更多知識:
你需要了解芯片的(de)上電啓動過程,知道(dào)第1條代碼如(rú)何運行(xíng);
你需要掌握怎麽把程序從Flash上讀入內(nèi)存;
需要理(lǐ)解內(nèi)存怎麽規劃使用,比如(rú)棧在哪,堆在哪;
需要理(lǐ)解代碼重定位;
需要知道(dào)中斷發生後,軟硬件怎麽保護現場、跳到中斷入口、調用中斷程序、恢複現場;
你會知道(dào),main函數不是我(wǒ)們(men)編寫的(de)第1個函數;
你會知道(dào),芯片從上電開始,程序是怎麽被搬運執行(xíng)的(de);
你會知道(dào),函數調用過程中,參數是如(rú)何傳遞的(de);
你會知道(dào),中斷發生時,每一(yī)個寄存器的(de)值都要小心對待;
等等等。
你掌握了ARM+Linux的(de)裸機(jī)開發,再回去(qù)看Windows下的(de)單片機(jī)開發,會驚呼:怎麽那麽簡單!并且你會完全明白這些工具沒有(yǒu)向你展示的(de)技術細節。
驅動程序=Linux驅動程序軟件框架+ARM開發闆硬件操作,我(wǒ)們(men)可(kě)以從簡單的(de)裸機(jī)開發入手,先掌握硬件操作,并且還可(kě)以:
①掌握如(rú)何在PC Linux下編譯程序、把程序燒錄到闆子(zǐ)上并運行(xíng)它
②為(wèi)學(xué)習bootloader打基礎:掌握了各種硬件操作後,後面一(yī)組合就是一(yī)個bootloader
2.2.5 為(wèi)什麽選擇ARM9 S3C2440開發闆,而不是其他性能更好的(de)?
有(yǒu)一(yī)個錯誤的(de)概念:S3C2440過時了、ARM9過時了。
這是不對的(de),如(rú)果你是軟件工程師,無論是ARM9、ARM11、A8還是A9,對我(wǒ)們(men)來說是沒有(yǒu)差别的(de)。
一(yī)款芯片,上面有(yǒu)CPU,還有(yǒu)衆多的(de)片上設備(比如(rú)UART、USB、LCD控制器)。我(wǒ)們(men)寫程序時,并不涉及CPU,隻是去(qù)操作那些片上設備。
所以:差别在于片上設備,不在于CPU核;差别在于寄存器操作不一(yī)樣。
因為(wèi)我(wǒ)們(men)寫驅動并不涉及CPU的(de)核心,隻是操作CPU之外的(de)設備,隻是讀寫這些設備的(de)寄存器。
之所以推薦S3C2440,是因為(wèi)它的(de)Linux學(xué)習資料最豐富,并有(yǒu)配套的(de)第1、2期視(shì)頻。
2.2.6 怎麽學(xué)習ARM+Linux的(de)裸機(jī)開發
學(xué)習裸機(jī)開發的(de)目的(de)有(yǒu)兩個:
①掌握裸機(jī)程序的(de)結構,為(wèi)後續的(de)u-boot作準備
②練習硬件知識,即:怎麽看原理(lǐ)圖、芯片手冊,怎麽寫代碼來操作硬件
後面的(de)u-boot可(kě)以認為(wèi)是裸機(jī)程序的(de)集合,我(wǒ)們(men)在裸機(jī)開發中逐個掌握各個部件,再集合起來就可(kě)以得到一(yī)個u-boot了。
後續的(de)驅動開發,也涉及硬件操作,你可(kě)以在裸機(jī)開發中學(xué)習硬件知識。
注意:如(rú)果你并不關心裸機(jī)的(de)程序結構,不關心bootloader的(de)實現,這部分是可(kě)以先略過的(de)。在後面的(de)驅動視(shì)頻中,我(wǒ)們(men)也會重新講解所涉及的(de)硬件知識。
推薦兩本書:杜春蕾的(de)《ARM體系結構與編程》,韋東山的(de)《嵌入式Linux應用開發完全手冊》。後者也許是國(guó)內(nèi)第1本涉及在PC Linux環境下開發的(de)ARM裸機(jī)程序的(de)書,如(rú)果我(wǒ)說錯了,請原諒我(wǒ)書讀得少。
對于裸機(jī)開發,我(wǒ)們(men)提供有(yǒu)2部分視(shì)頻:
①環境搭建
第0課第1節_剛接觸開發闆之接口接線.wmv
第0課第2節_剛接觸開發闆之燒寫裸闆程序.wmv
第0課第3節_剛接觸開發闆之重燒整個系統.wmv
第0課第4節_剛接觸開發闆之使用vmwae和(hé)預先做(zuò)好的(de)ubuntu.wmv
第0課第5節_剛接觸開發闆之u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第6節_剛接觸開發闆之內(nèi)核u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第7節_剛接觸開發闆之制作根文件系統及初試驅動.wmv
第0課第8節_在TQ2440,MINI2440上搭建視(shì)頻所用系統.wmv
第0課第9節_win7下不能使用dnw燒寫的(de)替代方法.wmv
.................
原文鏈接:網頁鏈接
關于嵌入式軟件開發視(shì)頻教程和(hé)嵌入式軟件的(de)開發過程與架構的(de)介紹到此就結束了,不知道(dào)你從中找到你需要的(de)信息了嗎 ?如(rú)果你還想了解更多這方面的(de)信息,記得收藏關注本站。
-
上一(yī)篇
遊戲小程序開發教程(遊戲小程序制作流程) -
下一(yī)篇
小程序開發平台工具(小程序開發工具叫什麽)