當前位置:學問君>學習教育>學習方法>

ARM的入門學習方法

學問君 人氣:2.23W

篇一:ARM的學習方法

ARM的入門學習方法

如何學習嵌入式

作者:phantom 時間:2009-8-6 文章來源:來自網絡

先講一講需要掌握的基本技能。

答:

(1)C語言是所有編程語言中的王者(單片機、DSP、類似ARM的種種芯片的編程都可以用C語言搞定),因此必須非常熟練的掌握,大學本科教學中的C語言是遠遠不夠的,有兩個非常重要的內容沒有講“檔案的操作”和“IO的操作”,其中“IO的操作”是必須掌握的技術

(2)操作系統原理,是必需的,如果你是計算機專業畢業那也就無所謂了,如果是非計算機專業的就必須找一本比較淺顯的計算機原理書籍看一看,把啥叫“進程”“線程”“系統調度”等等基本問題搞清楚

(3)計算機原理應該指的是x86的微機原理吧,但是在嵌入式領域x86處理器只是冰山的一小角,還有很多叫做ARM、XScale、SuperH、68K、PowerPC等等等等,無數的其它處理器,有一些我也叫不上名字。但是,X86總規是基礎,萬變不離其宗,深入學一下還是非常有必要的(尤其對於想要學習Linux的朋友,想要讀核的話就必須要深入學習以下x86系統架構)。

如何學習嵌入式開發呢?

答:

大家都知道這個領域人才非常稀缺,但是,學習週期比較長,需要的知識面也比較廣,所以不要心急。先看看下面的幾個問題,瞭解一下你現在的知識水平:

(1)你用VC++或BC++編寫過應用程序嗎?

如果編寫過應用程序,那就做好了,如果你沒有做過上層應用程序,那麼又如何能夠去理解更深的更高深的底層程序呢,那就趕快補上這一課吧!!!

(2)你曾經編寫過單片機或者DSP的程序嗎?

我們把類似51單片機或者DSP上面跑的沒有操作系統的程序叫做“代碼裸奔”,我們也都曾經編寫過裸奔的代碼。因爲有的時候比如我們編寫一個簡單的程序,就只需要點幾個LED檢測幾個按鈕的狀態,那麼“代碼裸奔”弄一個while(1)的死循環就足夠了,殺雞何必用牛刀。

編寫這種裸奔的代碼,也是學習嵌入式的必由之路,因爲,你將會用C語言去對寄存器寫控制字,這就是以

後寫驅動程序的基礎呀。

另外需要說明的是,從概念上說,“代碼裸奔”也已經屬於嵌入式開發的範疇。

(3)到了最後一個階段,你就可以開始找一個方向(uCos、Linux、VxWorks、WindowsCE、Palm等等等等),學習有操作系統的嵌入式開發了。

嵌入式操作系統的種類也是無法計數的,有一些我連名字也叫不上來,太多太多了。但是值得慶幸的是,這些操作系統大同小異,相通的。

你正在在讀書,建議學習uCos操作系統(看邵貝貝的《UC/OS操作系統》);如果你不喜歡這麼Basic的操作系統,VxWorks也是一個不錯的選擇,VxWorks進入中國已經好多年了,國內出版的書也都很好,尤其推薦陳智育的《VxWorks程序開發實踐》和周啓平的《VxWorks下設備驅動程序及BSP開發指南》;Linux簡直是惡夢,但是如果你能夠走出這個噩夢,你也就成了高手了。

嵌入式系統的學習途徑與基本方法

作者:phantom 時間:2009-8-6 文章來源:來自網絡

作爲一家之言,想對廣大渴望學習嵌入式系統的學子提出幾點建議:

(1)嵌入式系統軟件硬件密切相關,一定要打好軟件硬件基礎。其實,只要找到正確的方法,加上努力,任何理工科學生,甚至非理工科學生,都能學好嵌入式系統。

(2)選擇一個芯片及硬件評估板(入門芯片最好是簡單一點,例如8位MCU)、選擇一本好書(最好有規範的例子)、找一位好老師(最好是有經驗且熱心的)。硬件評估板的價格一定要在1000元以下,不要太貴,最好能有自己動手的空間。不花一分硬件錢,要想學好嵌入式系統不實際。因爲,這是實踐性很強的學科。好書,可以使你少走彎路,不會被誤導,要知道有的書是會使人進入學習誤區的。好老師也可以是做過一些實際項目的學長(一定要找做過幾個成功項目的學長或老師做指導,否則,經驗不足也可能誤導),有教師指導,學習進程會加快。(人工智能學科裏有個術語叫無教師指導學習模式與有教師指導學習模式,無有教師指導學習模式比有教師指導學習模式複雜許多)。

