查看: 5853|回復: 6
打印 上一主題 下一主題

2.ARM和Linux學(xué)習方法探討

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2009-8-3 23:22:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: linux , 探討 , 學(xué)習
該課討論ARMLinux的學(xué)法方法,大伙多發(fā)言。
沙發(fā)
 樓主| 發(fā)表于 2009-8-3 23:30:42 | 只看該作者
發(fā)一篇給電子設計信息網(wǎng)(www.eaw.com.cn)的“技術(shù)人生”雜志寫(xiě)的文章,希望大伙能有所體會(huì )。另外,如果要轉載請注明是電子設計信息網(wǎng)的“技術(shù)人生”雜志,謝謝!

如何快速有效的掌握ARM和Linux
如何才能少走彎路,即“快速”又“有效”的掌握ARM Linux?這是大多數初學(xué)者都會(huì )有的疑問(wèn),阿南覺(jué)得這是一個(gè)非常好的問(wèn)題,學(xué)習者就應當經(jīng)常思考自己是否處在最有效的方式下學(xué)習。所以《ARM Linux入門(mén)與實(shí)踐》一書(shū)也主要以阿南的ARM和Linux自學(xué)經(jīng)歷為線(xiàn)索、基礎,試圖希望自學(xué)朋友們能夠從中體會(huì )出規律、方法和道理,再根據自身的實(shí)踐情況總結出適合自己的一套快速、有效的掌握ARM Linux的學(xué)習步驟和方法。此次有幸在《技術(shù)人生》里和朋友們再次交流這個(gè)問(wèn)題,阿南感到高興!希望能夠給更多的朋友以借鑒,也歡迎朋友們給阿南來(lái)信(ccn422@hotmail.com)進(jìn)一步交流學(xué)習共同提高。
一.明確學(xué)習目標和目的
隨著(zhù)工作的深入,需要學(xué)習的知識、技術(shù)也越來(lái)越多,這讓阿南不得不在學(xué)習時(shí)特別強調目標和目的性。比如在A(yíng)RM的學(xué)習中,不需要學(xué)習太多的匯編知識,因為一般的ARM應用幾乎不親自用匯編去寫(xiě)程序,只需要能夠理解啟動(dòng)代碼和少量用匯編實(shí)現的底層庫函數。在Linux的學(xué)習中,不需要去研究大量的內核源代碼,只需學(xué)習常用的Linux命令、目錄結構等,再以應用編程和Linux驅動(dòng)編程為主。如果工作上需要GUI和網(wǎng)絡(luò )編程,那么也可以有選擇的學(xué)習相應的部分知識?傊龅剑号c目標較遠的“不學(xué)”,或暫時(shí)不學(xué),因為即使學(xué)了也很快會(huì )忘記,但卻浪費了原本就緊張的時(shí)間。阿南認為之所以有天才或智者,主要取決于它善于思考,尋找方法和捷徑,善于判斷重點(diǎn)和次要,善于花時(shí)間扎扎實(shí)實(shí)的做好必須要做的工作,學(xué)習必須要學(xué)習的知識,而不拘泥于次要或不相關(guān)的細節上。
二.硬件是基礎,但它沒(méi)有想象中難
通?梢詫⒄麄(gè)嵌入式系統分成硬件、底層驅動(dòng)和應用程序三個(gè)部分,而學(xué)習者除了具有不同程度的單片機基礎的電子類(lèi)專(zhuān)業(yè)外,還有計算機軟件專(zhuān)業(yè)的朋友。據阿南觀(guān)察,無(wú)論是電子還是計算機專(zhuān)業(yè)都對底層驅動(dòng)最感興趣,都想將來(lái)從事基于Linux下的驅動(dòng)開(kāi)發(fā)。底層驅動(dòng)位于硬件和應用程序之間,是橋梁,它不僅要求工程師能夠理解硬件,也要求有一定的應用編程能力。其中硬件是基礎,如果不想只從事純應用(和硬件沒(méi)有任何關(guān)系)編程,那必須要求掌握一定的ARM系統與接口等硬件技術(shù),具有分析系統原理和調試解決問(wèn)題的能力。而事實(shí)上,初學(xué)者往往忽略了硬件,忽略了整個(gè)系統的原理構成。電子類(lèi)專(zhuān)業(yè)的學(xué)習者急于去學(xué)習軟件,急于在開(kāi)發(fā)板上運行程序,有些朋友甚至將開(kāi)發(fā)板自帶的所有程序編譯、運行一次就認為已經(jīng)學(xué)完、掌握ARM了。計算機專(zhuān)業(yè)的朋友更是害怕硬件,只學(xué)軟件。阿南覺(jué)得這種學(xué)習方式是不好的,應該重視硬件,從硬件的原理開(kāi)始掌握。其實(shí)硬件并沒(méi)有初學(xué)者想像中難,ARM處理器原廠(chǎng)或第三方也都會(huì )提供完整的硬件參考設計,都是標準化電路及接口,學(xué)習者只要突破一種就可舉一反三到多種ARM處理器,就可以幫助學(xué)習者在學(xué)習軟件時(shí)消除硬件上的模糊。如果計算機專(zhuān)業(yè)的朋友確實(shí)沒(méi)有一點(diǎn)的硬件基礎,可以找本模擬、數字的基礎書(shū)查閱,也可參考一些嵌入式硬件設計的書(shū)籍和直接查看芯片的數據手冊。
三.在源碼和實(shí)驗中求答案,培養獨立解決問(wèn)題的思維能力
什么最能體現一個(gè)工程師的經(jīng)驗水平?什么樣的能力最能體現一個(gè)工程師在團隊中的價(jià)值?阿南認為是解決問(wèn)題的能力,只有解決別人都不能解決的問(wèn)題才能真正體現您在團隊中的價(jià)值和不可或缺的重要性。如果說(shuō)編程的速度,您可能會(huì )比一個(gè)人快,但你絕對不會(huì )比兩個(gè)人甚至整個(gè)團隊加起來(lái)還要快,但您完全可以解決其它人甚至一個(gè)團隊都無(wú)法解決的問(wèn)題。而解決問(wèn)題的能力如何去培養呢?它需要在初學(xué)時(shí)就養成一種獨立思考解決問(wèn)題的習慣,需要在實(shí)踐中不斷的摸索、總結經(jīng)驗和思維方式,也是一個(gè)工程師內功的表現。而目前很多學(xué)習者在遇到問(wèn)題時(shí)就不知所措,急于請教別人,甚至在BBS發(fā)出“跪求”,把“男兒膝下有黃金”忘的一干二凈,這種習慣是不可取的,也培養不出解決問(wèn)題的能力,更達不到有效掌握一種技術(shù)的真締。在A(yíng)RM應用中通常分硬件和軟件問(wèn)題,硬件通常由電源、處理器配置以及接口等問(wèn)題,檢查的順序應該是電源、ARM內核再到外圍接口,ARM硬件仿真器在硬件調試中將發(fā)揮重要的作用,有時(shí)也需要示波器等常用工具,甚至需要借用測試代碼。軟件的問(wèn)題更多的是需要分析源代碼,有時(shí)也必須通過(guò)仿真調試。
四.以單片機的思維,重點(diǎn)突出ARM的不同之處
大部分的ARM學(xué)習者都有一定程度的單片機基礎,此時(shí)完全可以將ARM看作是超級單片機,以單片機的思維方式去理解,重點(diǎn)突出ARM系統的不同且關(guān)鍵之處,加以學(xué)習。在硬件上,ARM通常運行更高的主頻,通過(guò)總線(xiàn)擴展大容易的Flash和SDRAM(甚至DDR),具有更多的管腳及采用高密度的BGA封裝,以及超強的外設等,因此ARM系統往往需要更多層的PCB,且對器件的布局,信號走線(xiàn)等都有一定的要求。所以在A(yíng)RM的硬件設計中要特別注意處理器的一些關(guān)鍵信號引腳的處理,一定要仔細閱讀處理器用戶(hù)手冊上對各信號管腳的描述,有些引腳在不用時(shí)必須接固定的高或低電平,DDR的信號線(xiàn)需要等長(cháng)處理等,否則系統將不能正常運行。由于目前單片機基本上是將Flash和RAM內置,所以朋友們可能都沒(méi)有像最早的8031那樣擴展過(guò)外部存儲器(可以重新復習一下單片機的基礎),此時(shí)應該重點(diǎn)理解ARM的總線(xiàn)擴展方式,理解它是如何外擴Flash、SDRAM(或DDR)及其它的總線(xiàn)設備等,它們的存儲空間又是如何分配等,此時(shí)參考數據手冊的內存映射圖和一些SDRAM、Flash等的基本原理、尋址方式等都大有幫助。在軟件,ARM如果不跑操作系統,那么它和單片機也是非常類(lèi)似的,此時(shí)朋友們只需熟悉ARM的開(kāi)發(fā)環(huán)境、工具的使用。然后將重點(diǎn)放在A(yíng)RM處理器的啟動(dòng)過(guò)程和中斷處理過(guò)程上,阿南認為如果沒(méi)能理解這兩個(gè)過(guò)程,那么就不算掌握ARM。!由于官方或第三方都會(huì )提供測試程序,所以我們也不需要親自去實(shí)現,但必須把它分析透徹,因為它太重要了,直接關(guān)系著(zhù)整個(gè)系統能否正常運行。ARM處理器通常都會(huì )外擴大容量的NAND Flash,支持NAND Flash的直接引導啟動(dòng),而這是單片機所沒(méi)有的,因此朋友們也需要重點(diǎn)理解NAND Flash的應用。在使用單片機時(shí),我們習慣從無(wú)到有開(kāi)始寫(xiě)程序,而在使用ARM時(shí)我們要懂得利用資源,直接在官方提供的DEMO中提取代碼。
五.PC機的Linux技術(shù)同樣適用于A(yíng)RM Linux
阿南發(fā)現很多朋友存在一個(gè)誤區:學(xué)習嵌入式Linux必須在開(kāi)發(fā)板上才能進(jìn)行,而不能好好利用PC機的強大資源或者忽略了Linux的基礎。其實(shí)PC機的Linux編程同樣適用于A(yíng)RM Linux,當您有了PC機的Linux基礎后,只需重點(diǎn)學(xué)習ARM Linux的開(kāi)發(fā)方式、工具使用,及嵌入式硬件資源的局限性所帶來(lái)一些需要注意的地方。阿南覺(jué)得ARM Linux基本上就等于A(yíng)RM的前后臺應用和通用的Linux技術(shù)的結合。因此完整的ARM和Linux技術(shù)的學(xué)習順序應該為ARM的硬件,ARM前后臺應用,PC機Linux的命令操作,PC機Linux應用編程,PC機Linux的驅動(dòng)技術(shù),PC機的GUI和網(wǎng)絡(luò )編程,再到基于A(yíng)RM Linux特有的開(kāi)發(fā)技術(shù)。當然朋友們也可以有選擇的進(jìn)行學(xué)習,比如不需要GUI或不需要網(wǎng)絡(luò )編程,不想從事ARM硬件等。
六.不實(shí)踐永遠掌握不了ARM,工具決定效率
嵌入式是一門(mén)實(shí)踐性很強的技術(shù),如果只想看書(shū),而不去實(shí)踐,那么阿南建議請不要浪費時(shí)間。多看書(shū)也無(wú)用(現在書(shū)店的嵌入式書(shū)籍太多),要有選擇性、針對性的看?磿(shū)的目的可以概括為理論基礎、應用指導和給解決問(wèn)題提供思路3種。理論基礎需要系統的學(xué)習,建議選擇一些國外的經(jīng)典教材(如《UNIX環(huán)境高級編程》或《GNU/Linux編程指南》等),但對將來(lái)的應用不相關(guān)的也可以略去或泛讀;A的學(xué)習也離不開(kāi)實(shí)踐,需要實(shí)踐操作來(lái)進(jìn)一步的驗證理解。應用指導一般都是在實(shí)踐應用到時(shí)再去學(xué)習,邊看邊實(shí)踐,如處理器的某個(gè)外設使用,需要查看處理器的用戶(hù)指南或規格書(shū)的相關(guān)部分。如ARM Linux開(kāi)發(fā)環(huán)境、工具的使用,可以參考具體的資料,也可以作一些筆記給以后應用時(shí)直接參考。當出現無(wú)法解決的難題而沒(méi)有頭緒時(shí),此時(shí)可能需要上網(wǎng)收索相關(guān)的資料,或大量的查找相關(guān)的技術(shù)書(shū)籍,當有思路后就要通過(guò)實(shí)踐測試、實(shí)驗去驗證解決問(wèn)題?傊,理論是為實(shí)踐服務(wù)的,脫離了實(shí)踐,脫離了實(shí)際應用,看書(shū)就等于浪費時(shí)間。!開(kāi)發(fā)工具在實(shí)踐中起著(zhù)重要作用,不僅決定開(kāi)發(fā)效率,也提高學(xué)習的效率。因此學(xué)習者需要一個(gè)開(kāi)發(fā)學(xué)習板(或實(shí)踐產(chǎn)品及目標板),朋友們如果資金允許,也請盡量配置一個(gè)硬件仿真器,它不僅給仿真調試帶來(lái)了便利,而有些問(wèn)題就必須要通過(guò)仿真器查看CPU內部寄存器等狀態(tài)來(lái)查找解決。

