學ARM Linux要先裸奔!

2021-06-05 17:13:08 字數 1654 閱讀 5404

在 arm + linux 培訓班學習,講師一般首先講解用 ads 或 realview mdk 去除錯 arm 開發板。原因在於:

1、掌握 arm 體系結構。arm 是一種計算機,掌握其體系結構也就是掌握arm的工作原理。在大學裡一般會開設《微機原理》這門課程,講解x86計算機的工作原理,並學習x86組合語言。因為arm與x86體系結構上的不同,所以學習arm+linux之前,要首先掌握arm這種計算機的工作原理,並學習arm組合語言。

2、掌握arm組合語言。眾所周知,組合語言是低階語言,與計算機硬體關係密切。因為體系結構的不同,arm組合語言與x86組合語言有很大的不同。前幾年有一本書《arm體系結構與程式設計》專門講解arm體系結構與組合語言,隨著技術的發展,arm組合語言的參考書也越來越多。掌握arm組合語言是學習 arm+linux 的基礎。linux中組合語言用得不多,卻都是啟動時必須有的。

3、掌握arm開發板的原理圖。電路板原理圖是由做硬體的工程師畫的,雖然屬於硬體範疇,但做 arm+linux 的軟體工程師是需要能看懂電路板原理圖的,特別是在編寫硬體的linux驅動程式時,必須看懂開發板電路原理圖。用ads或mdk除錯開發板時,最常做的乙個軟體實驗就是「跑馬燈」程式。「跑馬燈」就是讓開發板上的若干個led逐個點亮,實現這個程式首先要看電路圖上led的電路是如何連線的。通常,led聯接在arm晶元的io介面上,看電路圖確認io介面的編號,然後在程式裡設定這幾個io介面的電位為1或0,就能熄滅或點亮led。「跑馬燈」程式是最簡單的軟體與硬體協同工作範例,目的就是讓軟體工程師能掌握最基本的軟體與硬體結合的原理。以此為基礎,開發板上的其他外圍電路都可以逐步掌握。 

4、掌握像使用微控制器那樣使用arm的方法。微控制器的用途非常廣泛,最常用的是c51系列微控制器,不需要作業系統,只需要在微控制器上執行單迴圈程式就能讓裝置完成功能簡單的迴圈運算工作。c51系列屬於x86家族,x86家族的微控制器和桌面cpu功能差別非常大,但是其組合語言卻是完全相同的。arm系列計算機效能介於c51微控制器和x86桌面cpu之間,所以將arm當微控制器用也是乙個應用選擇,ads和mdk這兩種軟體就是像微控制器那樣使用arm。最新的arm版本cortex,已經開始分類,cortex m系列就是用作微控制器的arm,cortex a系列就是執行作業系統的arm。

5、複習c語言程式設計。在ads或mdk中除錯arm開發板,使用的計算機語言通常是彙編結合c語言,彙編是arm彙編,c語言就是常用的c語言。c語言是一種中級語言,但是是平台無關的,在任何一種計算機上用c語言程式設計,語法規則都是一樣的。c語言與arm彙編的結合看幾個例項就能很快掌握,c語言本身的掌握程度卻決定了每個人能在 arm+linux 開發上能走多遠。

ads是arm公司出品的整合開發環境,已經停止更新很久了,但是任然很有用,甚至可以除錯arm11。

realview mdk是arm公司購買了keil公司後推出的ads後續版本,realview結合了keil c51這種微控制器經典開發環境與ads開發環境的優點,能用於所有arm版本的除錯。當然功能強會帶來一定的操作複雜性,但在arm的除錯上還是沿用了ads的大多數方法與軟體介面,以方便從ads到mdk的過渡。

不管是用ads還是mdk,對於學習 arm+linux 的朋友來說,目的都是一樣的,就是上面五點,都是為進一步學習打下很好的基礎。用ads或mdk去開發arm,通常都叫做「裸奔」,因為都沒有作業系統這件「衣服」。就像繪畫中學習人物畫時,先要畫**模特,然後學習人物畫一樣,先學會用ads或mdk讓arm裸奔,然後才學得好 arm+linux 。

學軟體是先學程式設計還是先學基礎理論

先具體還是先抽象,雞和雞蛋的問題 關注軟體領域的同道,一定不會忽略前不久的一場很有意思的爭論。兩位業界前輩金旭亮和袁峰在csdn上關於如何提高軟體設計水平進行的一場友好的討論。筆者受益頗多,兩位大師的智慧型與觀點適用的不僅僅是軟體設計,更是對於所有it人學習與成長有幫助。以我的理解兩位大師表達的內容...

學深度學習和神經網路之前要先學機器學習嗎?

必須要學,至少是當下必須要學。首先,從大家最關心的就業角度來說,機器學習的崗位暫時還是遠多於深度學習的崗位。因為深度學習是最近3 5年火起來的,而面試你的人,大都在這之前就已經入行了,所以他們不一定很懂深度學習,但是必定學過機器學習。因此,主流公司的演算法工程師的面試,深度學習可能不考,但是機器學習...

先學半個華為

馬斯洛需求層次理論 自我實現的需求 實現個人的理想 被尊重的需求 獲得他人肯定 抽象的精神需要 社交的需求 擴大交際圈 安全的需求 確保生存 純粹的物質需要 生理的需求 確保生存 乙個人的追求必然隨著客觀環境的改變而持續提高,這種趨勢不會因個人成見而停滯不前,更不會因本職工作的固定性就不再公升級。雙...