(3)許多人怕硬件,其實嵌入式系統硬件比電子線路好學多了。只要深入理解MCU的硬件最小系統,對I/O口、串行通信、鍵盤、LED、LCD、SPI、I2C、PWM、A/D(包括一些傳感器)、D/A等逐個實驗理解,逐步實踐。再透過自己做一個實際的小系統,底層硬件基礎就有了。各個硬件模組驅動程序的編寫是嵌入式系統的必備基礎。學習嵌入式系統的初期,這個過程是必須的。

(4)至於嵌入式實時操作系統RTOS,一定不要一開始就學,這樣會走很多彎路,也會使你對嵌入式系統感到畏懼。等你軟件硬件基礎打好了,再學習就感到容易理解。實際上,衆多嵌入式應用,並不一定需要操作系統。也可以根據實際項目需要再學習。一定不要被一些嵌入式實時操作系統移植培訓班宣傳所誤導,而忽視實際嵌入式系統軟件硬件基礎知識的學習。

(5)要避免片面地單純從“電子”或“計算機軟件”角度認識嵌入式系統,嵌入式系統與硬件緊密相關,是軟件與硬件的綜合體,沒有對硬件的理解就不可能寫好嵌入式軟件,同樣沒有對軟件的理解也不可能設計好嵌入式硬件。因此,要逐步從MCU的最小系統開始,一點一點理解硬件原理及底層硬件驅動編程方法。要透過規範的例子,理解軟件工程封裝、可複用等思想。透過規範編程,積累底層構件(Component),也就是一個一個模組,但是要封裝得比較好,可複用。

(6)注重實踐。這裏我把實踐與實驗區別開來,實驗主要是他人的程序或驗證性的,目的是學習基礎知識。實踐是自己設計,有具體的“產品”目標。如果你能花500元左右自己做一個具有一定功能的小產品,就可以說接近入門了。

(7)關於入門芯片的選擇。一定不要選太複雜,不能超越學習過程。不要一下子學習幾種芯片,可以透過一個芯片入門並具有一個實踐經驗後,根據需要選擇芯片。注意,選擇的是微控制器(MCU),而不是微處理器(MPU)。不同廠家生產的MCU穩定性差異巨大。微處理器已經不直接用於嵌入式系統的最終產品設計,不要誤解。

(8)關於操作系統的選擇。可以等到你具有一定實踐後,選擇一個簡單容易理解原理的進行學習,不要一開始就學習幾種操作系統,理解了基本原理,實踐中確有實際需要再學習也不遲。人總是要不斷學習的。

(9)關於彙編與C語言的取捨。隨着MCU對C編譯的優化支援,對於彙編可以只瞭解幾個必須的語句,直接使用C語言編程。但必須透過第一個程序理解芯片初始化過程、中斷機制、程序存儲情況等區別於PC機程序的內容。

ARM入門學習方法

作者:phantom 時間:2009-8-6 文章來源:來自網絡

1、抓住51開發ARM

這幾個月來我一直都爬在51的問題,自己都有一點笑自己了,用了4個月的時間,來鞏固51的原理和程序,

還好我自己算是走過來了,自己笨,身邊的高才生又看不上51的原理,他們都比較“牛”,說51過時了,你問那個做什麼???我比較鬱悶!過時嗎?我有一點懷疑?

他們不願意說有他們自己的理由,沒有人強求,靠自己好了。

我自己個人的觀點:51是一個基礎,而且還很重要,這是再我看了ARM之後感覺到的。它可以加速你的ARM學習速度,真得!不相信你試一試好了。

凡是要求一個速度、效率,不要做一些無用功,抓緊身邊的每一個一分鐘,人是活的,東西(知識、書)是死得,想要做的事情因此就簡單了。

2、我在網上看到了一篇很不錯的ARM文章,粘貼過來,爲了和像我一樣在很少有人幫助的情況下,自學ARM 的難兄難弟們。

“ARM怎麼入門”。我不是高手,仍然是菜鳥。

但是回想起自己當時的迷茫,特意寫了這篇東西,當作給和我一樣的兄弟姐妹的幫助吧。問這個問題的人多半不是已經工作的工程師,而是和我一樣是學生,所以這篇筆記就把看家當成我一樣的菜鳥,高手勿怪。 首先聲明:本人還沒有找工作,事實上處於研究生剛畢業,還沒開始找工作的空閒時間,44B0只是興趣所在,打發時間。

