⑴ 嵌入式需要學習什麼
嵌入式開發學習路線圖-尚觀嵌入式研究室-嵌入式路線圖
-------作者:尚觀嵌入式研究室UEA0908班 范同學
為什麼選擇學習嵌入式?
嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一,同時也是當今IT領域僅存的幾個金領職位之一。當前的中國IT人才面臨嚴重的「後繼乏人」,
而且這種缺口由於培訓缺乏、教育模式等原因造成的,而缺口最大的,就是高級IT人才。如果你從事的IT培訓不專業,面對競爭越來越激烈的職場,基本找不到
工作。據專家預測,嵌入式每年人才缺口在30萬左右。
入式職業發展講解視頻
視頻中主要講解什麼樣的人適合從事嵌入式行業、嵌入式行業從業人員需要具備哪些基本素質、嵌入式行業的特點以及嵌入式行業的現狀與發展。
嵌入式研發方向職業生涯講解視頻(1)
嵌入式研發方向職業生涯講解視頻(2)
嵌入式研發方向職業生涯講解視頻(3)
嵌入式研發方向職業生涯講解視頻(4)
嵌入式研發方向職業生涯講解視頻(5)
ARM+linux嵌入式底層內核驅動方向學習總體路線圖
基礎學習Ⅰ---Linux入門
目前嵌入式主要開發環境有
Linux、Wince等;Linux因其開源、開發操作便利而被廣泛採用。而Linux操作系統也只是一個簡單的操作系統,簡單的使用對於嵌入式開發人
員來說價值並不很高,真正有價值的是掌握Linux的基本服務和Linux的設計理念、思想,這對於嵌入式開發人員的長期發展是很極其重要的。Linux
系統有很多發行版,RedHat、Ubuntu、Fedora等。作為嵌入式開發人員,我們沒有必要把精力放到使用哪個Linux發行版上,而是盡快把
Linux系統盡快安裝好。如果打算堅持長期學習,那麼建議您把自己的電腦做成雙系統,而不要在虛擬機上安
裝
基礎學習Ⅱ---C語言
C語言是嵌入式開發必備的基礎知識。在Linux下從事C語言的開發,你會覺得更為順暢、更為自然,因為C語言是因unix的出現而誕生的,Linux內
核幾乎完全是由C語言編寫完成的。學習C語言,如果不會用指針,那麼就稱不上會C語言。做嵌入式開發指針更顯得尤為重要,所以做嵌入式開發除了掌握位操
作、限定詞等,對指針的掌握是不可或缺的。而且要掌握多級指針、函數指針等等。涉及到指針,那麼就會講到內存分配。在大學中,學習C語言一般的學習很少講
到內存分配,但是如果期望從事嵌入式開發,那麼就必須懂得C語言是怎麼做內存分配管理的。指針之外,還要學習模塊化編譯處理、指針與數組、gcc、
Makefile、GDB、遞歸、結構體、宏定義使用等。C語言是整棟嵌入式大廈的基礎,所以在學習嵌入式時,必須把C語言重視起來,多敲代碼,多練。一
名優秀的程序員必定是通過「體力勞動」再轉向「腦力勞動的」,這也是為什麼我們要有「寫不出代碼=0」思想的原因所在。
如果說C語言相當於文字,那麼數據結構就相當於在造句、寫文章。代碼質量有一部分取決於對數據結構的掌握程度。在數據結構部分我們要把鏈表、樹、排序作
為學習重點。而且我們也可以查看一些比較常見的函數(如str、strcat、printf等)在內核中是如何實現的,以及編寫代碼模擬堆棧,這
不僅有利於編寫代碼質量的提高,而且還可以初步了解Linux內核精髓,為今後工作打下堅實的基礎。
C++、QT在嵌入式開發領域,是用來開發圖形界面的,希望從事上層應用開發及圖形界面,那麼在C++、QT方面需要比較深入的學習。
B)經典學習視頻推薦:
1-1c語言編輯器vi的使用
1-2c語言編譯過程及編譯器gcc
2-1c語言的數據類型
2-2數據快速引用
2-3c語言運算符及表達式
3-1c語言的分支結構
3-2c語言的循環結構
4-1c語言函數的定義及傳
4-2c語言函數調用
5-1-1c語言的一維數組
5-1-2二維數組及多維數組
5-1-3c語言字元數組
5-2-1c語言結構體-Struct
5-2-2C語言聯合體-Union
6-1c語言指針的概念
6-2c語言指針與一維數組
6-3指針與二維數組及字元
6-4指針與結構體、聯合體
6-5c語言指針與函數
6-6c語言指針常量與常量
7c語言存儲空間管理
8-1c語言存儲模型分析
8-2雙向循環鏈表的創建增
8-3雙向循環鏈表的數據管
C)經典學習案例:
1、學員成績管理系統2、計算器3、電子詞典4、文件壓縮器
基礎進階---Linux應用程序設計
Linux的思想源於Unix。Linux繼承了Unix的優點,但是沒有用UNIX的代碼,所有程序都是重新編寫的,而且Linux與Unix的源碼級兼容。Linux是類Unix操作系統。Linux
不僅符合 POSIX 標准,而且還包括其它 UNIX 標準的多種特性,例如,UNIX 的 System V 介面文檔(System V Interface
Document,SVID)和伯克利軟體發布(Berkeley Software Distribution,BSD)版本。Linux 採用了折衷的策略,包含了
UNIX 幾個典型特性當中最實用的一些功能:
Linux 採用了 SVR4 的進程間通信(IPC)機制:共享內存、消息隊列、信號。
Linux 支持 BSD Socket 網路編程介面。
許多 Linux 發行版採用 SysV init
機制,支持運行級別。
此階段的學習是從事嵌入式上層應用開發以及底層開發人員的必修課程。進程、線程、信號、文件鎖、socket是這部分內容的重點。要把這些內容學的透徹非要下些苦功夫不可。而且函數是系統提供給我們的,難免要對計算機系統深入理解一番。TCP/IP協議也是要涉及到的。有問題建議用Google搜索及登陸chinaunix論壇。通過這個階段的學習,我們就可以初步實現一些應用程序的開發了,如做自己的shell命令解析器、簡單的聊天軟體、視頻多播等。
A)經典書籍推薦:
B)經典學習視頻推薦:
Linux網路開發-1、ARP攻擊原理
Linux網路開發-2、ARP攻擊實例分析
Linux網路開發-3、ARP攻擊程序代碼分析和socket構造
C)經典學習案例:
1、串口監聽程序
2、圖片瀏覽器 3、MP3播放器 4、聊天程序 5、 ftp程序
6、音頻廣播程序 7、ping的實現
8、DDos攻擊程序 9、ARP攻擊程序
嵌入式入門---ARM體系結構
從這部分開始,我們將真正進入嵌入式開發學習階段。首先我們要知道採用哪種處理器。目前通用嵌入式處理器有ARM、MIPS、PowerPC、X86等。從市場產品佔有率上看,ARM處理器遠遠領先於同類其它處理器,並逐步掠奪傳統51單片機和英特爾市場份額。據招聘網站統計,目前用人單位在技術水平上要求開發人員掌握ARM9及以上平台的開發技術。ARM公司在發布ARM11產品後,更改以往的數字標記更新方式,轉為發布ARM
Cortex。但是Cortex並不是更高端,而是全新系列的處理器,比如Cortex
M3,它主要應用於機械加工、工控領域,目的是取代以前的ARM7處理器。
在開始學習前,建議有一塊自己的開發板,目前ARM9
2440的開發板價格在400-600元之間,ARM11
6410的開發板價格要高一些,最便宜的也要1200元以上。在此,提醒大家盡量不要買mini開發板,雖然mini開發板的價格要便宜些,但是與正常開發板相比,mini板功能是不完善的。嵌入式匯編有別於X86匯編,所以如果以前沒有接觸過匯編語言,那麼沒有必要先去學X86匯編再學嵌入式匯編,可以直接學習嵌入式匯編。除了匯編我們還要學習ARM指令集。有了開發板,我們要下載相對應處理器的DataSheet及開發板電路原理圖。ARM體系結構的學習我們是不能完全照抄別人代碼的,因為我們自己手中的開發板及處理器與別人是不同的,除非所用的代碼是根據你手中的開發板來編寫的。所以,我們要先去看書、看視頻資料理解原理及工作方式等,然後根據自己開發板的電路原理圖和DataSheet來編寫代碼,達到理解外圍設備工作原理和操作硬體的目的。
B)經典學習視頻推薦:
1)嵌入式掃盲篇
嵌入式漫談1
嵌入式漫談2
嵌入式漫談3
十問嵌入式1-什麼是嵌入式,創業
十問嵌入式2-嵌入式實例iphone
十問嵌入式3-嵌入式前景
十問嵌入式4-嵌入式學習
十問嵌入式5-ARM概述
十問嵌入式6-ARM概述
開發板
十問嵌入式7-ARM與單片機
十問嵌入式8-匯編語言的作用
十問嵌入式9-操作系統的選擇
十問嵌入式10-編程語言選擇
2)嵌入式開發概述
嵌入式開發入門經典教程-1
嵌入式開發入門經典教程-2
嵌入式開發入門經典教程-3
嵌入式開發入門經典教程-4
嵌入式開發入門經典教程-5
嵌入式開發入門經典教程-6
嵌入式開發入門經典教程-7
嵌入式開發入門經典教程-8
嵌入式開發入門經典教程-9
嵌入式開發入門經典教程-10
嵌入式開發入門經典教程-11
嵌入式開發入門經典教程-12
嵌入式開發入門經典教程-13
3)ARM體系結構與Bootloader開發
1、ARM基礎概念介紹與開發板使用教程
2、編譯器高級應用與裸機代碼編寫教程
3、ARM指令與ARM匯編入門
4、ARM匯編高級教程與APCS規范詳解
5、ARM體系結構詳解與異常處理機制
6、ARM中斷機制詳解與Watchdog驅動開發實例
7-1、ARM外部中斷機制詳解與LED驅動開發實例
7-2、ARM嵌入式開發之ARM外部中斷機制詳解與實例
8、AMBA匯流排結構與ARM時鍾配置
9、時序圖詳解與NAND
FLASH驅動開發實例
10-1、內存控器與SDRAM原理詳解(上)
10-2、內存控器與SDRAM原理詳解(下)
11、UART串口詳解與通信開發實例
12、ARM協處理器CP15配置原理
13、從零開始寫Bootloader開發過程詳解
C)經典學習案例:
1. ARM模擬器開發 2. Watchdog控製程序 3.
RTC時鍾控製程序
4. Uart控製程序 5. LCD控製程序 6.
觸摸屏控製程序
7. DMA控製程序 8. 音頻控製程序 9. 網卡控製程序
10.
文件系統製作 11. ARM-Linux移植
嵌入式提升---Linux內核、驅動
眾所周知嵌入式開發包含至少兩個級別,一個是嵌入式內核驅動級別,另外一個是嵌入式應用層開發,而薪酬高的、最具價值的無疑是嵌入式內核驅動級別的開發者。真正的嵌入式高手或者企業中的核心開發人員,一定是嵌入式底層的內核驅動開發工程師,這些工程師成長比較緩慢,造成對內核驅動人才的大量需求,所以這些人才是真正企業需要的香餑餑。掌握驅動開發會讓自己的核心能力有極大的飛躍,真正實現嵌入式最有價值的就業。
由於Linux內核更新速度很快,書籍和視頻不可能及時更新,所以我們再看書和視頻後,要自己動手下載內核源碼包,去看內核中的代碼,在這里可以充分檢驗C語言、數據結構等基礎知識的掌握程度。而驅動的編寫還是要藉助外設硬體電路原理圖和晶元手冊。內核和驅動的知識是讓我們根據不同的硬體,編寫對應的驅動、合理剪裁內核、製作文件系統,並移植到硬體開發板上。如果手裡有ARM11
6410及以上的開發板,可以試試在裸板上編寫驅動並移植Android系統到開發板上吧。
B)經典學習案例:
1. GPIO驅動 2. RTC時鍾驅動 3.
WatchDog驅動 4. Udev移植 5. 觸摸屏輸入設備驅動
6. LCD顯示設備驅動 7. DMA驅動 8.
音頻設備驅動 9. Nand Flash塊設備驅動 10. 網路設備驅動
有不明白的可以到尚觀嵌入式研究室咨詢,或者聽聽免費的網路公開課,希望對你有幫助
⑵ 嵌入式技術需要學習什麼
嵌入式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本身。演算法,架構方式等都很重要。
這里很多書其實是推薦而已,不必太在意,關鍵還是基礎,才是重中之重!!!
⑶ 嵌入式系統自學
你好,你的專業學習嵌入式的課程應該是非常對口的,建議你學習期間條件允許的話還是系統的學習一下,從應用層,系統層到底層驅動,因為你學東西的最終目的是為了就業嘛,這樣的話學習階段不要把方向定的那明確,否則對就業不利。關於學習的資料,你可以去華清遠見的網站上去看一下,好像有很多免費的技術資料和視頻。
⑷ 有什麼嵌入式視頻教程適合自學的
嵌入式自學非常難,因為嵌入式需要學習東西很多,而且很難,如果你需要自學的嵌入式我個人推薦IT學習聯盟網站的《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的可以復制 sina.lt/qKh 粘貼瀏覽器按回車鍵即打開)。這套教程非常不錯,視頻高清,老師講解非常細致,而且是一套完整的嵌入式視頻教程。還有從零基礎教起。對那些沒基礎的朋友也能學習。
⑸ 適合初學者學習的嵌入式教程
原文鏈接:網頁鏈接
我是1999年上的大學,物理專業。在大一時,我們班裡普遍彌漫著對未來的不安,不知道學習了物理後出去能做什麼。你當下的經歷、當下的學習,在未來的一天肯定會影響到你。畢業後我們也各自找到了自己的職業:出國深造轉行做金融、留校任教做科研、設計晶元、寫程序、創辦公司等等,這一切都離不開在校時學到的基礎技能(數學、IT、電子電路)、受過煅煉的自學能力。
所以,各位正在迷茫的在校生,各位正在嘗試轉行的程序員,未來一定有你的位置,是好是壞取決於你當下的努力與積累。
我不能預言幾年後什麼行業會熱門,也不能保證你照著本文學習可以發財。我只是一個有十幾年經驗的程序員,給對編程有興趣的你,提供一些建議。
程序員的方向,一般可以分為3類:專業領域、業務領域、操作系統領域。你了解它們後,按興趣選擇吧。
對於專業領域,我提供不了建議。
業務,也就是應用程序,它跟操作系統並不是截然分開的:
①開發實體產品時,應用程序寫得好的人,有時候需要操作系統的知識,比如調度優先順序的設置、知道某些函數可能會令進程休眠。
②寫應用程序的人進階為系統工程師時,他需要從上到下都了解,這時候就需要有操作系統領域的知識了,否則,你怎麼設計整個系統的方案呢?
③做應用程序的人,需要了解行業的需求,理解業務的邏輯。所以,當領導的人,多是做應用的。一旦鑽入了某個行業,很難換行業。
④而操作系統領域,做好了這是通殺各行業:他只負責底層系統,在上面開發什麼業務跟他沒關系。這行很多是技術宅,行業專家。
⑤操作系統和業務之間並沒有一個界線。有操作系統經驗,再去做應用,你會對系統知根知底,碰到問題時都有解決思路。有了業務經驗,你再了解一下操作系統,很快就可以組成一個團隊自立門戶,至少做個CTO沒問題。
它又可以分為下面2類。
1.1.1 學術研究
比如語音、圖像處理、人工智慧,這類工作需要你有比較強的理論知識,我傾向於認為這類人是「科學家」,他們鑽研多年,很多時候是在做學術研究。
在嵌入式領域,需要把他們的成果用某種演算法表達出來,針對某種晶元進行優化,這部分工作也許有專人來做。
1.1.2 工程實現
也有這樣一類人,他們懂得這些專業領域的概念,但是沒有深入鑽研。可以使用各類開源資料實現某個目標,做出產品。比如圖像處理,他懂得用opencv里幾百個復雜函數來實現頭像識別。有時候還可以根據具體晶元來優化這些函數。
「專業領域」不是我的菜,如果你要做這一塊,我想最好的入門方法是在學校學習研究生、博士課程。
換句話說,就是應用程序,這又可以分為下面2類。
1.2.1 界面顯示
做產品當然需要好的界面,但是,不是說它不重要,是沒什麼發展後勁。
現在的熱門詞是Android APP和IOS APP開發。你不要被Android、IOS兩個詞騙了,它們跟以前的VC、VB是同一路貨色,只是、僅僅是一套GUI控制項的實現。
希望沒有冒犯到你,我有理由。
一個程序需要有GUI界面,但是程序的內在邏輯才是核心。Android、IOS的開發工具給我們簡化了GUI的開發,並提供了這些控制項的交互機制,封裝並提供了一些服務(比如網路傳輸)。但是程序內部的業務邏輯、對視頻圖像聲音的處理等等,這才是核心。另外別忘了伺服器那邊的後台程序:怎樣更安全地保存數據、保護客戶的隱私,怎樣處理成千上萬上百萬的並發訪問,等等,這也是核心。
但是,從Android、IOS APP入門入行,這很快!如果你是大四,急於找到一份工作,那麼花上1、2個月去學習Android或IOS,應該容易找到工作,畢竟APP的需求永遠是最大的,現在這兩門技術還算熱門。在2011、2012年左右,Android程序員的起薪挺高,然後開始下滑。Android APP的入門基本只要1個月,所以懂的人也越來越多。2013、2014年,IOS開發的工資明顯比Android高了,於是各類IOS培訓也火曝起來。中華大地向來不缺速成人才,估計再過一陣子IOS工程師也是白菜價了。
會Android、IOS只是基本要求,不信去51job搜搜Android或IOS,職位要求里肯定其他要求。
1.2.2 業務邏輯
舉個簡單例子,做一個打卡軟體,你需要考慮這些東西:
①正常流程是上班下班時都要打卡
②有人忘記了怎麼辦?作為異常記錄在案,推送給管理員
③請假時怎麼處理?
④加班怎麼處理?
對於更復雜的例子,視頻會議系統里,各個模塊怎麼對接,各類協議怎麼兼容,你不深入這個行業,你根本搞不清楚。
應用開發的職位永遠是最多的,入門門檻也低。基本上只要你會C語言,面試時表現比較得體,一般公司都會給你機會。因為:
①你進公司後,還需要重新培訓你:熟悉它們的業務邏輯。
②你要做的,基本也就是一個個模塊,框架都有人給你定好了,你去填代碼就可以了。
說點讓你高興的事:軟體公司里,做領導的基本都是寫應用程序的(當然還有做市場的)。寫應用程序的人,對外可以研究市場接待客戶,對內可以管理程序員完成開發,不讓他做領導讓誰做?
如果你的志向是寫應用程序,那麼我建議你先練好基本功:數據結構、演算法是必備,然後憑興趣選擇資料庫、網路編程等等進行深入鑽研。
最後,選擇你看好的、感興趣的行業深耕個10年吧。做應用開發的人選擇了某個行業,後面是很難換行業的,選行很重要!
UCOS太簡單,VxWorks太貴太專業,Windows不玩嵌入式了,IOS不開源,所以對於操作系統領域我們也只能玩Linux了。
在嵌入式領域Linux一家獨大!
Android呢?Android跟QT一樣,都是一套GUI系統。只是Google的實力太強了,現在Android無處不在,所以很多時候Linux+Android成了標配。注意,在這里我們關心的是Android的整個系統、裡面的機制,而不是學習幾個API然後開發界面程序。操作系統領域所包含的內容,簡單地說,就是製作出一台裝好系統的專用「電腦」,可以分為:
①為產品規劃硬體:
按需求、性能、成本選擇主晶元,搭配周邊外設,交由硬體開發人員設計。
②給單板製作、安裝操作系統、編寫驅動
③定製維護、升級等系統方案
④還可能要配置、安裝Android等GUI系統:
⑤為應用開發人員配置開發環境
⑥從系統角度解決疑難問題
這個領域,通常被稱為「底層系統」或是「驅動開發」。
先解決2個常見誤區:
①這份工作是寫驅動程序嗎?
看看上面羅列的6點,應該說,它包含驅動開發,但遠遠不只有驅動開發。
②我們還需要寫驅動嗎?不是有原廠嗎?或者只需要改改就可以?
經常有人說,晶元原廠都做好驅動了,拿過來改改就可以了。如果,你的硬體跟原廠的公板完全一樣,原廠源碼毫無BUG,不想優化性能、削減成本,不想做一些有特色的產品,那這話是正確的。
但是在這個不創新就是找死的年代,可能嗎?!原因有二:
①即使只是修改代碼,能修改的前提是能理解;能理解的最好煅煉方法是從零寫出若干驅動程序。
②很多時候,需要你深度定製系統。
以前做聯發科手機只需要改改界面就可以出貨了,現在山寨廠一批批倒下。大家都使用原廠的方案而不加修改時,最後只能拼成本。
舉個例子,深圳有2家做交通攝像頭、監控攝像頭的廠家,他們曾經找我做過4個項目:
①改進廠家給的SD卡驅動性能,使用DMA。
②換了Flash型號後,系統經常出問題,需要修改驅動BUG。
③觸摸屏點擊不準,找原因,後來發現是旁路電容導致的。
④裁減成本,把4片DDR換為2片DDR,需要改bootloader對DDR的初始化。
這些項目都很急,搞不定就無法出貨,這時候找原廠?除非你是中興華為等大客戶,否則誰理你?
我在中興公司上班時,寫驅動的時間其實是很少的,大部分時間是調試:系統調優,上幫APP工程師、下幫硬體工程師查找問題。我們從廠家、網上得到的源碼,很多都是標準的,當然可以直接用。但是在你的產品上也許優化一下更好。比如我們可以把攝像頭驅動和DMA驅動揉合起來,讓攝像頭的數據直接通過DMA發到DSP去。我們可以在軟體和硬體之間起橋梁作用,對於實體產品,有可能是軟體出問題也可能是硬體出問題,一般是底層系統工程師比較容易找出問題。
當硬體、軟體應用出現問題,他們解決不了時,從底層軟體角度給他們出主意,給他們提供工具。再比如方案選擇:晶元性能能否達標、可用的BSP是否完善等等,這只能由負責整個方案的人來考慮,他必須懂底層。
在操作系統領域,對知識的要求很多:
①懂硬體知識才能看懂電路圖
②英文好會看晶元手冊
③有編寫、移植驅動程序的能力
④對操作系統本身有一定的理解,才能解決各類疑難問題
⑤理解Android內部機制
⑥懂匯編、C語言、C++、JAVA
它絕對是一個大坑,沒有興趣、沒有毅力的人慎選。
①這行的入門,絕對需要半年以上,即使全天學習也要半年。
②它的職位,絕對比APP的職位少
③並且你沒有1、2年經驗,招你到公司後一開始你做的還是APP。
優點就是:
①學好後,行業通殺,想換行就換行;想自己做產品就自己做產品。
②相比做應用程序的人,不會被經常變動的需求搞得天天加班。
③門檻高,當然薪水相對就高。
操作系統領域,我認為適合於這些人:
①硬體工程師想轉軟體工程師,從底層軟體入門會比較好
②單片機工程師,想升級一下。會Linux底層的人肯定會單片機,會單片機的人不一定會Linux。
③時間充足的學生:如果你正讀大二大三,那麼花上半年學習嵌入式Linux底層多有益處。
④想掌握整個系統的人,比如你正在公司里寫APP,但是想升為系統工程師,那麼底層不得不學。
⑤想自己創業做實體產品的工程師,你有錢的話什麼技術都不用學,但是如果沒錢又想做產品,那麼Linux底層不得不學。
⑥做Linux APP的人,沒錯,他們也要學習。
這部分人不需要深入,了解個大概就可以:bootloader是用來啟動內核,Linux的文件系統(第1個程序是什麼、做什麼、各目錄幹嘛用)、APP跟驅動程序的調用關系、工具鏈,有這些概念就可以了
本文中,就把操作系統默認為Linux,講講怎麼學習嵌入式Linux+Android系統。
嵌入式Linux系統包含哪些東西?不要急,舉一個例子你就知道了。
①電腦一開機,那些界面是誰顯示的?
是BIOS,它做什麼?一些自檢,然後從硬碟上讀入windows,並啟動它。
類似的,這個BIOS對應於嵌入式Linux里的bootloader。這個bootloader要去Flash上讀入Linux內核,並啟動它。
②啟動windows的目的是什麼?
當然運行應用程序以便上網、聊天什麼的了。
這些上網程序、聊天程序在哪?
在C盤、D盤上。
所以,windows要先識別出C盤、D盤。在Linux下我們稱之為根文件系統。
③windows能識別出C盤、D盤,那麼肯定有讀寫硬碟的能力。
這個能力我們稱之為驅動程序。當然不僅僅是操作硬碟,還有網卡、USB等等其他硬體。嵌入式Linux能從Flash上讀出並執行應用程序,肯定也得有Flash的驅動程序啊,當然也不僅僅是Flash。
簡單地說,嵌入式LINUX系統里含有bootloader、內核、驅動程序、根文件系統、應用程序這5大塊。而應用程序,我們又可以分為:C/C++、Android。
所以,嵌入式Linux+Android系統包含以下6部分內容:
①bootloader
②Linux內核
③驅動程序
④使用C/C++編寫的應用程序
⑤Android系統本身
⑥Android應用程序
Android跟Linux的聯系實在太大了,它的應用是如此廣泛,學習了Linux之後沒有理由停下來不學習Android。在大多數智能設備中,運行的是Linux操作系統;它上面要麼安裝有Android,要麼可以跟Android手機互聯。現在,Linux+Android已成標配。
本文假設您是零基礎,以實用為主,用最快的時間讓你入門;後面也會附上想深入學習時可以參考的資料。
在實際工作中,我們從事的是「操作系統」周邊的開發,並不會太深入學習、修改操作系統本身。
①操作系統具有進程管理、存儲管理、文件管理和設備管理等功能,這些核心功能非常穩定可靠,基本上不需要我們修改代碼。我們只需要針對自己的硬體完善驅動程序
②學習驅動時必定會涉及其他知識,比如存儲管理、進程調度。當你深入理解了驅動程序後,也會加深對操作系統其他部分的理解
③Linux內核中大部分代碼都是設備驅動程序,可以認為Linux內核由各類驅動構成
但是,要成為該領域的高手,一定要深入理解Linux操作系統本身,要去研讀它的源代碼。
在忙完工作,閑暇之餘,可以看看這些書:
①趙炯的《linux內核完全注釋》,這本比較薄,推薦這本。他後來又出了《Linux 內核完全剖析》,太厚了,搞不好看了後面就忘記前面了。
②毛德操、胡希明的《LINUX核心源代碼情景分析》,此書分上下冊,巨厚無比。當作字典看即可:想深入理解某方面的知識,就去看某章節。
③其他好書還有很多,我沒怎麼看,沒有更多建議
基於快速入門,上手工作的目的,您先不用看上面的書,先按本文學習。
假設您是零基礎,我們規劃了如下入門路線圖。前面的知識,是後面知識的基礎,建議按順序學習。每一部分,不一定需要學得很深入透徹,下面分章節描述。
2.2.1 C語言
只要是理工科專業的,似乎都會教C語言。我見過很多C語言考試90、100分的,一上機就傻了,我懷疑他們都沒在電腦上寫過程序。
理論再好,沒有實踐不能幹活的話,公司招你去幹嘛?
反過來,實踐出真知,學習C語言,必須練練練、寫寫寫!
當你掌握基本語法後,就可以在電腦上練習一些C語言習題了;
當你寫過幾個C程序後,就可以進入下一階段的裸機開發了。
①不需要太深入
作為快速入門,只要你會編寫「Hello, world!」,會寫冒泡排序,會一些基礎的語法操作,暫時就夠了。
指針操作是重點,多練習;
不需要去學習過多的數據結構知識,只需要掌握鏈表操作,其他不用學習,比如:隊列、二叉樹等等都不用學;不需要去學習任何的函數使用,比如文件操作、多線程編程、網路編程等等;這些知識,在編寫Linux應用程序時會用,但是在操作系統特別是驅動學習時,用不著!
永往直前吧,以後碰到不懂的C語言問題,我們再回過頭來學習。
在後續的「裸機開發」中,會讓你繼續練習C語言,那會更實戰化。
C語言是在寫代碼中精進的。
②可以在Visual Studio下學習,也可以在Linux下學習,後者需要掌握一些編譯命令,我們暫時沒有提供C語言的教程,找一本C語言書,網上找找免費的C語言視頻(主要看怎麼搭建環境),就可以自學了。
2.2.2 PC Linux基本操作:
對於PC Linux,我們推薦使用Ubuntu,在它上面安裝軟體非常簡便。
我們的工作模式通常是這樣:在Windows下閱讀、編寫代碼,然後把代碼上傳到PC Linux去編譯。實際上,Ubuntu的桌面系統已經很好用了,我們拿到各種智能機可以很快上手,相信Ubuntu的桌面系統也可以讓你很快上手。為了提高工作效率,我們通常使用命令行來操作Ubuntu。
不用擔心,你前期只需要掌握這幾條命令就可以了,它們是如此簡單,我乾脆列出它們:
①cd : Change Directory(改變目錄)
cd 目錄名 // 進入某個目錄cd .. // cd 「兩個點」:返回上一級目錄cd - // cd 「短橫」:返回上一次所在目錄
②pwd : Print Work Directory(列印當前目錄 顯示出當前工作目錄的絕對路徑)
③mkdir : Make Directory(創建目錄)
mkdir abc // 創建文件夾abcmkdir -p a/b/c // 創建文件夾a,再a下創建文件夾b,再在b下創建文件夾c
④rm : Remove(刪除目錄或文件)
rm file // 刪除名為file的文件rm -rf dir // 刪除名為dir的目錄
⑤ls : List(列出目錄內容)
⑥mount : 掛載
mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mntmount -t yaffs /dev/mtdblock3 /mnt
⑦chown : Change owner(改變文件的屬主,即擁有者)
chown book:book /work -R //對/work目錄及其下所有內容,屬主改為book用戶,組改為book
⑧chmod : Change mode(改變許可權),下面的例子很簡單粗暴
chmod 777 /work -R // 對/work目錄及其下所有內容,許可權改為可讀、可寫、可執行
⑨vi : Linux下最常用的編輯命令,使用稍微復雜,請自己搜索用法。
要練習這些命令,你可以進入Ubuntu桌面系統後,打開終端輸入那些命令;或是用SecureCRT、putty等工具遠程登錄Ubuntu後練習。
2.2.3 硬體知識
我們學習硬體知識的目的在於能看懂原理圖,看懂通信協議,看懂晶元手冊;不求能設計原理圖,更不求能設計電路板。
對於正統的方法,你應該這樣學習:
①學習《微機原理》,理解一個計算機的組成及各個部件的交互原理。
②學習《數字電路》,理解各種門電路的原理及使用,還可以掌握一些邏輯運算(與、或等)。
③《模擬電路》?好吧,這個不用學,至少我在工作中基本用不到它,現在全忘光了。
就我個人經驗來說,這些課程是有用的,但是:
①原理有用,實戰性不強。
比如《微機原理》是基於x86系統,跟ARM板子有很大差別,當然原理相通。
我是在接觸嵌入式編程後,才理解了這些課程。
②每本書都那麼厚,內容都很多,學習時間過長,自學有難度。
針對這些校園教材的不足,並結合實際開發過程中要用到的知識點,我們推出了《學前班_怎麼看原理圖》的系列視頻:
學前班第1課第1節___怎麼看原理圖之GPIO和門電路.wmv
學前班第1課第2.1節_怎麼看原理圖之協議類介面之UART.wmv
學前班第1課第2.2節_怎麼看原理圖之協議類介面之I2C.wmv
學前班第1課第2.3節_怎麼看原理圖之協議類介面之SPI.wmv
學前班第1課第2.4節_怎麼看原理圖之協議類介面之NAND Flash.wmv
學前班第1課第2.5節_怎麼看原理圖之協議類介面之LCD.wmv
學前班第1課第3節___怎麼看原理圖之內存類介面.wmv
學前班第1課第4.1節_怎麼看原理圖之分析S3C2410開發板.wmv
學前班第1課第4.2節_怎麼看原理圖之分析S3C2440開發板.wmv
學前班第1課第4.3節_怎麼看原理圖之分析S3C6410開發板.wmv
即使你只具備初中物理課的電路知識,我也希望能通過這些視頻,讓你可以看懂原理圖,理解一些常見的通信協議;如果你想掌握更多的硬體知識,這些視頻也可以起個索引作用,讓你知道缺乏什麼知識。
這些視頻所講到的硬體知識,將在《裸板開發》系列視頻中用到,到時可以相互對照著看,加深理解。
2.2.4 要不要專門學習Windows下的單片機開發
很多學校都開通了單片機的課程,很多人都是從51單片機、AVR單片機,現在比較新的STM32單片機開始接觸嵌入式領域,並且使用Windows下的開發軟體,比如keil、MDK等。
問題來了,要不要專門學習Windows下的單片機開發?
①如果這是你們專業的必修課,那就學吧
②如果你的專業跟單片機密切相關,比如機械控制等,那就學吧
③如果你只是想從單片機入門,然後學習更廣闊的嵌入式Linux,那麼放棄在Windows下學習單片機吧!
理由如下:
①Windows下的單片機學習,深度不夠
Windows下有很好的圖形界面單片機開發軟體,比如keil、MDK等。
它們封裝了很多技術細節,比如:
你只會從main函數開始編寫代碼,卻不知道上電後第1條代碼是怎麼執行的;
你可以編寫中斷處理函數,但是卻不知道它是怎麼被調用的;
你不知道程序怎麼從Flash上被讀入內存;
也不知道內存是怎麼劃分使用的,不知道棧在哪、堆在哪;
當你想裁剪程序降低對Flash、內存的使用時,你無從下手;
當你新建一個文件時,它被自動加入到工程里,但是其中的機理你完全不懂;
等等等。
②基於ARM+Linux裸機學習,可以學得更深,並且更貼合後續的Linux學習。實際上它就是Linux下的單片機學習,只是一切更加原始:所有的代碼需要你自己來編寫;哪些文件加入工程,需要你自己來管理。
在工作中,我們當然傾向於使用Windows下更便利的工具,但是在學習階段,我們更想學習到程序的本質。
一切從零編寫代碼、管理代碼,可以讓我們學習到更多知識:
你需要了解晶元的上電啟動過程,知道第1條代碼如何運行;
你需要掌握怎麼把程序從Flash上讀入內存;
需要理解內存怎麼規劃使用,比如棧在哪,堆在哪;
需要理解代碼重定位;
需要知道中斷發生後,軟硬體怎麼保護現場、跳到中斷入口、調用中斷程序、恢復現場;
你會知道,main函數不是我們編寫的第1個函數;
你會知道,晶元從上電開始,程序是怎麼被搬運執行的;
你會知道,函數調用過程中,參數是如何傳遞的;
你會知道,中斷發生時,每一個寄存器的值都要小心對待;
等等等。
你掌握了ARM+Linux的裸機開發,再回去看Windows下的單片機開發,會驚呼:怎麼那麼簡單!並且你會完全明白這些工具沒有向你展示的技術細節。
驅動程序=Linux驅動程序軟體框架+ARM開發板硬體操作,我們可以從簡單的裸機開發入手,先掌握硬體操作,並且還可以:
①掌握如何在PC Linux下編譯程序、把程序燒錄到板子上並運行它
②為學習bootloader打基礎:掌握了各種硬體操作後,後面一組合就是一個bootloader
2.2.5 為什麼選擇ARM9 S3C2440開發板,而不是其他性能更好的?
有一個錯誤的概念:S3C2440過時了、ARM9過時了。
這是不對的,如果你是軟體工程師,無論是ARM9、ARM11、A8還是A9,對我們來說是沒有差別的。
一款晶元,上面有CPU,還有眾多的片上設備(比如UART、USB、LCD控制器)。我們寫程序時,並不涉及CPU,只是去操作那些片上設備。
所以:差別在於片上設備,不在於CPU核;差別在於寄存器操作不一樣。
因為我們寫驅動並不涉及CPU的核心,只是操作CPU之外的設備,只是讀寫這些設備的寄存器。
之所以推薦S3C2440,是因為它的Linux學習資料最豐富,並有配套的第1、2期視頻。
2.2.6 怎麼學習ARM+Linux的裸機開發
學習裸機開發的目的有兩個:
①掌握裸機程序的結構,為後續的u-boot作準備
②練習硬體知識,即:怎麼看原理圖、晶元手冊,怎麼寫代碼來操作硬體
後面的u-boot可以認為是裸機程序的集合,我們在裸機開發中逐個掌握各個部件,再集合起來就可以得到一個u-boot了。
後續的驅動開發,也涉及硬體操作,你可以在裸機開發中學習硬體知識。
注意:如果你並不關心裸機的程序結構,不關心bootloader的實現,這部分是可以先略過的。在後面的驅動視頻中,我們也會重新講解所涉及的硬體知識。
推薦兩本書:杜春蕾的《ARM體系結構與編程》,韋東山的《嵌入式Linux應用開發完全手冊》。後者也許是國內第1本涉及在PC Linux環境下開發的ARM裸機程序的書,如果我說錯了,請原諒我書讀得少。
對於裸機開發,我們提供有2部分視頻:
①環境搭建
第0課第1節_剛接觸開發板之介面接線.wmv
第0課第2節_剛接觸開發板之燒寫裸板程序.wmv
第0課第3節_剛接觸開發板之重燒整個系統.wmv
第0課第4節_剛接觸開發板之使用vmwae和預先做好的ubuntu.wmv
第0課第5節_剛接觸開發板之u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第6節_剛接觸開發板之內核u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第7節_剛接觸開發板之製作根文件系統及初試驅動.wmv
第0課第8節_在TQ2440,MINI2440上搭建視頻所用系統.wmv
第0課第9節_win7下不能使用dnw燒寫的替代方法.wmv
.................
原文鏈接:網頁鏈接
⑹ 想學嵌入式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本身。演算法,架構方式等都很重要。
這里很多書其實是推薦而已,不必太在意,關鍵還是基礎,才是重中之重!!!
⑺ 嵌入式新手入門最佳視頻教程
光碟詳細內容
嵌入式新手入門最佳視頻教程
一、光碟01
1.軟體視頻包-嵌入式linux軟體開發入門培訓視頻.iso
共有46個視頻,介紹嵌入式linux入門需要掌握的基礎知識,包括linux的基礎知識,shell基礎,vi編輯器,包括嵌入式linux的C語言編程,非常詳細,非常精闢,我當初剛出學校做嵌入式的時候,就是看這個視頻的。
2.軟體視頻包-嵌入式系統30學時.iso
共有16個視頻,講述嵌入式系統概述,還有基本概念,嵌入式微處理器及ARM體系結構,已經嵌入式系統的基本硬體知識,嵌入式實時操作系統的介紹,介紹us, os-II,介紹嵌入式wince,linux等操作系統。
3.軟體視頻包-嵌入式系統設計培訓教程.iso
共有25個視頻,講述嵌入式系統硬體和軟體的知識,嵌入式系統的基本知識,講述嵌入式軟體和硬體的協同設計,最後還講述了U-BOOT程序設計,MP3播放器的設計。
4.軟體視頻包-計算機系統結構和匯編培訓.iso
共有51個視頻,將計算機系統結構和匯編語言程序設計,對於以後進行底層的開發很有幫助。
二、光碟02
5.軟體視頻包-底層內核和驅動培訓視頻.iso
共有28個視頻,講述linux內核介紹,內核的源代碼結構,如何編譯和配置內核,如何開發內核模塊,內核的啟動流程分析,內核的內存管理,進程內存空間管理,linux2.6內存管理和分配,內核的鏈表操作,包括一些內核的實驗。
驅動部分講述字元設備驅動程序和字元驅動例子解析,驅動調試技術,並發控制技術,Ioctl的實現,驅動如何訪問硬體,中斷處理,LED驅動程序設計,等待隊列,阻塞,Poll方法實現,時間度量,內核定時器,網路體系架構,網卡驅動設計,觸摸屏驅動分析等等。
三、光碟03
6.軟體視頻包-linux系統編程培訓教程.iso
共有22個視頻,講述基於linux系統的編程,裡面介紹很多linux實例代碼的分析,非常不錯。
7.軟體視頻包-嵌入式系統及應用開發培訓視頻.iso
共有40個視頻,講述嵌入式系統結構、外設驅動和應用開發調試技術,嵌入式系統開發模式,嵌入式硬體開發,實時/嵌入式系統開發方法,還講述了嵌入式系統硬體結構,嵌入式處理器,ARM介紹,片內周邊電路,外圍電路,外設等等。
四、光碟04
8.軟體視頻包-嵌入式培訓視頻1.iso
這是RetHat的企業安裝盤,還有samba安裝方法介紹,適合新手學習,還有包括linux命令,腳本,Makefile和GCC的材料。
五、光碟05
9.軟體視頻包-linux內核編程初級班培訓教程.rar
共有30個視頻,都是基於代碼分析的,講述linux內核的基礎知識,匯編及保護模式,linux內核體系結構,linux引導程序分析,linux內核代碼分析,linux塊設備驅動程序分析。
10.軟體視頻包-嵌入式培訓視頻2.iso
共 有20個視頻,講述linux文件編程,庫函數方式訪問文件,系統調用方式訪問文件,時間編程,進程式控制制理論,進程創建,進程等待,進程通訊概述,管道通 訊,信號通訊,共享內存通訊,消息隊列,信號量,線程創建,線程等待與清除, ARM概述, mini2440, ARM寄存器, ARM定址方式, ARM指令1, ARM指令2.
六、光碟06
11.軟體視頻包-嵌入式培訓視頻3.iso
共有 20個視頻,講述內核簡介,Linux內核源代碼,Linux內核配置與編譯,內核模塊-1,內核模塊-2,Linux內存管理,Linux進程與內核地 址空間,Linux內核鏈表,內核定時器,內核進程,進程調度,系統調用,Proc文件系統,異常分析,交叉工具鏈,嵌入式系統構 建,bootloader介紹,Uboot簡介,UBoot命令,Uboot移植。
七、光碟07
12.軟體視頻包-嵌入式培訓視頻4.iso
共 有25個視頻,講述Linux驅動程序介紹,字元設備驅動,簡單字元設備驅動實例分析,並發控制,Ioctl設備控制,內核等待隊列,阻塞型字元設備驅 動, poll設備方法,自動創建設備文件, mmap設備方法,硬體訪問, LED驅動程序,匯流排,設備,驅動, platform驅動,中斷處理程序,按鍵驅動,網卡驅動程序設計, CS8900A網卡驅動程序分析,輸入子系統,觸摸屏驅動程序, PCI匯流排, PCI驅動程序設計,串口驅動程序,
八、光碟08
13.軟體視頻包-中嵌培訓視頻1
共有21個視頻,如圖1
九、光碟09
14.軟體視頻包-中嵌視頻2
共有22個視頻,如圖2,
十、光碟10
15.軟體視頻包-中嵌視頻3
共有26個視頻,包括課件
十一、光碟11
1.軟體視頻包-linux內核編程高級班培訓教程.rar
共有29個視頻,詳細介紹2.6內核的代碼,非常不錯,如果想學習內核,值得推薦!
2.硬體視頻包-CPLD系統設計和VHDL語言培訓教程
共有10個視頻,介紹CPLD系統設計和VHDL的程序設計,包括視頻和課件還有相關的資料。
3.硬體視頻包-電路分析培訓教程
共有30個視頻,詳細的介紹了電路分析,電路原理。
4.軟體視頻包-ARM S3C44B0 嵌入式微處理器原理及應用
共 有48個視頻,主要內容包括:嵌入式系統基礎知識、嵌入式交叉編譯環境與嵌入式開發環境的搭建、基於Linux的嵌入式軟體開發流程、MiniGUI應用 程序設計、嵌入式資料庫應用、Qt圖形界面應用程序開發。《嵌入式系統開發基礎——基於ARM微處理器和Linux操作系統》涉及嵌入式系統從底層驅動到 頂層應用的各個部分,配合實驗操作循序漸進地幫助讀者完成各個章節內容的學習,引領初學者順利進入嵌入式世界。
十二、光碟12
5.硬體視頻包-單品機經典培訓教程01-11
共有11個視頻,講述單片機的基本所有的內容,老師現場寫代碼,非常棒,可以從一個完全不懂單品機的人到熟悉單品機,到單片機編程,為以後ARM編程打好基礎!
十三、光碟13
6.實踐開發包-ARM 2410開發板資料.zip
包括用戶手冊,網上資料,晶元手冊,目標代碼和支持包,USB 驅動程序,原理圖,裡面還有實驗的指導,很好!
7.實踐開發包-ARM FS44B0開發板資料.zip
包括用戶手冊,ADS120評估板,BOIS和測試程序的源代碼,uCLinux代碼和編譯工具,晶元手冊,目標代碼和支持包,USB 驅動程序,原理圖,裡面還有實驗的指導,很好!
8.硬體視頻包-計算機電路基礎培訓教程.iso
共有14個視頻,講述計算機的電路基礎,適合初學者入門。
9.硬體視頻包-PCB設計培訓教程 Altium Designer
共有14個視頻,講述Altium Designed,電子設計基礎知識,原理圖初步設計,進階,提高,深入,pcb庫的設計,集成庫的作用和製作,pcb設計初步,PCB設計提高,PCB深入。
10.硬體視頻包-單品機經典培訓教程12-13
接光碟12
十四、光碟14
11.實踐開發包-ARM 6410開發板資料.rar
這是我們購買了一塊7000元的開發板配套的完整資料,包括開發套件源代碼壓縮包,套件使用手冊、CPU及其它各種晶元的datasheet,開發板電路圖,模擬器的驅動文件及說明文檔等等。
12.實踐開發包-MIPS CPU開發板資料.rar
這是我們購買了一塊3000元的開發板配套的完整資料,現在市場上 MIPS的開發板非常少,當然資料更少了。包括整套的文檔,軟體和硬體所有的資料,包括工具。
13.實踐開發包-USB實踐開發包.iso
關於USB的實踐開發包,裡面有介紹關於U盤和MP3的工具,軟體的程序,硬體的原理圖,製作的工具,和相關的資料手冊。
14.實踐開發包-嵌入式linux網路的遠程式控制制開發包.iso
關於嵌入式linux網路遠程式控制制的實踐開發包,裡面有詳細的一步步圖文操作的電子書,軟體的程序,硬體的原理圖,製作的工具,和相關的工具。
15.實踐開發包-電子相冊開發包.iso
關於電子相冊的實踐開發包,裡面有詳細的配套說明和實驗指導書,軟體的程序,硬體的原理圖,製作的工具,和相關的工具。
16.行業視頻包-MTK手機開發培訓.iso
介紹MTK的資料,有10個視頻教程,還包括新手如何學習MTK手機開發的資料,MTK開發平台大集合,入門導讀,全套資料,MMI的資料等等。
17.行業視頻包-VOIP視頻教程
共有12個視頻,介紹VOIP網路電話開發,非常不錯,這對以後找這方面的工作非常有幫助,是高薪的行業。
十五、光碟15
18.開發工具包-Wince開發平台platform builder5.0
這是platform builder 5.0的安裝包,可以基於它開發 wince.
十六、光碟16
19.電子書籍包.iso
這是我們多年來積累的電子書籍,是你學習嵌入式的不可多得的材料,太多經典的教材,太多經典的好文章,一定會讓你流連忘返!共有近900本關於嵌入式的電子書籍,覆蓋了嵌入式方方面面的內容!
20.開發工具包-安裝好的fedora9
已經安裝好的Fedora(一種基於linux的操作系統和平台,,從硬碟直接可以拷貝到硬碟linux,方便linux初學者免去安裝linux的麻煩。