嵌入式系統(tǒng)原理及應(yīng)用教程PPT課件_第1頁
嵌入式系統(tǒng)原理及應(yīng)用教程PPT課件_第2頁
嵌入式系統(tǒng)原理及應(yīng)用教程PPT課件_第3頁
嵌入式系統(tǒng)原理及應(yīng)用教程PPT課件_第4頁
嵌入式系統(tǒng)原理及應(yīng)用教程PPT課件_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、莊?= i宰$ s 帕 IIW帕 6 來 JapEOJOOHM 帕QAZO-OGCOel PCM-ddv 40 - oo 上 OS BPB3H10. 1. 1嵌入式Linux設(shè)備驅(qū)動程序分類靜態(tài)加載的驅(qū)動程序動態(tài)加載的驅(qū)動程序Linux將設(shè)備按照功能特性劃分為三種類型:字符 設(shè)備,塊設(shè)備和網(wǎng)絡(luò)設(shè)備。10.1.2最簡單的內(nèi)核模塊1 helloworld模塊源代碼2.模塊的編譯3.模塊的加載和卸載ioHuade School of AppIi od Toohnology10. 2嵌入式Linux設(shè)備驅(qū)動重要技術(shù)10. 2. 1內(nèi)存與I/O端口(1) 內(nèi)核空間和用戶空間(2) 內(nèi)核中內(nèi)存分配內(nèi)核中獲

2、取內(nèi)存的幾種方式如下。 通過伙伴算法分配大片物理內(nèi)存 通過s 1 ab緩沖區(qū)分配小片物理內(nèi)存 非連續(xù)內(nèi)存區(qū)分配 高端內(nèi)存映射固定線性地址映射(3) I/O端口根據(jù)CPU體系結(jié)構(gòu)的不同,CPU對10端口的編址方式 有兩種:I/O映射方式(I/0-mapped)和內(nèi)存映射方 式(Memory-mapped)。下面主要討論一下內(nèi)存映射方式訪問I/O端口的方 法,我們稱之為I/O內(nèi)存操作。I/O內(nèi)存區(qū)必須在使用前分配 I/O內(nèi)存映射訪問I/O內(nèi)存映射到用戶空間10.1嵌入式Linux驅(qū)動程序開發(fā)基礎(chǔ)Huade School of AppIi od Toohnology10. 2. 2 同步機(jī)制Linu

3、x內(nèi)核中包含的同步機(jī)制包括:原子操作、信 號量 (semaphore)、讀寫信號量 (rw_semaphore)、 自旋鎖(spinlock)、大內(nèi)核鎖(Big Kernel Lock, BKL) 讀寫鎖(rwlock) 讀拷貝更新(Read-Copy Update, RCU)和seqlock (順序鎖)等。10.1嵌入式Linux驅(qū)動程序開發(fā)基礎(chǔ)Huade School of AppIi od Toohnology10.1嵌入式Linux驅(qū)動程序開發(fā)基礎(chǔ)Huade School of AppIi od Toohnology1. 原子操作原子操作主要用于實(shí)現(xiàn)資源計數(shù),很多引用計數(shù)(refcnt

4、)就是通過原子操作實(shí)現(xiàn)的。原子類型定義如下:typedef struct volatile int counter; atomic_t;原子操作通常用于實(shí)現(xiàn)資源的引用計數(shù)2. 信號量信號量在創(chuàng)建時需要設(shè)置一個初始值.3. 讀寫信號量讀寫信號量有兩種實(shí)現(xiàn): 一種是通用的,不依賴于硬件架構(gòu) 一種是架構(gòu)相關(guān)的IttiT 讀寫信號量的相關(guān)API有:DECLARE_RWSEM(name)該宏聲明一個讀寫信號量name并對其進(jìn)行初始化。 void init_rwsem(struct rw_semaphore *sem); 該函數(shù)對讀寫信號量sem進(jìn)行初始化。void down_read(stmct rw_

5、semaphore *sem);在Linux中,每一個進(jìn)程都用一個類型為task_t或 struct task_struct的結(jié)構(gòu)來描述Illi4. 自旋鎖一個執(zhí)行單元要想訪問被自旋鎖保護(hù)的共享資源,必須先得到鎖,在訪問完共享資源后,必須釋放鎖。自旋鎖的API有: spin_lock_init(x);10. 2. 3阻塞與非阻塞1. 阻塞操作2. 非阻塞操作10. 2. 4時間問題1延時操作:2.內(nèi)核定時器(1)長延時。(2)短延時10.1嵌入式Linux驅(qū)動程序開發(fā)基礎(chǔ)Huade School of AppIi od Toohnology10.1嵌入式Linux驅(qū)動程序開發(fā)基礎(chǔ)Huade S

6、chool of AppIi od Toohnology釆用缺省工作者線程來實(shí)現(xiàn)工作隊列的API:內(nèi)核提供給驅(qū)動許多函數(shù)來聲明、注冊、以及去除內(nèi)核定時器。3. 工作隊列 NIT_W0RK(_work, _func, _data) int schedule_work(struet work_struet *work) int schedule_delayed_work(stmet work_struct *work, unsignedlong delay)void flush_scheduled_work(void) int cancel_delayed_work(struct work_struet *work)創(chuàng)建自己的工作者線程和工作隊列,API:char *name) struet workqueue_struct *create_workqueue(const int queue_work(struet workqueue_struet *wq, struetwork_struet *work)U int queue_delayed_work(struet workqueue_struct *wq, work_struet *work, unsigned long d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論