<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/319855.htm

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Shell編程也要了解一些,在這給大家推薦一個(gè)教程,周朝劍的 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é)者看可能看不太明白,不過要堅(jiān)持看,最次也得把前6章看完了。

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

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

          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)的代碼,可是自己一試,就出了好多的問題,那個(gè)led弄了我一天才把led燈點(diǎn)亮。所以不要眼高手低。

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

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

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

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

          5、多看代碼,多寫代碼

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

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



          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();