新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一只老鳥的嵌入式ARM學(xué)習(xí)心得

一只老鳥的嵌入式ARM學(xué)習(xí)心得

作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
本人大學(xué)學(xué)的是電子信息科學(xué)與技術(shù)專業(yè),其實這個專業(yè)和嵌入式沒有多大的關(guān)系,要說有關(guān)系就是簡單的講了下C語言語法,學(xué)完之后還不知道什么是C語言,只記住了,char,int,string等占幾個字節(jié),if,for,while循環(huán)什么的,感覺也就能算一些小學(xué)就會的題目,全國計算機(jī)等級二級也就糊涂的過了。

我這個專業(yè)沒學(xué)過C++,一開始不知道什么是向?qū)ο?,什么叫面向過程,這可能讓大家笑話了。不過這說的是實話,大學(xué)的時候比較喜歡動手,喜歡硬件方面的東西,也喜歡看書。在大一的時候就聽學(xué)長說,單片機(jī)很難學(xué),在沒事的時候就從圖書管借了本關(guān)于51的書,一開始還真是不怎么懂,然后硬著頭皮去看,當(dāng)我把51的結(jié)構(gòu)看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結(jié)構(gòu)圖默畫一遍,然后再把各個寄存器功能寫一下,各個功能口的結(jié)構(gòu)也畫一遍,然后就不覺得51有什么難了。其實有些時候不是這個東西你不會,而是在不會的時候自己先告訴自己這個太難了,自己先放棄了。我們學(xué)習(xí)51芯片,是為了以后的打基礎(chǔ),知道是怎么通過配置寄存器來實現(xiàn)功能。

本文引用地址:http://m.butianyuan.cn/article/201611/319855.htm

大二下學(xué)期的時候,我們開了51的課,這個課幾乎就沒怎么去,因為我認(rèn)為沒有必要去聽自己會的東西了。后來聽別人說avr的資源會比51的豐富的很多,所以就想試試,看看有什么難的,就從網(wǎng)上買了本馬潮老師《AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實踐》,一邊看書,一邊想自己畫一個板了,一開始想實現(xiàn)一個點(diǎn)陣屏,實現(xiàn)滾動效果,后來想想做個板也花不少錢呢,為什么不多加一些功能呢,還能多學(xué)到些知識,所以就加了溫感,紅外,鐵電存儲器等并把所有的擴(kuò)展口都擴(kuò)展了出來,備以后用,那時還挺自豪的呢,同學(xué)們都很羨慕,不過現(xiàn)在想想其實也沒什么了。

大學(xué)也聽說過嵌入式這個詞,不過不太明白是什么意思,09年的時候從網(wǎng)上找到中嵌視頻,有四張DVD(大約13G),下載下來后,從頭到尾的看了一遍,沒什么印象,只記得講一些不知所云的函數(shù),然后莫名其妙的講怎么使用那個44b0的開發(fā)板,不過聽完了,還是有很大收獲的,就有一種想裝一個linux的沖動,我是大二下學(xué)期才有的自己電腦,不過電腦的配置比較低,1g內(nèi)存,跑虛擬機(jī)就像個蝸牛,所以就想著怎么才能裝個linux,自己用XP習(xí)慣了,如果全換了又舍不得,那時從書上知道linux的文件系統(tǒng)和windows不一樣,只有一個根分區(qū),所以也害怕一裝linux全盤就被格式化了,不過最后還是欲望戰(zhàn)勝了擔(dān)心,買了張redhat9的光盤,小心的裝這個系統(tǒng),里邊的英文也不是太難,還是知道大概意思的,所以一步步的裝,最后裝到我的硬盤的最后空間,重新啟動,竟可以選擇進(jìn)入哪一個系統(tǒng)了,從這之后,自己就不害怕怎么裝系統(tǒng)了,應(yīng)了那句言,紙上得來終覺淺,絕知此事要躬行。所以我認(rèn)為,買一個開發(fā)板是完全有必要的,拿到實物操作一下就不會感覺太抽象了。

