嵌入式linux系統驅動開發
Ⅰ 我想學嵌入式linux驅動開發,很糾結到底選ARM9,ARM11還是CORTEX-A8的開發板
首先我沒用過cortex-A8,不做討論。
我最開始學的是ARM7,然後用到arm9、arm11、cortex-M4。
1、arm9和arm11區別不大,只是性能上的提高,然後arm11增加了圖形處理的能力。
2、arm7都還不過時。外面找工作,我是剛好是應屆生,這個對我來說實際的經驗要求不高。但你用AR9\ARM11肯定不是過時的。
3、只要你學透了arm架構的任何一款處理器的驅動開發,上手其他arm架構估計不超過1天(8小時),因為驅動開發很多地方時相通的。驅動開發對硬體架構先不說,難度在於linux系統,尤其是內核。
4、你說對了,這是相當重要的一部分,如果這些都不熟悉,那麼對於這個arm架構你是沒有掌握的,尤其是驅動工程師!
從你問的問題來看,我不建議你使用cortexA8的處理器。A系列面向的是應用,如手持設備等,復雜度很高。
這兒建議你選用培訓機構使用過的板子,我推薦基於ARM11的OK6410板子。有培訓機構的配套資料,很多很全,遇到問題網上搜也能很快解決。樓上提到ARM9也是相當不錯的選擇,尤其是mini2440,LINUX內核直接支持。最近我有幾個同學也去華清遠見培訓,他們使用的是款A8處理器的板子。不過這個東西出來的學習資料很少,非常不適合你入手。除非你也去培訓,那是題外話,修行靠個人。
總的來說,不要糾結使用哪個處理器,他們都是相通的,先買一個板子來用起,那才是王道。對了,OK6410能跑android。
Ⅱ Linux嵌入式開發和Linux內核/驅動開發有什麼區別
前者強調的是產品(linux嵌入式產品),而後者強調的是軟體(內核和驅動)。
一般做linux嵌入式產品時都要涉及linux驅動和內核,當然不僅僅是內核驅動,還有gui系統,和其他軟體等。
而做linux內核驅動則不一定用於嵌入式產品,也可以用於開發pc機(也就是一般的x86架構)軟體。
Ⅲ 好迷茫想從事嵌入式linux驅動程序開發
如果你是在校學生,可以花一段時間去專門學習Linux,如果你即將畢業,建議先找個類似的工作,工作需要什麼,你就學什麼,這樣很有重點,不好會讓你覺得大海撈針似的,同時也能掙點生活費。要麼自己出錢找個公司培訓一下,要麼自己搞個板子,自己慢慢研究。但是你要明白這個過程可不是一蹴而就的,沒有幾年的學習是不行的。而且涉及眾多知識,每個知識都是一個就業方向,如你說的驅動開發(難、工資高)、C編程等。
我的建議是定位好自己的方向,由淺入深,堅持不懈的學習,你先學會在Linux做開發,了解內核,系統,在做驅動開發。當然你的基礎是很不錯的。你要看大量相關書籍,c的高級版等等。
這也是我個人意見,雖然我現在也在迷茫,當時一點你必須要明白,不要猶豫、迷茫了,不如趕緊學習吧!
Ⅳ 成為一名嵌入式Linux開發工程師需要學習哪些知識
嵌入式系統是計算機軟體和硬體的綜合體,崗位包括:ESE(嵌入式軟體工程師);ADE(嵌入式應用開發工程師);FWE(嵌入式底層開發工程師);FEC(嵌入式固件開發工程師)。
課程內容主要包括:
①C,Java核心編程:c語言核心編程,Java核心編程;
②Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;
③核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;
④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;
⑤大型項目實踐:每期安排各類型真實的項目,詳細可以找我要資料。
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。
Ⅳ 嵌入式Linux驅動程序開發學習路線
關於這個方向,我認為大概分3個階段:
1、嵌入式linux上層應用,包括QT的GUI開發
2、嵌入式linux系統開發
3、嵌入式linux驅動開發
嵌入式目前主要面向的幾個操作系統是,LINUX,WINCE、VxWorks等等
Linux是開源免費的,而且其源代碼是開放的,更加適合我們學習嵌入式。
所以你可以嘗試以下路線:
(1) C語言是所有編程語言中的強者,單片機、DSP、類似ARM的種種晶元的編程都可以用C語言搞定),因此必須非常熟練的掌握。
推薦書籍:《The C Programming Language》 這本經典的教材是老外寫的,也有中譯版本。
(2) 操作系統原理,是必需的,如果你是計算機專業畢業那也就無所謂了,如果是非計算機專業的就必須找一本比較淺顯的計算機原理書籍看一看,把啥叫「進程」「線程」「系統調度」等等基本問題搞清楚。
(3)Linux操作系統就是用C語言編寫的,所以你也應該先學習下Linux方面的編程,只有你會應用了,才能近一步去了解其內核的精髓。
推薦書籍:《UNIX環境高級編程》(第2版)
(4) 了解ARM的架構,原理,以及其匯編指令,我們在嵌入式開發中,一般很少去寫匯編,但是最起碼的要求是能夠看懂arm匯編。
(5) 系統移植的時候,就需要你從最下層的bootloader開始,然後內核移植,文件系統移植等。而移植這部分對硬體的依賴是非常大的,其配置步驟也相對復雜,也沒有太多詳細資料。
(6) 驅動開發
linux驅動程序設計既是個極富有挑戰性的領域,又是一個博大精深的內容。
linux驅動程序設計本質是屬於linux內核編程范疇的,因而是對linux內核和內核編程是有要求的。在學習前你要想了解linux內核的組成,因為每一部分要詳細研究的話足夠可以擴展成一本厚書。
以上只不過是大概的框架,在實際的開發中還會涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學習嵌入式的周期較長,門檻較高,自學的話更是需要較強的學習能力和專業功底。只要能堅持下來一定會取得成功!
…………………………………………
嵌入式非常難,看書的話比較晦澀難懂,不容易入門,我個人比較偏向於看視頻教程,因為有老師帶著比較容易入門。給看看一篇文章是關於一位專科生怎麼自學嵌入式的。
做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然後給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多麼的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。於是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章,是一個嵌入式高手介紹沒有基礎的朋友怎麼自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟網站推出的一份視頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的可以復制 sina.lt/qKh 粘貼瀏覽器按回車鍵即打開)。裡面的教程還不錯,很完整,可以讓我從基礎的開始學起。視頻比較便宜。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。C語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了C和linux的基本操作。
接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了ARM的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以後再慢慢啃。
這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,然後我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。
最後的一個月,我就去看關於實踐部分的內容,了解嵌入式項目具體的開發流程,需要什麼樣的知識,我就開始准備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以後找工作做准備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多准備了20天左右
我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開發,做安防產品的應用的。我想我也比較幸運,經理很看重我的努力,就決定錄用我,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。
Ⅵ 大神們,幫幫忙。簡述嵌入式Linux驅動程序開發的常見數據結構(建議主要結構詳細說明)
Linux系統中有一個名為blkdevs的結構數組,它描述了一系列在系統中登記的塊設備。數組blkdevs也使用設備的主設備號作為索引,其元素類型是device_struct結構。該結構中包括指向已登記的設備驅動程序名的指針和指向block_device_operations結構的指針。在block_device_operations結構中包含指向有關操作的函數指針。所以,該結構就是連接抽象的塊設備操作與具體塊設備類型的操作之間的樞紐。
Ⅶ 嵌入式Linux設備驅動開發詳解的目錄
第1章嵌入式系統與驅動程序1
本章目標1
1.1嵌入式系統概述1
1.1.1嵌入式系統的概念1
1.1.2嵌入式系統的特點2
1.1.3嵌入式系統的體系結構2
1.2嵌入式處理器介紹4
1.2.1嵌入式處理器分類4
1.2.2ARM概述5
1.2.3ARM系列晶元簡介5
1.3嵌入式操作系統介紹7
1.3.1主流嵌入式操作系統7
1.3.2嵌入式系統的發展狀況8
1.3.3嵌入式Linux介紹8
1.3.4嵌入式系統開發環境的建立9
1.3.5嵌入式軟體開發10
1.4嵌入式Linux驅動程序12
1.4.1嵌入式Linux的內核空間和用戶空間12
1.4.2嵌入式Linux的文件系統12
1.4.3嵌入式Linux的設備管理14
1.4.4嵌入式Linux的驅動程序16
1.5知識索引20
1.6思考與練習21
第2章簡單的字元設備驅動程序23
本章目標23
2.1嵌入式Linux字元設備的驅動程序結構23
2.1.1嵌入式Linux驅動程序常用的頭文件24
2.1.2File_operations結構體24
2.1.3字元設備驅動程序的入口25
2.1.4驅動程序的設備注冊26
2.2設備驅動程序中的具體問題27
2.2.1I/O埠28
2.2.2內存操作29
2.2.3中斷處理29
2.3LED的驅動程序實例及測試30
2.3.1LED I/O埠設置30
2.3.2LED硬體電路設計32
2.3.3LED驅動程序設計33
2.3.4LED測試程序設計36
2.4嵌入式Linux中斷處理驅動程序及測試37
2.4.1中斷處理過程37
2.4.2中斷向量表39
2.4.3中斷的處理模式39
2.4.4中斷的優先順序40
2.4.5中斷的嵌套40
2.4.6中斷源的擴展40
2.4.7中斷控制寄存器的設置41
2.5按鍵中斷的驅動程序實例45
2.5.1按鍵中斷的電路設計45
2.5.2按鍵中斷的驅動程序設計45
2.6知識索引48
2.7思考與練習49
第3章數字顯示驅動程序50
本章目標50
3.1數字顯示器50
3.1.1數碼管簡介50
3.1.2數碼管的分類51
3.1.3數碼管顯示原理51
3.2數碼管顯示電路的硬體設計52
3.2.1解碼器的使用52
3.2.2數碼管的驅動方式53
3.2.3串/並變換的解碼設計55
3.3數碼管驅動程序實例56
3.3.1驅動程序的初始化和卸載模塊56
3.3.2文件操作結構模塊57
3.3.3數碼管的打開模塊57
3.3.4數碼管的讀寫模塊58
3.3.5數碼管的I/O控制模塊58
3.3.6數碼管的退出模塊58
3.3.7驅動程序的模塊載入和卸載59
3.4數碼管顯示電路測試程序設計60
3.4.1數碼管測試設計60
3.4.2數碼管測試程序60
3.4.3數碼管測試效果61
3.5知識索引61
3.6思考與練習62
第4章鍵盤驅動程序63
本章目標63
4.1鍵盤介面概述63
4.1.1鍵盤的分類63
4.1.2鍵盤的防抖65
4.1.3鍵盤的掃描65
4.1.4鍵盤的緩沖演算法67
4.2鍵盤的驅動設計實例67
4.2.1鎖存器和緩沖器擴展鍵盤67
4.2.2鎖存器和緩沖器的介面68
4.2.3鎖存器和緩沖器擴展鍵盤驅動程序設計69
4.2.4鎖存器和緩沖器擴展鍵盤測試程序設計71
4.3智能控制晶元HD7279擴展鍵盤72
4.3.1HD7279的電路設計72
4.3.2HD7279的指令介紹73
4.3.3HD7279的串列介面74
4.3.4HD7279的驅動程序設計75
4.3.5HD7279的測試程序設計84
4.4知識索引85
4.5思考與練習85
第5章A/D驅動程序86
本章目標86
5.1A/D轉換的過程86
5.1.1采樣和保持86
5.1.2量化和編碼88
5.1.3ADC的分類89
5.2A/D轉換器的基本原理89
5.2.1逐次逼近型A/D轉換器89
5.2.2雙積分型A/D轉換器90
5.2.3V/F和F/V型轉換器93
5.2.4其他A/D轉換器95
5.3A/D轉換器介面技術97
5.3.1ADC的主要參數及意義97
5.3.2ADC的電路選擇方法98
5.3.3ADC實際應用中的問題99
5.4S3C2410 A/D轉換驅動設計實例99
5.4.1S3C2410的A/D轉換電路99
5.4.2S3C2410X的A/D轉換控制寄存器100
5.4.3S3C2410X的A/D轉換數據寄存器101
5.4.4S3C2410X中A/D轉換驅動程序的設計102
5.4.5S3C2410X中A/D轉換測試程序的設計105
5.5知識索引106
5.6思考與練習107
第6章D/A驅動程序108
本章目標108
6.1D/A的原理介紹108
6.1.1D/A轉換的概念及基本原理108
6.1.2電子模擬開關109
6.1.3D/A轉換器的基本結構110
6.1.4D/A轉換的靜態參數114
6.1.5D/A轉換的動態參數115
6.2D/A轉換的硬體電路設計116
6.2.1D/A轉換的介面技術116
6.2.2D/A轉換晶元介紹117
6.2.3D/A轉換的電路設計118
6.3D/A轉換器的驅動程序實例118
6.3.1D/A驅動程序中的宏定義118
6.3.2D/A的模塊載入118
6.3.3D/A轉換器的文件操作模塊119
6.3.4D/A轉換器的讀寫控制模塊120
6.3.5D/A轉換器的打開、退出模塊120
6.4測試程序的設計120
6.4.1D/A測試程序中的宏定義121
6.4.2D/A測試程序的主函數121
6.4.3D/A測試程序中的功能函數122
6.4.4D/A測試程序中的功能列印函數123
6.4.5D/A測試程序中的波形生成函數123
6.4.6D/A測試程序的效果124
6.5知識索引125
6.6思考與練習125
第7章LCD驅動程序126
本章目標126
7.1LCD顯示器概述126
7.1.1液晶126
7.1.2LCD顯示屏的背光127
7.1.3LCD顯示器的分類127
7.1.4LCD的顯示原理127
7.1.5LCD的驅動方式130
7.1.6LCD的常用指標131
7.2LCD的顯示介面131
7.2.1灰度STN的時序132
7.2.2彩色STN的時序133
7.2.3TFT的時序134
7.3嵌入式處理器的LCD控制器136
7.3.1LCD控制器136
7.3.2LCD控制器的設置137
7.3.3LCD的字元顯示緩存139
7.4LCD的驅動程序設計140
7.4.1LCD驅動程序相關的宏定義140
7.4.2LCD驅動程序的底層操作函數142
7.4.3LCD驅動程序提供的API145
7.4.4LCD驅動程序的模塊化載入151
7.4.5LCD的測試程序152
7.5基於Framebuffer的LCD驅動程序實例155
7.5.1Framebuffer概述155
7.5.2LCD的電路連接155
7.5.3Framebuffer設備驅動程序的結構156
7.5.4Framebuffer設備驅動程序的設計159
7.5.5Framebuffer設備測試程序的設計164
7.5.6嵌入式Linux常用的GUI166
7.6知識索引166
7.7思考與練習167
第8章觸摸屏驅動程序168
本章目標168
8.1觸摸屏概述168
8.2觸摸屏的分類168
8.2.1電阻技術觸摸屏168
8.2.2表面聲波技術觸摸屏169
8.2.3電容電感技術觸摸屏170
8.2.4紅外線技術觸摸屏170
8.3觸摸屏的特性171
8.3.1透明度和色彩失真171
8.3.2反光性171
8.3.3清晰度171
8.3.4漂移172
8.3.5檢測和定位172
8.4觸摸屏的硬體電路設計172
8.4.1電阻式觸摸屏的電路原理172
8.4.2電阻式觸摸屏原點的定位173
8.4.3電阻式觸摸屏的電路連接174
8.5觸摸屏的驅動程序實例176
8.5.1觸摸屏介面的模式176
8.5.2A/D轉換和觸摸屏寄存器的設置177
8.5.3觸摸屏的坐標179
8.5.4觸摸屏的電路連接180
8.5.5觸摸屏的驅動程序介面181
8.6測試程序的設計182
8.6.1觸摸屏的數據定義183
8.6.2觸摸屏的數據處理183
8.6.3觸摸屏的運行測試185
8.7知識索引186
8.8思考與練習187
第9章CAN匯流排驅動程序188
本章目標188
9.1CAN匯流排介面設計188
9.1.1CAN匯流排概述188
9.1.2CAN的工作特點及主要優點189
9.1.3CAN匯流排的電氣特徵和MAC幀結構189
9.2嵌入式處理器上CAN匯流排介面的擴展190
9.2.1SJA1000簡介190
9.2.2SJA1000擴展191
9.3SJA1000擴展CAN匯流排介面的設計192
9.3.1CAN 控制器SJA1000的操作模式192
9.3.2CAN控制器SJA1000的特徵功能193
9.3.3CAN 控制器SJA1000的Basic CAN模式設置194
9.4SJA1000擴展CAN匯流排介面的通信196
9.4.1通過CAN匯流排建立通信的步驟196
9.4.2SJA1000的初始化196
9.4.3驅動程序的結構設計198
9.4.4驅動程序init、exit、open、close函數的實現200
9.4.5驅動程序read、write函數的實現201
9.4.6驅動程序interrupt、ioctl函數實現202
9.4.7測試程序的編寫202
9.5驅動程序的載入204
9.6知識索引204
9.7思考與練習205
第10章IIC匯流排驅動程序206
本章目標206
10.1IIC匯流排概述206
10.1.1IIC匯流排介紹206
10.1.2IIC匯流排引入的原因206
10.1.3IIC匯流排的特點206
10.1.4IIC匯流排的基本結構207
10.1.5IIC匯流排的術語207
10.1.6IIC匯流排的工作208
10.1.7IIC匯流排的競爭仲裁209
10.1.8IIC匯流排的工作流程210
10.2嵌入式處理器的IIC介面211
10.2.1IIC匯流排控制寄存器212
10.2.2IIC匯流排控制/狀態寄存器213
10.2.3IIC匯流排地址寄存器214
10.2.4IIC匯流排移位數據寄存器214
10.2.5S3C2410中與IIC對應的I/O埠215
10.3基於IIC的鍵盤晶元應用216
10.3.1ZLG7290的功能217
10.3.2ZLG7290的控制方式218
10.3.3ZLG7290的寄存器218
10.3.4ZLG7290的通信介面219
10.3.5ZLG7290的指令介紹219
10.4IIC匯流排驅動程序實例221
10.4.1ZLG7290的電路連接221
10.4.2ZLG7290的通信流程223
10.4.3ZLG7290驅動中變數的定義225
10.4.4ZLG7290驅動中實時時鍾的改變226
10.4.5ZLG7290和IIC寄存器的初始化227
10.4.6ZLG7290驅動程序的模塊化228
10.4.7ZLG7290的文件操作結構228
10.5IIC匯流排的測試程序230
10.6知識索引231
10.7思考與練習231
第11章音頻匯流排驅動程序232
本章目標232
11.1音頻匯流排介面概述232
11.1.1音頻的采樣精度233
11.1.2音頻編碼233
11.2IIS音頻匯流排介面233
11.2.1IIS匯流排的物理連接233
11.2.2IIS的匯流排協議234
11.2.3IIS匯流排的硬體設計235
11.2.4IIS匯流排的寄存器236
11.3AC97音頻匯流排介面239
11.4IIS匯流排的驅動程序設計240
11.4.1音頻設備基礎知識240
11.4.2音頻設備文件241
11.4.3WAV聲音文件243
11.4.4音頻設備和驅動程序的通信243
11.4.5設備的初始化和載入244
11.4.6DMA的操作和宏定義246
11.4.7audio設備文件的操作248
11.4.8mixer設備文件的操作260
11.5音頻驅動程序的測試262
11.6知識索引262
11.7思考與練習263
第12章IDE介面驅動程序264
本章目標264
12.1IDE介面概述264
12.1.1硬碟知識介紹264
12.1.2IDE介面標准267
12.1.3IDE介面的傳輸模式269
12.1.4IDE介面寄存器269
12.2IDE介面驅動程序的移植271
12.2.1嵌入式Linux下IDE驅動程序介面271
12.2.2嵌入式Linux下IDE驅動程序272
12.2.3IDE硬碟的讀/寫操作274
12.3IDE驅動程序測試282
12.3.1磁碟文件系統簡介283
12.3.2IDE分區測試283
12.4知識索引285
12.5思考與練習285
第13章快閃記憶體晶元的驅動程序286
本章目標286
13.1快閃記憶體晶元概述286
13.1.1快閃記憶體晶元的物理特性286
13.1.2嵌入式文件系統概述289
13.1.3MTD體系介紹289
13.1.4Flash專有名詞291
13.2NAND Flash291
13.2.1NAND Flash的結構291
13.2.2NAND Flash的操作292
13.2.3NAND Flash控制器294
13.2.4NAND Flash的時序296
13.2.5NAND Flash的驅動程序實例297
13.3NOR Flash301
13.3.1NOR Flash的結構301
13.3.2NOR Flash的操作302
13.3.3NOR Flash的驅動程序實例303
13.4基於快閃記憶體的文件系統307
13.5知識索引309
13.6思考與練習310
第14章USB 設備驅動程序311
本章目標311
14.1USB介面概述311
14.1.1USB系統311
14.1.2USB的電氣特性312
14.1.3USB匯流排的拓撲結構313
14.1.4USB的通信協議313
14.2嵌入式系統中USB的使用315
14.2.1OHCI概述315
14.2.2Host介面硬體設計316
14.3嵌入式系統中USB設備的驅動程序設計316
14.3.1
Ⅷ 怎麼學習嵌入式linux下的驅動編寫
1、 編寫Linux設備驅動要求工程師有非常好的硬體基礎,懂得SRAM、Flash、SDRAM、磁碟的讀寫方式,UART、I2C、USB等設備的介面以及輪詢、中斷、DMA的原理,PCI匯流排的工作方式以及CPU的內存管理單元(MMU)等。
2、編寫Linux設備驅動要求工程師有非常好的C語言基礎,能靈活地運用C語言的結構體、指針、函數指針及內存動態申請和釋放等。
3、編寫Linux設備驅動要求工程師有一定的Linux內核基礎,雖然並不要求工程師對內核各個部分有深入的研究,但至少要明白驅動與內核的介面。尤其是對於塊設備、網路設備、Flash設備、串口設備等復雜設備,內核定義的驅動體系架構本身就非常復雜。
4、編寫Linux設備驅動要求工程師有非常好的多任務並發控制和同步的基礎,因為在驅動中會大量使用自旋鎖、互斥、信號 量、等待隊列等並發與同步機制。
Ⅸ linux嵌入式開發到底學些什麼東西啊
嵌入式系統的定義:「用於控制、監視或者輔助操作機器和設備的裝置」(原文為:Devices
Used
to
Control,Monitor
or
Assist
the
Operation
of
Equipment,Machinery
or
Plants)。這主要是從應用對象上加以定義,從中可以看出嵌入式系統是軟體和硬體的綜合體,還可以涵蓋機械等附屬裝置。
國內普遍認同的嵌入式系統定義為:以應用為中心,以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。
嵌入式主要用到的是C語言,C++,但Java也用於嵌入式技術,主要是用在嵌入式游戲開發,移動開發等,主要側重JAVA的J2ME方向。
嵌入式的發展前景跟就業前景很不錯,目前國內這方面的人才也比較緊缺。所以你學這方面的專業比較好。嵌入式主要分為三大塊:
1.嵌入式Linux系統開發:側重開發環境搭建、內核原理、交叉編譯等
2.嵌入式Linux應用開發:側重Linux應用編程、內核編譯、系統調用。
3.嵌入式Linux驅動開發:側重嵌入式Linux系統下的驅動開發、內核的深入分析。目前市場上專業的嵌入式培訓很多很亂,因為是最近幾年發展起來的。據我所知最權威最專業的要數東方賽富嵌入式培訓學院了,位於清華大學東門,跟清華大學有很深的淵源關系。特別是師資,師資團隊是整個嵌入式培訓領域最好的。80%的老師來自清華大學、世界500強企業和中國頂尖的IT公司。
如果時間及經濟條件允許的話,培訓一下還是有很好的,既學到了專業知識,同時也解決了就業問題,就業單位也比自己找的要好很多!如需要培訓他們是不二的選擇!