所有看法完全是自己的感受,不代表任何他人。錯了的觀點各位幫我糾正。再次補充:很多朋友看了上面的話就問我爲什麼研究生畢業了還不找工作:)說是打發時間,其實是因爲研究生的時候帶了一個項目,申請提前畢業以後項目還有塊尾巴,答應導師把項目做完再走:)就這麼簡單。男人總點負點責,呵呵 以下問題常被問到,我就想到哪說到哪吧。

一 首先說說ARM的發展

可以用一片大好來形容,翻開各個公司的網站,招聘裏面嵌入式佔據了大半工程師職位。

廣義的嵌入式無非幾種:傳統的什麼51、AVR、PIC稱做嵌入式微控制器;ARM是嵌入式微處理器;DSP;FPGA。

客觀的講,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。

DSP因爲數字處理與通信領域的空前發展而火暴,小到MP3 射象頭,大到我們軍品裏的控制器,應用面很

廣。

FPGA的兄弟一般做ANSIC(特殊芯片設計,好象是這麼翻譯的)。而ARM單純說來並不比一個單片機強多少,但是它的獨特就在於不斷下降的價格和提升的性能。這完全依靠於ARM公司的戰略,厲害!!很佩服他們的戰略眼光!!

值得注意的是:在找工作中,企業(著名的,小的不算)對單純的ARM硬件開發工程師並不比單片機重視,很少有大企業的職位裏寫“從事過ARM開發優先”。寫的多的是什麼?“嵌入式LINUX”到這相信大家看出來了吧,需要的是硬件中的軟件。

二 ARM是硬件還是軟件

很難說,ARM是硬件,LINUX是軟件。ARM的硬件多半已經模組化了,像我這樣把板子改成這樣的就算動的多的了,這同樣是ARM公司的戰略,再次佩服。

實際中的LINUX的'開發工作更多,更耗時。從這方面說ARM應該算是軟件了。

在找工作中更是這樣,舉個例子,聯想裏和ARM最接近的是“BIOS工程師”是軟件,MOTO裏接近的是嵌入式LINUX工程師是軟件。而其他很多公司把嵌入式產品開發歸爲硬件。所以,不要討論這個,好好玩轉自己的板子纔是關鍵。實在不爽你就把自己叫“嵌入式開發工程師”

三 要不要買開發板 買哪家

我的答案是“在你個人的學習方法”,但是如果看家是需要看這篇筆記的水平,個人推薦還是買現成的。

1.買

買板子可以把注意力集中在軟件開發上,軟件開發(尤其是驅動)可以不必擔心自己硬件上的問題,我就是以便調試一邊寫驅動和程序,每次寫驅動前就要先確認硬件沒問題。另外,買板子更省錢和時間,我自己做的板子,原理圖PCB花了2周以上!製版又15天,回來以後焊接44B0 160個腳!那叫一個麻煩~~花了多少錢呢?2層板,製版費就300塊!當然我把接口都外引了,還做了個20X18的LCD背板,板子比較大。總體下來元件+LCD屏+PCB=11XX塊!夠2410的了。

再有就是買的資料相對來說比較全,但是不要指望有技術支援!都是騙人的,賣你之後就不會理你。

篇二:ARM入門學習方法

ARM入門學習方法

作者:phantom 時間:2009-8-6 文章來源:來自網絡

1、抓住51開發ARM

這幾個月來我一直都爬在51的問題,自己都有一點笑自己了,用了4個月的時間,來鞏固51的原理和程序,還好我自己算是走過來了,自己笨,身邊的高才生又看不上51的原理,他們都比較“牛”,說51過時了,你問那個做什麼???我比較鬱悶!過時嗎?我有一點懷疑? 他們不願意說有他們自己的理由,沒有人強求,靠自己好了。

我自己個人的觀點:51是一個基礎,而且還很重要,這是再我看了ARM之後感覺到的。它可以加速你的ARM學習速度,真得!不相信你試一試好了。

凡是要求一個速度、效率,不要做一些無用功,抓緊身邊的每一個一分鐘,人是活的,東西(知識、書)是死得,想要做的事情因此就簡單了。

2、我在網上看到了一篇很不錯的ARM文章,粘貼過來,爲了和像我一樣在很少有人幫助的情況下,自學ARM 的難兄難弟們。

“ARM怎麼入門”。我不是高手,仍然是菜鳥。

但是回想起自己當時的迷茫,特意寫了這篇東西,當作給和我一樣的兄弟姐妹的幫助吧。問這個問題的人多半不是已經工作的工程師,而是和我一樣是學生,所以這篇筆記就把看家當成我一樣的菜鳥,高手勿怪。

首先聲明:本人還沒有找工作,事實上處於研究生剛畢業,還沒開始找工作的空閒時間,44B0只是興趣所在,打發時間。

