注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計程序設(shè)計綜合ARM Cortex-M0權(quán)威指南

ARM Cortex-M0權(quán)威指南

ARM Cortex-M0權(quán)威指南

定 價:¥69.00

作 者: 姚文詳(Joseph Yiu)著 吳常玉 ,魏軍 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 計算機(jī)/網(wǎng)絡(luò) 計算機(jī)體系結(jié)構(gòu)

ISBN: 9787302330042 出版時間: 2013-09-01 包裝: 平裝
開本: 16開 頁數(shù): 464 字?jǐn)?shù):  

內(nèi)容簡介

  《ARM Cortex-M0權(quán)威指南》是全球首本系統(tǒng)論述ARM Cortex-M0處理器及其編程的圖書。本書既有ARM Cortex-M0處理器內(nèi)核、體系結(jié)構(gòu)及其應(yīng)用的詳盡論述,也有指令集、編譯器、軟件開發(fā)的基本論述,甚至也涵蓋如何定位程序代碼中的錯誤和軟件移植等方面的知識?!禔RM Cortex-M0權(quán)威指南》適合的讀者對象包括:嵌入式產(chǎn)品設(shè)計工程師、嵌入式軟件開發(fā)人員、電子愛好者以及學(xué)習(xí)嵌入式系統(tǒng)課程(ARM Cortex-M0)的高年級本科生及研究生等。

作者簡介

  Joseph Yiu,英國ARM公司資深專家,12年半導(dǎo)體行業(yè)從業(yè)經(jīng)歷(在ARM公司工作10年之余)。曾參與多個處理器設(shè)計項(xiàng)目,包括ARM Cortex-M3和Cortex-M0,并參與了多種ARM IP(知識產(chǎn)權(quán))產(chǎn)品的開發(fā)。Joseph Yiu為微控制器系統(tǒng)級設(shè)計專家,并涉獵了諸多相關(guān)領(lǐng)域,包括ARM Cortex-M系列微控制器軟件開發(fā)、微控制器市場以及片上系統(tǒng)設(shè)計技術(shù)。其他代表性著作有《The Definitive Guide to the ARM Cortex-M3, 2nd Edition》、《The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors, 3rd Edition》(中文翻譯版即將由清華大學(xué)出版社出版發(fā)行)。

圖書目錄

