ColdFire系列处理器介绍
飞思卡尔32位处理器分为PowerPC系列、ColdFire系列以及DragonBall系列等。ColdFire系列是重要的组成部分之一,它可以应用于工业控制、仪器仪表、民用产品、网络产品等领域。ColdFire系列具有很好的性价比,它的价格从2美金到20美金不等。ColdFire系列处理器拥有许多开发工具并为使用者提供了一些现成的解决方案,这使得使用者能够快速地开发出自己的应用产品。
ColdFire处理器有V2核和V4核之分,52系列为V2核架构,54系列为V4架构。下面以V2核为例介绍其性能:
V2核拥有变长的RISC指令集;有2个独立的流水线;用3个长字的FIFO缓冲区将流水线彼此分离;32位的内部地址总线支持4GB的线性地址空间;32位数据总线;16个用户可用的32位通用寄存器;它支持高级语言结构的优化等许多性能。
MCF527X系列主要有MCF5270到MCF5275处理器,它主要适用于远程监控、数据安全加密设备、以太网集线器、家用路由器等产品。其主要特点是:
V2 ColdFire内核,在166MHz时钟频率下可具有159MIPS的处理能力;32 32位的增强型乘法累计单元以及硬件的除法器;具有8KB或16KB字节的可配置指令/数据高速缓存;具有丰富的外设接口;封装形式分为196管脚的BGA和256管脚的BGA封装。
MCF523X系列产品主要有MCF5232、MCF5235等,它的最大特点是增加了增强型的时序处理单元(eTPU)。该功能特别适用于网络通信安全的产品。它也是其V2
ColdFire内核结构。
MCF547X系列和MCF548X系列产品的主要特点是使用第四代增强型ColdFire内核(V4e)。它们特别适用于工具自动化、流程控制、机器人、医疗仪器等。
除了上述处理器外,飞思卡尔ColdFire系列还包括最早得到使用的MCF5272处理器,集成了以太网媒体接入控制器(MAC)和网络应用软件的MCF5282处理器,以及集成外设和增强型乘法累加器的MCF5249处理器等。
μCLinux应用程序开发
目前所使用的ColdFire编程环境主要有两种,下面以MCF5249开发板为例,介绍μCLinux的运行与运用。
μCLinux应用程序开发
1. 建立宿主机开发环境
开发时使用宿主机上的交叉编译、汇编及链接工具形成可执行的二进制代码,然后把可执行文件下载到目标机上运行。
μCLinux的硬件开发环境主要有宿主机和目标板。宿主机建议安装RedHat9.0版,目标板可选用MCF5249、5282、5272等。宿主机和目标板之间的连接可以采用并口线、串口线或者直连的网线。
2. 开发模式
首先在宿主机(PC机)上调试通过后,再移植到目标板上。这种方式下可以使用gdb调试工具。移植主要涉及到函数库问题以及改动Makefile以适应不同的目标板。通常采用直接在目标板上进行开发的模式。将宿主机和目标板通过串口线相连,在宿主机上运行minicom作为目标板的显示终端,挂载宿主机硬盘,直接在目标板上调试应用。
直接在目标板上调试应用程序的方法有以下三种:
(1)打印串口。这是嵌入式系统最常用的调试手段,简单而实用、有效。
(2)使用log记录文件。
(3)gdb调试。
μCLinux驱动程序开发
μCLinux驱动程序开发从应用开发概念层次上看可分为上、中、下三层,最下层为硬件,中间层为嵌入式操作系统、最上层为应用程序。硬件层和嵌入式操作系统之间依靠驱动程序来连接,而嵌入式操作系统与应用程序之间通过调用来实现。
Linux下,驱动程序是靠设备驱动程序来实现的,Linux将不同的设备分归为三类:字符设备、块设备和网络设备。字符设备中常见的有串口、显示器、打印机等;块设备中常见的有硬盘、磁盘、光盘等;网络设备一般为各种网络接口。
μCLinux应用实例
基于 μCLinux的QSPI数据采集
串行外围接口(SPI)是飞思卡尔公司提出的同步串行外设接口,它允许CPU与各种外围接口器件以串行方式进行通信、交换信息。QSPI模块提供队列传输性能的串行外围接口。
从 QSPI结构上看,QSPI模块有7个信号引脚,其中4个是片选信号。它有80个字节的QSPI RAM。它的控制逻辑与内部总线相连。队列控制区与地址寄存器相连。4个外围设备片选信号用于选择哪一个外部器件与QSPI通信。片选信号只作简单的片选,但可通过外部4~16译码器来控制多达15个端口。
对于32位ColdFire处理器可以采用三种方式控制QSPI(以MCF5249为例),它们分别是:
1、裸机方式,即不需要μCLinux的支持,直接MCF5249的QSPI寄存器进行设置。
2、在μCLinux中直接设置QSPI寄存器,以用户应用程序的方式控制QSPI操作。
3、以μCLinux驱动形式加入QSPI控制程序,同时为用户提供QSPI接口。用户通过所提供的接口对QSPI进行设置控制。
本文的数据采集方案是第3种方法。
基于μCLinux的USB数据存储
基于μCLinux的USB数据存储结构如图1所示,其中MCF5249开发板作为USB
HOST端,U盘作为存储介质,可以实现数据灵活的存储与移动。
图1 基于μCLinux的USB数据存储结构(略)
μCLinux中的USB驱动主要模块为:
要实现对U盘的支持,需要对μCLinux进行如下设置:在
μCLinux目录下执行make menuconfig,进入μCLinux配置界面。
MCF5282EVB板bootloader移植
Bootloader操作模式有两种。
启动加载模式:这种模式也称为自主模式,即Bootloader从目标机上的ROM上将操作系统加载到RAM中运行,整个过程并没有用户的介入。
下载模式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从宿主机下载映像。从宿主机下载的映像通常先被保存到目标机的RAM中,然后再写到目标机的ROM中。
MCF5282EVB板Bootloader移植的主要文件如图2所示。由于MCF5282是Coldfire系列微处理器,所以它与其他型号的Coldfire微处理器有相似之处。对片内外设的控制寄存器读写方式与MCF5206相似;而片内外设与MCF5272非常相似,都有QSPI、QAD、FEC。
图2 MCF5282EVB移植的主要文件(略)
本文网址:
http://seminar.chinaecnet.com/050920/jchf.asp
问答选编
问:ColdFire在移植μCLinux后的调试过程中,是否可
以使用专用仿真器?
答:μCLinux 的调试过程中,可以用评估板(EVB),仿真
器比较少用。
问:ColdFire好像没有内嵌的ROM,一般应用需要扩 展的ROM会有多大?
答:最大外加Flash或ROM可扩展至4GB (32-Bit ad- dressing)。
问:ColdFire是否能用在电机控制领域,如三相异步 电机?另外,该芯片的抗干扰能力如何?该系列 主要用于什么场合?
答:Coldfire 可以用在电机控制领域,例如MCF5235 中有eTPU,在电机控制中很有。ColdFire网页(http:/
/ www.freescale.com.cn/coldfirefamily/)上有电机控 制应用例子。
问:基于ColdFire的处理器是否支持QNX操作系统?
答:ColdFire的处理器可支持QNX操作系统。
问:我们正在使用MCF5249+uμCLinux做电力设备的 开发,但是静电测试通过不了,在干扰下CPU容 易死锁,重新复位才能恢复,MCF5249在工业应
用上有什么需要注意的吗?有没有工业应用的 范例?
答:你如果使用了QFP封装的芯片,静电测试会受 到较大干扰,若是BGA封装能好很多。为了减 少干扰,应紧凑设计电路,Flash和RAM的管脚离
MCU要近。电路的接地牢靠,电源滤波要好。如 果能够加一些屏蔽就更好了。另外,如果在工业 上要求MCU主频不高的情况下,可适当降低系
统时钟频率。
在工业应用方面,有客户做过一些电力控制设备。 但目前这颗芯片主要用于消费领域,如mp3等。
问:我用MCF5272做多路数据采集,要扩展16个串 口。现在硬件已经设计好了,需要添加串口设备 驱动,需在serial.c中如何改动?
答:首先必须熟悉uμCLinux的驱动编程,也就是了解 uμCLinux对设备的管理方法,而后才是如何具体 编写驱动程序,请参阅《ColdFire系列32位处理
器与Linux应用》 。
问:对于多串口服务器的开发哪一系列较为合适?
答:MCF523x有3个串口,如果再要多一些,eTPU 亦 可作 UART用。请参考www.freescale.com/etpu。
问:在uμCLinux下如何添加应用程序的过程?
答:(1)用串口和网线将宿主机和目标板连;
(2)在宿主机上uμCLinux/user/下创建应用程序目录, 然后编辑user下的Makefile,将该应用程序的目 录加入编译链表;编辑自己的C代码文件;返回
uμCLinux 目录,执行make 进行编译;
(3)在宿主机上启动minicom 作为目标板的仿真 终端;
(4)mount映射宿主机硬盘根目录/到板子的/mnt 目录下;
(5)目标板启动后,在minicom下执行:cd /mnt/…../ 应用程序,调试信息通过串口打印在宿主机的 minicom
屏幕上,这样便可进行应用程序的调试。 有问题,便切换去编辑编译。这样反复调试、更 改、编译再调试,而不必烧写板子,直至程序工 作正常;
(6)调试通过后,用gdbtftpflash 下的./flash 将最终定 版的image.bin烧写到板子上,则creat就会出现
在板子的/bin目录下。
问:可以跑uμCLinux的ColdFire单片机I/O引脚最多有 多少个?它们有没有中断能力?
答:I/O引脚多少要看哪款Coldfire产品而定,它们都 可以有中断能力。
问:我以前做过一个ARM+uμCLinux的项目,用的是 GUN的工具链进行编译uμCLinux内核的,请问Col- dFire单片机下运行的uμCLinux需要用什么编译器
编译?
答:也是用GNU的工具链就可以,当然需要充分利 用Makefile文件。
问:uμCLinux为开发者提供了哪些工具?有哪些特殊 的功能?硬件支持特性如何?
答:Linux中相关的开发工具,uμCLinux中大部分都可 以提供,不过很多都是针对目标板的,比如针对 ColdFire系列的交叉编译工具等。uμCLinux的硬件
支持特性很好,因为很多人员已经做了各种体系 结构上的uμCLinux的移植,应用比较成熟。
问:ColdFire单片机只能在uμCLinux上使用吗?它还 可以在除uμCLinux之外的什么环境中使用?
答:除了uμCLinux环境,ColdFire还可在ARC、Quadros、 Green Hill Software等环境下运行。详细信息可参
考我们产品手册的“Board Support Package” 部分。
问:ColdFire单片机有USB功能吗?如果有,是用的 内部硬件USB还是要用软件来做协议栈? 答:有,是内部硬件USB 2.0
Device。明年初更会推 出包含USB 2.0 OTG。
问:如何用bdm方式来调试CodlFire,bdm调试器的 电路是如何的?能否免费得到?网上能找到bdm 调试器的原理图吗?
答:bdm调试资料可以在www.uμCLinux.org中找到。网 上能找到bdm调试器的原理图。
问:ColdFire单片机在uμCLinux系统下的实时性处理 工作效率怎样?能否作为并行的同步处理器使用?
答:uμCLinux本身不适合用于实时性很高的场合。在 ColdFire系列中,建议采用V4核的芯片,配合高 效的操作系统,可以作为并行的同步处理器使用。
问:如何在uμCLinux下使ColdFirea单片机效率更高, 资源利用率最低?
答:首先必须熟悉ColdFire体系结构;然后可以对 uμCLinux中相对于ColdFire体系结构的底层代码的 优化来提高其工作效率;对于资源利用率,可以
通过选用uμCLinux的RAM和Flash两种不同的工 作方式来进行相关资源的权衡,还可以通过裁 减uμCLinux的方法来减少资源的利用。
问:我现在正在做Linux下的USB设备驱动,能否给 一些建议 ?
答:(1)深刻理解USB工作原理;(2)具备Linux/uμCLinux 驱动开发能力;(3)最好借鉴USB驱动相关例子。
问:我将一个I/O引脚设置为中断输入方式,当引脚 输入电平跳变时产生了中断,那么在uμCLinux系 统中我的这段中断服务程序应该写在哪里呢?
答:可写在中断服务程式中。
问:bootload怎样烧入Codfire?
答:在飞思卡尔的网站上下载一个Cfflasher的程序, 装到windows,再连接一跟BDM电缆到目标板, 执行Cfflasher进行烧写。由于Cfflasher指定了某
一款flash,所以你的目标板上必须是跟开发板 相同的flash 类型。但是,很多情况下,你目标 板上的flash是自选的,烧flash需要一些技巧。
一,你可买一个专用烧写软件,这软件需支持BDM 和CodeFire。能够配制MCU和Flash的类型。市 面上有此类软件卖。二,自己编写一个这样的程
序。比如你在CodeWarrior下写一个RAM版本的 软件,用BDM下载到RAM里执行,该程序可以通 过网络或者串口将bootload烧到Flash。
问:uμCLinux在实现多个进程时如何实现数据保护?
答:uμCLinux因没有用MMU,数据保护可能较难,最好 做好memory map的设计。
问:如何快速将uμCLinux移植到ColdFire上?
答:只要到uμCLinux.org网站上下载源码和工具,再有 一个BDM和开发板即可。
问:Coldfire 的功耗为多少?
答:ColdFire 有一系列的产品,不同的系列有不同的 功耗。MCF5249的功耗为1.3mW/MHz。
问:我有一个SPI装置,通讯资料长度为24bits,我该 如何设计ColdFire的QSPI?
答:ColdFire的QSPI硬件已经确定,所以只能按照实 际需求通过软件对其进行设置就可以了。
问:能否使用普通的Linux系统,如RedLinux?
答:在嵌入式系统下无法使用RedLinux。
问:uμCLinux的内核加载方式如何进行?闪存加载和 内存加载哪种较好?
答:对嵌入式系统,内核一般是被压缩于Flash memory, 在这种情形下内核将被Bootloader解压加载到内 存,对于ColdFire来讲bootloader是colilo。
|