嵌入式linux開發教程
A. 進行嵌入式Linux編程都需要哪些知識
首先要有C語言的基礎,然後要找一個Linux的發行版進行學習,關於Linux發行版的選擇自己網路就好,選一個用的人比較多的就行,然後要了解一下數字電路知道以下簡單的原理好進行編程,建議兩本書一個是鳥哥寫的《Linux私房菜》,另一個是ZLG的《嵌入式Linux開發教程》。
B. 成為一名嵌入式Linux開發工程師需要學習哪些知識
一:C語言 嵌入式Linux工程師的學習需要具備一定的語言基礎,C語言是嵌入式領域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操作、隊列、棧等。
二:Linux基礎 Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發環境的搭建。
三:Linux系統編程 重點學習標准I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和代碼調試的能力。
四:Linux網路編程 計算機網路在嵌入式Linux系統應用開發過程中使用非常廣泛,通過Linux網路發展、TCP/IP協議、socket編程、TCP網路編程、UDP網路編程、Web編程開發等方面入手,全面了解Linux網路應用程序開發。重點學習網路編程相關API,熟練掌握TCP協議伺服器的編程方法和並發伺服器的實現,了解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網路通信系統的設計,熟悉HTML,javascript等Web編程技術及實現方法。
五:數據結構與演算法 數據結構及演算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數據結構與演算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序演算法等應用及其C語言實現過程。
六:C++ 、QT C++是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C++的重要內容。圖形界面編程是嵌入式開發中非常重要的一個環節。由於QT具有跨平台、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中得到了廣范的應用,在本階段通過基於QT圖形庫的學習使學員可以熟練編寫GUI程序,並移植QT應用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息與槽機制的應用、滑鼠、鍵盤及繪圖事件處理及文件處理的應用。
七:Cortex A8 、Linux 平台開發 通過基於ARM Cortex-A8處理s5pv210了解晶元手冊的基本閱讀技巧,掌握s5pv210系統資源、時鍾控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平台搭建做好准備。Linux平台包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製作與原理分析、根文件系統製作以及向內核中添加自己的模塊,並在s5pv210實驗平台上運行自己製作的Linux系統,集成部署Linux系統整個流程。同時了解Android操作系統開發流程。Android系統是基於Linux平台的開源操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成,是首個為移動終端打造的真正開放和完整的移動軟體,目前它的應用不再局限於移動終端,還包括數據電視、機頂盒、PDA等消費類電子產品。
八:驅動開發 驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的介面,掌握系統對設備的並發操作。熟悉所開發硬體的工作原理,具備ARM硬體介面的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字元設備、塊設備、網路設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。
以上就是列出的關於一名合格嵌入式Linux開發工程師所必學的理論知識,其實,作為一個嵌入式開發人員,專業知識和項目經驗同樣重要,所以在我們的理論學習中也要有一定的項目實踐,鍛煉自己的項目開發能力。
C. 該怎樣學習嵌入式Linux的基礎課程
1.LZ這樣想是對的,一般處於嵌入式入門階段的,即使經過幾個月的自學或者培訓,能夠到公司上任工作,也一般只能從應用做起,之後的發展憑自己的努力,當然也有少數例外。
2.至於你說的專業課,最最基礎的有C語言,操作系統,數據結構,了解計算機組成原理與體系結構這些,然後就是匯編和微機介面,熟悉linux的一些基本操作、linux操作系統原理、linux驅動、linux內核等等這些,最後就是單片機和arm 這兩個是硬體部分,建議先學軟體部分。
3.根據你現在的基礎,在畢業之前能很好的掌握到應用部分就很不錯了,然後畢業找一份工作是完全可以的。
給你推薦一個網站,華清遠見的官方網站和技術論壇,上面有很多嵌入式學習相關的實時信息和學習方法,更新的也比較快,學習資料和視頻教程很多也都可以下載,你可以下載下來作為學習參考用。
D. 嵌入式開發學習步驟
我也是計算機科學與技術專業的,你要是在單片機上做開發,給你看看怎麼學習。當然我們的嵌入式學習基本上都是基於Linux的啊。
開發板必須要有的啊!!呵呵。
這里聲明一下,我指的嵌入式主要是偏向軟體的嵌入式。學習嵌入式的重點和難點關鍵在操作系統,如果沒有掌握操作系統,我認為很難把握一個嵌入式系統。即使在做嵌入式開發中,作應有層的開發幾乎可以不知道操作系統也可以開發,我認為那是浮在表面的。很難深入和提高自己的層次。聲明:一孔之見!不可深究!
在學習linux內核過程中犯了一個極其嚴重路線錯誤:對linux幾乎不懂就開始學習內核。我個人推薦一個學習路線是:使用linux—〉linxu系統編程開發---〉驅動開發和分析linux內核。而我差不多相反,實際上你不會使用linux也可以學習內核,但是如果你懂了這些東西學習更有效率。
關於要不要學習內核的問題,我的回答如下:不一定。如果你是喜歡鑽研的那你進入內核會滿足你的慾望。同時對你以後的嵌入式系統的開發有很好的影響。如果你想從事嵌入式linux系統開發,最好對內核有所了解。如果僅僅是做應用開發沒有必要。我打個比喻:c、c++、java等語言是武林中的某個武林派別的話,如什麼拳法,什麼刀法等,那麼linux內核應該是一個人的內功的反應。
怎麼開始學linux內核:最好有三件寶物:《深入理解linux內核》《情景分析》和源代碼。先看《深入理解linux內核》,那主要講原理,好像市場上有本講原理性並且更淺,《linux內核設計與實現》聽說不錯。如果沒有學習操作系統的,像我這樣的,最好先看看操作系統原理的書。看了幾遍後,就看情景分析,最好對著《深入理解linux內核》看。兩本交叉看,《深入理解linux內核》是綱,《情景分析》是目。最後深入代碼。
學習嵌入式技術,我認為兩個重點,cpu和操作系統,目前市場是比較流行arm,所以推薦大家學習arm。操作系統很多,我個人對開始學習的人,特別不是計算機專業的,推薦學習ucos。那是開源的,同時很小。學習很好。為什麼選linux,我不想講太多,網上這方面的太多,但是我在工作中發現,做linux的技術路線很難,在windows幾乎不會有的問題,在linux開發中幾乎遍地陷阱。一掉進去劃很長時間出來,一旦解決自己又長進了!相對來說開發周期長,難度大。現在資料也逐漸豐富起來,難度也降低了些!
至於怎麼學習,這是他的特色地方,必須有塊開發板,我是同學里最早買學習板的,雖然化錢,我認為值。對我實習和工作產生了很大的影響。
如果沒有開發板,那是紙上談兵。有人說,那要1000-2000啊,的確是,兄弟,看長遠的,對您的職業和發展那點錢不算什麼!有的人說我站著說話不腰痛,好吧,錢這東西對我影響很大,我在大學里掃廁所,掃的不錯,獎5元/月。兄弟你有過嗎?我認為教育投資是效益最有保障的!我實習拿3k,很多同學拿1-2k,當然比我高的也有。雖然我現在沒有畢業,但一家公司就簽了。從事目前流行的高檔的消費電子的研發。對於我兩年前一無所知的我,應該有質的變化,我感謝學校收了我這個廢品。當然我也非常的努力。說這么多並不是要炫耀我什麼,實際上根本不值得炫耀,雖然現在工作環境和待遇比較滿意,但是,我發現我很差,特別是代碼能力,我希望平常大家少玩游戲,多編程。編程才是硬道理!
沒有想到,一下寫了這么多,其實還想寫的,比如在中科院的一位老兄是怎樣學習linux內核和看書的,真的很感動。他的為人我很欽佩。也想介紹毛德操的《嵌入式系統》那本書,對學習armlinux的很好,也想介紹實習和工作的東西,太長了,耽誤大家時間。我也不想檢查裡面的錯別字了,很多!
呵呵呵,我想對你應該有幫助的啊,特別是那幾本書,必看的啊!!
希望你前程似錦,學習進步!!
呵呵呵呵。匯編也很重要啊,這一點對明白操作系統和CPU有重要的推進作用。
E. linux嵌入式開發學習步驟有哪些
新手必讀哦,來自華清遠見高級講師總結的「linux嵌入式開發11大步驟」
Linux 基礎
Shell 編程基礎
Linux 下的 C 編程基礎
嵌入式系統開發基礎
嵌入式系統移植
嵌入式 Linux 下串口通信
嵌入式系統中多進程程序設計
嵌入式系統中多線程程序設計
嵌入式 Linux 網路編程
GUI 程序開發
Linux 字元設備驅動程序
文件系統
(步驟詳細內容請去華清遠見嵌入式學院首頁查看)
F. 想學嵌入式Linux,《嵌入式Linux應用程序開發詳解》和《嵌入式Linux應用程序開發標准教程》哪本好啊!
開發板用友善之臂的吧
mini2440 連3.5寸屏500塊錢的樣子
有好幾張DVD學習光碟
這款口碑比較高
嵌入式Linux操作系統學習規劃
ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟體開發目標:
(1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9)
(2) 必須掌握一個嵌入式操作系統 (初步定為uclinux或linux,版本待定)
(3) 必須熟悉嵌入式軟體開發流程並至少做一個嵌入式軟體項目。
從事嵌入式軟體開發的好處是:
(1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,大多數人無條件接觸。
(2)與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。
(3)哪天若想創業,搞自已的產品,嵌入式不像應用軟體那樣容易被盜版。硬體設計一般都是請其它公司給訂做(這叫「貼牌」:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。
(4)興趣所在,這是最主要的。
從事嵌入式軟體開發的缺點是:
(1)入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是操作系統級軟體功底不深,則可能不適於此行。
(2)這方面的企業數量要遠少於企業計算類企業。
(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。
(4)平台依託強,換平台比較辛苦。
興趣的由來:
1、成功觀念不同,不虛度此生,就是我的成功。
2、喜歡思考,挑戰邏輯思維。
3、喜歡C
C是一種能發揮思維極限的語言。關於C的精神的一些方面可以被概述成短句如下:
相信程序員。
不要阻止程序員做那些需要去做的。
保持語言短小精幹。
一種方法做一個操作。
使得它運行的夠快,盡管它並不能保證將是可移植的。
4、喜歡底層開發,討厭vb類開發工具(並不是說vb不好)。
5、發展前景好,適合創業,不想自己要死了的時候還是一個工程師。
方法步驟:
1、基礎知識:
目的:能看懂硬體工作原理,但重點在嵌入式軟體,特別是操作系統級軟體,那將是我的優勢。
科目:數字電路、計算機組成原理、嵌入式微處理器結構。
匯編語言、C/C++、編譯原理、離散數學。
數據結構和演算法、操作系統、軟體工程、網路、資料庫。
方法:雖科目眾多,但都是較簡單的基礎,且大部分已掌握。不一定全學,可根據需要選修。
主攻書籍:the c++ programming language(一直沒時間讀)、數據結構-C2。
2、學習linux:
目的:深入掌握linux系統。
方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理。看幾遍後,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最後深入代碼。
主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。
3、學習嵌入式linux:
目的:掌握嵌入式處理器其及系統。
方法:(1)嵌入式微處理器結構與應用:直接arm原理及匯編即可,不要重復x86。
(2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而後深入研究uClinux。
(3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。
主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm匯編指令等。
4、深入學習:
A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼演算法和技術。
B、通信協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDMA等。
2010-8-21 16:46 回復
122.90.173.* 2樓
C、網路與信息安全技術:如加密技術,數字證書CA等。
D、DSP技術:Digital Signal Process,DSP處理器通過硬體實現數字信號處理演算法。
說明:太多細節未說明,可根據實際情況調整。重點在於1、3,不必完全按照順序作。對於學習c++,理由是c++不只是一種語言,一種工具,她還是一種藝術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對於linux內核,學習編程,讀一些優秀代碼也是有必要的。
注意: 要學會舉一反多,有強大的基礎,很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,並具有良好的邏輯思維。一定要理論結合實踐。
不要一味鑽研技術,雖然擠出時間是很難做到的,但還是要留點餘地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、游戲、科幻電影。還有一些不願意做但必須要做的!
技術是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創業(不要相信有奇跡發生,盲目創業很難成功,即便成功了發展空間也不一定很大)。
嵌入式書籍推薦
Linux基礎
1、《Linux與Unix Shell 編程指南》
C語言基礎
1、《C Primer Plus,5th Edition》Stephen Prata著
2、《The C Programming Language, 2nd Edition》Brian W. Kernighan David M. Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux應用程序開發詳解》
Linux內核
1、《深入理解Linux內核》(第三版)
2、《Linux內核源代碼情景分析》毛德操 胡希明著
研發方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP詳解》
3、《Linux內核編程》
4、《Linux設備驅動開發》(LDD)
5、《Linux高級程序設計》 楊宗德著
硬體基礎
1、《ARM體系結構與編程》杜春雷著
2、S3C2410 Datasheet
英語基礎
1、《計算機與通信專業英語》
系統教程
1、《嵌入式系統――體系結構、編程與設計》
2、《嵌入式系統――採用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系統原理與實例開發》 楊宗德著
理論基礎
1、《演算法導論》
2、《數據結構(C語言版)》
3、《計算機組織與體系結構?性能分析》
4、《深入理解計算機系統》Randal E. Bryant David O''Hallaron著
5、《操作系統:精髓與設計原理》
6、《編譯原理》
7、《數據通信與計算機網路》
8、《數據壓縮原理與應用》
C語言書籍推薦
1. The C programming language 《C程序設計語言》
2. Pointers on C 《C和指針》
3. C traps and pitfalls 《C陷阱與缺陷》
4. Expert C Lanuage 《專家C編程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《編程精粹--Microsoft 編寫優質無錯C程序秘訣》
6. Programming Embedded Systems in C and C++ 《嵌入式系統編程》
7.《C語言嵌入式系統編程修煉》
8.《高質量C++/C編程指南》林銳
盡可能多的編碼,要學好C,不能只注重C本身。演算法,架構方式等都很重要。
這里很多書其實是推薦而已,不必太在意,關鍵還是基礎,才是重中之重!!!
G. 如何自學Linux下C語言嵌入式編程
該你一些簡單的建議
1安裝有linux操作系統的電腦,當然你可以使用虛擬機
2尋找一本linux下C編程的教程,會教你怎樣編寫,編譯,鏈接及運行C
3最好有一套開發板51,arm的等,因為你是學嵌入式的,可以將代碼下載進去,運行調試
當然你也可以安裝模擬軟體
H. 嵌入式Linux應用程序開發標准教程的目錄
第1章 Linux快速入門
1.1 嵌入式Linux基礎
1.1.1 Linux發展概述
1.1.2 Linux作為嵌入式操作系統的優勢
1.1.3 Linux發行版本
1.1.4 如何學習Linux
1.2 Linux安裝
1.2.1 基礎概念
1.2.2 硬體需求
1.2.3 安裝准備
1.3 Linux文件及文件系統
1.3.1 文件類型及文件屬性
1.3.2 文件系統類型介紹
1.3.3 Linux目錄結構
1.4 實驗內容——安裝Linux操作系統
1.5 本章小結
1.6 思考與練習
第2章 Linux基礎命令
2.1 Linux常用命令
2.1.1 用戶系統相關命令
2.1.2 文件相關命令
2.1.3 壓縮打包相關命令
2.1.4 文件比較合並相關命令
2.1.5 網路相關命令
2.2 Linux啟動過程詳解
2.2.1 概述
2.2.2 內核引導階段
2.2.3 init階段
2.3 Linux系統服務
2.3.1 獨立運行的服務
2.3.2 xinetd設定的服務
2.3.3 系統服務的其他相關命令
2.4 實驗內容
2.4.1 在Linux下解壓常見軟體
2.4.2 定製Linux系統服務
2.5 本章小結
2.6 思考與練習
第3章 Linux下C編程基礎
3.1 Linux下C語言編程概述
3.1.1 C語言簡單回顧
3.1.2 Linux下C語言編程環境概述
3.2 常用編輯器
3.2.1 進入vi
3.2.2 初探emacs
3.3 gcc編譯器
3.3.1 gcc編譯流程解析
3.3.2 gcc編譯選項分析
3.4 gdb調試器
3.4.1 gdb使用流程
3.4.2 gdb基本命令
3.5 make工程管理器
3.5.1 makefile基本結構
3.5.2 makefile變數
3.5.3 makefile規則
3.5.4 make管理器的使用
3.6 使用autotools
3.6.1 autotools使用流程
3.6.2 使用autotools所生成的makefile
3.7 實驗內容
..........