后來也想學(xué)學(xué)arm,但不知道arm是什么東西,所以就買了本《從51到arm》,講的是關(guān)于arm的大體結(jié)構(gòu),看完后感覺,原來arm就是一個速度更快,接口更豐富的單片機(jī)啊。

如果想做linux設(shè)備驅(qū)動的同學(xué)應(yīng)該對arm硬件有一些了解。如果對驅(qū)動不感興趣,完全沒有必要去看。交叉編譯器會幫我們做好這些事情,他比我們更了解arm結(jié)構(gòu)。

大三下學(xué)期開始準(zhǔn)備考研了,所以自己這些興趣就先放下了,報的北郵的信通學(xué)院通信專業(yè),當(dāng)時就是想一定要上個好學(xué)校好專業(yè),也沒想太多,結(jié)果考了的成績差了點(diǎn),沒有被錄取,也不想調(diào)劑一個二流的學(xué)校,然后就參加工作了,工作中每天都用的到開發(fā)板,當(dāng)我看到一個小板上還可以跑系統(tǒng)的時候感覺很不可思議,以為要很大工程。后來邊工作邊學(xué)習(xí),每天都要看電腦看到眼發(fā)疼,晚上也都差不多十二點(diǎn)時才睡覺。感覺到累,不過也感覺到自己在進(jìn)步。

閑話有點(diǎn)多了,說了很多都是自己大學(xué)那點(diǎn)破事。

聽很多的初學(xué)者說不知道從哪里開始,學(xué)習(xí)嵌入都要學(xué)哪些東西,從網(wǎng)上搜了一下,一大堆的東西要學(xué),一下就推薦十幾本書,說看完這本書怎么怎么樣,看完那本書怎么怎么樣,一下子就給初學(xué)者給嚇住了,其實完全沒必要把網(wǎng)上的那些東西全部看一遍,那樣又費(fèi)時,又感覺工程太大,讓初學(xué)者沒有信心去把每一種都看完。網(wǎng)上說的些方面都要知道,不一定全部都掌握,我們可以退成求其次,每一個都知道一些,當(dāng)然會的越多越好。今天學(xué)點(diǎn)這個明天學(xué)點(diǎn)那,換著樣來也不會覺得煩。而且還能感覺到每天都有收獲。

下面給嵌入式初學(xué)者一些自己的我個人建議。

1、嵌入式涉及到很多的基礎(chǔ)知識

c語言,關(guān)于C語言要知道基本的語法,什么是結(jié)構(gòu)體,什么是共用體,有什么區(qū)別,不用強(qiáng)記一些二級考的東西,因在實際中用的很少。

c++要知道什么是類,怎么定義,繼承,接口,要深刻理解,當(dāng)然基本語法也是必不可少的。

操作系統(tǒng)原理也應(yīng)該知道基本的原理的,我記得我大學(xué)沒這個課還是去電信學(xué)院蹭別的專業(yè)的課呢,后來學(xué)習(xí)發(fā)現(xiàn)很多的東西都是在這個課上學(xué)到的。什么時間片啊,任務(wù)調(diào)度啊,都是在那里知道的。

Linux基本命令的使用(vi編輯器必須會用,因為在終端改文件的時候只能用這個),我們現(xiàn)在很多的人都習(xí)慣用鼠標(biāo)了,很少用到命令,我們學(xué)習(xí)嵌入linux可要改改這個習(xí)慣了,linux用命令操作一是效率高,二是功能非常強(qiáng)大,遠(yuǎn)非圖形界面能比的了的,其實我們用圖形界面的操作都要轉(zhuǎn)化為命令傳給硬件的。

Linux文件系統(tǒng)的管理要清楚,哪個目錄存放是什么東西,有什么用,文件權(quán)限管理等

Shell編程也要了解一些,在這給大家推薦一個教程,周朝劍的 shell編程,也就七八講吧,講的很全面。初學(xué)者看前4講就可以了。