阿南
2008-11-24
板凳
發(fā)表于 2009-8-4 00:24:00 | 只看該作者
隨便一個(gè)夠啃半幾年的呵呵,我感覺(jué)吧,給學(xué)員一個(gè)大概框架~首先是一個(gè)整體的把握~
至于個(gè)人就看自己興趣和愛(ài)好,就向那個(gè)方向發(fā)展~
地板
發(fā)表于 2009-8-5 22:56:03 | 只看該作者
俺的個(gè)人經(jīng)歷是:要學(xué)好ARM (含普通的MCU)與LINUX,首先得購買(mǎi)開(kāi)發(fā)學(xué)習板,其次就是要有兩臺電腦,一臺用作主機編譯調試開(kāi)發(fā)板的環(huán)境,另一臺用運行在linux下的mincom 串口輸出與調試命令輸入,調試時(shí)很方便。
地下室
發(fā)表于 2009-8-5 23:49:07 | 只看該作者
回復4樓宇宙飛船
這兩臺電腦的配置不需要很高吧?用舊的,比較慢的筆記本是否也可以?
6
發(fā)表于 2009-8-6 09:07:18 | 只看該作者
第一件事,就是學(xué)會(huì )pc版本的linux,linux的跨平臺特性非常好。
7
 樓主| 發(fā)表于 2009-8-6 09:53:03 | 只看該作者
是的,在PC機上學(xué)習linux還是非常方便的
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页