本帖最后由 hubert0707 于 2009-9-24 16:17 编辑
书名:深入浅出ColdFire系列32位嵌入式微处理器
作者:谌 利 张 瑞 汪 浩 李侃
出版时间:2009年9月
书号:ISBN 978-7-81124-903-3
定价:42.00元(含光盘)
内容简介
本书是针对飞思卡尔32位ColdFire系列嵌入式微处理器的应用和开发,主要是针对该系列V2与V3内核,即代表该系列大部分的中低端产品的应用。通过对每个模块的介绍和详细的应用实例,使读者更方便更容易地理解各个功能模块的应用,从而达到快速上手的目的。本书基于一个具体的芯片MCF5225x进行举例和应用,该芯片为最新的ColdFire家族成员,其特点是集成了几乎所有ColdFire家族的中低端功能模块,包括使用比较多的以太网,USB OTG,CAN,DMA,FlexBus/MiniBus,SDR/DDR controller等模块,并且可以适用于其他各类ColdFire系列芯片。基于一个具体的芯片来讲述所有ColdFire家族通用的模块,并有详细的应用和开发实例。
读者对象主要是目前ColdFire处理器的使用者和潜在的32位嵌入式处理器的爱好者,也可作为大学的实验教材。
序一
这是一本关于飞思卡尔32位ColdFire处理器开发和应用的书。很多人在看这本书前可能会问这样两个问题:为什么要32位?为什么是ColdFire?
这是一个不争的事实:嵌入式系统中的核心部件微控制器(MCU)或微处理器(MPU)正从早些年的主流8位系统逐渐向全新的32位系统快速升级换代。特别是近年来半导体设计和制造技术的突飞猛进,大大降低了芯片的价格,使得32位系统在总体成本上已经可以被包括消费类产品在内的众多应用领域所能接受;另外由于日趋复杂的功能需求,特别是呈爆炸性扩展的网络通信互联的需要,正促使32位系统以异乎寻常的速度进入各类产品和系统的设计领域,32位的设计方案也被大量摆放在广大电子设计工程师的面前。因此,如何深入理解一款32位处理器的性能和资源及其所需的开发环境,以便在较短时间内设计出一款高性价比和高可靠性的产品,是摆在很多硬件软件设计工程师面前的一个巨大挑战。
和传统的8位系统发展道路类似,现在的32位系统设计也正处于群雄逐鹿、各显神通的阶段,国内比较常见的32位微控制器有ARM,ColdFire和MIPS等系列。纵观国内嵌入式系统设计领域,目前ARM架构无疑处于32位系统设计的主导地位,这点和当初的51系列在8位单片机中的地位是何其相像。各种原因当然有很多,但其中一个非常重要的原因是关于ARM架构的设计开发资料和相关书籍比较多,工程师们比较容易从公开的渠道获取一些基本资料,以支撑自己的产品开发。但恰恰也像8位单片机的发展历程一样,面对形形色色各类差异化的产品设计,绝非一个架构就可以包揽一切。对于广大设计工程师来说,有机会能了解和掌握不同架构的32位处理器系统,对于优化自己的设计方案,扩展设计思路将会提供非常大的帮助。
飞思卡尔的ColdFire系列32位处理器目前似乎不为广大的国内工程师所熟知。但若提及早些年Motorola的68K系列,很多有些年纪的工程师应该还**犹新。这款早年的32位处理器绝对统领了当时的32位嵌入式系统设计。国内的许多高端嵌入式设计也采用了68K系列,很多产品至今还在批量生产,其可靠性和稳定性被一致公认。ColdFire系列正是脱胎于68K,在原68K的基础上极大地提高了芯片的运行速度,增强了指令系统和数据运算能力,扩充了大量不同的周边功能模块。针对不同级别应用的实际需求,提供了由低端V1到高端V4的不同级别的内核。各内核级别之间在体现功能和性能差异化的同时,又保证了很好的兼容性和可移植性,为不同的产品设计提供了丰富灵活的选择。特别要强调的是,飞思卡尔充分考虑到现有8位系统直接向32位系统迁移的这么一个趋势,专门设计了引脚和周边功能模块完全兼容的8位单片机(9S08系列)和32位ColdFire单片机(V1系列),这使得一个8位系统设计几乎不用改动任何硬件和软件,就可以直接升级到32位高性能系统成为一种可能。工程师们完全可依据现有的8位系统的设计经验,学习和掌握32位系统设计的基本要素,在此基础上进一步提升到更高级别和更复杂的32位系统设计。
毋庸置疑,32位系统的设计复杂程度远非简单的8位系统可以比拟。32位系统往往涉及大量的接口与数据处理、复杂的系统控制过程和高端的人机界面等。这样,一个32位系统的设计,一般都牵涉到大量的数据存储管理、高效的嵌入式实时操作系统、众多可选的网络和通信接口、灵活可靠的数据互联技术等不同方面的设计要求。对于一个电子设计工程师,特别是刚接触32位系统的工程师而言,要同时掌握如此庞杂繁复的硬件和软件系统,在短时间内绝非易事。本人在日常现场技术支持的过程中,深刻体会到国内广大设计工程师迫切所需的是更多富含实际应用经验和开发心得的资料,以便他们在设计时可以参考和借鉴,减少设计弯路,缩短设计时间。于是,就极力邀请飞思卡尔的几个经验丰富的应用工程师们挤出他们宝贵的业余时间,写一些有关ColdFire处理器的应用**,和广大设计工程师们做些技术交流并分享一些心得体会。很高兴他们能热心投入到这么一件对于他们来讲完全是工作职责范围之外的事情中,并在很短的时间内就成就了这本书。
衷心希望此书能给从事嵌入式系统设计的工程师们带来一些帮助。
张明峰
飞思卡尔半导体公司现场应用工程师经理
2009年2月22日 于上海
序二
ColdFire系列微处理器作为Motorola M68000系列的延伸,从诞生至今已有10多年了,其间经过了多次的完善和性能的提升,并通过广大的专业工作者在汽车、工业、医疗、消费类等领域中得到广泛的应用。但介绍ColdFire微处理器的中文原版书籍,在此之前还没有。针对这种情况,我们作为飞思卡尔半导体的应用工程师,决定写一本介绍变长RISC架构系统内核和周边模块的书籍,让更多国内读者了解ColdFire,同时给应用开发人员的实际工作提供帮助。如果能为ColdFire系列微处理的普及尽一些绵薄之力,那就更好了。
作为一本面向嵌入式初学者和软硬件工程师的书籍,本书还包含了基于飞思卡尔半导体最新推出的MCF52259、MCF5445上的一些程序实例,希望能让读者深入浅出地了解芯片之外,对一些标准的工业接口和规范也能有一定的认识。
飞思卡尔半导体公司为广大的客户提供了基于ColdFire内核的大量衍生产品,它们集成了不同大小的存储和不同的外设,相信用户一定可以从中找到适合自己方案的处理器。
郭雷
飞思卡尔半导体公司系统与应用工程师经理
2009年2月18日 于上海
前言
ColdFire系列家族以及之前的68K系列处理器有着非常好的继承性和连贯的体系,其全系列的产品针对嵌入式领域的各方面及高低端的应用非常的完备,并且其各外设模块都有很好的一致性,使得研发人员只要学会一种产品,就可以很容易地开发其家族成员的其他产品,这与ARM系列产品完全不同。由于ARM系列产品各厂商都有,其外设也是不尽相同,所以为跨厂商平台的升级移植工作带来一定难度。68K/ColdFire产品在欧美地区应用一直非常广泛,而国内对68K/ColdFire产品并不熟悉,很多都是跨国大型企业在国内的分公司才熟悉。
2006年飞思卡尔半导体公司为了拓展在中国的业务,在中国成立了针对工业与消费类电子的核心团队——系统与应用工程师团队,主要负责8/16位单片机以及32位ColdFire处理器新产品在定义、验证、应用开发等各方面的研发工作以及为亚太区的市场提供技术服务。本人在2006年之前一直在摩托罗拉半导体及后来的飞思卡尔半导体公司负责手机平台的软件开发和市场支持,2006年底转入系统与应用工程师核心团队成为负责32位微处理器ColdFire的第一位工程师,开始进入了ColdFire世界。后来应用工程师团队逐渐扩大,汪浩、李侃和居颖义加入进来。通过现场应用工程师团队的努力,ColdFire在中国的业务也是日益增大。
中国工科工程师普遍来说在英文上处于劣势,一般的阅读没有问题,但是要大量地精通阅读专业英文资料,则可能受到一定限制,会导致研发效率的下降。尤其ColdFire产品中文的资料较少,导致工程师入门门槛比较高,这也使我们日益感觉到有必要为中国的嵌入式系统研发人员更有效地介绍ColdFire系列产品。此时恰逢现场应用工程师经理张明峰先生邀请应用工程师与现场应用工程师联手编写一本关于ColdFire系列产品实际应用的书,以方便中国的工程师可以快速入门,熟练掌握该产品的开发和应用。在本书编写过程中,我们欣喜地看到我们的美国同事Rudan Bettelheim编写ColdFire Microprocessors and Microcontrollers一书的中文译本也出版发行,这本书主要从内部功能来介绍ColdFire系列产品,与本书的应用实例形成较好的搭配,读者可以把两本书结合起来阅读。
经过团队不懈地努力,历时半年多,终于完成此书的写作。在本书初稿完成的时候,正值全球经济危机蔓延到包括电子行业的实体经济的严冬,中国的电子产业也受到波及。我们希望这本书正如ColdFire的名字一样,能够为中国的电子产业的严冬带来一缕火焰。
本书由飞思卡尔半导体应用工程师和现场工程师团队共同合作完成,应用工程师汪浩、李侃、居颖义以及现场应用工程师张瑞都为本书的编写作出重要贡献。本书主要基于飞思卡尔半导体公司ColdFire系列芯片手册、应用手册等资料以及各位工程师的使用和开发经验。在编写本书的时候,我们得到了系统与应用工程师经理郭雷先生和现场应用工程师经理张明峰先生的大力支持,同时还得到Freescale全球产品经理Jeff Bock和系统应用全球经理Clay Merritt的大力支持。在此对他们以及所有关心本书编写和出版的朋友们表示诚挚的谢意。由于时间及水平所限,本书难免会有错误,望谅解,并与编者联系指出错误,本人邮箱shenli77@hotmail.com;也可以发送电子邮件到emsbook@gmail.com,与本书策划编辑进行交流。
谌利
飞思卡尔半导体公司应用工程师
2009年2月于上海
目录
第1章ColdFire基本介绍
1.1ColdFire的历史和概述2
1.2ColdFire应用领域5
1.2.1工业控制领域的应用6
1.2.2消费类电子领域的应用6
1.2.3医疗电子领域应用7
1.2.4测试与测量8
1.2.5家庭及楼宇自动化9
1.3本书内容9
第2章ColdFire内核及处理器架构介绍
2.1ColdFire 内核基本介绍11
2.2ColdFire内核结构11
2.2.1V2内核架构12
2.2.2V3内核架构13
2.2.3V4内核架构14
2.2.4V4e内核架构17
2.3内核主要寄存器18
2.3.1数据寄存器18
2.3.2地址寄存器18
2.3.3堆栈指针18
2.3.4程序指针19
2.3.5条件寄存器19
2.3.6异常中断向量基地址寄存器19
2.3.7状态寄存器19
2.4MAC和eMAC19
2.4.1MAC19
2.4.2eMAC21
2.4.3应用实例21
2.5高速缓冲22
2.5.1ColdFire缓存工作原理22
2.5.2主要寄存器25
2.6内部SRAM和内部Flash26
2.6.1内部SRAM26
2.6.2内部Flash26
2.7ColdFire处理器架构31
2.7.1CF5210平台31
2.7.2标准产品平台33
2.7.3系统访问控制35
2.8基本指令集介绍35
2.8.1寻址模式37
2.8.2指令集39
2.9μCOSII在ColdFire上的移植46
2.9.1μCOSII移植的关键代码46
2.9.2OS_CPU.H47
2.9.3OS_CPU_C.C48
2.9.4OS_CPU_A.ASM50
2.9.5OS_CPU_I.ASM55
第3章编程开发工具
3.1开发工具概况56
3.2CodeWarrior for ColdFire56
3.2.1CodeWarrior基本使用57
3.2.2项目配置64
3.2.3Link文件语法69
3.2.4ColdWarrior的默认库文件71
3.2.5烧写编程73
3.2.6调试76
3.3Linux/μCLinux开发环境——BSP76
3.3.1Linux/μCLinux for ColdFire基本介绍76
3.3.2LTIB使用77
3.3.3内核与文件系统的下载80
3.3.4调试81
3.4IAR for ColdFire基本介绍83
3.4.1IDE环境介绍83
3.4.2编译器84
3.4.3调试器CSPY86
第4章内核异常与中断控制器
4.1内核异常与中断控制器的基本介绍88
4.2内核异常处理88
4.2.1异常中断处理的工作原理88
4.2.2中断向量表与异常介绍91
4.3中断控制器的介绍94
4.3.1中断优先级和中断级别94
4.3.2寄存器基本介绍98
4.4应用实例99
4.4.1中断控制器的初始化99
4.4.2中断向量表初始化100
4.4.3中断服务程序的例程103
第5章Flex总线和MiniFlex总线
5.1Flex总线基本介绍105
5.2硬件信号106
5.3寄存器介绍109
5.4工作模式110
5.4.1总线状态机和突发模式110
5.4.2时序分析112
5.4.3数据对齐和非对齐119
5.5应用实例120
5.5.1连接通用总线设备120
5.5.2Flex总线与EIM的区别123
第6章SDRAM控制器
6.1SDRAM外部功能引脚支持126
6.1.1统一架构126
6.1.2伪分裂架构127
6.1.3全分裂架构128
6.1.4SDRAM控制器的信号129
6.2SDRAM控制寄存器简介130
6.2.1SDRAM模式/扩展模式寄存器130
6.2.2SDRAM控制寄存器130
6.2.3SDRAM配置寄存器1/2131
6.3SDR/DDR/DDR2的功能比较131
6.3.1外部引脚功能比较131
6.3.2性能差异分析132
6.4应用案例132
6.4.1MCF5445x SDRAM接口应用向导132
6.4.2硬件设计样例133
6.4.3DDR2 RAM初始化样例134
6.4.4DDR2硬件设计的布局参考136
6.4.5PCB布线指导138
第7章USB控制器
7.1USB基本概述141
7.2MCU USB模块介绍145
7.2.1MCU USB模块的概述145
7.2.2主机实现150
7.2.3设备类实现151
7.2.4人机接口设备HID类介绍153
7.2.5Mass Storage设备类实现158
7.3MPU USB模块介绍164
7.3.1MPU USB模块概述164
7.3.2USB设备类的工作原理166
7.3.3USB设备类例程168
7.3.4USB主机类原理174
7.3.5USB主机类例程178
第8章快速以太网控制器
8.1快速以太网控制器概述186
8.2以太网控制寄存器简介188
8.3以太网控制器外部功能引脚190
8.3.1功能引脚简介190
8.3.2MII接口原理图190
8.4以太网控制器的中断控制191
8.4.1中断源简介191
8.4.2中断初始化样例192
8.5以太网控制器应用简介194
8.5.1缓冲区描述符194
8.5.2初始化启动流程195
8.5.3发送数据流程196
8.5.4接收数据流程197
8.5.5以太网控制器简单测试实例198
8.6应用案例——ColdFire_TCP/IP_Lite200
8.6.1简介200
8.6.2协议栈启动过程202
8.6.3NicheTask实时操作系统205
8.6.4MiniSockets TCP API简介206
8.6.5协议的流程分析样例207
第9章串行外设接口模块
9.1队列串行外设模块210
9.1.1QSPI概述210
9.1.2QSPI寄存器介绍211
9.1.3QSPI工作原理及数据传输流程212
9.1.4QSPI使用实例217
9.2DMA串行外设接口模块220
9.2.1DSPI概述221
9.2.2DSPI寄存器介绍222
9.2.3DSPI工作原理225
9.2.4DSPI使用实例228
9.3EZPORT模块232
9.3.1EZPORT概述232
9.3.2EZPORT命令集233
9.3.3EZPORT使用实例236
第10章I2C模块介绍与应用
10.1I2C协议简介243
10.2I2C模块框图及寄存器介绍245
10.3I2C模块初始化流程247
10.4I2C模块中断处理流程249
10.5I2C模块应用实例——基于NicheTask的LCD驱动257
第11章FlexCAN控制器
11.1FlexCAN控制器寄存器简介261
11.1.1FlexCAN模式寄存器261
11.1.2FlexCAN控制寄存器261
11.1.3自由计时器262
11.1.4接收屏蔽寄存器262
11.1.5错误计数器262
11.1.6错误和状态寄存器262
11.1.7消息缓冲中断屏蔽寄存器262
11.1.8消息缓冲中断标志寄存器262
11.1.9消息缓冲262
11.2CAN外部功能引脚简介264
11.3CAN的中断控制265
11.4FlexCAN应用向导265
11.4.1CAN总线位时序的计算265
11.4.2FlexCAN模块的振荡器容许公差268
11.5CAN底层驱动简介272
11.5.1软件架构272
11.5.2API函数简介273
11.5.3API函数样例284
第12章DMA与eDMA控制器介绍与应用
12.1DMA控制器286
12.1.1DMA控制器概述286
12.1.2DMA寄存器介绍287
12.1.3DMA控制器原理289
12.1.4DMA使用实例292
12.2eDMA控制器296
12.2.1eDMA控制器概述297
12.2.2eDMA寄存器介绍297
12.2.3eDMA控制器原理299
12.2.4eDMA应用实例300
第13章ColdFire内置定时器
13.1ColdFire的定时器基本介绍308
13.2通用定时器308
13.2.1通用定时器的输入捕捉模式308
13.2.2通用定时器的输出比较模式311
13.2.3通用定时器的脉冲计数模式313
13.2.4通用定时器的PWM功能314
13.3可编程中断定时器315
13.3.1可编程中断定时器概述315
13.3.2应用实例315
13.4DMA定时器316
13.4.1DMA定时器概述316
13.4.2应用实例318
13.5实时时钟模块RTC319
第14章脉宽调制模块
14.1简介322
14.2PWM寄存器介绍323
14.2.1PWM使能寄存器323
14.2.2PWM极性控制寄存器323
14.2.3PWM时钟源选择寄存器323
14.2.4PWM时钟预分频选择寄存器323
14.2.5PWM中央对齐使能寄存器324
14.2.6PWM控制寄存器324
14.2.7PWM比例寄存器A和PWM比例寄存器B324
14.2.8PWM通道计数器324
14.2.9PWM通道周期寄存器325
14.2.10PWM通道占空比寄存器325
14.2.11PWM关闭寄存器325
14.3功能介绍326
14.3.1PWM时钟源选择326
14.3.2PWM定时器327
14.4PWM使用实例332
第15章通用异步收发器
15.1UART模块概述344
15.2UART工作简介345
15.2.1异步通信的数据格式345
15.2.2UART的通道工作模式345
15.2.3UART的中断347
15.2.4波特率计算348
15.2.5DMA操作UART收发348
15.2.6UART多点通信349
15.3UART的寄存器350
15.4UART的应用352
15.4.1UART配置流程352
15.4.2例程352
15.4.3UART外围硬件设计357
参考文献360 |