本書是全球首本系統(tǒng)論述ARM Cortex-M0處理器及其編程的圖書。本書既有ARMCortex-M0處理器內(nèi)核、體系結(jié)構(gòu)及其應(yīng)用的詳盡論述,也有指令集、編譯器、軟件開發(fā)的基本論述,甚至也涵蓋如何定位程序代碼中的錯(cuò)誤和軟件移植等方面的知識(shí)。本書適合的讀者對(duì)象包括:嵌入式產(chǎn)品設(shè)計(jì)工程師、嵌入式軟件開發(fā)人員、電子愛好者以及學(xué)習(xí)嵌入式系統(tǒng)課程(ARMCortex-M0)的高年級(jí)本科生及研究生等。
JosephYiu是英國(guó)ARM公司微控制器系統(tǒng)級(jí)設(shè)計(jì)專家,是ARMCortex-M3和Cortex-M0設(shè)計(jì)者,作者高屋建瓴,創(chuàng)作了基于Cortex-M0的重量級(jí)作品——《ARMCortex-M0指南》,這也是全球首本系統(tǒng)論述Cortex-M0的內(nèi)核、體系結(jié)構(gòu)、指令集、編譯器、程序設(shè)計(jì)及軟件移植的經(jīng)典。作者配套提供了大量源代碼(可到圖書封底網(wǎng)址下載)。本書得到了五大專業(yè)機(jī)構(gòu)六位知名專家的鼎力推薦。非常值得開發(fā)者珍藏!
Joseph Yiu英國(guó)ARM公司博學(xué)專家,12年半導(dǎo)體行業(yè)從業(yè)經(jīng)歷(在ARM公司工作10年之余)。曾參與多個(gè)處理器設(shè)計(jì)項(xiàng)目,包括ARMCortex-M3和Cortex-M0,并參與了多種ARM IP(知識(shí)產(chǎn)權(quán))產(chǎn)品的開發(fā)。JosephYiu為微控制器系統(tǒng)級(jí)設(shè)計(jì)專家,并涉獵了諸多相關(guān)領(lǐng)域,包括ARMCortex-M系列微控制器軟件開發(fā)、微控制器市場(chǎng)以及片上系統(tǒng)設(shè)計(jì)技術(shù)。其他代表性著作有《The Definitive Guideto the ARM Cortex-M3, 2nd Edition》、《The Definitive Guide to ARMCortex-M3 and Cortex-M4 Processors, 3rdEdition》(中文翻譯版即將由清華大學(xué)出版社出版發(fā)行)。
譯者序
推薦序
前言
致謝
本書約定
縮寫術(shù)語(yǔ)
第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處理器簡(jiǎn)介
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)勢(shì)
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,程序計(jì)數(shù)器(PC)
3.2.7xPSR,組合程序狀態(tài)寄存器
3.2.8應(yīng)用程序狀態(tài)寄存器(APSR)的行為
3.2.9PRIMASK: 中斷屏蔽特殊寄存器
3.2.10CONTROL: 特殊寄存器
3.3存儲(chǔ)器系統(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程序映像和啟動(dòng)流程
第4章Cortex?M0編程入門
4.1嵌入式系統(tǒng)編程入門
4.1.1微控制器是如何啟動(dòng)的
4.1.2嵌入式程序設(shè)計(jì)
4.2輸入和輸出
4.3開發(fā)流程
4.4C編程和匯編編程
4.5什么是程序映像
4.5.1向量表
4.5.2C啟動(dòng)代碼
4.5.3程序代碼
4.5.4C庫(kù)代碼
4.5.5RAM中的數(shù)據(jù)
4.6C編程: 數(shù)據(jù)類型
4.7用C語(yǔ)言操作外設(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)勢(shì)
第5章指令集
5.1ARM和Thumb指令集的背景
5.2匯編基礎(chǔ)
5.2.1匯編語(yǔ)法一覽
5.2.2后綴的使用
5.2.3Thumb代碼和統(tǒng)一匯編語(yǔ)言(UAL)
5.2.4指令列表
5.2.5處理器內(nèi)移動(dòng)數(shù)據(jù)
5.2.6存儲(chǔ)器訪問
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存儲(chǔ)器屏障指令
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簡(jiǎn)單數(shù)據(jù)訪問
6.3.2使用存儲(chǔ)器訪問指令的例子
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無符號(hào)整數(shù)開方根
6.5.5位和位域運(yùn)算
第7章存儲(chǔ)器系統(tǒng)
7.1概述
7.2存儲(chǔ)器映射
7.3程序存儲(chǔ)器,Boot Loader和存儲(chǔ)器重映射
7.4數(shù)據(jù)存儲(chǔ)器
7.5支持小端和大端
7.5.1數(shù)據(jù)類型
7.5.2硬件行為對(duì)編程的影響
7.5.3數(shù)據(jù)對(duì)齊
7.5.4訪問非法地址
7.5.5多寄存器加載和存儲(chǔ)指令的使用
7.6存儲(chǔ)器屬性
第8章異常和中斷
8.1什么是異常和中斷
8.2Cortex?M0處理器的異常類型
8.2.1不可屏蔽中斷(NMI)
8.2.2硬件錯(cuò)誤
8.2.3SVC(請(qǐng)求管理調(diào)用)
8.2.4PendSV(可掛起的系統(tǒng)調(diào)用)
8.2.5系統(tǒng)節(jié)拍
8.2.6中斷
8.3異常優(yōu)先級(jí)定義
8.4向量表
8.5異常流程概述
8.5.1接受異常請(qǐng)求
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)先級(jí)
9.5中斷控制的通用匯編代碼
9.5.1使能和禁