作為一個新人如何學(xué)習(xí)嵌入式linux_第1頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、作為一個新人,如何學(xué)習(xí)嵌入式linux作為一個新人,如何學(xué)習(xí)linux作為一個新人,怎樣學(xué)習(xí)嵌入式?被問過太多次,特寫這篇文章往返答一下。做技術(shù)的心態(tài)是不能浮躁的,一步步,踏踏實實去完成每一個詳情 ,阿里上市,人家馬云一件事堅持了15年,你能堅持多久呢?咱不能跟勝利的人作對照,不過但凡勝利的人,都需要努力堅持。在學(xué)習(xí)嵌入式linux之前,絕對要有基礎(chǔ)。匯編基礎(chǔ)有沒有無所謂(就那么幾條匯編命令,用到了一看就會)。c語言要學(xué)到什么程度呢?越熟固然越好,不熟的話也要具備基本技能。比如寫一個數(shù)組排序、輸入數(shù)字求和什么的。學(xué)c語言唯一的辦法是多寫程序多練習(xí),編譯出錯不要緊,自己去解決;執(zhí)行出錯不要緊,自

2、己去分析。以前我是用vc來練習(xí)c語言的,常常去嘗試著寫一些c語言比賽的題目。它們是純c、純數(shù)學(xué)、純規(guī)律的題目,不涉及界面這些東西,很適合煅煉你的編程能力?;氐街黝},首先我們要明了你的目的是什么,也許來說所謂嵌入式linux可以分為兩部分:底層系統(tǒng)、應(yīng)用開發(fā)。假如你是想做應(yīng)用開發(fā),那么你去把c語言、數(shù)據(jù)結(jié)構(gòu)、java什么的學(xué)好吧。嵌入式應(yīng)用開發(fā)和pc上的應(yīng)用開發(fā)并沒有什么特殊要注重的。大概你說在嵌入式上要做些優(yōu)化,是的,要優(yōu)化,但是未經(jīng)優(yōu)化的程序和pc上的程序開發(fā)沒什么差別。另外,當(dāng)你有能力去優(yōu)化時,你已經(jīng)不用來問這個問題了。詳細到某個例子,比如說開發(fā)界面,在pc上我們用vc;在嵌入式linux

3、里大概我們用qt大概用,這個時候你應(yīng)當(dāng)去學(xué)學(xué)qt、android的編程。但是基礎(chǔ)還是c或java,在此基礎(chǔ)上去認識它們的接口。你學(xué)過vc的話,也是要花時光去了解那些類、控件的。假如你的目的是想學(xué)習(xí)底層系統(tǒng),這是我的專長,倒是可以說一點。在回答這個問題之前,我先回答:不少人問我,到底是學(xué)驅(qū)動還是學(xué)應(yīng)用?我只能說憑愛好,并且驅(qū)動和應(yīng)用并不是截然分開的1. 我們說的驅(qū)動,其實并不局限于硬件的操作,還有操作系統(tǒng)的原理、進程的休眠喚醒調(diào)度等概念。想寫出一個好的應(yīng)用,想比較好的解決應(yīng)用遇到的問題,這些學(xué)問你應(yīng)當(dāng)懂2. 做應(yīng)用門檻低,特殊是現(xiàn)在的android,純java。做應(yīng)用的進展路徑個人認為就是業(yè)務(wù)純

4、熟。比如在通信行業(yè)、iptv行業(yè)、手機行業(yè),你了解行業(yè)的需求。所以,當(dāng)領(lǐng)導(dǎo)的人,多是做應(yīng)用的。3. 做驅(qū)動,其實我不想稱為“做驅(qū)動”,而是想稱為“做底層系統(tǒng)”,做好了這是通殺各行業(yè)。我工作幾年,做過手機、iptv、會議電視,但是這些產(chǎn)品對我毫無差別,由于我只做底層。他們的業(yè)務(wù)跟我不要緊。當(dāng)應(yīng)用浮現(xiàn)問題,他們解決不了時,我就會從內(nèi)核角度給他們出想法,給他們提供工具。做底層的進展方向,個人認為是技術(shù)專家。4. 其實,做底層還是做應(yīng)用,之間并沒有一個界線,有底層閱歷,再去做應(yīng)用,你會感覺很踏實。有了業(yè)務(wù)閱歷,你再了解一下底層,很快就可以組成一個團隊?;氐皆趺磳W(xué)的問題上。嵌入式linux底層系統(tǒng)包含哪

