本书以16位MC9S12XD/XE系列双核单片机为例,介绍双核单片机的优势和开发方法。从介绍双核单片机的背景知识开始,讲述双核单片机基本硬件系统的设计方法;主处理器初始化协处理器并将部分工作交给协处理器完成的过程;主、协两个处理器的通信机制与克服竞争的方法;用C语言编写双核单片机的应用程序;建立双核单片机应用程序调试的环境;利用商用软件CodeWarriot的教学版本,将嵌入式实时多任务操作系统μC/OS-Ⅱ移植到双核单片机上,建立基于RTOS的开发环境;同时给出了几个实现双核系统应用的范例和源代码,包括利用协处理器提升RTOS性能的方法;还简要介绍了单片机片内容错与纠错技术、双时钟技术和FlexRay通信技术等伴随单片机双核技术发展起来的一些新技术,这些技术的发展与应用将进一步提高嵌入式控制系统的性。
本书可作为相关专业研究生课程教材,也可供理工科大专院校电类本科生和嵌入式控制系统开发应用工程师参考。
第1章 单片机技术发展新趋势及双核单片机
1.1 片上系统以及应用系统单片化趋势
1.2 以存储器为核心制订解决方案
1.3 使用实时操作系统
1.4 MISRA标准C
1.5 协处理器在单片机中的应用
1.6 单片机世界中的双核单片机
1.6.1 双核单片机系列的由来
1.6.2 双核单片机的基础——单核单片机系列
1.7 MC9S12系列单片机
1.7.1 MC9S12A系列和B系列16位单片机
1.7.2 带CAN总线的Mcgsl2D系列16位单片机
1.7.3.MC9S12DP512单片机
1.7.4 低供电电压的16位单片机
1.7.5 带USB接口的16位单片机
1.7.6 带以太网接口的16位单片机
1.8 使用CPU V1的双核单片机系列
1.8.1 S12XA系列单片机
1.8.2 S12XB系列单片机
1.8.3 S12XD系列单片机
1.8.4 带液晶、步进电机驱动模块的双核S12XH2系列单片机
1.8.5 带液晶驱动的单核单片机
1.9 使用CPU V2内核的S12X系列单片机
1.9.1 S12X CPU V2内核
1.9.2 S12XE系列单片机
1.10 支持FlexRay通信协议的S12XF系列单片机
1.10.1 FlaxRay通信协议
1.10.2 S12XF系列单片机
1.10.3 S12XS系列单片机
1.11 双核单片机的开发工具
1.11.1 软件开发工具
1.11.2 动态调试方法
1.12 奴核单片机中的其他新技术
1.12.1 片内容错与纠错技术
1.12.2 片内存储器资源管理技术
1.12.3 编译、调试技术的新发展
第2章 单片机基本系统的硬件设计
2.1 16位单片机
2.1.1 带协处理器的16位单片机
2.1.2 MC9S12XDP512单片机
2.2 单片机基本硬件系统
2.2.1 MC9S12XD的基本硬件系统
2.2.2 监控程序
2.2.3 体验机器码
2.3 利用异步串行口实现人机通信
2.3.1 串行通信协议RS-232标准
2.3.2 ASCII码
2.3.3 串行数据格式
2.3.4 RS-232-C电缆的连接方法
2.3.5 通信速率
2.4 MC9S12XD单片机系统的硬件设计
2.5 运行模式
2.5.1 单片运行模式
2.5.2 扩展运行模式
2.6 MC9S12XE单片机系统的硬件设计
第3章 主处理器及其指令集
3.1 主处理器的内部寄存器结构
3.1.1 S12X V1内核的CPU内部结构
3.1.2 S12X V2内核的CPU内部结构
3.1.3 16位CPU与8位CPU的对比
3.1.4 32位CPU与16位CPU的对比
3.2 内存空间分配
3.3 S12X的内存扩展与管理
3.3.1 S12X CPU寻址空间的扩展
3.3.2 Flash页面管理寄存器PPage
3.3.3 RAM页面管理寄存器RPage
3.3.4 EEPROM页面管理寄存器EPage
3.3.5 S12X用全程寄存器扩展寻址空间
3.3.6 全程寄存器GPage
3.4 S12X CPU V2内核的内存管理
3.5 CPU12X汇编指令集
3.6 指令按功能分类
3.6.1 数据传送指令
3.6.2 堆栈指针指令
3.6.3 算术与逻辑运算指令
3.6.4 程序控制指令
3.6.5 循环控制指令
3.6.6 测试与位操作指令
3.7 CPU12X的模糊逻辑指令
3.8 指令按寻址方式分类
3.8.1 隐含寻址
3.8.2 立即数寻址
3.8.3 直接寻址
3.8.4 扩展寻址
3.8.5 变址寻址
3.8.6 带自动加、减5位偏移量的间接寻址
3.8.7 相对寻址
3.9 汇编指令表
3.10 指令的机器码组织
3.11 用汇编语言编写程序
3.11.1 汇编程序的格式
3.11.2 汇编管理指令
3.12 汇编语言程序设计举例
3.13 码的转换类子程序
3.14 汇编语言编程技巧
第4章 协处理器
4.1 协处理器的寻址空间
4.1.1 I/O寄存器空间
4.1.2 Flash空间
4.1.3 RAM空间
4.1.4 RAM的分配与保护
4.2 协处理器CPU的内核结构
4.3 协处理器的寻址方式
4.4 协处理器的汇编语言和CPU指令集
4.5 复位和中断
4.5.1 中断向量表
4.5.2 中断向量基地址寄存器
4.6 与协处理器相关的寄存器
4.7 协处理器汇编程序的例子
4.8 CISC与RISC的比较
第5章 用C语言开发应用程序
5.1 C语言是开发单片机应用软件的有力工具
5.2 开发嵌入式应用的C编译器的特点
5.2.1 编译过程与集成开发环境
5.2.2 不要使用初始化变量
5.2.3 注意函数的可重人性
5.3 建立C语言程序运行环境
5.4 应用程序模块化
5.5 合理使用全局变量和局部变量
5.6 函数的结构与函数间参数的传递
5.7 在C程序中直接操作硬件
5.8 程序模块的框架与组织
5.9 程序的链接与定位
5.10 用C语言写XGate程序
第6章 使用嵌入式实时操作系统
6.1 嵌入式实时操作系统μC/OS-Ⅱ
6.2 移植μC/OS-Ⅱ
6.2.1 根据应用定义内核的大小和功能
6.2.2 修改OS_CPU.H文件
6.2.3 编写OS_CPU_C.C文件
6.2.4 产生时钟节拍中断
6.3 制作用户自己的项目
6.3.1 主程序main.c
6.3.2 3个任务
6.3.3 链接与程序定位
6.4 精心分配RAM资源
6.4.1 RAM空间的分页管理
6.4.2 估算μC/OS-Ⅱ占用的RAM资源
6.4.3 估算内核占用RAM空间举例
第7章 BDM后台调试模式
7.1 S12X BDM概述
7.2 进入BDM模式
7.3 BDM通信协议及底层软件
7.3.1 BDM调试的相关寄存器
7.3.2 BDM指令基本结构
7.3.3 测量目标系统的时钟频率
7.3.4 BDM基本操作——读/写单字节
7.3.5 BDM指令的组织
7.4 BDM简单应用
7.4.1 用BDM对Flash编程
7.4.2 通过BDM显示存储器内容
7.5 TBDML工具
第8章 单片机软件开发工具使用入门
8.1 商用软件开发工具CodeWarrior for HCSl2
8.2 安装CodeWarrior
8.3 建立一个简单的工程
8.4 自动生成的文件系统
8.5 写一个汇编程序
8.6 编写一个最简单的C程序
8.7 编写一个能看到演示效果的C程序
8.8 增加新程序模块
8.9 建立双核工程
8.10 定义装载地址和复位向量
第9章 应用工程实例1——用协处理器管理SCI
9.1 定义主从CPU的共享变量和数据区
9.2 协处理器的中断服务程序
9.3 主CPU响应来自协处理器的中断
9.4 协处理器的初始化
9.5 程序清单main.c
9.6 程序清单xgate.h
9.7 程序清单xgate.cxgate
9.8 程序清单链接参数文件.prm
第10章 应用工程实例2——用协处理器处理μC/OS-Ⅱ时钟节拍中断
10.1 μC/OS-Ⅱ的时钟节拍
10.1.1 μC/OS-Ⅱ的时钟节拍函数
10.1.2 钟节拍函数OSTimtick()的一个节拍服务
10.2 用XGate实现μC/OS-Ⅱ的时钟节拍
10.3 范例工程
10.3.1 main.c
10.3.2 xgate.cxgate
10.4 XGate的使用与程序调试
10.4.1 XGate韵状态
10.4.2 XGate程序的下载
10.4.3 XGate程序中的常见错误
10.4.4 XGate程序的调试
10.5 效果测试与分析
附录A MC9S12X系列单片机开发工具包
A.1 概述
A.1.1 HCS12X系列单片机
A.1.2 HCSl2X开发工具包组件
A.2 MC9S12XEP100开发板及与PC通信
A.2.1 MC9S12XEP100开发板
A.2.2 开发板工作模式的选择
A.2.3 开发板的硬件连接
A.2.4 PC的设置
A.3 监控程序及监控命令详解
A.3.1 命令详解
A.3.2 改变波特率
A.3.3 复位、中断向量表
A.3.4 用户可以使用的RAM空间
附录B 协处理器XGate指令机器码表
附录C S12X CPU汇编指令表
附录D S12X CPU指令机器码表
参考文献
第1章 单片机技术发展新趋势及双核单片机
微控制器(micro controller)在中国俗称单片机,而单片机(single chip computer)在英语中则很少使用。单片机是在微处理器(micro—processor)的基础上发展起来的。微处理器最早出现在20世纪70年代中期。微处理器需要与存储器和I/O接口电路共同组合成应用系统。这种以微处理器为核心的电子学应用技术称为微机接口技术。
单片机最早出现在20世纪70年代末期,只将部分I/O和少量RAM集成在单片机中,并扩展以紫外线擦除的只读存储器EPROM。程序烧录在单片机外部,方便调试。后来EPROM也集成到单片机中,出现了"窗口片",调试也比较方便。80年代中期后,出现了一种叫做仿真器的单片机调试工具,用微处理器系统或工作在扩展方式下的单片机系统模仿目标单片机的功能,替代目标板上的单片机,以方便调试。在单片机教学中使用仿真器,导致用一种单片机,扩以各种I/O的应用思维方式,这是非常有害的。如果说过去开发掩膜型单片机使用仿真器属不得已,而如今单片机都采用了可以反复擦/写l。万次以上的Flash存储器,没有必要再使用仿真器。当前单片机开发技术的趋势是,无论对于8位、16位还是32位机,都会在单片机内部增加1个专门用于调试的模块,该模块以单线通信的方式与外界通信。开发工具仅实现单线通信方式对PC标准接口的转换(USB口或串行口)。通过简单的转换,实现PC对单片机的调试。对于8位、16位和32位单片机,开发工具也在逐渐走向兼容。
如今,在各个行业和领域都能找到单片机的应用实例。人们对现代化、智能化的强烈要求,促使计算机的嵌入式应用迅猛发展。
单片机,顾名思义是将计算机的CPU(微处理器)、存储器(包括随机存储器RAM、只读存储器ROM)和I/O(输入/输出)模块集成在一个电路芯片上,并将应用程序固化在存储器中,再嵌入到产品中去。其应用对象几乎是无限的,故单片机的设计也必须是个性化的。不同的单片机有不同的应用定位,不要企图用一种单片机(例如8051)去适应所有的场合。
实际上单片机有过一个别名,叫做CSIC(用户定义的集成电路)。当某种需求有了一定的数量,用户就可以要求单片机供应商针对这种需求设计一款单片机。这种单片机用某一个成熟的CPU,加上特定数量的存储器RAM和ROM,以及特定的一些I/O模块构成。这种单片机除了用于用户定义的那种有批量的产品,也可以用于其他产品。
……