本書以16位MC9S12XD/XE系列雙核單片機(jī)為例,介紹雙核單片機(jī)的優(yōu)勢(shì)和開發(fā)方法。從介紹雙核單片機(jī)的背景知識(shí)開始,講述雙核單片機(jī)基本硬件系統(tǒng)的設(shè)計(jì)方法;主處理器初始化協(xié)處理器并將部分工作交給協(xié)處理器完成的過程;主、協(xié)兩個(gè)處理器的通信機(jī)制與克服競爭的方法;用C語言編寫雙核單片機(jī)的應(yīng)用程序;建立雙核單片機(jī)應(yīng)用程序調(diào)試的環(huán)境;利用商用軟件CodeWarriot的教學(xué)版本,將嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)μC/OS-Ⅱ移植到雙核單片機(jī)上,建立基于RTOS的開發(fā)環(huán)境;同時(shí)給出了幾個(gè)實(shí)現(xiàn)雙核系統(tǒng)應(yīng)用的范例和源代碼,包括利用協(xié)處理器提升RTOS性能的方法;還簡要介紹了單片機(jī)片內(nèi)容錯(cuò)與糾錯(cuò)技術(shù)、雙時(shí)鐘技術(shù)和FlexRay通信技術(shù)等伴隨單片機(jī)雙核技術(shù)發(fā)展起來的一些新技術(shù),這些技術(shù)的發(fā)展與應(yīng)用將進(jìn)一步提高嵌入式控制系統(tǒng)的性。
本書可作為相關(guān)專業(yè)研究生課程教材,也可供理工科大專院校電類本科生和嵌入式控制系統(tǒng)開發(fā)應(yīng)用工程師參考。
第1章 單片機(jī)技術(shù)發(fā)展新趨勢(shì)及雙核單片機(jī)
1.1 片上系統(tǒng)以及應(yīng)用系統(tǒng)單片化趨勢(shì)
1.2 以存儲(chǔ)器為核心制訂解決方案
1.3 使用實(shí)時(shí)操作系統(tǒng)
1.4 MISRA標(biāo)準(zhǔn)C
1.5 協(xié)處理器在單片機(jī)中的應(yīng)用
1.6 單片機(jī)世界中的雙核單片機(jī)
1.6.1 雙核單片機(jī)系列的由來
1.6.2 雙核單片機(jī)的基礎(chǔ)——單核單片機(jī)系列
1.7 MC9S12系列單片機(jī)
1.7.1 MC9S12A系列和B系列16位單片機(jī)
1.7.2 帶CAN總線的Mcgsl2D系列16位單片機(jī)
1.7.3.MC9S12DP512單片機(jī)
1.7.4 低供電電壓的16位單片機(jī)
1.7.5 帶USB接口的16位單片機(jī)
1.7.6 帶以太網(wǎng)接口的16位單片機(jī)
1.8 使用CPU V1的雙核單片機(jī)系列
1.8.1 S12XA系列單片機(jī)
1.8.2 S12XB系列單片機(jī)
1.8.3 S12XD系列單片機(jī)
1.8.4 帶液晶、步進(jìn)電機(jī)驅(qū)動(dòng)模塊的雙核S12XH2系列單片機(jī)
1.8.5 帶液晶驅(qū)動(dòng)的單核單片機(jī)
1.9 使用CPU V2內(nèi)核的S12X系列單片機(jī)
1.9.1 S12X CPU V2內(nèi)核
1.9.2 S12XE系列單片機(jī)
1.10 支持FlexRay通信協(xié)議的S12XF系列單片機(jī)
1.10.1 FlaxRay通信協(xié)議
1.10.2 S12XF系列單片機(jī)
1.10.3 S12XS系列單片機(jī)
1.11 雙核單片機(jī)的開發(fā)工具
1.11.1 軟件開發(fā)工具
1.11.2 動(dòng)態(tài)調(diào)試方法
1.12 奴核單片機(jī)中的其他新技術(shù)
1.12.1 片內(nèi)容錯(cuò)與糾錯(cuò)技術(shù)
1.12.2 片內(nèi)存儲(chǔ)器資源管理技術(shù)
1.12.3 編譯、調(diào)試技術(shù)的新發(fā)展
第2章 單片機(jī)基本系統(tǒng)的硬件設(shè)計(jì)
2.1 16位單片機(jī)
2.1.1 帶協(xié)處理器的16位單片機(jī)
2.1.2 MC9S12XDP512單片機(jī)
2.2 單片機(jī)基本硬件系統(tǒng)
2.2.1 MC9S12XD的基本硬件系統(tǒng)
2.2.2 監(jiān)控程序
2.2.3 體驗(yàn)機(jī)器碼
2.3 利用異步串行口實(shí)現(xiàn)人機(jī)通信
2.3.1 串行通信協(xié)議RS-232標(biāo)準(zhǔn)
2.3.2 ASCII碼
2.3.3 串行數(shù)據(jù)格式
2.3.4 RS-232-C電纜的連接方法
2.3.5 通信速率
2.4 MC9S12XD單片機(jī)系統(tǒng)的硬件設(shè)計(jì)
2.5 運(yùn)行模式
2.5.1 單片運(yùn)行模式
2.5.2 擴(kuò)展運(yùn)行模式
2.6 MC9S12XE單片機(jī)系統(tǒng)的硬件設(shè)計(jì)
第3章 主處理器及其指令集
3.1 主處理器的內(nèi)部寄存器結(jié)構(gòu)
3.1.1 S12X V1內(nèi)核的CPU內(nèi)部結(jié)構(gòu)
3.1.2 S12X V2內(nèi)核的CPU內(nèi)部結(jié)構(gòu)
3.1.3 16位CPU與8位CPU的對(duì)比
3.1.4 32位CPU與16位CPU的對(duì)比
3.2 內(nèi)存空間分配
3.3 S12X的內(nèi)存擴(kuò)展與管理
3.3.1 S12X CPU尋址空間的擴(kuò)展
3.3.2 Flash頁面管理寄存器PPage
3.3.3 RAM頁面管理寄存器RPage
3.3.4 EEPROM頁面管理寄存器EPage
3.3.5 S12X用全程寄存器擴(kuò)展尋址空間
3.3.6 全程寄存器GPage
3.4 S12X CPU V2內(nèi)核的內(nèi)存管理
3.5 CPU12X匯編指令集
3.6 指令按功能分類
3.6.1 數(shù)據(jù)傳送指令
3.6.2 堆棧指針指令
3.6.3 算術(shù)與邏輯運(yùn)算指令
3.6.4 程序控制指令
3.6.5 循環(huán)控制指令
3.6.6 測(cè)試與位操作指令
3.7 CPU12X的模糊邏輯指令
3.8 指令按尋址方式分類
3.8.1 隱含尋址
3.8.2 立即數(shù)尋址
3.8.3 直接尋址
3.8.4 擴(kuò)展尋址
3.8.5 變址尋址
3.8.6 帶自動(dòng)加、減5位偏移量的間接尋址
3.8.7 相對(duì)尋址
3.9 匯編指令表
3.10 指令的機(jī)器碼組織
3.11 用匯編語言編寫程序
3.11.1 匯編程序的格式
3.11.2 匯編管理指令
3.12 匯編語言程序設(shè)計(jì)舉例
3.13 碼的轉(zhuǎn)換類子程序
3.14 匯編語言編程技巧
第4章 協(xié)處理器
4.1 協(xié)處理器的尋址空間
4.1.1 I/O寄存器空間
4.1.2 Flash空間
4.1.3 RAM空間
4.1.4 RAM的分配與保護(hù)
4.2 協(xié)處理器CPU的內(nèi)核結(jié)構(gòu)
4.3 協(xié)處理器的尋址方式
4.4 協(xié)處理器的匯編語言和CPU指令集
4.5 復(fù)位和中斷
4.5.1 中斷向量表
4.5.2 中斷向量基地址寄存器
4.6 與協(xié)處理器相關(guān)的寄存器
4.7 協(xié)處理器匯編程序的例子
4.8 CISC與RISC的比較
第5章 用C語言開發(fā)應(yīng)用程序
5.1 C語言是開發(fā)單片機(jī)應(yīng)用軟件的有力工具
5.2 開發(fā)嵌入式應(yīng)用的C編譯器的特點(diǎn)
5.2.1 編譯過程與集成開發(fā)環(huán)境
5.2.2 不要使用初始化變量
5.2.3 注意函數(shù)的可重人性
5.3 建立C語言程序運(yùn)行環(huán)境
5.4 應(yīng)用程序模塊化
5.5 合理使用全局變量和局部變量
5.6 函數(shù)的結(jié)構(gòu)與函數(shù)間參數(shù)的傳遞
5.7 在C程序中直接操作硬件
5.8 程序模塊的框架與組織
5.9 程序的鏈接與定位
5.10 用C語言寫XGate程序
第6章 使用嵌入式實(shí)時(shí)操作系統(tǒng)
6.1 嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ
6.2 移植μC/OS-Ⅱ
6.2.1 根據(jù)應(yīng)用定義內(nèi)核的大小和功能
6.2.2 修改OS_CPU.H文件
6.2.3 編寫OS_CPU_C.C文件
6.2.4 產(chǎn)生時(shí)鐘節(jié)拍中斷
6.3 制作用戶自己的項(xiàng)目
6.3.1 主程序main.c
6.3.2 3個(gè)任務(wù)
6.3.3 鏈接與程序定位
6.4 精心分配RAM資源
6.4.1 RAM空間的分頁管理
6.4.2 估算μC/OS-Ⅱ占用的RAM資源
6.4.3 估算內(nèi)核占用RAM空間舉例
第7章 BDM后臺(tái)調(diào)試模式
7.1 S12X BDM概述
7.2 進(jìn)入BDM模式
7.3 BDM通信協(xié)議及底層軟件
7.3.1 BDM調(diào)試的相關(guān)寄存器
7.3.2 BDM指令基本結(jié)構(gòu)
7.3.3 測(cè)量目標(biāo)系統(tǒng)的時(shí)鐘頻率
7.3.4 BDM基本操作——讀/寫單字節(jié)
7.3.5 BDM指令的組織
7.4 BDM簡單應(yīng)用
7.4.1 用BDM對(duì)Flash編程
7.4.2 通過BDM顯示存儲(chǔ)器內(nèi)容
7.5 TBDML工具
第8章 單片機(jī)軟件開發(fā)工具使用入門
8.1 商用軟件開發(fā)工具CodeWarrior for HCSl2
8.2 安裝CodeWarrior
8.3 建立一個(gè)簡單的工程
8.4 自動(dòng)生成的文件系統(tǒng)
8.5 寫一個(gè)匯編程序
8.6 編寫一個(gè)最簡單的C程序
8.7 編寫一個(gè)能看到演示效果的C程序
8.8 增加新程序模塊
8.9 建立雙核工程
8.10 定義裝載地址和復(fù)位向量
第9章 應(yīng)用工程實(shí)例1——用協(xié)處理器管理SCI
9.1 定義主從CPU的共享變量和數(shù)據(jù)區(qū)
9.2 協(xié)處理器的中斷服務(wù)程序
9.3 主CPU響應(yīng)來自協(xié)處理器的中斷
9.4 協(xié)處理器的初始化
9.5 程序清單main.c
9.6 程序清單xgate.h
9.7 程序清單xgate.cxgate
9.8 程序清單鏈接參數(shù)文件.prm
第10章 應(yīng)用工程實(shí)例2——用協(xié)處理器處理μC/OS-Ⅱ時(shí)鐘節(jié)拍中斷
10.1 μC/OS-Ⅱ的時(shí)鐘節(jié)拍
10.1.1 μC/OS-Ⅱ的時(shí)鐘節(jié)拍函數(shù)
10.1.2 鐘節(jié)拍函數(shù)OSTimtick()的一個(gè)節(jié)拍服務(wù)
10.2 用XGate實(shí)現(xiàn)μC/OS-Ⅱ的時(shí)鐘節(jié)拍
10.3 范例工程
10.3.1 main.c
10.3.2 xgate.cxgate
10.4 XGate的使用與程序調(diào)試
10.4.1 XGate韻狀態(tài)
10.4.2 XGate程序的下載
10.4.3 XGate程序中的常見錯(cuò)誤
10.4.4 XGate程序的調(diào)試
10.5 效果測(cè)試與分析
附錄A MC9S12X系列單片機(jī)開發(fā)工具包
A.1 概述
A.1.1 HCS12X系列單片機(jī)
A.1.2 HCSl2X開發(fā)工具包組件
A.2 MC9S12XEP100開發(fā)板及與PC通信
A.2.1 MC9S12XEP100開發(fā)板
A.2.2 開發(fā)板工作模式的選擇
A.2.3 開發(fā)板的硬件連接
A.2.4 PC的設(shè)置
A.3 監(jiān)控程序及監(jiān)控命令詳解
A.3.1 命令詳解
A.3.2 改變波特率
A.3.3 復(fù)位、中斷向量表
A.3.4 用戶可以使用的RAM空間
附錄B 協(xié)處理器XGate指令機(jī)器碼表
附錄C S12X CPU匯編指令表
附錄D S12X CPU指令機(jī)器碼表
參考文獻(xiàn)
第1章 單片機(jī)技術(shù)發(fā)展新趨勢(shì)及雙核單片機(jī)
微控制器(micro controller)在中國俗稱單片機(jī),而單片機(jī)(single chip computer)在英語中則很少使用。單片機(jī)是在微處理器(micro—processor)的基礎(chǔ)上發(fā)展起來的。微處理器最早出現(xiàn)在20世紀(jì)70年代中期。微處理器需要與存儲(chǔ)器和I/O接口電路共同組合成應(yīng)用系統(tǒng)。這種以微處理器為核心的電子學(xué)應(yīng)用技術(shù)稱為微機(jī)接口技術(shù)。
單片機(jī)最早出現(xiàn)在20世紀(jì)70年代末期,只將部分I/O和少量RAM集成在單片機(jī)中,并擴(kuò)展以紫外線擦除的只讀存儲(chǔ)器EPROM。程序燒錄在單片機(jī)外部,方便調(diào)試。后來EPROM也集成到單片機(jī)中,出現(xiàn)了"窗口片",調(diào)試也比較方便。80年代中期后,出現(xiàn)了一種叫做仿真器的單片機(jī)調(diào)試工具,用微處理器系統(tǒng)或工作在擴(kuò)展方式下的單片機(jī)系統(tǒng)模仿目標(biāo)單片機(jī)的功能,替代目標(biāo)板上的單片機(jī),以方便調(diào)試。在單片機(jī)教學(xué)中使用仿真器,導(dǎo)致用一種單片機(jī),擴(kuò)以各種I/O的應(yīng)用思維方式,這是非常有害的。如果說過去開發(fā)掩膜型單片機(jī)使用仿真器屬不得已,而如今單片機(jī)都采用了可以反復(fù)擦/寫l。萬次以上的Flash存儲(chǔ)器,沒有必要再使用仿真器。當(dāng)前單片機(jī)開發(fā)技術(shù)的趨勢(shì)是,無論對(duì)于8位、16位還是32位機(jī),都會(huì)在單片機(jī)內(nèi)部增加1個(gè)專門用于調(diào)試的模塊,該模塊以單線通信的方式與外界通信。開發(fā)工具僅實(shí)現(xiàn)單線通信方式對(duì)PC標(biāo)準(zhǔn)接口的轉(zhuǎn)換(USB口或串行口)。通過簡單的轉(zhuǎn)換,實(shí)現(xiàn)PC對(duì)單片機(jī)的調(diào)試。對(duì)于8位、16位和32位單片機(jī),開發(fā)工具也在逐漸走向兼容。
如今,在各個(gè)行業(yè)和領(lǐng)域都能找到單片機(jī)的應(yīng)用實(shí)例。人們對(duì)現(xiàn)代化、智能化的強(qiáng)烈要求,促使計(jì)算機(jī)的嵌入式應(yīng)用迅猛發(fā)展。
單片機(jī),顧名思義是將計(jì)算機(jī)的CPU(微處理器)、存儲(chǔ)器(包括隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM)和I/O(輸入/輸出)模塊集成在一個(gè)電路芯片上,并將應(yīng)用程序固化在存儲(chǔ)器中,再嵌入到產(chǎn)品中去。其應(yīng)用對(duì)象幾乎是無限的,故單片機(jī)的設(shè)計(jì)也必須是個(gè)性化的。不同的單片機(jī)有不同的應(yīng)用定位,不要企圖用一種單片機(jī)(例如8051)去適應(yīng)所有的場合。
實(shí)際上單片機(jī)有過一個(gè)別名,叫做CSIC(用戶定義的集成電路)。當(dāng)某種需求有了一定的數(shù)量,用戶就可以要求單片機(jī)供應(yīng)商針對(duì)這種需求設(shè)計(jì)一款單片機(jī)。這種單片機(jī)用某一個(gè)成熟的CPU,加上特定數(shù)量的存儲(chǔ)器RAM和ROM,以及特定的一些I/O模塊構(gòu)成。這種單片機(jī)除了用于用戶定義的那種有批量的產(chǎn)品,也可以用于其他產(chǎn)品。
……