5、些東西?不要急,舉一個例子你就知道了。1. 電腦一開機,那些界面是誰顯示的?是bios,它做什么?一些自檢,然后從硬盤上讀入windows,并啟動它。類似的,這個bios對應(yīng)于嵌入式linux里的bootloader。這個bootloader要去flash上讀入linux內(nèi)核,并啟動它。2. 啟動windows的目的是什么?固然是上網(wǎng)談天什么的了。這些上網(wǎng)、談天工具在哪?在c盤、d盤上。所以, windows要先識別出c盤、d盤。在linux下我們稱為根文件系統(tǒng)。3. windows能識別出c盤、d盤,那么絕對能讀寫硬盤才行。這涉及的東西稱為驅(qū)動程序。固然不僅僅是硬盤,還有網(wǎng)卡、等等。嵌入式l

6、inux能從flash上讀出并執(zhí)行應(yīng)用程序,絕對也得有flash的驅(qū)動程序啊,固然也不僅僅是flash。先說到這里吧,嵌入式linux里含有bootloader, 內(nèi)核, 驅(qū)動程序、根文件系統(tǒng)這4大塊。一、bootloader:它就是一個略微復(fù)雜的裸板程序。但是要把這裸板程序看懂寫好一點都不簡單。windows下好用的工具弱化了我們的編程能力。無數(shù)人一玩嵌入式就用ads、keil。你能回答這幾個問題嗎?1. 一上電,cpu從哪里取命令執(zhí)行?答:普通從flash上命令。2. 但是flash普通是只能讀不能挺直寫的,假如我用到全局變量,這些全局變量在哪里?答:全局變量應(yīng)當(dāng)在內(nèi)存里3. 那么誰把全局

7、變量放到內(nèi)存里去?答:長久用ads、keil的伴侶,你能回答嗎?這需要重定位。在ads或keil里,重定位的代碼是制作這些工具的公司幫你寫好了。你可曾去閱讀過?4. 內(nèi)存那么大,我怎么知道把本來存在flash上的內(nèi)容讀到內(nèi)存的哪個地址去?答:這個地址用鏈接腳本打算,在ads里有scatter文件,keil里也有類似的文件。但是,你去討論過嗎?5. 你說重定位是把程序從flash復(fù)制到內(nèi)存,那么這個程序可以讀flash???答:是的,要能操作flash。固然不僅僅是這些,還有設(shè)置時鐘讓系統(tǒng)運行得更快等等。先自問自答到這里吧,bootloader這一個裸板程序,其實有3部分要點:1. 對硬件的操作2

8、. 對體系處理器的了解3. 程序的基本概念:重定位、棧、代碼段數(shù)據(jù)段bss段什么的。對硬件的操作,需要看原理圖、芯片手冊。這需要一定的硬件學(xué)問,不求你能設(shè)計硬件,但是起碼能看懂; 不求能看懂,但是要能看懂?dāng)?shù)字。這方面的能力我是在小學(xué)里學(xué)到的,微機原理、數(shù)字電路這2本書(書名忘了)就足夠了。但是我疑惑你有無耐心把這2本書看完。我不知道現(xiàn)在有沒有更快捷的書。想速成的話,就先放掉這塊吧,不懂就問google、發(fā)貼。另外,芯片手冊是絕對要讀的,別去找中文的,就看英文的。開頭是十分疼痛,以后就會發(fā)覺那些語法、詞匯一旦認識后,讀任何芯片手冊都很簡單。對arm體系處理器的了解, 看杜春蕾的專業(yè),其實課程里沒有教怎么設(shè)計電路,只是教了些電子電路方面的學(xué)問。的設(shè)計是在試驗室里自學(xué)的,只設(shè)計過2層板,現(xiàn)在遺忘得差不多了。但是保留了看原理圖、看芯片手冊的能力。2. 選修了軟件學(xué)位,對軟件設(shè)計挺感愛好,但是也只是學(xué)了c語言、數(shù)據(jù)庫而已。靠著愛好做了不少比賽題。沒能力去參與比賽,但是把c語言練得很扎實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論