32位ColdFire系列MCU学习开发资源与工具苏州大学计算机科学与技术学院王宜怀2011年8月V2.02一、目标定位目标:以32位ColdFireMCUs为蓝本讲述嵌入式系统软件与硬件基础,让学生理解并初步掌握嵌入式系统的基本开发方法。【什么是嵌入式系统软件与硬件基础?{学习目的是利用MCU芯片设计嵌入式应用产品硬件,编写底层及应用软件}→{基础是理解基本硬件电路、底层驱动及软件架构}。操作系统是辅助工具。】3基本要求(及格):理解硬件最小系统原理,掌握基本模块的通用知识(含硬件),从一般意义掌握基本编程原理,理解底层驱动程序编程方法,看懂样例程序,正确使用样例。提高要求(良好):在基本要求基础上,能够理解底层驱动程序编程方法,可根据样例程序的范例,正确编写自己的应用程序。高级要求(优秀):在上述要求的基础上,透彻理解底层驱动程序编程方法,能够给予类似MCU的软硬件开发环境开发软硬件并予以移植等。4基本做法:入门程序后,选做一个逐渐增加功能的作业,要求学员完成。先导基础:(1)硬件基础:数字电路、模拟电路。(2)MCU软件基础:C语言。(3)PC软件基础:一门高级语言。5为什么要有相关基础?(1)硬件基础:理解基本硬件原理。(2)MCU软件基础:使用C语言编写MCU软件。(3)PC软件基础:通过PC机的屏幕操作发出MCU控制对象的运行指令,直观显示MCU的有关工作情况。6如何对待基础较弱问题?(1)自行安排一至两次的硬件补课,简要提纲式阐述。(2)通过具体内容逐渐补缺,不能要求首先补足基础。7二、现有教学资料教材:电子工业出版社2009年出版《基于32位ColdFire构建嵌入式系统》配套光盘(网上光盘):开发环境软件、本书的所有实例程序、实验指导书所涉及的源程序、相关芯片的技术手册、硬件评估板的技术资料及示例程序等。网址:年出版《基于32位ColdFire构建嵌入式系统》介绍ColdFire系列MCU的基础知识与应用开发方法。芯片入门的方法9一般来说,学习一个新的MCU芯片,若用C语言进行编程,比较快速的学习过程是:(1)了解性能及内部主要功能模块与存储空间的地址分配。(2)了解基本的编程结构、编程模式及寻址方式。(3)了解中断结构。(4)了解芯片的引脚的总体布局情况,掌握硬件最小系统电路。(5)理解第一个工程的结构,理解工程中各个文件的基本功能。一般来说,第一个工程为一个简单的小程序,如利用通用I/O模块编程控制几个发光二极管,主要目的是给出程序框架和工作过程。(6)进行实际环境的编译(compile)、链接(link)生成可以下载到芯片内部Flash存储器中的程序(可以运行的机器码),基本理解列表文件、机器码文件。(7)一定要有硬件评估环境,这是学习新MCU的必需品。这样就可将程序利用写入调试器下载到目标MCU中,在目标板上,观察运行情况。随后,可进一步利用嵌入式软件的打桩调试技术,即在被测程序代码中插入一些函数或语句,利用这些函数或语句产生可在硬件板上显示物理现象,供观察程序运行情况之用。(8)从整个工程组成、各个文件、写入Flash存储器的机器码等角度,透彻理解第一工程的执行过程。至此,就算“入门”了。以后逐步学习各个功能模块就方便了。10三、资料结构四、ColdFire系列微处理器概述1996年、32位68K体系结构的延续5-25美元、10-400MIPSV1内核是ColdFireV2内核的简化版本V3内核包括优化的指令预取流水线,分支预测能力,和更高的操作频率V4内核的微体系结构和V3内核相比,性能提高了2.8倍,拥有更加广阔的应用。1.MCF5223x系列微控制器存储器映像与编程结构学习一个新MCU芯片的过程:(1)了解性能及内部主要功能模块与存储空间的地址分配。(2)了解基本的编程结构、编程模式及寻址方式。(3)了解中断结构。(4)了解芯片的引脚的总体布局情况、硬件最小系统电路。(5)理解第一个工程的结构、工程中各个文件的基本功能。(6)编译(compile)、链接(link),理解列表文件、机器码文件。(7)借助硬件评估环境,重复练习。(8)理解第一工程的执行过程。2.MCF5223x性能概述与内部结构简图3.MCF5223x性能概述与内部结构编号Flash/SRAM内部主要功能模块封装速度MCF52230128/32KBUART、I2C、QSPI、A/D、FECEPHY、DMA、16/32/PWM定时器80/112LQFP60MHzMCF52231128/32KB与MCF52230相比增加FlexCAN模块80/112LQFP60MHzMCF52232128/32KB与MCF52230相同80LQFP50MHzMCF52233256/32KB与MCF52230相同80/112LQFP60MHzMCF52234256/32KB与MCF52230相比增加FlexCAN模块112LQFP121MAPBGA60MHzMCF52235256/32KB与MCF52230相比增加FlexCAN模块及密码加速协处理器112LQFP121MAPBGA60MHzMCF52236256/32KB与MCF52230相同80LQFP50MHz4.MCF52233的存储器空间地址映像MCF52233的存储器空间地址映像地址范围空间大小实际的物理对象0x8000_0000~0xFFFF_FFFF2GB未使用0x4000_0000~0x7FFF_FFFF1GB内部外设系统0x2000_8000~0x3FFF_FFFF511.96875MB未使用0x2000_0000~0x2000_7FFF32KBRAM0x0004_0000~0x1FFF_FFFF511.75MB未使用0x0000_0000~0x0003_FFFF256KBFlash存储器5.用户模式与管理员模式均可操作的寄存器HC08/S08的基本模块16两种执行指令模式:用户模式和管理员模式两种模式均可操作的寄存器:8个数据寄存器(D7~D0)、8个地址寄存器(A7~A0)1个32位程序计数器(PC)、1个8位条件码寄存器(CCR)仅管理员模式操作的寄存器:状态寄存器(SR)管理员堆栈指针(SSP)向量基址寄存器(VBR)RAM基址寄存器(RAMBAR)、FLASH基址寄存器(FLASHBAR)内部外设系统基址寄存器(IPSBAR)Cache控制寄存器(CACR)两个访问控制寄存器(ACR0、ACR1)6.MCF5223x系列微控制器编程模式寄存器直接寻址方式立即寻址方式地址寄存器间接寻址后增地址寄存器间接寻址预减地址寄存器间接寻址16位偏移量的地址寄存器间接寻址变址和8为偏移量的地址寄存器间接寻址16位偏移量的程序计数器间接寻址变址和8位偏移量程序计数器寻址绝对短数据寻址和绝对长数据寻址。7.MCF5223x系列微控制器寻址方式异常:是处理器强行从正常的程序执行切换到由某些内部或外部条件所要求的处理任务上去,这些任务优先于处理器正在执行的任务的。引起异常的外部条件:来自外围设备、硬件断点请求、访问错误和复位等;引起异常的内部条件:指令、不对界错误、违反特权级和跟踪等。异常向量表(EVT):共有256个8.MCF5223x系列微控制器的异常和中断控制9.MCF52233的引脚封装10.MCF52233的硬件最小系统10.MCF52233的硬件最小系统231.焊接和测试硬件最小系统2.焊接和测试指示灯模块11.硬件最小系统测试方法切忌焊接多个模块后再进行测试!25五、第一个样例程序及ColdFire工程组织1.通用I/O接口基本概念及连接方法•I/O接口的概念:即输入输出接口,是微控制器同外界进行交互的重要通道。•通用I/O:记为GPIO,即基本的输入/输出•上拉下拉电阻与输入引脚的基本接法•输出引脚的基本接法2613个GPIO口引脚复用寄存器数据方向寄存器端口输出数据寄存器2.MCF52233的通用I/O接口编程结构ColdFireGPIO编程的基本原理27引脚复用寄存器PAR端口输出方向寄存器DDR端口输出数据寄存器PORT引脚数据置位寄存器SET数据清零寄存器CLR引脚线或寄存器PWOR引脚驱动能力寄存器PDSR3.GPIO模块寄存器284.CodeWarrior开发环境简介3个版本:特别版(SpecialEdition)标准版专业版功能模块:编辑器、源码浏览器搜索引擎、构造系统调试器、工程管理器293.3CodeWarrior开发环境简介3.3.2CW环境安装与设置安装后上网注册305.三合一写入器316.核心板327.CW工程文件组织模板(1)链接文件linker.lcf(2)启动文件setup.s(3)映像寄存器定义文件mcf52233.h(4)异常向量表Vectors.s的定义(5)数据类型别名定义文件Type.h(6)通用函数头文件GeneralFun.h(7)总头文件Includes.h338.CodeWarrior生成的文件工程文件编译、连接可执行连接格式(.elf)目标代码文件(.S19)存储器分配(elf.xMAP)34S01E00002E2F4F424A2F4330315F4447313238B3CCD0F2BFF2BCDC2E733139BCS1134000A7CF1FFF79003C1640F01801AE1D06181B…S113FFF0400A400A400A400A400A400A400A4000B7S9034000BC目标代码文件是以S记录(八种)格式表示的机器码文件类型记录长度地址编码/数据校验和2字节2字节2、3或4字节0~n字节1字节9.S19文件格式分析3510.指示灯闪烁C工程在CW环境中的文件组织36GPIO构件GPIO构件头文件GPIO.hGPIO构件源文件GPIO.cLight构件Light构件头文件Light.h(包含GPIO.h)Light构件源文件Light.c11.编写指示灯头文件和源文件37一盏灯交替亮、暗Light_Run灯接TC口的1引脚两盏灯交替亮、暗Light_Run灯接TC口的1引脚Light_Error灯接TC口的2引脚三盏灯交替亮、暗Light_Run灯接TC口的1引脚Light_Error灯接TC口的2引脚Light_Link灯接LD口的2引脚12.编写主程序指导思想3813.第一个C工程的执行过程(1)从复位向量处取出程序执行的首地址,跳转并按该地址执行。(2)执行setup.s文件中的_asm_startmeup函数,进行系统的初始化,并最终跳转到main主函数入口继续执行。(3)在系统带电的状态下,硬件中断机制始终开启,并实时的“监听”内外环境而恰当地激发特定的事务处理过程。3914.CW环境下添加中断使用中断的流程:1.写SR开全局中断2.设置某中断LEVEL和PRIO,写掩码3.编写中断服务程序,写异常向量表4.初始化并运行程序。六、异步串行通信与直接存储器访问DMA•异步串行通信的基础知识•MCF52233的UART模块的物理结构•MCF52233的UART模块的编程结构•基于构件方法的UART编程•ColdFire第一个带有中断功能的实例•MCF52233的四通道DMA控制器•MCF52233的DMA编程要点•基于构件的带DMA的UART编程实例40七、I/O的基本应用——键盘、LED、LCD41键盘、LED、LCD:作为I/O的基本应用来讲解。同时,它们也是嵌入式系统中的重要输入/输出部件。八、MCF52233的AD转换模块•AD转换的基本问题•MCF52233的AD转换结构与特性•MCF52233的AD模块编程寄存器•基于构件的AD编程•MCF52233AD模块编程实例——物理量采集回归系统•常用传感器简介及一个典型信号采样电路设计42九、定时器相关模块及其应用•可编程中断定时器PIT•通用定时器GP