freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式操作系統(tǒng)驅(qū)動程序編寫基礎(chǔ)(已修改)

2025-05-11 13:00 本頁面
 

【正文】 嵌入式操作系統(tǒng) 驅(qū)動程序編寫基礎(chǔ) 李春杰 主要內(nèi)容 ? 設(shè)備驅(qū)動硬件基礎(chǔ) ? 內(nèi)核模塊 ? 中斷服務(wù)例程 ? 驅(qū)動程序組成 設(shè)備驅(qū)動的作用 ? 驅(qū)動是應(yīng)用軟件和硬件的橋梁 ? 它使得應(yīng)用軟件只需要調(diào)用系統(tǒng)軟件的應(yīng)用編程接口( API)就可讓硬件去完成要求的工作。 ? 驅(qū)動程序溝通著硬件和應(yīng)用軟件 ,而驅(qū)動工程師溝通著硬件工程師和軟件工程師。 無操作系統(tǒng)的程序架構(gòu) ? 在這樣的系統(tǒng)中,雖然不存在操作系統(tǒng),但設(shè)備驅(qū)動程序一般存在。一般情況下,驅(qū)動程序都會定義為一個(gè)軟件模塊,包含 .h文件和 .C文件,前者定義該設(shè)備驅(qū)動程序的數(shù)據(jù)結(jié)構(gòu)并聲明外部函數(shù),后者進(jìn)行驅(qū)動的具體實(shí)現(xiàn)。 無操作系統(tǒng)時(shí)驅(qū)動和應(yīng)用程序的關(guān)系 ? 在沒有操作系統(tǒng)時(shí),設(shè)備的接口被直接提交給用用軟件。 ? 應(yīng)用軟件直接調(diào)用、訪問設(shè)備驅(qū)動的接口 ? 設(shè)備驅(qū)動的接口函數(shù)與硬件的功能直接吻合,沒有任何附加功能。 ? 兩種不合理設(shè)計(jì) ? 驅(qū)動中存在部分應(yīng)用,或應(yīng)用中包含驅(qū)動都會導(dǎo)致程序移植性和復(fù)用性變差 有操作系統(tǒng)的設(shè)備驅(qū)動 ? 有操作系統(tǒng)的設(shè)備驅(qū)動的變化 ? 無操作系統(tǒng)時(shí)設(shè)備驅(qū)動的硬件工作仍然必不可少,沒有它們驅(qū)動不可能與硬件打交道 ? 需要把驅(qū)動融入內(nèi)核。為了實(shí)現(xiàn)這種融合,需要在驅(qū)動程序中設(shè)計(jì)面向系統(tǒng)內(nèi)核的接口。 ? 這樣的接口有操作系統(tǒng)規(guī)定,對一類設(shè)備而言結(jié)構(gòu)一致,獨(dú)立于具體的設(shè)備。 ? 設(shè)備驅(qū)動程序成為硬件和內(nèi)核的橋梁 要寫一部分內(nèi)核接口,多出來兩層結(jié)構(gòu),有利有弊,屏蔽了底層的差異 Linux的設(shè)備驅(qū)動 ? Linux設(shè)備 ? 字符設(shè)備 ? 塊設(shè)備 ? 網(wǎng)絡(luò)設(shè)備 無操作系統(tǒng)的 LED驅(qū)動 Linux的 led驅(qū)動 Linux設(shè)備驅(qū)動的重點(diǎn)、難點(diǎn) Linux設(shè)備驅(qū)動設(shè)計(jì)的硬件基礎(chǔ) ? 計(jì)算機(jī)系統(tǒng)的硬件主要由 CPU、存儲器和外設(shè)組成。驅(qū)動針對的對象是存儲器和外設(shè)(包括 CPU內(nèi)部集成的存儲器和外設(shè))。 ? 注意不是針對 CPU核 Linux設(shè)備驅(qū)動設(shè)計(jì)的硬件基礎(chǔ) ? 處理器 Linux設(shè)備驅(qū)動設(shè)計(jì)的硬件基礎(chǔ) ? 存儲器 Linux設(shè)備驅(qū)動設(shè)計(jì)的硬件基礎(chǔ) ? 總線 與接口 ? 串口 電器特性、 時(shí)序特性(掌握)、 信號分類 ? I2C—有時(shí)序,無協(xié)議 ? SPI ? CAN—有協(xié)議,有時(shí)序 ? USB ? PCI ? 網(wǎng)口 Linux設(shè)備驅(qū)動設(shè)計(jì)的硬件基礎(chǔ) Linux設(shè)備驅(qū)動設(shè)計(jì)的硬件基礎(chǔ) ? 原理圖分析:確定設(shè)備使用的相關(guān)資源 ? 時(shí)序分析: ? 芯片手冊 ? 芯片結(jié)構(gòu)、整體性能、管件個(gè)數(shù)、電氣性能 ? 寄存器編程 ? 外設(shè)控制器的編程流程 Linux設(shè)備驅(qū)動設(shè)計(jì)的硬件基礎(chǔ) ? 儀器儀表使用 ? 萬用表 ? 示波器 ? 等等 內(nèi)核模塊 概述 ? Linux的內(nèi)核模塊機(jī)制給內(nèi)核提供了 很強(qiáng)的靈活性 ,用戶通過加載內(nèi)核模塊可以方便的給內(nèi)核添加功能;同樣用戶也可以將內(nèi)核不需要用的功能卸載。 ? 驅(qū)動程序可以靜態(tài)編譯進(jìn)內(nèi)核,但由于外設(shè)眾多,內(nèi)核不可能包含所有設(shè)備的驅(qū)動。 ? 用戶通過內(nèi)核模塊機(jī)制可以把需要用到的驅(qū)動程序動態(tài)地加入內(nèi)核。 內(nèi)核模塊的概述 ? 內(nèi)核模塊在內(nèi)核空間運(yùn)行,內(nèi)核模塊編程是在內(nèi)核空間編程。 ? 內(nèi)核模塊可以引用內(nèi)核空間導(dǎo)出的全局符號,因此 內(nèi)核模塊編程與內(nèi)核的版本密切相關(guān) 。 ? 內(nèi)核模塊只能調(diào)用和使用內(nèi)核提供的函數(shù),不能使用相關(guān)的應(yīng)用程序庫函數(shù)。 模塊編程舉例 一個(gè)簡單的 hello 模塊 為何不用 printf函數(shù)語句??? ? 上面例子是一個(gè)完整的內(nèi)核模塊,該模塊被載入內(nèi)核時(shí)會向系統(tǒng)的日志中寫入Hello,world;當(dāng)模塊被卸載時(shí),該模塊會向系統(tǒng)日志寫入一條 Goodbye,cruel world的信息。 內(nèi)核模塊的基本結(jié)構(gòu) 1 ? 一個(gè)典型的內(nèi)核模塊包含以下幾部分: ? 頭文件聲明:頭文件 須的。 數(shù)和符號的定義; 和清理函數(shù)的定義;如果模塊在加載時(shí)允許用戶傳遞參數(shù),模塊還應(yīng)該包含。 內(nèi)核模塊的基本結(jié)構(gòu) 2 ? 模塊 許可聲明 : MODULE_LICENSE宏聲明此模塊的許可證,否則在模塊被加載時(shí),內(nèi)核會顯示警告。 ? 初始化、清理函數(shù)聲明:在 module_init和 module_exit去注冊初始化與清理函數(shù),需要注意的是初始化清理函數(shù)必須在宏 module_init和module_exit使用前定義 ? 滿足以上基本結(jié)構(gòu),模塊就可以正常工作了,在驅(qū)動程序中除包含模塊的三個(gè)基本部分以外,還會包含文件操作及其它內(nèi)容。 ? 可以在模塊中包含的其他描述性定義有 MODULE_AUTHOR ( 聲明誰編寫了模塊 ), MODULE
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1