第一篇:嵌入式Linux學(xué)前建議
嵌入式Linux學(xué)前建議(初學(xué)者必讀)
目前,Linux作為嵌入式系統(tǒng)的主力軍,廣泛應(yīng)用于消費(fèi)類電子、工業(yè)控制、軍工電子、電信/網(wǎng)絡(luò)/通訊、航空航天、汽車電子、醫(yī)療設(shè)備、儀器儀表等相關(guān)行業(yè)。隨著嵌入式行業(yè)的迅猛發(fā)展,嵌入式Linux憑借其系統(tǒng)發(fā)展的成熟度、市場(chǎng)應(yīng)用的高份額也受到更多工程師朋友的青睞,越來越多的企業(yè)和研發(fā)機(jī)構(gòu)都轉(zhuǎn)向嵌入式Linux的開發(fā)和研究,這使得嵌入式Linux在新興的嵌入式操作系統(tǒng)領(lǐng)域內(nèi)也獲得了飛速發(fā)展和廣泛應(yīng)用。而對(duì)于那些希望盡快進(jìn)入嵌入式行業(yè)從事產(chǎn)品研發(fā)的朋友們,選擇嵌入式Linux方向作為切入點(diǎn)無疑是最好的途徑之一。
近期,有許多面臨畢業(yè)、找工作的大學(xué)生來到華清遠(yuǎn)見嵌入式培訓(xùn)中心咨詢了解有關(guān)嵌入式Linux方向的學(xué)習(xí)安排。在與他們交流溝通的過程中,被問到最多的幾個(gè)問題就是“如何做好嵌入式Linux學(xué)習(xí)前的準(zhǔn)備?”,“學(xué)習(xí)嵌入式Linux需要補(bǔ)習(xí)哪些基礎(chǔ)課程?”,“嵌入式Linux開發(fā)跟普通軟件開發(fā)在學(xué)習(xí)方法上有什么不同?”,“項(xiàng)目實(shí)戰(zhàn)環(huán)節(jié)多嗎?”,“有專業(yè)人員帶領(lǐng)嗎?”,相信這些也是很多準(zhǔn)備入行的初學(xué)者都會(huì)關(guān)心的問題,為了幫助大家做好嵌入式Linux的學(xué)前準(zhǔn)備,我們對(duì)這些常見的問題逐一進(jìn)行解答,提供給大家參考,希望能夠有所幫助。
1、如何做好嵌入式Linux學(xué)習(xí)前的準(zhǔn)備?
要成為一名合格的嵌入式Linux工程師,就需要系統(tǒng)的學(xué)習(xí)軟、硬件相關(guān)領(lǐng)域內(nèi)的知識(shí),需要在最開始就掌握開發(fā)的規(guī)范和原則,養(yǎng)成良好的工作習(xí)慣。為了確保學(xué)習(xí)的效果,華清遠(yuǎn)見安排的整個(gè)課程體系是非常集中、高效的,這就要求準(zhǔn)備參加嵌入式Linux就業(yè)課程學(xué)習(xí)的同學(xué)要調(diào)整好自己的時(shí)間,務(wù)必要確保在4個(gè)多月的學(xué)習(xí)時(shí)間內(nèi)能夠高度集中精力。在整個(gè)集中學(xué)習(xí)過程中,既要保證課上認(rèn)真聽講、實(shí)戰(zhàn)演練的時(shí)間,也要保證課下繼續(xù)實(shí)戰(zhàn)演練、查閱資料的時(shí)間。只有經(jīng)過這種高強(qiáng)度的、實(shí)戰(zhàn)為主的訓(xùn)練,才能夠在比較短的時(shí)間內(nèi)掌握規(guī)范的嵌入式開發(fā)工作流程,讓自己符合嵌入式企業(yè)對(duì)應(yīng)崗位的需求。
除了在學(xué)習(xí)時(shí)間上要做好充分的準(zhǔn)備之外,在學(xué)習(xí)的心態(tài)和方法的調(diào)整上也要做好準(zhǔn)備。許多朋友只了解嵌入式Linux方向美好的發(fā)展前景,只關(guān)注高收入、就業(yè)機(jī)會(huì)多等熱點(diǎn),卻忽略了學(xué)習(xí)過程本身。為了能夠讓集中培訓(xùn)的效果發(fā)揮到最佳,建議大家在學(xué)習(xí)開始前更多地去了解嵌入式產(chǎn)品研發(fā)的特點(diǎn)、所需要掌握的技術(shù)規(guī)范和工作要點(diǎn),關(guān)注需具備基礎(chǔ)的補(bǔ)充和學(xué)習(xí),從而為后續(xù)的強(qiáng)化學(xué)習(xí)過程做好心態(tài)上的準(zhǔn)備,畢竟態(tài)度往往決定了最后做事的結(jié)果。
2、學(xué)習(xí)嵌入式Linux需要補(bǔ)習(xí)哪些基礎(chǔ)課程?
嵌入式Linux工程師的學(xué)習(xí)需要具備一定的C語言基礎(chǔ),因此面對(duì)許多朋友只是在大一或者大二學(xué)習(xí)過C(還不一定認(rèn)真學(xué)了,呵呵?。蠡揪筒辉儆眠^的情況,建議大家在來華清遠(yuǎn)見學(xué)習(xí)之前先復(fù)習(xí)一下C語言基礎(chǔ)這塊。要提醒大家的是,復(fù)習(xí)時(shí)不能只關(guān)注基本語法,對(duì)于常用的數(shù)據(jù)存儲(chǔ)及處理方式,例如:數(shù)組、結(jié)構(gòu)體等也要關(guān)注,有條件的話一定在機(jī)器上親自敲敲代碼、分析理解一下具體案例代碼編寫的思路,讓自己慢慢進(jìn)入一名嵌入式開發(fā)人員的狀態(tài)。
此外,在時(shí)間允許的情況下,建議大家看一下有關(guān)計(jì)算機(jī)操作系統(tǒng)工作原理以及計(jì)算機(jī)組成原理等方面的專業(yè)書籍。對(duì)于進(jìn)程、線程、任務(wù)調(diào)度、總線、I/O等基本概念及工作原理有一個(gè)初步的了解和掌握,這部分知識(shí)的準(zhǔn)備對(duì)于后續(xù)更好地學(xué)習(xí)嵌入式Linux系統(tǒng)開發(fā)將會(huì)起到很好的幫助作用。
3、嵌入式Linux開發(fā)跟普通軟件開發(fā)在學(xué)習(xí)方法上有什么不同?
要成為一名成功的嵌入式軟件開發(fā)人員,程序的設(shè)計(jì)能力是首要技能,這一點(diǎn)與普通的軟件開發(fā)人員的要求是一樣的。但是作為“軟硬兼施”的嵌入式開發(fā),則要求大家不僅要了解較底層軟件的工作過程和工作原理(例如操作系統(tǒng)級(jí)、驅(qū)動(dòng)程序級(jí)軟件),在軟件開發(fā)的專業(yè)水平上也需要充分考慮軟件設(shè)計(jì)的時(shí)間和空間效率,這樣才能設(shè)計(jì)出高性能嵌入式程序。因此面對(duì)相對(duì)復(fù)雜的嵌入式系統(tǒng)的研發(fā)過程,在學(xué)習(xí)的過程中需要更多關(guān)注完整的知識(shí)體系結(jié)構(gòu)的建立。特別是對(duì)于原理性知識(shí)的掌握程度則相對(duì)普通的軟件開發(fā)人員提出了更高的要求。因此在學(xué)習(xí)的過程中,“要知其然,更要知其所以然”。
同時(shí)由于一直以來嵌入式行業(yè)中專業(yè)人才的緊缺,許多經(jīng)驗(yàn)性的東西都有待交流和分享,因此充分關(guān)注與每一位講師的實(shí)際經(jīng)驗(yàn)交流就顯得至關(guān)重要。華清遠(yuǎn)見的每一位專業(yè)講師都擁有多年的嵌入式Linux開發(fā)經(jīng)驗(yàn),他們?cè)诟髯陨瞄L(zhǎng)的領(lǐng)域內(nèi)都有很多值得分享和交流的體會(huì),因此通過他們課堂的講解、示范,通過充分的交流溝通,無疑可以大大縮短在行業(yè)中摸索的時(shí)間,記住不要以為原理性的東西通過看書就能解決,借助這些行業(yè)高手的透徹分析,才能讓你的學(xué)習(xí)過程更有價(jià)值、更加實(shí)用。
4、華清遠(yuǎn)見的課程體系中項(xiàng)目實(shí)戰(zhàn)環(huán)節(jié)多嗎?有專業(yè)人員帶領(lǐng)嗎?
由于大多數(shù)人對(duì)嵌入式開發(fā)過程的陌生,因此實(shí)戰(zhàn)環(huán)節(jié)的訓(xùn)練就顯得格外重要。在嵌入式Linux課程學(xué)習(xí)的每個(gè)階段,都需要在專業(yè)人員的引導(dǎo)下,通過全真的案例設(shè)計(jì)與實(shí)現(xiàn)來鞏固所學(xué)的知識(shí)點(diǎn)。同時(shí)我們要求大家盡可能在課堂上多出問題、多暴露問題,只有這樣,才能通過專業(yè)人員的及時(shí)幫助和指導(dǎo),最高效地掌握解決實(shí)際問題的方式和方法,積累足夠的技術(shù)經(jīng)驗(yàn)和項(xiàng)目經(jīng)驗(yàn)。
同時(shí)也只有通過最終綜合項(xiàng)目實(shí)戰(zhàn)環(huán)節(jié)的密集訓(xùn)練,才能夠逐步建立起嵌入式產(chǎn)品開發(fā)的工程化概念。在這個(gè)過程中,除了可以達(dá)到所學(xué)知識(shí)綜合、實(shí)際應(yīng)用的目的,還可以讓大家更真實(shí)地體驗(yàn)到如何編寫工程化程序?如何在設(shè)計(jì)中與團(tuán)隊(duì)協(xié)作開發(fā)?如何為后續(xù)有效地升級(jí)與維護(hù)做好準(zhǔn)備?如何編寫規(guī)范的文檔等?而這些體驗(yàn)都將為后續(xù)真正從事企業(yè)內(nèi)工程化的軟件設(shè)計(jì)做好充分的準(zhǔn)備。
記住貫穿始終的是:要知道為什么學(xué)?要知道學(xué)的是什么?要知道怎么學(xué)?要知道學(xué)了如何用?最后還要知道用的時(shí)候出了問題該如何解決?相信以這些問題為線索的學(xué)習(xí)過程一定可以幫助大家快速成為一名優(yōu)秀的嵌入式開發(fā)工程師。
第二篇:嵌入式linu學(xué)習(xí)心得
嵌入式Linux學(xué)習(xí)心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當(dāng)前的目錄
cd:改變當(dāng)前操作目錄cd /直接跳到根目錄 cd..回到上一級(jí)目錄 cat: 打印顯示當(dāng)前文件的內(nèi)容信息
mkdir:創(chuàng)建目錄
fdisk: 查看硬盤分區(qū)信息,-l以列表方式查看
->代表是鏈接文件,類似window下的快捷方式。
cp: 復(fù)制命令,例子cp 文件名 /home/dir/
mv: 移動(dòng)或改名,如mv sonf.confsonf.txt(改名)移動(dòng):mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個(gè)命令的幫助,man 命令
2、各系統(tǒng)目錄的功能
drw—r—w--:d代表是目錄,drw代表當(dāng)前用戶的權(quán)限,r代表組用戶的權(quán)限,w代表其它用戶的權(quán)限。x代表有執(zhí)行權(quán)限。
/boot/gruff.conf: 啟動(dòng)引導(dǎo)程序
/dev:brw—rw--:b代表是塊設(shè)備。Linux設(shè)備有三種,塊設(shè)備(b開頭)、字符設(shè)備(c開頭)、網(wǎng)絡(luò)設(shè)備。had代表第一個(gè)硬盤,hdb代表第二個(gè)硬盤。Hdb2代表第二塊硬盤的第二個(gè)分區(qū)。3,67代表主設(shè)備為3,從設(shè)備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動(dòng)方式下必須啟動(dòng)的進(jìn)程。Inittab文件中有6個(gè)啟動(dòng)level,wait中對(duì)應(yīng)著6個(gè)level的目錄,respawn代表當(dāng)一個(gè)進(jìn)程被意外終止了,但會(huì)自動(dòng)啟動(dòng)的進(jìn)程,如守護(hù)進(jìn)程。rc.d目錄中存放了一個(gè)rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個(gè)vsftpd里面存放tcp、ftp的配置。
/home : 用戶目錄,存放用戶的文件,/lib:存放庫文件,后綴為so的文件代表動(dòng)態(tài)鏈接庫。
/lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。
/mnt:掛載外部設(shè)備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統(tǒng)中,要查看windows中D盤的文件,首先應(yīng)該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d
/opt:用戶安裝的應(yīng)用程序
/proc:是系統(tǒng)運(yùn)行的映射,比較重要。里面的文件數(shù)字代表進(jìn)程號(hào)。每個(gè)進(jìn)程號(hào)目錄下包含進(jìn)程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號(hào)。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息
對(duì)于Linux的設(shè)備驅(qū)動(dòng)程序,有兩種加載模式,一種是直接加載進(jìn)linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。
/sbin: 系統(tǒng)管理的一些工具。如poweroff關(guān)機(jī)工具。
/usr: 安裝系統(tǒng)時(shí)很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫文件,src包含Linux2.4的內(nèi)核源碼
/var:存放是臨時(shí)變量
3、
第三篇:關(guān)于嵌入式開發(fā)的一點(diǎn)建議
CSDN:很多人都講嵌入式開發(fā)很難,能不能就你學(xué)習(xí)和工作經(jīng)驗(yàn)與大家分享下嵌入式開發(fā)如何開始和深入?作為嵌入式研發(fā)工程師,你認(rèn)為其應(yīng)具備哪些知識(shí)結(jié)構(gòu)和實(shí)戰(zhàn)能力? 卜茂霞:說到嵌入式開發(fā)如何開始和深入,其實(shí)我也沒有特別的方法,在這里僅談下我的個(gè)人見解吧。做嵌入式開發(fā)必須具備良好的C語言功底,匯編雖然不是必須,但懂點(diǎn)更好。其次可以到網(wǎng)上找一個(gè)比較流行的MCU開發(fā)板,比如STM32做為學(xué)習(xí)開發(fā)板,參照示例代碼,自己動(dòng)手編譯燒錄跑程序,比如跑馬燈的程序,深刻了解整個(gè)開發(fā)過程。接下來可以學(xué)習(xí)小型的實(shí)時(shí)操作系統(tǒng),比如UC/OS和RT-Thread等,如果C語言比較好的話可以嘗試了解這個(gè)實(shí)時(shí)操作系統(tǒng)的原理部分,嘗試閱讀其源碼,掌握其使用技巧。而接下來最好是能參與具體的開發(fā)項(xiàng)目,負(fù)責(zé)幾個(gè)模塊,寫寫驅(qū)動(dòng),或做應(yīng)用。
需要強(qiáng)調(diào)的是,每個(gè)過程一定要自己嘗試動(dòng)手,不要停留在書本或官方提供的開發(fā)手冊(cè)上,一定要通過自己的實(shí)踐去驗(yàn)證自己想法,在這個(gè)過程中通過不斷思考與驗(yàn)證,有問題找經(jīng)驗(yàn)豐富的同事或在網(wǎng)上找答案,另外最好能將心得記錄下來(比如說寫CSDN博客),并不斷總結(jié)。這樣持之以恒,不知不覺你就會(huì)發(fā)現(xiàn)已經(jīng)進(jìn)入資深嵌入式開發(fā)工程師的行列了。個(gè)人認(rèn)為嵌入式開發(fā)工程師應(yīng)具備:1.良好的C語言功底。2.至少熟悉一款MCU,其它的技能可以在具體項(xiàng)目中不斷學(xué)習(xí)來補(bǔ)充。
第四篇:嵌入式學(xué)習(xí)路線建議
嵌入式學(xué)習(xí)是一個(gè)循序漸進(jìn)的過程,如果是希望向嵌入式軟件方向發(fā)展的話,目前最常見的是嵌入式Linux方向,關(guān)注這個(gè)方向,我認(rèn)為大概分3個(gè)階段:
1、嵌入式linux上層應(yīng)用,包括QT的GUI開發(fā)
2、嵌入式linux系統(tǒng)開發(fā)
3、嵌入式linux驅(qū)動(dòng)開發(fā)
嵌入式目前主要面向的幾個(gè)操作系統(tǒng)是,LINUX,WINCE、VxWorks等等 Linux是開源免費(fèi)的,而且其源代碼是開放的,更加適合我們學(xué)習(xí)嵌入式。
你可以嘗試以下路線:
(1)C語言是所有編程語言中的強(qiáng)者,單片機(jī)、DSP、類似ARM的種種芯片的編程都可以用C語言搞定),因此必須非常熟練的掌握。推薦書籍:《The C Programming Language》 這本經(jīng)典的教材是老外寫的,也有中譯版本。(2)操作系統(tǒng)原理,是必需的,如果你是計(jì)算機(jī)專業(yè)畢業(yè)那也就無所謂了,如果是非計(jì)算機(jī)專業(yè)的就必須找一本比較淺顯的計(jì)算機(jī)原理書籍看一看,把啥叫“進(jìn)程”“線程”“系統(tǒng)調(diào)度”等等基本問題搞清楚。
(3)Linux操作系統(tǒng)就是用C語言編寫的,所以你也應(yīng)該先學(xué)習(xí)下Linux方面的編程,只有你會(huì)應(yīng)用了,才能近一步去了解其內(nèi)核的精髓。推薦書籍:《UNIX環(huán)境高級(jí)編程》(第2版)
(4)了解ARM的架構(gòu),原理,以及其匯編指令,我們?cè)谇度胧介_發(fā)中,一般很少去寫匯編,但是最起碼的要求是能夠看懂a(chǎn)rm匯編。
(5)系統(tǒng)移植的時(shí)候,就需要你從最下層的bootloader開始,然后內(nèi)核移植,文件系統(tǒng)移植等。而移植這部分對(duì)硬件的依賴是非常大的,其配置步驟也相對(duì)復(fù)雜,也沒有太多詳細(xì)資料。
(6)驅(qū)動(dòng)開發(fā)
linux驅(qū)動(dòng)程序設(shè)計(jì)既是個(gè)極富有挑戰(zhàn)性的領(lǐng)域,又是一個(gè)博大精深的內(nèi)容。
linux驅(qū)動(dòng)程序設(shè)計(jì)本質(zhì)是屬于linux內(nèi)核編程范疇的,因而是對(duì)linux內(nèi)核和內(nèi)核編程是有要求的。在學(xué)習(xí)前你要想了解linux內(nèi)核的組成,因?yàn)槊恳徊糠忠敿?xì)研究的話足夠可以擴(kuò)展成一本厚書。
以上只不過是大概的框架,在實(shí)際的開發(fā)中還會(huì)涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學(xué)習(xí)嵌入式的周期較長(zhǎng),門檻較高,自學(xué)的話更是需要較強(qiáng)的學(xué)習(xí)能力和專業(yè)功底。只要能堅(jiān)持下來一定會(huì)取得成功!
其實(shí)LZ可以到一些嵌入式培訓(xùn)機(jī)構(gòu)的網(wǎng)站上看一下他們的課程設(shè)置,就會(huì)在腦子里有個(gè)清晰的思路,比如華清遠(yuǎn)見的官方網(wǎng)站,上面的嵌入式內(nèi)容很豐富,嵌入式方面的信息更新也很迅速,沒事可以去轉(zhuǎn)轉(zhuǎn)。
嵌入式是一個(gè)比較大的概念,他有四個(gè)分支,至少我只知道這四個(gè)。
1、微控制器(單片機(jī)為例);
2、微處理器(arm為例);
3、dsp(數(shù)字信號(hào)處理);
4、soc(片上系統(tǒng)); 對(duì)于我們初學(xué)者而言,首先要學(xué)習(xí)單片機(jī),以51為代表,等你學(xué)好51之后,可以深入學(xué)習(xí)更艱難的東西;
當(dāng)然,并不是說你只需要學(xué)習(xí)單片機(jī);要想學(xué)好單片機(jī),你還得學(xué)c語言,得學(xué)匯編,得學(xué)一大堆應(yīng)用軟件;等到單片機(jī)能夠掌握的不錯(cuò)的時(shí)候又需要自己進(jìn)行原理圖、PCB板的設(shè)計(jì);還得掌握系統(tǒng)設(shè)計(jì)的工程管理什么的;比較多。。
單片機(jī)還是比較簡(jiǎn)單的,等到學(xué)好之后,開始學(xué)習(xí)arm的時(shí)候,你就接觸的多了,什么操作系統(tǒng)啊、驅(qū)動(dòng)編寫啊、內(nèi)核移植啊、應(yīng)用程序的添加啊、上位機(jī)的編寫啊,那個(gè)就多了,不過到時(shí)候你就全知道了。。
ARM+LINUX路線,主攻嵌入式Linux操作系統(tǒng)及其上應(yīng)用軟件開發(fā)目標(biāo):
(1)掌握主流嵌入式微處理器的結(jié)構(gòu)與原理(初步定為arm9)
(2)必須掌握一個(gè)嵌入式操作系統(tǒng)(初步定為uclinux或linux,版本待定)
(3)必須熟悉嵌入式軟件開發(fā)流程并至少做一個(gè)嵌入式軟件項(xiàng)目。
從事嵌入式軟件開發(fā)的好處是:
(1)目前國內(nèi)外這方面的人都很稀缺。這一領(lǐng)域入門門檻較高,所以非專業(yè)IT人員很難切
入這一領(lǐng)域;另一方面,是因?yàn)檫@一領(lǐng)域較新,目前發(fā)展太快,大多數(shù)人無條件接觸。
(2)與企業(yè)計(jì)算等應(yīng)用軟件不同,嵌入式領(lǐng)域人才的工作強(qiáng)度通常低一些(但收入不低)。
(3)哪天若想創(chuàng)業(yè),搞自已的產(chǎn)品,嵌入式不像應(yīng)用軟件那樣容易被盜版。硬件設(shè)計(jì)一般
都是請(qǐng)其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設(shè)計(jì)軟件就變成
自己的產(chǎn)品了。
(4)興趣所在,這是最主要的。
從事嵌入式軟件開發(fā)的缺點(diǎn)是:
(1)入門起點(diǎn)較高,所用到的技術(shù)往往都有一定難度,若軟硬件基礎(chǔ)不好,特別是操作系
統(tǒng)級(jí)軟件功底不深,則可能不適于此行。
(2)這方面的企業(yè)數(shù)量要遠(yuǎn)少于企業(yè)計(jì)算類企業(yè)。
(3)有少數(shù)公司經(jīng)常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數(shù)公司
也并無此要求,只要有經(jīng)驗(yàn)即可。
(4)平臺(tái)依托強(qiáng),換平臺(tái)比較辛苦。
興趣的由來:
1、成功觀念不同,不虛度此生,就是我的成功。
2、喜歡思考,挑戰(zhàn)邏輯思維。
3、喜歡C
C是一種能發(fā)揮思維極限的語言。關(guān)于C的精神的一些方面可以被概述成短句如下:
相信程序員。
不要阻止程序員做那些需要去做的。
保持語言短小精干。
一種方法做一個(gè)操作。
使得它運(yùn)行的夠快,盡管它并不能保證將是可移植的。
4、喜歡底層開發(fā),討厭vb類開發(fā)工具(并不是說vb不好)。
5、發(fā)展前景好,適合創(chuàng)業(yè),不想自己要死了的時(shí)候還是一個(gè)工程師。
方法步驟:
1、基礎(chǔ)知識(shí):
目的:能看懂硬件工作原理,但重點(diǎn)在嵌入式軟件,特別是操作系統(tǒng)級(jí)軟件,那將是我的優(yōu)
勢(shì)。
科目:數(shù)字電路、計(jì)算機(jī)組成原理、嵌入式微處理器結(jié)構(gòu)。
匯編語言、C/C++、編譯原理、離散數(shù)學(xué)。
數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)、軟件工程、網(wǎng)絡(luò)、數(shù)據(jù)庫。
方法:雖科目眾多,但都是較簡(jiǎn)單的基礎(chǔ),且大部分已掌握。不一定全學(xué),可根據(jù)需要選修。
thec++programminglanguage(一直沒時(shí)間讀)、數(shù)據(jù)結(jié)構(gòu)-C2。
2、學(xué)習(xí)linux:
目的:深入掌握linux系統(tǒng)。方法:使用linux—〉linxu系統(tǒng)編程開發(fā)—〉驅(qū)動(dòng)開發(fā)和分析linux內(nèi)核。先看深,那主講原理??磶妆楹?,看情景分析,對(duì)照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學(xué)習(xí)。最后深入代碼。
主攻書籍:linux內(nèi)核完全剖析、unix環(huán)境高級(jí)編程、深入理解linux內(nèi)核、情景分析和源代。
3、學(xué)習(xí)嵌入式linux:
目的:掌握嵌入式處理器其及系統(tǒng).方法:(1)嵌入式微處理器結(jié)構(gòu)與應(yīng)用:直接arm原理及匯編即可,不要重復(fù)x86。
(2)嵌入式操作系統(tǒng)類:ucOS/II簡(jiǎn)單,開源,可供入門。而后深入研究uClinux。
(3)必須有塊開發(fā)板(arm9以上),有條件可參加培訓(xùn)(進(jìn)步快,能認(rèn)識(shí)些朋友)
主攻書籍:毛德操的《嵌入式系統(tǒng)》及其他arm9手冊(cè)與arm匯編指令等。
4、深入學(xué)習(xí):
A、數(shù)字圖像壓縮技術(shù):主要是應(yīng)掌握MPEG、mp3等編解碼算法和技術(shù)。
B、通信協(xié)議及編程技術(shù):TCP/IP協(xié)議、802.11,Bluetooth,GPRS、GSM、CDM
A等。
C、網(wǎng)絡(luò)與信息安全技術(shù):如加密技術(shù),數(shù)字證書CA等。
D、DSP技術(shù):DigitalSignalProcess,DSP處理器通過硬件實(shí)現(xiàn)數(shù)字信號(hào)處理算
法。
說明:太多細(xì)節(jié)未說明,可根據(jù)實(shí)際情況調(diào)整。重點(diǎn)在于1、3,不必完全按照順序
作。對(duì)于學(xué)習(xí)c++,理由是c++不只是一種語言,一種工具,她還是一種藝術(shù),一種文化,一種哲學(xué)理念、但不是拿來炫耀得東西。對(duì)于linux內(nèi)核,學(xué)習(xí)編程,讀一些優(yōu)秀代碼也是
有必要的。
注意: 要學(xué)會(huì)舉一反多,有強(qiáng)大的基礎(chǔ),很多東西簡(jiǎn)單看看就能會(huì)。想成為合格的
程序員,前提是必須熟練至少一種編程語言,并具有良好的邏輯思維。一定要理論結(jié)合實(shí)踐。
不要一味鉆研技術(shù),雖然擠出時(shí)間是很難做到的,但還是要留點(diǎn)余地去完善其他的愛
好,比如宇宙,素描、機(jī)械、管理,心理學(xué)、游戲、科幻電影。還有一些不愿意做但必須要
做的!
技術(shù)是通過編程編程在編程編出來的。永遠(yuǎn)不要夢(mèng)想一步登天,不要做浮躁的人,不
要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機(jī)會(huì)來了在創(chuàng)業(yè)(不要
相信有奇跡發(fā)生,盲目創(chuàng)業(yè)很難成功,即便成功了發(fā)展空間也不一定很大)。
嵌入式書籍推薦
Linux基礎(chǔ)
1、《Linux與UnixShell編程指南》
C語言基礎(chǔ)
1、《CPrimerPlus,5thEdition》【美】StephenPrata著
2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDav
idM.Rithie(K&R)著
3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)
4、《嵌入式Linux應(yīng)用程序開發(fā)詳解》
Linux內(nèi)核
1、《深入理解Linux內(nèi)核》(第三版)
2、《Linux內(nèi)核源代碼情景分析》毛德操胡希明著
研發(fā)方向
1、《UNIXNetworkProgramming》(UNP)
2、《TCP/IP詳解》
3、《Linux內(nèi)核編程》
4、《Linux設(shè)備驅(qū)動(dòng)開發(fā)》(LDD)
5、《Linux高級(jí)程序設(shè)計(jì)》楊宗德著
硬件基礎(chǔ)
1、《ARM體系結(jié)構(gòu)與編程》杜春雷著
2、S3C2410Datasheet
英語基礎(chǔ)
1、《計(jì)算機(jī)與通信專業(yè)英語》
系統(tǒng)教程
1、《嵌入式系統(tǒng)――體系結(jié)構(gòu)、編程與設(shè)計(jì)》
2、《嵌入式系統(tǒng)――采用公開源代碼和StrongARM/Xscale處理器》毛德操胡希明
著
3、《BuildingEmbeddedLinuxSystems》
4、《嵌入式ARM系統(tǒng)原理與實(shí)例開發(fā)》楊宗德著
理論基礎(chǔ)
1、《算法導(dǎo)論》
2、《數(shù)據(jù)結(jié)構(gòu)(C語言版)》
3、《計(jì)算機(jī)組織與體系結(jié)構(gòu)?性能分析》
4、《深入理解計(jì)算機(jī)系統(tǒng)》【美】RandalE.Bryant DavidO''Hallaron著
5、《操作系統(tǒng):精髓與設(shè)計(jì)原理》
6、《編譯原理》
7、《數(shù)據(jù)通信與計(jì)算機(jī)網(wǎng)絡(luò)》
8、《數(shù)據(jù)壓縮原理與應(yīng)用》
C語言書籍推薦
1.TheCprogramminglanguage《C程序設(shè)計(jì)語言》
2.PointersonC《C和指針》
3.Ctrapsandpitfalls《C陷阱與缺陷》
4.ExpertCLanuage《專家C編程》
5.WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCProgr ams
《編程精粹--Microsoft編寫優(yōu)質(zhì)無錯(cuò)C程序秘訣》
6.ProgrammingEmbeddedSystemsinCandC++《嵌入式系統(tǒng)編程》
7.《C語言嵌入式系統(tǒng)編程**》
8.《高質(zhì)量C++/C編程指南》林銳
盡可能多的編碼,要學(xué)好C,不能只注重C本身。算法,架構(gòu)方式等都很重要。
這里很多書其實(shí)是推薦而已,不必太在意,關(guān)鍵還是基礎(chǔ),才是重中之重??!
第五篇:系統(tǒng)學(xué)習(xí)嵌入式Linux幾點(diǎn)非常實(shí)用的建議
系統(tǒng)學(xué)習(xí)嵌入式Linux 幾點(diǎn)非常實(shí)用的建議 學(xué)習(xí)掌握嵌入 Linux 的開發(fā)與移植現(xiàn)在非常流行。各種學(xué)習(xí)文章與培訓(xùn)班,充斥書店街頭。筆者也上了路,經(jīng)歷漫長(zhǎng)的摸索,終于一日開竅,但的確糟蹋了很多金錢與時(shí)間。作為窮人,現(xiàn)寫下自己的感受,供好學(xué)寒士參考。
第一要點(diǎn): 實(shí)驗(yàn)重于看書(多編碼,少翻書)
一定首先搭建x86實(shí)驗(yàn)環(huán)境。
用舊計(jì)算機(jī)(周末電腦城拋售存貨,有新的),搭建一套 實(shí)驗(yàn)環(huán)境。
host主機(jī): 一臺(tái)PC機(jī)(能夠跑redhat linux,看問檔就可以了,配網(wǎng)卡與軟驅(qū))。target目標(biāo)機(jī): 一塊舊PC主板,配一張網(wǎng)卡和一個(gè)軟驅(qū),電源。
附件: 交叉網(wǎng)線,交叉串口線
夠了,不會(huì)超過3千元(已經(jīng)很滿足了)。
軟件全部到網(wǎng)站下載。
先不管什么arm ppc mips, 以后看看文檔吧。
第二重點(diǎn):GNU C編譯
在PC 上安裝 redhat linux 包括 開發(fā)工具。
熟悉linux 的配置命令。
練習(xí)linux 的 C 語言編程,多個(gè)程序的編譯工程制作。
無聊的話,將C語言教材的例程,編譯十幾個(gè),熟悉GNU 編譯器。004km.cn包括gcc make ld objdump ar 等 GNU toolkit
第三重點(diǎn):realtime linux 內(nèi)核編程/加載到目標(biāo)板運(yùn)行。
1。下載 rt-linux ,或uclinux 或什么 非 redhat的linux 源碼,一定是包括,編譯工程makefile, 并且for x86 PC的。
2。修改和配置程序,將 rtlinux的標(biāo)準(zhǔn) console口改為串口,不是vga與鍵盤。
3。在redhat linux 環(huán)境下,編譯 這個(gè) embedded linux內(nèi)核。
用mkboot的這樣程序(或按代碼中工具,)將編譯好的內(nèi)核執(zhí)行文件拷貝定位軟盤引導(dǎo)區(qū)。
4。用這張軟盤引導(dǎo)在目標(biāo)PC主板。
在PC主機(jī)的串口終端上配置PC主板目標(biāo)機(jī)。效果同 redhat linux terminal console一樣。
以后越來越難,堅(jiān)持。
第四個(gè)重點(diǎn) 編譯跑通網(wǎng)卡的驅(qū)動(dòng)程序
下載編譯網(wǎng)卡驅(qū)動(dòng)源碼
跑通主機(jī)與目標(biāo)機(jī)的 網(wǎng)絡(luò)通訊。
不要太動(dòng)頭想,ping 通就是了。
第五個(gè)重點(diǎn) 用tftp 下載執(zhí)行文件從 PC主機(jī) 到 目標(biāo)機(jī)運(yùn)行。
第六個(gè)重點(diǎn) GNU GDB 遠(yuǎn)程在線調(diào)試(網(wǎng)口調(diào)試)
第七個(gè)重點(diǎn) 實(shí)時(shí)內(nèi)核學(xué)習(xí)/修改
照文章/書 分析調(diào)試/破壞 內(nèi)核的源碼。
主要是 調(diào)度/消息/存儲(chǔ)/文件/進(jìn)程/線程/互斥 等
單獨(dú)跑跑,了解內(nèi)核功能就是了。
第八個(gè)重點(diǎn) TCP/IP的學(xué)習(xí)
下載一個(gè)簡(jiǎn)單的web server(http server)
學(xué)習(xí)理解,并編譯加載運(yùn)行。
將PC主板目標(biāo)機(jī)看作網(wǎng)站服務(wù)器,然后在PC主機(jī)的網(wǎng)絡(luò)瀏難器中訪問這個(gè) web server.有興趣,把你的照片加載到目標(biāo)機(jī)的 html網(wǎng)頁中。
第九個(gè)重點(diǎn) 網(wǎng)卡驅(qū)動(dòng)程序分析
了解 PCI總線原理,嘗試獨(dú)立寫點(diǎn)網(wǎng)卡驅(qū)動(dòng)程序,過濾以太報(bào)文的處理。跟蹤處理特殊的報(bào)文。
第十個(gè)重點(diǎn)USB和 FLASH文件系統(tǒng)練習(xí)。(可以跳過)
可以分析修改 USB與FLASH文件系統(tǒng)源碼。
一定要分析源碼,上網(wǎng)查FLASH的型號(hào)。
第十一個(gè)重點(diǎn) 路由器實(shí)驗(yàn)。
分析zebra方面的源碼,再買一張網(wǎng)卡。
嘗試分析NAT RIP等協(xié)議,將你的PC板目標(biāo)機(jī),變成一臺(tái)簡(jiǎn)單的路由器。以后的實(shí)驗(yàn) 需要根據(jù) 行業(yè)來,例如,mini-GUI(圖形編程),或 DVR(硬盤錄象機(jī)),或IP Vedio WebTV 服務(wù)器??梢酝婧脦啄?,當(dāng)然最好找工作前,有針對(duì)地做實(shí)驗(yàn)。
一句話,動(dòng)手修改編碼,不要只看看。