出版時(shí)間:2011-3 出版社:電子工業(yè)出版社 作者:曹桂平 等編著 頁數(shù):409 字?jǐn)?shù):672000
Tag標(biāo)簽:無
內(nèi)容概要
本書結(jié)合作者實(shí)際的開發(fā)經(jīng)驗(yàn),對VxWorks操作系統(tǒng)內(nèi)部的機(jī)制及其各類設(shè)備驅(qū)動(dòng)的開發(fā)進(jìn)行了深入的講解和分析。全書分3篇共11章,第1篇對VxWorks操作系統(tǒng)的主要組件如任務(wù)、任務(wù)調(diào)度、任務(wù)間通信、內(nèi)存管理、中斷處理進(jìn)行了較為細(xì)致的分析;其后對很多VxWorks開發(fā)者不甚了解的VxWorks內(nèi)核映像類型以及啟動(dòng)方式和流程進(jìn)行了詳細(xì)的說明和解析。第2篇是驅(qū)動(dòng)開發(fā)的準(zhǔn)備階段,著重介紹了VxWorks系統(tǒng)下設(shè)備驅(qū)動(dòng)的內(nèi)核層次結(jié)構(gòu)。第3篇作為本書的重點(diǎn),每章對應(yīng)一類驅(qū)動(dòng),結(jié)合開發(fā)實(shí)例,詳細(xì)而完整地分析了VxWorks下普通字符設(shè)備驅(qū)動(dòng)、串口驅(qū)動(dòng)、普通塊設(shè)備驅(qū)動(dòng)、Flash設(shè)備驅(qū)動(dòng)、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)以及USB設(shè)備驅(qū)動(dòng)的設(shè)計(jì)和實(shí)現(xiàn)。
讀者對象:本書面向廣大工程技術(shù)工作者,既可作為高等院校教師和相關(guān)專業(yè)學(xué)生的教材,又可作為各類培訓(xùn)班的培訓(xùn)教程。
書籍目錄
第1篇 VxWorks操作系統(tǒng)快速入門篇
第1章 VxWorks嵌入式操作系統(tǒng)的特點(diǎn)與應(yīng)用
1.1 嵌入式系統(tǒng)概述
1.1.1 嵌入式系統(tǒng)定義
1.1.2 嵌入式系統(tǒng)組成和特點(diǎn)
1.1.3 嵌入式系統(tǒng)發(fā)展趨勢
1.1.4 實(shí)時(shí)操作系統(tǒng)
1.2 VxWorks操作系統(tǒng)基本特點(diǎn)
1.2.1 操作系統(tǒng)內(nèi)核結(jié)構(gòu)——微內(nèi)核和宏內(nèi)核
1.2.2 VxWorks內(nèi)核——高性能的微內(nèi)核設(shè)計(jì)
1.2.3 VxWorks開發(fā)支持——可裁減的運(yùn)行軟件
1.2.4 VxWorks網(wǎng)絡(luò)支持——綜合的網(wǎng)絡(luò)工具
1.2.5 VxWorks移植性支持
1.2.6 VxWorks操作系統(tǒng)選件
? 1.3 VxWorks操作系統(tǒng)應(yīng)用范圍
1.4 本章小結(jié)
第2章 VxWorks操作系統(tǒng)的基本組件
2.1 VxWorks任務(wù)
2.1.1 內(nèi)核實(shí)現(xiàn)基本原理
2.1.2 任務(wù)操作函數(shù)
2.1.3 深入了解任務(wù)棧
2.1.4 任務(wù)名長度問題
2.1.5 正確結(jié)束任務(wù)
2.1.6 任務(wù)的鉤子函數(shù)——黑客機(jī)制
2.1.7 任務(wù)小結(jié)
2.2 VxWorks任務(wù)調(diào)度算法——基于優(yōu)先級的搶占式調(diào)度
2.3 VxWorks任務(wù)間通信策略
2.3.1 信號量
2.3.2 消息隊(duì)列
2.3.3 管道
2.3.4 網(wǎng)絡(luò)套接字Socket
2.3.5 任務(wù)間通信的特殊機(jī)制:信號
2.4 VxWorks內(nèi)存管理——虛擬地址空間支持
2.5 VxWorks中斷處理——多層次的中斷轉(zhuǎn)移
2.5.1 VxWorks下中斷轉(zhuǎn)移過程詳解(基于ARM平臺)
2.5.2 中斷上下文中為何不可調(diào)用可引起睡眠的函數(shù)
2.6 本章小結(jié)
第3章 VxWorks操作系統(tǒng)啟動(dòng)過程詳解
3.1 VxWorks操作系統(tǒng)啟動(dòng)
3.1.1 VxWorks基本啟動(dòng)方式
3.1.2 VxWorks操作系統(tǒng)內(nèi)存布局
3.1.3 下載型啟動(dòng)方式概述
3.1.4 ROM型啟動(dòng)方式概述
3.2 深入理解bootrom——下載啟動(dòng)方式下的“瑞士軍刀”
3.2.1 bootrom的構(gòu)成
3.2.2 bootrom腳本的創(chuàng)建
3.2.3 腳本運(yùn)行過程分析
3.2.4 bootrom的重定位
3.2.5 RAM中運(yùn)行的bootrom代碼
3.2.6 在bootrom中添加用戶代碼
3.2.7 其他注意事項(xiàng)及說明
3.3 深入VxWorks啟動(dòng)過程
3.3.1 ROM型映像早期啟動(dòng)流程詳解
3.3.2 下載型映像早期啟動(dòng)流程詳解
3.3.3 公共啟動(dòng)流程詳解
3.4 VxWorks BSP文件組成
3.4.1 源文件
3.4.2 頭文件
3.4.3 Makefile文件
3.4.4 擴(kuò)展文件
3.4.5 說明文件
3.5 本章小結(jié)
第2篇 VxWorks設(shè)備驅(qū)動(dòng)起步篇
第3篇 VxWorks之六大核心設(shè)備驅(qū)動(dòng)
參考文獻(xiàn)
章節(jié)摘錄
信號量的底層實(shí)現(xiàn)可以簡單地看做是一個(gè)內(nèi)核維護(hù)的全局變量,對于用于互斥機(jī)制的信號量,這個(gè)內(nèi)核全局變量初始化為1,當(dāng)一個(gè)任務(wù)需要訪問該信號量保護(hù)的資源時(shí),其首先檢查這個(gè)內(nèi)核全局變量的值是否為1,如非1,則表示已存在其他任務(wù)在使用資源,就等待;如為1,表示資源當(dāng)前可被訪問,則這個(gè)任務(wù)首先將這個(gè)內(nèi)核全局變量的值設(shè)置為0,阻止其他任務(wù)的訪問,而自身就可以安全地使用該資源。此處的一個(gè)漏洞是,在當(dāng)前任務(wù)修改內(nèi)核全局變量的同時(shí),另一個(gè)任務(wù)可能同時(shí)在檢查這個(gè)全局變量的值,很可能造成另一個(gè)任務(wù)檢查到全局變量值為1后,當(dāng)前任務(wù)才完成全局變量0值的設(shè)置,此時(shí)就有兩個(gè)任務(wù)在使用資源,造成內(nèi)核狀態(tài)的不一致,極端情況下,將造成整個(gè)系統(tǒng)的崩潰。內(nèi)核對這種情況進(jìn)行了特殊處理,一般是將變量的改變操作作為一個(gè)原子操作(如x86下提供的Lock指令)完成。這也是內(nèi)核提供的任務(wù)間通信機(jī)制和用戶層任務(wù)間通信機(jī)制的根本區(qū)別:內(nèi)核提供的機(jī)制已經(jīng)從根本上保證了足夠的安全性?! 』诟鞣N資源不同的使用方式,VxWorks信號量機(jī)制具體提供了三種信號量:通用信號量、互斥信號量、資源計(jì)數(shù)信號量。通用信號量既可用于同步,也可用于資源計(jì)數(shù),此時(shí)資源數(shù)通常為1(當(dāng)資源數(shù)為1時(shí),也可以稱之為互斥)。互斥信號量針對在使用過程中的一些具體問題(如優(yōu)先級反轉(zhuǎn))做了優(yōu)化,更好地服務(wù)于任務(wù)間互斥需求;資源計(jì)數(shù)信號量用于資源數(shù)較多,同時(shí)可供多個(gè)任務(wù)使用的場合?! ?.3.2 消息隊(duì)列 消息隊(duì)列內(nèi)核實(shí)現(xiàn)上實(shí)際是一個(gè)結(jié)構(gòu)數(shù)組,數(shù)組大小和數(shù)組中元素的容量在創(chuàng)建消息隊(duì)列時(shí)被確定。在創(chuàng)建消息隊(duì)列時(shí)指定的另外一個(gè)參數(shù)是消息隊(duì)列滿時(shí)任務(wù)等待基于的策略:FIFO或者優(yōu)先級排序。消息隊(duì)列是VxWorks內(nèi)核提供的任務(wù)間傳遞較多信息的一種機(jī)制,不過這種機(jī)制存在很大的局限性,即每個(gè)消息的最大長度是固定的。當(dāng)然,在這個(gè)最大長度范圍內(nèi)從用戶層而言是可變的,但是對于內(nèi)核維護(hù)而言,所有的消息都具有相同的長度,因?yàn)闊o論實(shí)際消息的長度如何,內(nèi)核都將按最大長度分配內(nèi)存空間。當(dāng)然,如果對每個(gè)消息都采用動(dòng)態(tài)內(nèi)存分配方式,可以消除最大長度限制,但是這并不是VxWorks提供的消息機(jī)制。VxWorks內(nèi)核提供的消息機(jī)制在創(chuàng)建消息隊(duì)列時(shí)就必須指定單個(gè)消息的最大長度以及消息的數(shù)量,在消息隊(duì)列成功創(chuàng)建后,這些參數(shù)都是固定不變的。我們可以如此想象內(nèi)核對于消息隊(duì)列的實(shí)現(xiàn),在消息隊(duì)列創(chuàng)建之時(shí),內(nèi)核分配一個(gè)大小為單個(gè)消息最大長度與消息數(shù)量乘積的內(nèi)存區(qū)域,可以將此看做是一個(gè)數(shù)組,數(shù)據(jù)元素個(gè)數(shù)為消息數(shù)量,每個(gè)元素的大小為單個(gè)消息最大長度。 當(dāng)用戶發(fā)送一個(gè)消息時(shí),內(nèi)核將消息內(nèi)容存入數(shù)組中下一個(gè)空閑元素中,用戶讀取消息時(shí),將讀取數(shù)組中下一個(gè)非空元素,底層基本實(shí)現(xiàn)為一個(gè)環(huán)形緩沖區(qū)。VxWorks最多只區(qū)分兩個(gè)優(yōu)先級的消息,對于高優(yōu)先級的消息將從數(shù)組開始處存儲(chǔ),對于普通優(yōu)先級的消息將從數(shù)組尾部開始存儲(chǔ),而讀取時(shí)從數(shù)組頭部開始讀取,從而保證高優(yōu)先級的消息優(yōu)先被傳遞。 當(dāng)然,以上只是一種簡單的類比,有助于讀者理解VxWorks內(nèi)核對于消息隊(duì)列的實(shí)現(xiàn)?! ?/pre>編輯推薦
華清遠(yuǎn)見嵌入式培訓(xùn)中心成立于2004年,作為中國嵌入式培訓(xùn)的領(lǐng)導(dǎo)者,ARM、微軟、谷歌、紅帽等權(quán)威知名企業(yè)授權(quán)培訓(xùn)中心,七年培訓(xùn)的學(xué)員數(shù)量已突破一萬八千名。憑借多年的專注和努力,該培訓(xùn)中心先后兩次蟬聯(lián)2008-2010“中國本土嵌入式系統(tǒng)十佳企業(yè)”,并榮獲“微軟嵌入式合作伙伴卓越獎(jiǎng)”,工信部頒發(fā)的“中國嵌入式人才服務(wù)特別獎(jiǎng)”,中國計(jì)算機(jī)行業(yè)協(xié)會(huì)“中國IT產(chǎn)業(yè)最具影響力教育機(jī)構(gòu)金獎(jiǎng)”、“中國計(jì)算機(jī)行業(yè)發(fā)展成就·最具社會(huì)責(zé)任獎(jiǎng)”等榮譽(yù)。圖書封面
圖書標(biāo)簽Tags
無評論、評分、閱讀與下載
- 還沒讀過(80)
- 勉強(qiáng)可看(586)
- 一般般(999)
- 內(nèi)容豐富(4145)
- 強(qiáng)力推薦(339)
VxWorks設(shè)備驅(qū)動(dòng)開發(fā)詳解 PDF格式下載