所有看法完全是自己的感受,不代表任何他人。錯了的觀點各位幫我糾正。再次補充:很多朋友看了上面的話就問我爲什麼研究生畢業了還不找工作:)說是打發時間,其實是因爲研究生的時候帶了一個項目,申請提前畢業以後項目還有塊尾巴,答應導師把項目做完再走:)就這麼簡單。男人總點負點責,呵呵

以下問題常被問到,我就想到哪說到哪吧。

 一 首先說說ARM的發展

可以用一片大好來形容,翻開各個公司的網站,招聘裏面嵌入式佔據了大半工程師職位。

廣義的嵌入式無非幾種:傳統的什麼51、AVR、PIC稱做嵌入式微控制器;ARM是嵌入式微處理器;DSP;FPGA。

客觀的講,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。

DSP因爲數字處理與通信領域的空前發展而火暴,小到MP3 射象頭,大到我們軍品裏的控制器,應用面很廣。

FPGA的兄弟一般做ANSIC(特殊芯片設計,好象是這麼翻譯的)。而ARM單純說來並不比一個單片機強多少,但是它的獨特就在於不斷下降的價格和提升的性能。這完全依靠於ARM公司的戰略,厲害!!很佩服他們的戰略眼光!!

值得注意的是:在找工作中,企業(著名的,小的不算)對單純的ARM硬件開發工程師並不比單片機重視,很少有大企業的職位裏寫“從事過ARM開發優先”。寫的多的是什麼?“嵌入式LINUX”到這相信大家看出來了吧,需要的是硬件中的軟件。

 二 ARM是硬件還是軟件

很難說,ARM是硬件,LINUX是軟件。ARM的硬件多半已經模組化了,像我這樣把板子改成這樣的就算動的多的了,這同樣是ARM公司的戰略,再次佩服。

實際中的LINUX的開發工作更多,更耗時。從這方面說ARM應該算是軟件了。

在找工作中更是這樣,舉個例子,聯想裏和ARM最接近的是“BIOS工程師”是軟件,MOTO裏接近的是嵌入式LINUX工程師是軟件。而其他很多公司把嵌入式產品開發歸爲硬件。所以,不要討論這個,好好玩轉自己的板子纔是關鍵。實在不爽你就把自己叫“嵌入式開發工程師”

三 要不要買開發板 買哪家

我的答案是“在你個人的學習方法”,但是如果看家是需要看這篇筆記的水平,個人推薦還是買現成的。

1.買

買板子可以把注意力集中在軟件開發上,軟件開發(尤其是驅動)可以不必擔心自己硬件上的問題,我就是以便調試一邊寫驅動和程序,每次寫驅動前就要先確認硬件沒問題。另外,買板子更省錢和時間,我自己做的板子,原理圖PCB花了2周以上!製版又15天,回來以後焊接44B0 160個腳!那叫一個麻煩~~花了多少錢呢?2層板,製版費就300塊!當然我把接口都外引了,還做了個20X18的LCD背板,板子比較大。總

體下來元件+LCD屏+PCB=11XX塊!夠2410的了。

再有就是買的資料相對來說比較全,但是不要指望有技術支援!都是騙人的,賣你之後就不會理你。

2.做

自己做可以更瞭解底層硬件,可以按照自己的要求加東西,比如我就加了GPS模組、 GPRS模組、SD卡模組,擴了個IIC的35個鍵子的鍵盤、把LCD接口按照買的LCD改裝了,可以用FPC線直接連接。做的很爽的。玩一把嗎。

當然,你可以有策略的做,比如像我一樣,把RAM和ROM,網絡都保持和某現成的板子一樣,這樣他們的資料你就可以拿過來直接用,給自己留個退路。其他的如SD了什麼的自己做。都達到了~~就是費錢,費時間。

再有就是給做的朋友幾點建議:儘量拿到現成的板子,儘量多蒐集其他板子的全套資料,一定要拿到一張沒問題的原理圖。

網上流傳的原理圖多數是龔俊03年畫的,再這裏對龔俊表達一下我的敬意!!牛人!

但是那個圖有個小BUG,我指的是03版的,後來的沒這問題了。8019那地址線和地址有問題。還有人仿照他的PDF圖畫的SCH,更是漏洞百出!譴責!順便譴責把龔俊板子偷賣的人。

3.買哪家

個人感覺分3類吧