Linux設(shè)備驅(qū)動的架構(gòu)要了解,初學(xué)者可以以米爾的MYD-AM335X開發(fā)板上的led驅(qū)動分析一下,結(jié)合原理圖和linux設(shè)備驅(qū)動相關(guān)書籍把每一行代碼都分析明白。關(guān)于驅(qū)動給大家推薦一本書《LINUX設(shè)備驅(qū)動程序》中國電力出版社出版的,很經(jīng)典的,初學(xué)者看可能看不太明白,不過要堅持看,最次也得把前6章看完了。

2、看書不要希望一次就會

一次就明白是什么意思,也不要死記硬背,看不明白也沒關(guān)系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀linux內(nèi)核源代碼,看一些自己把頭撞破也想不明白的事,會打擊初學(xué)者的積極性,要循序漸進(jìn),今天學(xué)個做個led,明天做個串口,后天說不定就做硬件編解碼了。

3、你可以不接受培訓(xùn),但是不能不買開發(fā)板

如果你想學(xué)習(xí)嵌入式一定要買塊學(xué)習(xí)板,現(xiàn)在的開發(fā)板很便宜了,給我們初學(xué)者減輕了很多經(jīng)濟(jì)負(fù)擔(dān)??丛俣嗟囊曨l,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學(xué)到東西,記得我第一次寫led的驅(qū)動,想自己試一下,網(wǎng)上也有人寫過相關(guān)的代碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點(diǎn)亮。所以不要眼高手低。

還有關(guān)于培訓(xùn),現(xiàn)在的培訓(xùn)機(jī)構(gòu)很多,講的也不錯,老師也很好,但是有一個問題,太集中了,而且學(xué)生動手的機(jī)會也不太多,記得我們公司還招了一個在北京某個培訓(xùn)機(jī)構(gòu)培訓(xùn)半年的員工呢,花了一萬多,來了之后也沒感覺有多高,問他都學(xué)了什么,也就是我前邊說的那些基礎(chǔ)知識,很多的東西還是不知道的,照著書弄個helloworld模塊驅(qū)動兩天沒搞定。不是培訓(xùn)不好,但我個人見解效果并不是很好。記住:只有自己動手做過的東西才是自己的。

現(xiàn)在買一塊開發(fā)板很便宜,飛凌的OK6410的開發(fā)板就不錯,源碼完全開放,而且資料也很豐富,完全能滿足初學(xué)者學(xué)習(xí)用,有人說友善的板子也不錯,我個人覺得友善的板子不錯,但是不適合初學(xué)者,因為他的很多的東西是不給代碼的,用過友善的板子的同學(xué)經(jīng)常有這樣的痛苦,想學(xué)一個東西,去找他的代碼的時候,卻找不到,很多友善提供的代碼中很多的都是封裝好的,只提供給客戶一個庫,初學(xué)者想要找代碼的時候就不知道怎么辦了。

4、不要好高騖遠(yuǎn),要腳踏實地

對于初學(xué)者,還有一點(diǎn)小建議,我們拿到一個開發(fā)板,很興奮也很激動,想法自然也很多,想用開發(fā)板實現(xiàn)自己的這個想法,實現(xiàn)那個想法,然后又不知道從何下手,然后就去論壇中發(fā)一個貼,“那個什么什么怎么實現(xiàn)啊,哪位大俠能詳細(xì)說一下啊,跪求!!”然后等著別人去回復(fù)。見沒人回復(fù)就抱怨。有想法是好的,我們要實現(xiàn)自己的想法也是有前提的,首先,我們對這部分知識了解嗎?如果不了解就去google一下(最好別用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到問題,再去發(fā)貼問,這樣也顯得咱們有水平。比如自己連串口是什么都不太清楚呢,就問串口通信怎么做啊,就是人家把代碼給咱,咱也不明白是怎么回事啊。

5、多看代碼,多寫代碼

見多識廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來。自己平時也要多寫代碼,多練習(xí)(這一點(diǎn)我做的不好,寫的少)。

寫完已經(jīng)晚上兩點(diǎn)了,思路有些亂,有些也是個人的見解,在有些人看來可能是錯誤的,每個人有每個人的學(xué)習(xí)方法,但是我們的目的只有一個——希望我們學(xué)到更多的知識。



評論


技術(shù)專區(qū)

關(guān)閉