譯者序
推薦序
前言
致謝
本書約定
縮寫術(shù)語
第1章 緒論
1.1為什么要選擇Cortex?M0
1.1.1能耗效率
1.1.2代碼密度
1.1.3易于使用
1.2Cortex?M0處理器的應(yīng)用
1.3ARM和ARM處理器的背景
1.4Cortex?M0處理器說明和ARM體系結(jié)構(gòu)
1.5ARM處理器和ARM生態(tài)系統(tǒng)
1.6開始使用Cortex?M0處理器
1.7本書的結(jié)構(gòu)和資源
第2章 Cortex?M0技術(shù)綜述
2.1Cortex?M0處理器簡介
2.2ARM Cortex?M0處理器的特性
2.2.1系統(tǒng)特性
2.2.2應(yīng)用特性
2.2.3調(diào)試特性
2.2.4其他特性
2.3Cortex?M0處理器的優(yōu)勢
2.3.1能耗效率
2.3.28位和16位架構(gòu)的局限性
2.3.3易于使用,軟件可移植
2.3.4選擇多樣化
2.4低功耗應(yīng)用
2.4.1門數(shù)量低
2.4.2高效率
2.4.3低功耗特性
2.4.4邏輯單元提升
2.5Cortex?M0的軟件可移植性
第3章 體系結(jié)構(gòu)
3.1概述
3.2系統(tǒng)模型
3.2.1操作模式和狀態(tài)
3.2.2寄存器和特殊寄存器
3.2.3R0?R12
3.2.4R13,棧指針(SP)
3.2.5R14,鏈接寄存器(LR)
3.2.6R15,程序計數(shù)器(PC)
3.2.7xPSR,組合程序狀態(tài)寄存器
3.2.8應(yīng)用程序狀態(tài)寄存器(APSR)的行為
3.2.9PRIMASK: 中斷屏蔽特殊寄存器
3.2.10CONTROL: 特殊寄存器
3.3存儲器系統(tǒng)
3.4??臻g操作
3.5異常和中斷
3.6嵌套向量中斷控制器(NVIC)
3.6.1靈活的中斷管理
3.6.2支持嵌套中斷
3.6.3向量化的異常入口
3.6.4中斷屏蔽
3.7系統(tǒng)控制塊(SCB)
調(diào)試系統(tǒng)
3.8程序映像和啟動流程
第4章 Cortex?M0編程入門
4.1嵌入式系統(tǒng)編程入門
4.1.1微控制器是如何啟動的
4.1.2嵌入式程序設(shè)計
4.2輸入和輸出
4.3開發(fā)流程
4.4C編程和匯編編程
4.5什么是程序映像
4.5.1向量表
4.5.2C啟動代碼
4.5.3程序代碼
4.5.4C庫代碼
4.5.5RAM中的數(shù)據(jù)
4.6C編程: 數(shù)據(jù)類型
4.7用C語言操作外設(shè)
4.8Cortex微控制器軟件接口標(biāo)準(zhǔn)(CMSIS)
4.8.1CMSIS介紹
4.8.2CMSIS中有什么是標(biāo)準(zhǔn)化的
4.8.3CMSIS的組織結(jié)構(gòu)
4.8.4使用CMSIS
4.9CMSIS的優(yōu)勢
第5章 指令集
5.1ARM和Thumb指令集的背景
5.2匯編基礎(chǔ)
5.2.1匯編語法一覽
5.2.2后綴的使用
5.2.3Thumb代碼和統(tǒng)一匯編語言(UAL)
5.2.4指令列表
5.2.5處理器內(nèi)移動數(shù)據(jù)
5.2.6存儲器訪問
5.2.7棧空間訪問
5.2.8算術(shù)運(yùn)算
5.2.9邏輯運(yùn)算
5.2.10移位和循環(huán)操作
5.2.11展開和順序反轉(zhuǎn)操作
5.2.12程序流控制
5.2.13存儲器屏障指令
5.2.14異常相關(guān)指令
5.2.15休眠模式特性相關(guān)指令
5.2.16其他指令
5.3偽指令
第6章 指令集使用實(shí)例
6.1概述
6.2程序控制
6.2.1If?Else
6.2.2循環(huán)
6.2.3進(jìn)一步了解跳轉(zhuǎn)指令
6.2.4跳轉(zhuǎn)條件的典型用法
6.2.5函數(shù)調(diào)用和函數(shù)返回
6.2.6跳轉(zhuǎn)表
6.3數(shù)據(jù)訪問
6.3.1簡單數(shù)據(jù)訪問
6.3.2使用存儲器訪問指令的例子
6.4數(shù)據(jù)類型轉(zhuǎn)換
6.4.1數(shù)據(jù)大小的轉(zhuǎn)換
6.4.2大小端轉(zhuǎn)換
6.5數(shù)據(jù)處理
6.5.164位/128位加法
6.5.264位/128位減法
6.5.3整數(shù)除法
6.5.4無符號整數(shù)開方根
6.5.5位和位域運(yùn)算
第7章 存儲器系統(tǒng)
7.1概述
7.2存儲器映射
7.3程序存儲器,Boot Loader和存儲器重映射
7.4數(shù)據(jù)存儲器
7.5支持小端和大端
7.5.1數(shù)據(jù)類型
7.5.2硬件行為對編程的影響
7.5.3數(shù)據(jù)對齊
7.5.4訪問非法地址
7.5.5多寄存器加載和存儲指令的使用
7.6存儲器屬性
第8章 異常和中斷
8.1什么是異常和中斷
8.2Cortex?M0處理器的異常類型
8.2.1不可屏蔽中斷(NMI)
8.2.2硬件錯誤
8.2.3SVC(請求管理調(diào)用)
8.2.4PendSV(可掛起的系統(tǒng)調(diào)用)
8.2.5系統(tǒng)節(jié)拍
8.2.6中斷
8.3異常優(yōu)先級定義
8.4向量表
8.5異常流程概述
8.5.1接受異常請求
8.5.2壓棧和出棧
8.5.3異常返回指令
8.5.4末尾連鎖
8.5.5延遲到達(dá)
8.6EXC_RETURN
8.7異常入口流程的細(xì)節(jié)
8.7.1壓棧
8.7.2取出向量并更新PC
8.7.3寄存器更新
8.8異常退出流程的細(xì)節(jié)
8.8.1寄存器出棧
8.8.2從返回地址取值并執(zhí)行
第9章 中斷控制和系統(tǒng)控制
9.1NVIC和系統(tǒng)控制塊特性
9.2中斷使能和清除使能
9.3中斷掛起和清除掛起
9.4中斷優(yōu)先級
9.5中斷控制的通用匯編代碼
9.5.1使能和禁止中斷
9.5.2設(shè)置和清除中斷掛起狀態(tài)
9.5.3設(shè)置中斷優(yōu)先級
9.6異常屏蔽寄存器(PRIMASK)
9.7中斷輸入和掛起行為
簡單的中斷處理
9.8中斷等待
9.9系統(tǒng)異常的控制寄存器
9.10系統(tǒng)控制寄存器
9.10.1CPU ID基址寄存器
9.10.2應(yīng)用中斷和復(fù)位控制寄存器
9.10.3配置和控制寄存器
第10章 支持操作系統(tǒng)的特性
10.1支持操作系統(tǒng)的特性概述
為什么要使用嵌入式操作系統(tǒng)
10.2SysTick定時器
10.3SysTick寄存器
10.3.1設(shè)置SysTick
10.3.2SysTick用于時間測量
10.4進(jìn)程棧和進(jìn)程棧指針
10.5SVC
10.6PendSV
第11章 低功耗特性
11.1低功耗嵌入式系統(tǒng)概述
11.2Cortex?M0處理器的低功耗優(yōu)勢
11.3低功耗特性概述
11.4休眠模式
11.5等待事件(WFE)和等待中斷(WFI)
11.5.1等待事件(WFE)
11.5.2等待中斷(WFI)
11.5.3喚醒條件
11.6退出休眠特性
11.7喚醒中斷控制器
第12章 錯誤處理
12.1錯誤異常概述
錯誤是怎么發(fā)生的
12.2分析錯誤
12.3意外切換至ARM狀態(tài)
12.4實(shí)際應(yīng)用中的錯誤處理
12.5鎖定
12.5.1鎖定的原因
12.5.2鎖定期間發(fā)生了什么
12.6防止鎖定
第13章 調(diào)試特性
13.1軟件開發(fā)和調(diào)試特性
13.2調(diào)試特性一覽
13.3調(diào)試接口
13.4暫停模式和調(diào)試事件
13.5調(diào)試系統(tǒng)
第14章 Keil MDK入門
14.1Keil MDK介紹
14.2使用Keil MDK的
第一步
14.2.1創(chuàng)建Blinky工程
14.2.2創(chuàng)建工程代碼
14.2.3工程設(shè)置
14.2.4編譯和建立程序
14.2.5使用調(diào)試器
14.3其他的工程配置
14.3.1目標(biāo),源文件組
14.3.2編譯器和代碼生成選項(xiàng)
14.3.3模擬器
14.3.4在RAM中運(yùn)行
14.4定制Keil中的啟動代碼
14.5使用Keil中的分散加載特性
第15章 簡單應(yīng)用程序開發(fā)
15.1使用CMSIS
15.2將SysTick用作單發(fā)定時器
15.3UART示例
15.3.1簡單的輸入和輸出
15.3.2重定向
15.3.3開發(fā)自己的輸入和輸出函數(shù)
15.4簡單中斷編程
15.4.1中斷編程概述
15.4.2度盤控制接口實(shí)例
15.4.3中斷控制函數(shù)
15.5CMSIS的不同版本
第16章 匯編工程和C與匯編混合工程
16.1用匯編開發(fā)工程
16.2匯編編程的建議規(guī)則
16.3匯編函數(shù)的結(jié)構(gòu)
16.4簡單的匯編工程實(shí)例
16.5為變量分配數(shù)據(jù)空間
16.6用匯編實(shí)現(xiàn)UART
16.7其他的文字輸出函數(shù)
復(fù)雜的跳轉(zhuǎn)處理
16.8混合語言工程
16.8.1在匯編中調(diào)用C函數(shù)
16.8.2在C代碼中調(diào)用匯編函數(shù)
16.9嵌入?yún)R編
16.10使用特殊指令
16.11習(xí)語識別
第17章 在編程中使用低功耗特性
17.1概述
17.2Cortex?M0處理器的休眠模式回顧
17.3在程序中使用WFE和WFI
17.4使用掛起發(fā)送事件特性
17.5使用退出休眠特性
17.6喚醒中斷控制器(WIC)特性
17.7事件通信接口
17.8開發(fā)低功耗應(yīng)用程序
17.9LPC111x的低功耗特性使用示例
第18章 使用SVC、PendSV和Keil RTX Kernel
18.1概述
18.2使用SVC異常
18.3使用PendSV異常
18.4使用嵌入式OS
18.5Keil RTX實(shí)時內(nèi)核
18.6OS啟動流程
18.6.1簡單的OS實(shí)例
18.6.2任務(wù)間通信
18.6.3事件通信
18.6.4互斥體
18.6.5信號量
18.6.6信箱消息
18.6.7周期時間間隔
18.6.8其他的RTX特性
18.6.9應(yīng)用程序?qū)嵗?br />第19章 ARM RealView開發(fā)組件入門
19.1概述
19.2簡單的應(yīng)用程序?qū)嵗?br />19.3使用分散加載文件
19.4用C實(shí)現(xiàn)的含有向量表的實(shí)例
19.5在RVDS中使用MicroLIB
19.6在RVDS中使用匯編進(jìn)行應(yīng)用程序開發(fā)
19.7Flash編程
19.8使用RealView調(diào)試器進(jìn)行調(diào)試
19.9使用RealView調(diào)試器的串行線調(diào)試
19.10RVDS中的重定向
第20章 GNU C編譯器入門
20.1概述
20.2典型的開發(fā)流程
20.3簡單的C程序開發(fā)
20.4CodeSourcery通用啟動代碼
20.5使用用戶定義的向量表
20.6在gcc中使用Printf
20.7內(nèi)聯(lián)匯編
20.8gcc中的SVC實(shí)例
20.9硬件錯誤異常實(shí)例
20.10Flash編程和調(diào)試
第21章 軟件移植
21.1概述
21.2ARM處理器
21.3ARM7TDMI和Cortex?M0之間的差異
21.3.1操作模式
21.3.2寄存器
21.3.3指令集
21.3.4中斷
21.4從ARM7TDMI向Cortex?M0移植軟件
21.4.1啟動代碼和向量表
21.4.2中斷
21.4.3C程序代碼
21.4.4匯編代碼
21.4.5原子操作
21.4.6優(yōu)化
21.5Cortex?M1和Cortex?M0之間的差異
21.5.1指令集
21.5.2NVIC
21.5.3系統(tǒng)級特性
21.6在Cortex?M0和Cortex?M1之間移植軟件
21.7Cortex?M3和Cortex?M0之間的差異
21.7.1系統(tǒng)模型
21.7.2NVIC和異常
21.7.3指令集
21.7.4系統(tǒng)級特性
21.7.5調(diào)試特性
21.8在Cortex?M0和Cortex?M3之間移植軟件
21.9在Cortex?M0和Cortex?M4處理器之間移植軟件
21.10從8位機(jī)/16位機(jī)往Cortex?M0移植程序
21.10.1通用改動
21.10.2存儲器需求
21.10.38位機(jī)和16位機(jī)不再適用的優(yōu)化
21.10.4實(shí)例: 從8051移植到ARM Cortex?M0
第22章 Cortex?M0產(chǎn)品
22.1概述
22.2微控制器產(chǎn)品和專用標(biāo)準(zhǔn)產(chǎn)品(ASSP)
22.2.1NXP Cortex?M0微控制器
22.2.2NuMicro微控制器
22.2.3Mocha?1 ARM Cortex?M0可配置陣列
22.2.4Melfas MCS?7000系列觸摸屏控制器
22.3編譯器和軟件開發(fā)組件
22.3.1Keil微控制器開發(fā)套件(MDK)
22.3.2TASKING VX?Toolset for ARM
22.3.3IAR Embedded Workbench for ARM
22.3.4CrossWorks for ARM
22.3.5Red Suite
22.3.6LabVIEW C代碼生成器
22.4開發(fā)板
22.4.1LPCXpresso
22.4.2IAR的LPC1114入門套件
22.4.3LPC1114 Cortex?M0模塊
22.4.4Keil Cortex?M0開發(fā)板
附錄ACortex?M0指令集
附錄BCortex?M0異常類型快速參考
B.1異常類型
B.2異常壓棧后的棧內(nèi)容
附錄C軟件接口標(biāo)準(zhǔn)(CMSIS)快速參考
C.1數(shù)據(jù)類型
C.2異常枚舉
C.3NVIC操作函數(shù)
C.4系統(tǒng)和SysTick操作函數(shù)
C.5內(nèi)核寄存器操作函數(shù)
C.6特殊指令操作函數(shù)
附錄DNVIC、SCB以及SysTick寄存器快速參考
D.1NVIC寄存器一覽
D.2中斷設(shè)置使能寄存器(NVIC->ISER)
D.3中斷清除使能寄存器(NVIC->ICER)
D.4中斷設(shè)置掛起寄存器(NVIC->ISPR)
D.5中斷清除掛起寄存器(NVIC->ICPR)
D.6中斷優(yōu)先級寄存器(NVIC->IRP[0]到NVIC->IRP[7])
D.7SCB寄存器一覽
D.8CPU ID基地址寄存器(SCB->CPUID)
D.9中斷控制狀態(tài)寄存器(SCB->ICSR)
D.10應(yīng)用中斷和控制狀態(tài)寄存器(SCB->AIRCR)
D.11系統(tǒng)控制寄存器(SCB->SCR)
D.12配置控制寄存器(SCB->CCR)
D.13系統(tǒng)處理優(yōu)先級寄存器2(SCB->SHR[0])
D.14系統(tǒng)處理優(yōu)先級寄存器3(SCB->SHR[1])
D.15系統(tǒng)處理控制和狀態(tài)寄存器
D.16SysTick寄存器一覽
D.17SysTick控制和狀態(tài)寄存器(SysTick->CTRL)
D.18SysTick重裝載值寄存器(SysTick->LOAD)
D.19SysTick當(dāng)前值寄存器(SysTick->VAL)
D.20SysTick校準(zhǔn)值寄存器(SysTick->CALIB)
附錄E調(diào)試寄存器快速參考
E.1概述
E.2內(nèi)核調(diào)試寄存器
E.3斷點(diǎn)單元
E.4數(shù)據(jù)監(jiān)視點(diǎn)單元
E.5ROM表寄存器
附錄F調(diào)試接頭分配
F.110針Cortex調(diào)試連接頭
F.220針Cortex調(diào)試+ETM接頭
F.3老式的20針I(yè)DC接頭排列
附錄GCodeSourcery G++ Lite的鏈接器腳本
附錄H實(shí)例代碼文件
H.1system_LPC11xx.c
H.2system_LPC11xx.h
H.3LPC11xx.hs
H.4uart_test.s
H.5RTX_config.c
附錄I疑難解答
I.1程序不運(yùn)行/啟動
I.1.1向量表丟失或位置錯誤
I.1.2使用了錯誤的C啟動代碼
I.1.3復(fù)位向量中的值錯誤
I.1.4程序映像沒有正確地編程到Flash中
I.1.5錯誤的工具鏈配置
I.1.6錯誤的棧指針初始值
I.1.7錯誤的大小端設(shè)置
I.2程序啟動,卻進(jìn)入了硬件錯誤
I.2.1非法存儲器訪問
I.2.2非對齊數(shù)據(jù)訪問
I.2.3從總線返回錯誤
I.2.4異常處理中的棧被破壞
I.2.5程序在某些C函數(shù)中崩潰
I.2.6意外地試圖切換至ARM狀態(tài)
I.2.7在錯誤的優(yōu)先級上執(zhí)行SVC
I.3休眠問題
I.3.1執(zhí)行WFE不進(jìn)入休眠
I.3.2退出休眠過早地引起休眠
I.3.3中斷已經(jīng)在掛起態(tài)時SEVONPEND不工作
I.3.4由于休眠模式可能禁止了某些時鐘,處理器無法喚醒
I.3.5競態(tài)
I.4中斷問題
I.4.1執(zhí)行了多余的中斷處理
I.4.2執(zhí)行了額外的SysTick處理
I.4.3在中斷處理中禁止中斷
I.4.4錯誤的中斷返回指令
I.4.5異常優(yōu)先級設(shè)置的數(shù)值
I.5其他問題
I.5.1錯誤的SVC參數(shù)傳遞方法
I.5.2調(diào)試連接受到I/O設(shè)置或低功耗模式的影響
I.5.3調(diào)試協(xié)議選擇
I.5.4使用事件輸出作為脈沖I/O
附錄J實(shí)用參考文檔

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號