1)首先是ZLG的,資料非常的全,感覺他是真正想教你怎麼開發ARM,而不是像有的公司自己技術都沒做好就做個板子出來賣錢。但是最大的不利就是價格太貴!而且主要是PHILIP的,貨源比較麻煩~~可能有人說21XX系列的不貴啊,那是總線不外擴的,只能跑UCOS,不能跑UCLINUX。但是說是話,21XX系列纔是ARM7的價格性能結合點。ARM7最適合做工業控制,ARM普及,銷量都是怎麼來的?都是ARM7來的,而44B0是典型的商業片子。但是,這裏如果你看中的是爲工作做準備,還是選能跑UCLINUX的吧。

但是仍然作爲第一個推薦,因爲菜鳥時期,合適的資料太重要了!!在這裏被ZLG的務實精神感動!你看人家那代碼寫的。

2)感覺立宇泰的44B0不錯

硬件沒別的,就是資料比較全的說,不像有些家,原理圖直接拿人家的,還錯的~~

3)找個最便宜的

好象最便宜的有賣350的吧?也是沒別的,就是即省了錢 還省時間蒐集資料,至於資料全不全,別計較了~~硬件肯定好使就行吧。

四 要不要有51 AVR等單片機基礎

有更好,但沒有也無所謂。

兩個月以前,我只是看別人做,耳濡目染~~,本科學過單片機,從來沒做過。我們這的技術主幹做AVR和51,我就跟他們調過C語言程序。你看出來了?我是個不折不扣的菜鳥吧?

但是做這個之前我特意找了ZLG的兩本書,看了裏面的例子和原理圖,這很重要。例程裏有彙編有C,都看懂了就OK,不用自己現寫

五 開發都需要學習哪些軟件

總結起來最主要的有以下幾個吧

1 ADS調試用

確切的說是ADS+AXD。ADS裏包含AXD。原來都用SDT後來ARM公司停止對SDT支援了,改支援ADS了,還是用ADS吧。

有的人的程序發佈的仍然是SDT版本的,但基本都可以找到相應ADS的,新人在這裏不要發矇。ADS是編譯器,AXD是調試器。便宜成AXF以後再在ARM的RAM裏調試。

2 PLASHPGM

FLASH燒寫的軟件。AXD在RAM裏調試,掉電就沒有了,方便程序修改。調試好的程序再下到FLASH裏,上電直接執行。

同類的軟件還有很多,什麼FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人還問FLASH不支援BIN格式檔案的問題就要看我寫的PLASHPGM使用了。

3 BANYANT調試代理(不知道名對不,起這麼個難記的,我一般都叫它“半羊”因爲知道它那幾天剛吃了烤羊)

調試代理就是用它幫你使用更簡單的JTAG(便宜啊)來實現原本1K才賣的JTAG仿真器的大部分功能。JTAG調試原理看我另一篇筆記。簡單的就可以把他理解爲你自己做的JTAG的驅動就行了。

調試代理還有很多種,什麼H-JTAG了、ARM7了(不知道具體叫什麼,就記得可執行檔案叫)都是,BANYANT比較好。

需要注意的是,沒種調試代理安裝方法雖然都簡單但都不一樣,需要看說明。而且AXD調試之前都要執行。省錢了,就別怕麻煩了。

4 ARM-ELF-TOOLS工具鏈

裏面是UCLINUX開發用的工具比如ARM-ELF-GCC只類的。工具鏈就是把很多工具打包在一起發佈的方便你開發的東西。具體安裝方法看我另一篇筆記。

另外如果你開發LINUX就要用ARM-LINUX-TOOLS,不一樣,不通用。

5 U-BOOT

大名鼎鼎的BOOTLOADER生成工具,同類的好象還有VIVI(名字很曖昧~~)

生成的BOOTLOADER燒到FLASH裏,然後就可以用BOOTLOADER下載 燒寫其他了

有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像電腦上的BIOS。當然UCOS的不用這個,用什麼我不知道:)

最新版本是1.1.4 具體使用方法看我另一篇筆記吧。

6 UCLINUX包

UCLINUX的源碼包,不用多說了吧?建議大家用現成的先體會一下,然後再自己編譯,裁剪。因爲單獨UCLINUX的編輯技術上比較簡單,但涉及的方面還是比較廣的。

7 VMWARE

老牌的虛擬機軟件,在一個機器上虛擬出一個機器裝LINUX(PC上用的),省得你來回開關機了。記得裝VMWARE-TOOLS,安裝方法在我另一篇筆記裏。

六 有哪些書推薦

主要推薦ZLG的三本書,有這3本再加網絡就不用別的書了,其中主要推薦前2本,3是介紹體系結構的,也不錯

1 ARM嵌入式LINUX系統構建與驅動開發,北航版

驅動寫的很詳細,前期開發介紹也很好

2 ARM 嵌入式系統實驗教程(二),北航版

TAGS:ARM 學習