第一篇:為什么學習嵌入式開發(fā)要學習linux?
福州鼎嵌
首先,ARM只是一個32位處理器,可以像51單片機一樣用匯編直接操作它的寄存器、RAM、ROM等內(nèi)部資源,當然也可以用C語言!那么如果只是把ARM當做單片機來用,那就有點大材小用了,那也就沒必要學什么linux了。
事實上,ARM是通常都是用來做比較復雜的系統(tǒng)的,而且一般都是多任務系統(tǒng)的,當任務比較多,程序比較大的時候,只用匯編和C可怕難以勝任,所以我們應該給ARM配一個操作系統(tǒng),用來管理這些任務,那么對于ARM,我們可以作使用哪些操作系統(tǒng)呢?Windows XP行嗎?當然不行,太大了,不適合做嵌入式,微軟倒是推出了專門針對嵌入式系統(tǒng)開發(fā)的WinCE,可是這可不是免費的,而且不提供源碼的,給你就像一個黑夾子,對于一般的嵌入式學習,就不太合適了?那么什么樣的操作系統(tǒng)才能用于做嵌入式呢?嵌入式操作系統(tǒng)通常有Vxworks,WinCE,uC/OS,Linux/ucLinux等。而uC/OS、Linux因為其免費,而且開源,深受學習者和小公司的歡迎。
uC/OS操作系統(tǒng)內(nèi)核很小,特別適合初學,而且它是占先式內(nèi)核,是一個實時的操作系統(tǒng),特別適合實時性要求較高的場合,其內(nèi)核很小當然其功能當然也就沒有l(wèi)inux強大,而且uC/OS的圖形用戶界面(GUI)還是剛有雛形,沒有l(wèi)inux的GUI好,而它的GUI是收費的。這樣的話只是linux是最好了,但是linux本身不是實時的操作系統(tǒng),不適合實時性高的場合,于是ucLinux產(chǎn)生了,ucLinux是一個實時操作系統(tǒng)(RTOS),因此學習ARM+ucLinux的人較多。
所以,如果只搞uc/OS+ARM,那就可以不學linux了,如果想學習ARM+ucLinux,要在ARM上移植linux,那么移植后,這個裝有l(wèi)inux的ARM處理器,當然只能運行l(wèi)inux環(huán)境下編譯出來的應用程序(這里還有一個交叉編譯的概念需要正確理解),所以理所當然要學linux。通常小紅帽Red Hat Linux 使用比較廣泛,那么不能在Windows下開發(fā)ARM+ucLinux嗎?其實倒是可以在Windows使用虛擬機軟件VMware裝一個linux,但那樣不如直接裝個Linux來的爽快!
福州鼎嵌技術專業(yè)從事嵌入式領域,能夠幫助求職無果的大學生朋友走上嵌入式開發(fā)高薪之路,鼎嵌目前已為福建省內(nèi)多家知名IT企業(yè)輸送大量的嵌入式開發(fā)人才,開辟的實達定向委培班和天下創(chuàng)世企業(yè)內(nèi)訓活動。福州鼎嵌技術致力打造福建省內(nèi)最專業(yè)的嵌入式交流平臺,為廣大嵌入式愛好者提供專業(yè)嵌入式平臺交流,實現(xiàn)嵌入式高薪就業(yè)夢想。
第二篇:嵌入式linu學習心得
嵌入式Linux學習心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當前的目錄
cd:改變當前操作目錄cd /直接跳到根目錄 cd..回到上一級目錄 cat: 打印顯示當前文件的內(nèi)容信息
mkdir:創(chuàng)建目錄
fdisk: 查看硬盤分區(qū)信息,-l以列表方式查看
->代表是鏈接文件,類似window下的快捷方式。
cp: 復制命令,例子cp 文件名 /home/dir/
mv: 移動或改名,如mv sonf.confsonf.txt(改名)移動:mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個命令的幫助,man 命令
2、各系統(tǒng)目錄的功能
drw—r—w--:d代表是目錄,drw代表當前用戶的權限,r代表組用戶的權限,w代表其它用戶的權限。x代表有執(zhí)行權限。
/boot/gruff.conf: 啟動引導程序
/dev:brw—rw--:b代表是塊設備。Linux設備有三種,塊設備(b開頭)、字符設備(c開頭)、網(wǎng)絡設備。had代表第一個硬盤,hdb代表第二個硬盤。Hdb2代表第二塊硬盤的第二個分區(qū)。3,67代表主設備為3,從設備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動方式下必須啟動的進程。Inittab文件中有6個啟動level,wait中對應著6個level的目錄,respawn代表當一個進程被意外終止了,但會自動啟動的進程,如守護進程。rc.d目錄中存放了一個rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個vsftpd里面存放tcp、ftp的配置。
/home : 用戶目錄,存放用戶的文件,/lib:存放庫文件,后綴為so的文件代表動態(tài)鏈接庫。
/lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。
/mnt:掛載外部設備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統(tǒng)中,要查看windows中D盤的文件,首先應該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d
/opt:用戶安裝的應用程序
/proc:是系統(tǒng)運行的映射,比較重要。里面的文件數(shù)字代表進程號。每個進程號目錄下包含進程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息
對于Linux的設備驅(qū)動程序,有兩種加載模式,一種是直接加載進linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。
/sbin: 系統(tǒng)管理的一些工具。如poweroff關機工具。
/usr: 安裝系統(tǒng)時很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫文件,src包含Linux2.4的內(nèi)核源碼
/var:存放是臨時變量
3、
第三篇:新人如何學習嵌入式Linux開發(fā)(韋東山)
被問過太多次,特寫這篇文章來回答一下。
在學習嵌入式Linux之前,肯定要有C語言基礎。匯編基礎有沒有無所謂(就那么幾條匯編指令,用到了一看就會)。
C語言要學到什么程度呢?越熟當然越好,不熟的話也要具備基本技能。比如寫一個數(shù)組排序、輸入數(shù)字求和什么的。
學C語言唯一的方法是多寫程序多練習,編譯出錯沒關系,自己去解決;執(zhí)行出錯沒關系,自己去分析。以前我是用
VC來練習C語言的,經(jīng)常去嘗試著寫一些C語言競賽的題目。它們是純C、純數(shù)學、純邏輯的題目,不涉及界面這些東西,很適合煅煉你的編程能力。
回到主題,首先我們要明白你的目的是什么,大概來說所謂嵌入式Linux可以分為兩部分:底層系統(tǒng)、應用開發(fā)。
如果你是想做應用開發(fā),那么你去把C語言、數(shù)據(jù)結構、JAVA什么的學好吧。嵌入式應用開發(fā)和PC上的
應用開發(fā)并沒有什么特別要注意的。也許你說在嵌入式上要做些優(yōu)化,是的,要優(yōu)化,但是未經(jīng)優(yōu)化的程序
和PC上的程序開發(fā)沒什么差別。另外,當你有能力去優(yōu)化時,你已經(jīng)不用來問這個問題了。具體到某個例子,比如說開發(fā)界面,在PC上我們用VC;在嵌入式Linux里也許我們用QT也許用Android,這個時候你應該去學學QT、Android的編程。但是基礎還是C或JAVA,在此基礎上去熟悉它們的接口。你學過VC的話,也是要花時間去了解 那些類、控件的。
如果你的目的是想學習底層系統(tǒng),這是我的專長,倒是可以說一點。
在回答這個問題之前,我先回答:不少人問我,到底是學驅(qū)動還是學應用?
我只能說憑興趣,并且驅(qū)動和應用并不是截然分開的
1.我們說的驅(qū)動,其實并不局限于硬件的操作,還有操作系統(tǒng)的原理、進程的休眠喚醒調(diào)度等概念。
想寫出一個好的應用,想比較好的解決應用碰到的問題,這些知識你應該懂
2.做應用門檻低,特別是現(xiàn)在的ANDROID,純JAVA。做應用的發(fā)展路徑個人認為就是業(yè)務純熟。
比如在通信行業(yè)、IPTV行業(yè)、手機行業(yè),你了解行業(yè)的需求。所以,當領導的人,多是做應用的。3.做驅(qū)動,其實我不想稱為“做驅(qū)動”,而是想稱為“做底層系統(tǒng)”,做好了這是通殺各行業(yè)。我工作幾年,做過手機、IPTV、會議電視,但是這些產(chǎn)品對我毫無差別,因為我只做底層。他們的業(yè)務跟我沒關系。
當應用出現(xiàn)問題,他們解決不了時,我就會從內(nèi)核角度給他們出主意,給他們提供工具。做底層的發(fā)展方向,個人認為是技術專家。
4.其實,做底層還是做應用,之間并沒有一個界線,有底層經(jīng)驗,再去做應用,你會感覺很踏實。
有了業(yè)務經(jīng)驗,你再了解一下底層,很快就可以組成一個團隊。
回到怎么學的問題上。嵌入式Linux底層系統(tǒng)包含哪些東西?不要急,舉一個例子你就知道了。1.電腦一開機,那些界面是誰顯示的?是BIOS,它做什么?一些自檢,然后從硬盤上讀入windows,并啟動它。
類似的,這個BIOS對應于嵌入式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)卡、USB等等。
嵌入式Linux能從Flash上讀出并執(zhí)行應用程序,肯定也得有Flash的驅(qū)動程序啊,當然也不僅僅是Flash。
先說到這里吧,嵌入式LINUX里含有bootloader, 內(nèi)核, 驅(qū)動程序、根文件系統(tǒng)這4大塊。
一、bootloader:
它就是一個稍微復雜的裸板程序。但是要把這裸板程序看懂寫好一點都不容易。Windows下好用的工具弱化了我們的編程能力。
很多人一玩嵌入式就用ADS、KEIL。你能回答這幾個問題嗎? 1.一上電,CPU從哪里取指令執(zhí)行?
答:一般從Flash上指令。
2.但是Flash一般是只能讀不能直接寫的,如果我用到全局變量,這些全局變量在哪里?
答:全局變量應該在內(nèi)存里 3.那么誰把全局變量放到內(nèi)存里去?
答:長期用ADS、KEIL的朋友,你能回答嗎?這需要“重定位”。在ADS或KEIL里,重定位的代碼是制作這些工具的公司幫你寫好了。
你可曾去閱讀過?
4.內(nèi)存那么大,我怎么知道把“原來存在Flash上的內(nèi)容”讀到內(nèi)存的“哪個地址去”?
答:這個地址用“鏈接腳本”決定,在ADS里有scatter文件,KEIL里也有類似的文件。但是,你去研究過嗎?
5.你說重定位是把程序從Flash復制到內(nèi)存,那么這個程序可以讀Flash啊?
答:是的,要能操作Flash。當然不僅僅是這些,還有設置時鐘讓系統(tǒng)運行得更快等等。
先自問自答到這里吧,bootloader這一個裸板程序,其實有3部分要點: 1.對硬件的操作
2.對ARM體系處理器的了解
3.程序的基本概念:重定位、棧、代碼段數(shù)據(jù)段BSS段什么的。
對硬件的操作,需要看原理圖、芯片手冊。這需要一定的硬件知識,不求你能設計硬件,但是至少能看懂;不求能看懂模擬電路,但是要能看懂數(shù)字電路。這方面的能力我是在學校里學到的,微機原理、數(shù)字電路這2本書(書名忘了)就足夠了。但是我懷疑你有無耐
心把這2本書看完。我不知道現(xiàn)在有沒有更快捷的書。想速成的話,就先放掉這塊吧,不懂就問GOOGLE、發(fā)貼。
另外,芯片手冊是肯定要讀的,別去找中文的,就看英文的。開始是非常痛苦,以后就會發(fā)現(xiàn)那些語法、詞匯一旦熟悉后,讀任何芯片手冊都很容易。
對ARM體系處理器的了解, 看杜春蕾的吧,里面講有匯編指令,有異常模式、MMU等。也就這3塊內(nèi)容需要你了解。
程序的基本概念,王道當然是去看編譯原理了。可惜,這類書絕對是天書級別的。勸你若非超級天才還是別去看了。就看我寫的
<嵌入式Linux應用開發(fā)完全手冊>和第1期視頻吧,別擔心,不用花錢。照著視頻把硬件相關的實驗做了,這些概念就清楚了。我還沒有
發(fā)現(xiàn)第2套講這些概念的書或視頻,允許我盲目吹噓一回。
對于bootloader,我學習時是先看了,然后自己寫程序把各個硬件的實驗都做了一遍,比如GPIO、時鐘、SDRAM、UART、NAND。把它們都弄清楚了,組臺在一起就很容易看懂u-boot了
總結一下,看懂硬件原理圖、看芯片手冊,這需要你自己去找資料。剩下的,就按<嵌入式Linux應用開發(fā)完全手冊>和第1期視頻的章 節(jié)目錄去學習吧。
二、內(nèi)核:
想速成的人,先跨過內(nèi)核的學習,直接學習怎么寫驅(qū)動。
想成為高手,內(nèi)核必須深刻了解。注意,我說的是了解,我沒奢望去寫出一個內(nèi)核。要對里面的調(diào)度機制、內(nèi)存管理機制、文件管理機制等等有所了解。推薦兩本書:
1.通讀,請看薄的那本(浮燥的社會講求速度, 呵), 2.選讀, 想了解哪一塊就讀哪一節(jié)
三、驅(qū)動: 驅(qū)動包含兩部分:硬件本身的操作、驅(qū)動程序的框架。又是硬件,還是要看得懂原理圖、讀得懂芯片手冊,多練吧。
說到驅(qū)動框架,有一些書介紹一下。LDD3,即,老外寫的那本,里面介紹了不少概念,值得一讀。但是,它的作用
也就限于介紹概念了。我基本上是入門之前用它來熟悉一下概念,入門后就扔掉了。
驅(qū)動方面比較全的介紹,應該是宋寶華的了,老實說我只看過目錄,有不少人說好,這里推薦一下。要想深入了解某一塊,絕對是超5星級推薦。你別指望把它讀完,1800多頁,上下兩冊呢。我是某一塊不清楚
時,就去翻一下它。任何一部分,這書都可以講上2、3百頁,非常詳細。并且是以某個目標來帶你分析內(nèi)核源碼。它以linux 2.4為例,但是原理相通,同樣適用于其它版本的linux。
還有沒有其他介紹?呵呵,當然有了,韋東山Linux視頻第2期。<嵌入式Linux應用開發(fā)完全手冊>里對驅(qū)動講得不多,不夠深入。
于是我錄制了這期視頻。不僅僅教你怎么寫怎么改驅(qū)動,還教你為什么這樣寫這樣改驅(qū)動。每一個驅(qū)動都是現(xiàn)場編寫: 1.用繪圖板畫圖講解──相當于學校里老師在黑板上畫圖講解,很直觀
絕對不是對著PPT念。
2.用source insight當場寫程序,從第1行開始寫,每一課都是這樣。我講了20多個驅(qū)動,就寫了20多個程序。3.寫完就編譯、測試。
4.很全面,字符設備驅(qū)動、塊設備、網(wǎng)卡驅(qū)動3大類齊全,硬件介紹、驅(qū)動框架分析、測試3大類齊全。
培訓機構里教的內(nèi)容,遠不及這期視頻豐富。我在多個培訓機構講過課,從沒看到哪個老師敢每一課都當場講解當場編寫代碼
當場測試,除我之外!也沒看到哪個培訓機構講完這些內(nèi)容──因為時間不夠,講完起碼要一個月,但是這部分基本只有2周授課時間。
把你手上的開發(fā)板所涉及的硬件,都去嘗試寫一個驅(qū)動吧。有問題就先“痛苦地思考”,思考的過程中你會把很多不相關的知識 串聯(lián)起來,最終貫通。
四、根文件系統(tǒng):
大家有沒有想過這2個問題:
1.對于Linux做出來的產(chǎn)品,有些用作監(jiān)控、有些做手機、有些做平板。那么內(nèi)核啟動后,掛載根文件系統(tǒng)后,應該啟動哪一個應用程序呢?
答:內(nèi)核不知道也不管應該啟動哪一個用戶程序。它只啟動init這一個應用程序,它對應/sbin/init。
顯然,這個應用程序就要讀取配置文件,根據(jù)配置文件去啟動用戶程序(監(jiān)控、手冊界面、平板界面等等)這個問題提示我們,文件系統(tǒng)的內(nèi)容是有一些約定的,比如要有/sbin/init,要有配置文件 2.你寫的hello,world程序,有沒有想過里面用到的printf是誰實現(xiàn)的?
答:這個函數(shù)不是你實現(xiàn)的,是庫函數(shù)實現(xiàn)的。它運行時,得找到庫。
這個問題提示我們,文件系統(tǒng)里還要有庫。
簡單的自問自答到這里,要想深入了解,可以看一下busybox的init.c,就可以知道init進程做的事情了。
當然,也可以看<嵌入式Linux應用開發(fā)完全手冊>里構建根文件系統(tǒng)那章。
說一下我的學習經(jīng)歷吧。
1.我在學校時讀的是物理電子專業(yè),其實課程里沒有教怎么設計電路,只是教了些電子電路方面的知識。PCB的設計
是在實驗室里自學的,只設計過2層板,現(xiàn)在忘記得差不多了。但是保留了看原理圖、看芯片手冊的能力。
2.選修了軟件學位,對軟件設計挺感興趣,但是也只是學了C語言、數(shù)據(jù)庫而已。憑著興趣做了不少競賽題。沒能力去
參加競賽,但是把C語言練得很扎實。
3.在實驗室、在第1家公司,就是設計些簡單的PCI卡,寫一下windows的驅(qū)動程序 4.在第2家公司,用51單片機做車載電話,開始走上純軟件的道路。
5.開始感到單片機的不足,辭職半年閉門學Linux,從red hat怎么操作開始。步驟就是先看,再自己寫裸板程序操作硬件,接著到分析u-boot。同時看,對LINUX框架有所了解。
在寫裸板時,建議各位加強對中斷的理解,內(nèi)核就是用中斷來完成各種功能的。6.分析完u-boot,就開始進行簡單的驅(qū)動編程了,這時候,能力還很弱。
7.開始去中興上班,工作2年,編寫各類驅(qū)動、解決各類問題(驅(qū)動問題、幫助定位應用問題),能力得到煅煉。
總結一下:
1.硬件方面的書: 微機原理、數(shù)字電路,高校里的教材。畢業(yè)多年,忘名了。2.Linux方面的書:
<嵌入式Linux應用開發(fā)完全手冊>,老外寫的那本
3.視頻: 韋東山Linux視頻第1期(基于S3C2440錄制): ARM實驗,u-boot,文件系統(tǒng),初級驅(qū)動 韋東山Linux視頻第1期(基于S3C6410錄制): 裸板程序 韋東山Linux視頻第2期: 高級驅(qū)動
第四篇:嵌入式學習路線
語言基礎 1.C 與 C++ A.《c reference》 B.《c++ 編程思想》 C.《effective c++》 D.《more effective c++》 E.《effective c++ stl》 2.軟件設計 A.《UML 2.0 Reference》 B.《設計模式-可復用的面向?qū)ο筌浖幕A》 C.《重構》 D.《修改代碼的藝術》 E.《面向模式的軟件體系結構》卷 1,卷 2,卷 3,卷 4,卷 5 3.Linux 開發(fā)基礎 A.《鳥哥的 linux 私房菜》 B.《GNU make reference》 C.《Shell 編程》 D.《unix 高級環(huán)境編程》 E.《linux kernel development》 F.《深入理解 Linux 內(nèi)核》 G.《Linux 驅(qū)動程序開發(fā)》 H.《Unix 網(wǎng)絡編程》 I.《Linux 進程間通信》 4.嵌入式開發(fā)基礎 A.《ARM 體系結構》 B.《ARM 程序分析與設計》 C.《ARM 嵌入式系統(tǒng)基礎教材》周立功 D.《嵌入式操作系統(tǒng)μC/OS》 E.《嵌入式 Linux 基礎教材》 F.《嵌入式系統(tǒng)設計》 G.《嵌入式硬件設計》 H.《Qt4 圖形設計與嵌入式系統(tǒng)開發(fā)》 I.《嵌入式系統(tǒng)中的實時概念》 J.《實時設計模式》 5.專業(yè)選看 A.FPGA 設計 B.《高性能嵌入式計算》 C.數(shù)字圖像處理,視頻編解碼基礎 MPEG4,H.264,AVS D.Android,iphone,symbian 開發(fā)。
第五篇:嵌入式學習之路
1、必須認真學習一個操作系統(tǒng)
(例如從UC/OSII 到 Linux)
2、必須熟悉TCP/IP網(wǎng)絡協(xié)議
(現(xiàn)在的嵌入式產(chǎn)品與網(wǎng)絡的聯(lián)系越來越緊密,融入網(wǎng)絡是必然趨勢)
3、必須認真的學習一款CPU的工作原理
(例如現(xiàn)在地球人都知道的ARM)
4、必須親自設計一款嵌入式產(chǎn)品
從方案的選擇到原理圖的繪制,從PCB的繪制到硬件的調(diào)試。
學習內(nèi)容
1.主流嵌入式微處理器的結構與原理 如:ARM PowerPC MIPS Motorola68k 2.
必須掌握一個嵌入式操作系統(tǒng)
如:VxWork uc/os II
uLinux Linux WinCE XPE 3.
必須熟悉嵌入式軟件開發(fā)流程 4.
至少做過一個嵌入式軟件項目
如:數(shù)字圖象壓縮技術----MEPG編解碼算法和技術 通信協(xié)議及編程技術----TC
TCP/IP和無線通信協(xié)議、無線局域網(wǎng)通信協(xié)議802.11 移動通信CD 網(wǎng)
網(wǎng)絡信息安全技術
書目開列 基礎
〈〈LINUX命令行、編輯器與SHELL編程〉〉 《linux命令大全.pdf》
編程
《C語言》第二版 譚浩強
《GNU Make 使用手冊(中譯版).pdf》 〈〈精通UNIX SHELL 編程〉〉 《LINUX編程24學時教程》 〈〈LINUX應用程序開發(fā)〉〉 〈〈LINUX程序設計〉〉 〈〈LINUX C函數(shù)庫參考手冊〉〉 <
原理
《數(shù)據(jù)結構》 〈〈算法導論〉〉 〈〈計算機組成原理〉〉 〈〈操作系統(tǒng)原理〉〉 〈〈離散數(shù)學結構〉〉
系統(tǒng)
《嵌入式實時操作系統(tǒng)uC/OS-!》 《linux內(nèi)核完全注釋》
《understanding the linux kernel 2》 <
<
《Linux設備驅(qū)動程序》 〈〈ARM嵌入式LINUX系統(tǒng)構建與驅(qū)動開發(fā)〉〉
硬件
微機原理、數(shù)字電路原理、模擬電路原理、單片微機原理、常見的硬件接口技術 PROTEL,KEIL,AUTOCAD ARM嵌入式系統(tǒng)系列教程—北航 《ARM嵌入式系統(tǒng)基礎教程》 《ARM嵌入式實驗教程
(一)》 《ARM嵌入式實驗教程
(二)》 《ARM嵌入式實驗教程
(三)》 《ARM嵌入式系統(tǒng)學習指導》
《ARM嵌入式系統(tǒng)軟件開發(fā)實例
(一)》 《ARM嵌入式系統(tǒng)軟件開發(fā)實例
(二)》
網(wǎng)絡
〈〈TCP/IP詳解〉〉 〈〈UNIX網(wǎng)絡編程(第一卷)套接口API〉〉 〈〈UNIX網(wǎng)絡編程(第二卷)進程間通信〉〉 ///////////////////////////////////////////////////// 學習階段
第一階段
1.精通單片機,包括A51匯編語言與C51語言,常用的外圍電路,硬件接口 2.
精通電路分析,模電,數(shù)電 3.
精通PROTEL的使用
4.掌握LINUX基礎,包括LINUX命令,SHELL編程,C編程,GNU MAKE的使用 5.
分析UC/OS II的源代碼
用書
《單片機原理與接口技術》 〈〈MCS-51系列單片機實用接口技術〉〉 〈〈電路分析〉〉 〈〈模電〉〉 〈〈數(shù)電〉〉 〈〈信號與系統(tǒng)〉〉 〈〈PROTEL〉〉 〈〈LINUX命令行、編輯器與SHELL編程〉〉 《linux命令大全.pdf》
《GNU Make 使用手冊(中譯版).pdf》 〈〈精通UNIX SHELL 編程〉〉 《LINUX編程24學時教程》 〈〈LINUX應用程序開發(fā)〉〉 〈〈LINUX程序設計〉〉 〈〈LINUX C函數(shù)庫參考手冊〉〉
《嵌入式實時操作系統(tǒng)uC/OS-!》
第二階段
1.精通原理,包括計算機組成原理,操作系統(tǒng)原理,數(shù)據(jù)結構與算法
2.精通LINUX編程,包括串口通信編程,多進程程序,多線程,任務管理,步,網(wǎng)絡編程,QT GUI編程字符和塊設備驅(qū)動程序 建立文件系統(tǒng)等等 3.
再次分析UC/OS II的源代碼
用書
《數(shù)據(jù)結構》 〈〈算法導論〉〉 〈〈計算機組成原理〉〉 〈〈操作系統(tǒng)原理〉〉 〈〈離散數(shù)學結構〉〉 <
第三階段
1.再次深入分析操作系統(tǒng) 2.
分析LINUX內(nèi)核
用書
〈〈operating system concepts>> 《操作系統(tǒng)設計與實現(xiàn)》
<
通信同 《linux內(nèi)核完全注釋》
<
1.熟悉網(wǎng)絡 2.
ARM學習
用書
〈〈TCP/IP詳解〉〉 〈〈UNIX網(wǎng)絡編程(第一卷)套接口API〉〉 〈〈UNIX網(wǎng)絡編程(第二卷)進程間通信〉〉 ARM嵌入式系統(tǒng)系列教程—北航
第五階段
1.驅(qū)動開發(fā)
《Linux設備驅(qū)動程序》〈〈ARM嵌入式LINUX系統(tǒng)構建與驅(qū)動開發(fā)〉〉
軟件
精通51匯編及C51編程,具有獨立大型工程項目硬件底層編程經(jīng)驗
熟悉Linux操作系統(tǒng),能進行相關操作熟練使用Linux下的開發(fā)環(huán)境(如:vi,emacs,gcc,cvs,gdb,kDevelop等)進行網(wǎng)絡,數(shù)據(jù)庫、多媒體等開發(fā)精通嵌入式Linux下的C/C++及匯編語言開發(fā),會使用軟件版本控制軟件,如CVS、VSS等熟悉MicroWindows,QT,MiniGUI等一種Linux圖形界面程序編程機制與技巧有Linux設備驅(qū)動編程、嵌入式操作系統(tǒng)的移植、Linux應用程序編寫
系統(tǒng)
熟悉Linux,Vxworks,WinCE,uCOS等至少一種嵌入式操作系統(tǒng) 熟悉嵌入式開發(fā)的基本流程
處理器
熟悉ARM7/ARM9處理器,要求在該處理器上編寫過代碼 熟悉SAMSUNG、PHILIPS、ATMEL等主流ARM應用設計 精通ARM ADS調(diào)試開發(fā)環(huán)境等工具
網(wǎng)絡通信
熟悉紅外、無線、以太網(wǎng)、GPRS/CDMA及RS485等多種接口的通訊 了解計算機通訊協(xié)議,有TCP/IP等協(xié)議編程能力
硬件
熟悉微機原理、數(shù)字電路原理、模擬電路原理、單片微機原理 精通常見的硬件接口技術
熟悉Protel,AutoCad等設計工具的使用 補充
要想成為高手中的高手,最好從鉆研如下領域修煉: 1,分析一種RTOS的源代碼--UCOS最容易;2,分析一種通訊協(xié)議棧的實現(xiàn)方式--TCP/IP最實用;3,精通一種DSP的開發(fā)集成環(huán)境--TI CCS2.1最優(yōu)秀,精華在其內(nèi)帶的RTOS;4,精通一種單片機的開發(fā)集成環(huán)境--keil C最經(jīng)典;5,精通一種MCU的開發(fā)集成環(huán)境--ADS 1.2最流行;要想成為大師級人物再從如下領域開始修煉: 1,精通一種系統(tǒng)建模語言和工具--Telelogic tau SDL/UML suit最經(jīng)典;2,精通一種算法仿真工具--Matlab simulink 最便宜;要想檢驗一下自己是否到達了至尊級人物,可以做如下的事:
動手搭建一套紅外或者藍牙通訊原型系統(tǒng),模擬前端可以用現(xiàn)成的,基帶用DSP,主控用個32BMCU,DSP和協(xié)議軟件自己寫。當然不可能做全,做個子集就可以了。如果能到這個地步,打住吧,該改行去做市場了。做個一、二年市場,你不自己去創(chuàng)個業(yè)就太浪費了