《嵌入式實時作業系統MQX套用開發技術——ARM Cortex-M微處理器》是2014年電子工業出版社出版的圖書,作者是王宜懷、朱仕浪、姚望舒。
基本介紹
- 書名:嵌入式實時作業系統MQX套用開發技術——ARM Cortex-M微處理器
- 作者:王宜懷、朱仕浪、姚望舒
- 出版社:電子工業出版社
- 出版時間:2014年8月1日
- ISBN:9787121240379
內容簡介,圖書目錄,
內容簡介
是一款免費、開源、有技術支持,面向工業控制、醫療電子、家用電器等領域的嵌入式實時作業系統(駝宙棄RTOS)。本書以飛思卡爾(Freescale)的MQX4.1.0為藍本,以ARIVl Cortex-M微處理器為實例,詳細闡述RTOS的基本概念、原理與套用方法。全書共分11章,從實際套用角度闡述MQX應用程式的設計方法。第1~7章囊括了MQX工程框架、任務基本設計方法與規則、啟動流程、中斷執行過程、延時函式、任務的創建、調度方法、事件、信號量、記憶體管理、日誌等基本知識要素,同時也給出了MQX基本原理,主要包括核心數嘗永辨勸據區、MQX啟動過程、中斷、時間管理、任務管理、調度等機制剖析:第8章給出MQX基本知識要素的綜合實例:第9章給出庫檔案、MQX移植、輕量級MQX、看門狗等MQX程式設計以及任務設計方法的討論;第10~11章分別給出USB組件及RTCS組件的使用方法。本書提供了網上光櫻應牛盤,內含所有工程框架、各章實例源程式、輔助閱讀材料及常用軟體工具。
圖書目錄
第1章1
概述1
1.1關於RTOS的幾個基本問題1
1.1.1什麼是實時作業系統1
1.1.2使用RTOS的場合與RTOS的選擇3
1.1.3RTOS的發展歷程及幾種流行的RTOS簡介4
1.2RTOS的相關術語5
1.2.1核心類相關術語5
1.2.2任務類相關術語7
1.3MQX的主要特點及版本歷史9
1.3.1MQX的主要特點9
1.3.2MQX的版本升級9
1.4MQX的資料簡介10
第2章13
MQX系統的工程構架及13
第一個樣例工程13
2.1軟硬體開發環境13
2.1.1軟體開發平台——CW簡介14
2.1.2SD—FSL—K60—C硬體系統15
2.2Freescale提供的MQX資源簡介15
2.3初識MQX——核心、PSP及BSP16
2.3.1MQX的核心16
2.3.2處理器支持包PSP17
2.3.3板級支持包BSP17
2.4MQX工程框架——AMQXFW18
2.4.1MQX工程框架AMQXFW的目錄結構18
2.4.2<MQX>的下級資料夾組成20
2.4.3<MQX>的下級資料夾解析21
2.5MQX第一個樣例工程26
2.5.1樣例工程的功能26
2.5.2樣例工程任務設計27
2.5.3樣例工程的運行測試33
2.5.4樣例工程構建過程34
2.5.5上刪您電復位到main函式之前的執行過程37
2.6MQX作業系統的啟動流程剖析40
2.6.1記憶體的分配和部署40
2.6.2核心數據區剖析41
2.6.3MQX初始化結構體常數MQX_init_struct42
2.6.4MQX任務模板檔案(task_templates.c)解析45
2.6.5MQX系統啟動過程:_mqx函式剖析46
第3章53
MQX中斷機制與時間管理53
3.1中斷促墓拜處理的通用基礎知識概要53
3.1.1中斷的基本概念53
3.1.2中斷處理的基本過程54
3.2MQX中斷處理過程及用戶ISR安裝方法55
3.2.1MQX中斷處理函式簡介55
3.2.2MQX中斷處理過程56
3.2.3MQX中斷編程的編譯條件設定56
3.2.4MQX用戶ISR安裝方法57
3.3MQX中斷管理與運行機制剖析58
3.3.1MQX中斷系統涉及的數據結構58
3.3.2MQX中斷系統初始化過程剖析60
3.3.3基於ARMCortex—M4的MQX核心ISR源碼剖析67
3.3.4理解MQX中斷機制需要掌握的幾個知院捆希識點77
3.4MQX時間管理函式及用法79
3.4.1_time_delay函式的使用方法及注意點81
3.4.2絕對時間的來源與用法舉例81
3.5MQX時間管理實現方法及機制剖析82
3.5.1ARMCortex—M的SysTick的硬體系統82
3.5.2hwtimer_systick_init()函式回調分析83
3.5.3SysTick嘀嗒定時器的初始化配置和啟動85
3.5.4SysTick中斷服務例程ISR88
3.5.5延時函式_time_delay及相關原始碼阿雅棗端剖析91
第4章93
MQX常用IO驅動93
使用方法簡介93
4.1MQX驅動分類及其簡介93
4.2MQX工程常用I/O驅動的添加過程94
4.3.1設備標識符及命名方法97
4.3.2MQX標準設備驅動管理的三層模型97
4.3.3MQXI/O設備驅動管理佇列99
4.4安裝類IO設備驅動套用實例100
4.4.1K60—Flash模組概述100
4.4.2編寫Flash任務以及工程的測試101
4.5非安裝類I/O設備驅動套用實例103
4.5.1K60RTC模組概述103
4.5.2RTC驅動檔案及添加103
4.5.3編寫RTC工程的測試103
4.6MQX設備三層管理下底層驅動設計方法105
4.6.1底層設備驅動三層體系結構管理模式分析105
4.6.2底層設備驅動初始化參數的組織和分解107
4.6.3MQX設備三層管理底層驅動設計的步驟109
4.7MQX設備四層管理的驅動設計、移植和復用110
4.7.1MQX設備驅動四層管理模型的提出110
4.7.2底層驅動構件的獲取與設計111
4.7.3接口驅動構件的設計112
4.8底層設備程式移植和復用設計實例112
第5章117
任務管理與調度117
5.1任務管理的基礎知識117
5.1.1任務的三要素117
5.1.2任務的四種狀態:終止態、阻塞態、就緒態和激活態118
5.1.3任務的基本形式120
5.2MQX任務管理函式122
5.3MQX任務管理機制剖析124
5.3.1MQX任務佇列剖析124
5.3.2MQX任務管理函式剖析127
5.4MQX的FIFO及RR調度策略131
5.5MQX調度機制剖析133
5.5.1ARMCortex—M4的SVC及PendSV中斷的調度作用134
5.5.2系統調用服務例程的執行流程135
5.5.3系統調用服務例程源碼剖析138
第6章141
任務間的同步與通信141
6.1輕量級事件與事件141
6.1.1事件的含義及套用場合141
6.1.2輕量級事件的常用函式與編程步驟141
3.常用輕量級事件函式的使用說明142
6.1.3事件的常用函式與編程步驟146
6.1.4事件的組織結構與函式代碼剖析151
6.2輕量級信號量、信號量與互斥量162
6.2.1信號量的含義及套用場合162
6.2.2輕量級信號量的常用函式與編程步驟163
6.2.3信號量的常用函式與編程步驟166
6.2.4互斥量的常用函式與編程步驟171
6.2.5信號量的組織結構與函式代碼剖析176
6.3輕量級信號量的常用函式與編程步驟191
6.3.1優先權反轉問題的含義191
6.3.2優先權反轉問題的解決方法192
6.4輕量級訊息佇列與訊息193
6.4.1訊息的含義及套用場合193
6.4.2輕量級訊息佇列的常用函式與編程步驟194
6.4.3訊息的常用函式與編程步驟197
6.4.4訊息的組織結構與函式代碼剖析203
第7章211
記憶體管理與日誌211
7.1記憶體管理及模式選擇211
7.1.1記憶體管理的區域範圍211
7.1.2記憶體管理的兩種方式212
7.1.3記憶體管理的相關函式212
7.2可變大小記憶體管理213
7.2.1可變大小記憶體塊管理方式213
7.2.2可變大小記憶體塊管理的機制剖析216
7.2.3記憶體管理使用實例226
7.3固定大小記憶體管理227
7.3.1固定大小區塊的管理機制228
7.3.2固定大小區塊池的創建228
7.3.3固定大小區塊的申請分配和釋放230
7.3.4動態區塊的刪除230
7.3.5固定大小區塊的使用和管理接口函式230
7.4日誌的套用230
7.4.1輕量級日誌230
7.4.2核心日誌236
7.4.3日誌239
第8章241
MQX基本要素綜合實例241
8.1需求分析與硬體說明241
8.1.1需求分析241
8.1.2硬體說明241
8.2中斷服務例程ISR與任務功能設計242
8.2.1中斷服務例程ISR功能設計242
8.2.2任務功能設計242
8.3PC與MCU通信幀協定的設計243
8.3.1幀格式243
8.3.2幀命令244
8.4MCU主要代碼實現244
8.5PC界面259
第9章259
MQX程式設計相關問題的討論259
9.1庫檔案用法259
9.1.1庫檔案的基本概念259
9.1.2MQX庫檔案(.a)的生成260
9.1.3庫檔案的使用方法263
9.2BSP和PSP的移植方法簡介263
9.2.1BSP的移植263
9.2.2PSP的移植264
9.3輕量級MQX264
9.3.1輕量級MQX特點264
9.3.2輕量級MQX工程266
9.4ISR設計、任務劃分及優先權安排問題273
9.4.1ISR設計的基本問題273
9.4.2任務劃分的簡明方法273
9.4.3任務優先權安排問題274
9.5程式設計中其他若干問題的討論274
9.5.1如何避免死鎖274
9.5.2臨界區的處理275
9.5.3看門狗的套用275
9.5.4ISR參數與任務參數的作用及用法276
USB組件的套用277
10.1USB基礎知識277
10.1.1USB發展歷史277
10.1.2USB基本概念278
10.2USB設備協定棧282
10.2.1USB設備架構282
10.2.2USB設備初始化283
10.2.3USB設備協定棧常用函式283
10.2.4USB設備編程舉例284
10.2.5USB設備虛擬串口編程舉例288
10.3USB主機協定棧299
10.3.1USB主機協定棧框架介紹299
10.3.2USB主機套用層函式300
10.3.3USB主機應用程式示例301
10.3.4USB主機工作流程剖析304
第11章307
RTCS組件的套用307
11.1乙太網基礎知識307
11.1.1乙太網物理設備307
11.1.2相關名詞解釋308
11.2RTCS檔案組織結構311
11.3ICMP協定312
11.3.1使用ICMP設定步驟312
11.3.2ICMP測試方法313
11.4UDP協定314
11.4.1使用UDP設定步驟315
11.4.2UDP測試方法316
11.5TCP協定318
11.5.1使用TCP設定步驟318
11.5.2TCP測試方法320
11.6HTTP協定321
11.6.1使用HTTP的PC方軟體設定步驟321
11.6.2使用HTTP的MCU方設定步驟323
11.6.3HTTP測試方法325
附錄A327
硬體評估板SD—FSL—K60—C327
附錄B331
問與答331
參考文獻335
2.6.4MQX任務模板檔案(task_templates.c)解析45
2.6.5MQX系統啟動過程:_mqx函式剖析46
第3章53
MQX中斷機制與時間管理53
3.1中斷處理的通用基礎知識概要53
3.1.1中斷的基本概念53
3.1.2中斷處理的基本過程54
3.2MQX中斷處理過程及用戶ISR安裝方法55
3.2.1MQX中斷處理函式簡介55
3.2.2MQX中斷處理過程56
3.2.3MQX中斷編程的編譯條件設定56
3.2.4MQX用戶ISR安裝方法57
3.3MQX中斷管理與運行機制剖析58
3.3.1MQX中斷系統涉及的數據結構58
3.3.2MQX中斷系統初始化過程剖析60
3.3.3基於ARMCortex—M4的MQX核心ISR源碼剖析67
3.3.4理解MQX中斷機制需要掌握的幾個知識點77
3.4MQX時間管理函式及用法79
3.4.1_time_delay函式的使用方法及注意點81
3.4.2絕對時間的來源與用法舉例81
3.5MQX時間管理實現方法及機制剖析82
3.5.1ARMCortex—M的SysTick的硬體系統82
3.5.2hwtimer_systick_init()函式回調分析83
3.5.3SysTick嘀嗒定時器的初始化配置和啟動85
3.5.4SysTick中斷服務例程ISR88
3.5.5延時函式_time_delay及相關原始碼剖析91
第4章93
MQX常用IO驅動93
使用方法簡介93
4.1MQX驅動分類及其簡介93
4.2MQX工程常用I/O驅動的添加過程94
4.3.1設備標識符及命名方法97
4.3.2MQX標準設備驅動管理的三層模型97
4.3.3MQXI/O設備驅動管理佇列99
4.4安裝類IO設備驅動套用實例100
4.4.1K60—Flash模組概述100
4.4.2編寫Flash任務以及工程的測試101
4.5非安裝類I/O設備驅動套用實例103
4.5.1K60RTC模組概述103
4.5.2RTC驅動檔案及添加103
4.5.3編寫RTC工程的測試103
4.6MQX設備三層管理下底層驅動設計方法105
4.6.1底層設備驅動三層體系結構管理模式分析105
4.6.2底層設備驅動初始化參數的組織和分解107
4.6.3MQX設備三層管理底層驅動設計的步驟109
4.7MQX設備四層管理的驅動設計、移植和復用110
4.7.1MQX設備驅動四層管理模型的提出110
4.7.2底層驅動構件的獲取與設計111
4.7.3接口驅動構件的設計112
4.8底層設備程式移植和復用設計實例112
第5章117
任務管理與調度117
5.1任務管理的基礎知識117
5.1.1任務的三要素117
5.1.2任務的四種狀態:終止態、阻塞態、就緒態和激活態118
5.1.3任務的基本形式120
5.2MQX任務管理函式122
5.3MQX任務管理機制剖析124
5.3.1MQX任務佇列剖析124
5.3.2MQX任務管理函式剖析127
5.4MQX的FIFO及RR調度策略131
5.5MQX調度機制剖析133
5.5.1ARMCortex—M4的SVC及PendSV中斷的調度作用134
5.5.2系統調用服務例程的執行流程135
5.5.3系統調用服務例程源碼剖析138
第6章141
任務間的同步與通信141
6.1輕量級事件與事件141
6.1.1事件的含義及套用場合141
6.1.2輕量級事件的常用函式與編程步驟141
3.常用輕量級事件函式的使用說明142
6.1.3事件的常用函式與編程步驟146
6.1.4事件的組織結構與函式代碼剖析151
6.2輕量級信號量、信號量與互斥量162
6.2.1信號量的含義及套用場合162
6.2.2輕量級信號量的常用函式與編程步驟163
6.2.3信號量的常用函式與編程步驟166
6.2.4互斥量的常用函式與編程步驟171
6.2.5信號量的組織結構與函式代碼剖析176
6.3輕量級信號量的常用函式與編程步驟191
6.3.1優先權反轉問題的含義191
6.3.2優先權反轉問題的解決方法192
6.4輕量級訊息佇列與訊息193
6.4.1訊息的含義及套用場合193
6.4.2輕量級訊息佇列的常用函式與編程步驟194
6.4.3訊息的常用函式與編程步驟197
6.4.4訊息的組織結構與函式代碼剖析203
第7章211
記憶體管理與日誌211
7.1記憶體管理及模式選擇211
7.1.1記憶體管理的區域範圍211
7.1.2記憶體管理的兩種方式212
7.1.3記憶體管理的相關函式212
7.2可變大小記憶體管理213
7.2.1可變大小記憶體塊管理方式213
7.2.2可變大小記憶體塊管理的機制剖析216
7.2.3記憶體管理使用實例226
7.3固定大小記憶體管理227
7.3.1固定大小區塊的管理機制228
7.3.2固定大小區塊池的創建228
7.3.3固定大小區塊的申請分配和釋放230
7.3.4動態區塊的刪除230
7.3.5固定大小區塊的使用和管理接口函式230
7.4日誌的套用230
7.4.1輕量級日誌230
7.4.2核心日誌236
7.4.3日誌239
第8章241
MQX基本要素綜合實例241
8.1需求分析與硬體說明241
8.1.1需求分析241
8.1.2硬體說明241
8.2中斷服務例程ISR與任務功能設計242
8.2.1中斷服務例程ISR功能設計242
8.2.2任務功能設計242
8.3PC與MCU通信幀協定的設計243
8.3.1幀格式243
8.3.2幀命令244
8.4MCU主要代碼實現244
8.5PC界面259
第9章259
MQX程式設計相關問題的討論259
9.1庫檔案用法259
9.1.1庫檔案的基本概念259
9.1.2MQX庫檔案(.a)的生成260
9.1.3庫檔案的使用方法263
9.2BSP和PSP的移植方法簡介263
9.2.1BSP的移植263
9.2.2PSP的移植264
9.3輕量級MQX264
9.3.1輕量級MQX特點264
9.3.2輕量級MQX工程266
9.4ISR設計、任務劃分及優先權安排問題273
9.4.1ISR設計的基本問題273
9.4.2任務劃分的簡明方法273
9.4.3任務優先權安排問題274
9.5程式設計中其他若干問題的討論274
9.5.1如何避免死鎖274
9.5.2臨界區的處理275
9.5.3看門狗的套用275
9.5.4ISR參數與任務參數的作用及用法276
USB組件的套用277
10.1USB基礎知識277
10.1.1USB發展歷史277
10.1.2USB基本概念278
10.2USB設備協定棧282
10.2.1USB設備架構282
10.2.2USB設備初始化283
10.2.3USB設備協定棧常用函式283
10.2.4USB設備編程舉例284
10.2.5USB設備虛擬串口編程舉例288
10.3USB主機協定棧299
10.3.1USB主機協定棧框架介紹299
10.3.2USB主機套用層函式300
10.3.3USB主機應用程式示例301
10.3.4USB主機工作流程剖析304
第11章307
RTCS組件的套用307
11.1乙太網基礎知識307
11.1.1乙太網物理設備307
11.1.2相關名詞解釋308
11.2RTCS檔案組織結構311
11.3ICMP協定312
11.3.1使用ICMP設定步驟312
11.3.2ICMP測試方法313
11.4UDP協定314
11.4.1使用UDP設定步驟315
11.4.2UDP測試方法316
11.5TCP協定318
11.5.1使用TCP設定步驟318
11.5.2TCP測試方法320
11.6HTTP協定321
11.6.1使用HTTP的PC方軟體設定步驟321
11.6.2使用HTTP的MCU方設定步驟323
11.6.3HTTP測試方法325
附錄A327
硬體評估板SD—FSL—K60—C327
附錄B331
問與答331
參考文獻335