关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > MCF51JM128的类U盘方式在线编程设计

MCF51JM128的类U盘方式在线编程设计

作者:时间:2009-07-09来源:网络收藏

引 言
在线编程(In-Circuit Programming,ICP)是目前普遍应用的一种速度较快的MCU编程方式。对于笔者使用的Freescale半导体公司的8位MCU来讲,通过芯片本身的串行通信接口进行在线编程的速度比使用芯片自带的MON08或BDM接口进行编程的速度要快得多。除了使用串行通信接口进行编程,由于自带USB 模块的芯片增多,使用USB接口进行在线编程速度更快。同时,由于可以使用USB供电,所以使用的电缆更少。
但笔者也发现,大部分在线编程系统都包含了PC方程序和MCU方程序两部分,在线编程时需要运行PC方的程序方可进行,但很多时候会遇到因主机或操作系统平台更换而引起PC方程序无法运行的情况。针对此种问题,笔者尝试在Freescale半导体公司新推出的带有USB模块的芯片上实现了类U盘方式的在线编程功能:像U盘一样直接将目标文件放入便可实现编程,省却了PC方程序,方便了用户实际使用。
(以下简称“”)是Freescale半导体公司于2008年推出的一款Coldfire V1内核系列的微控制器,该芯片主要特点是内含一个集成的USB控制器,支持USB2.0全速主机、设备和On-The-Go。这种配置一般出现在高端微处理器中,在其他微处理器中很少出现,可以说是JM128非常有竞争力的特色。

本文引用地址:http://www.amcfsurvey.com/article/202682.htm

1 设计思路
实现类U盘方式的在线编程功能,主要的工作在于实现JM128的类U盘功能。笔者在学习期间参与过在线编程系统的开发,其中一些已有的功能模块可以借鉴使用。该设计的主要思路是,通过开发板上的某引脚状态判断是否进入在线编程状态,若进入则对USB模块进行初始化,完成与PC机的U盘枚举的交互工作。 JM128不断查询PC方对U盘的操作,用户此时可打开U盘将目标文件粘贴,JM128一边接收目标代码数据包一边对数据包进行分析,若符合要求则对 Flash编程操作,编程结束后再接收下一包数据。这种U盘可以称为“类U盘”而不是真正的U盘,因其并不具有与U盘相同的存储功能。

2 软件设计
在线编程系统的软件部分主要包括Mass Storage类协议、FAT16文件系统、S19文件解析和Flash驱动模块的设计。Mass Storage类协议和FAT16文件系统用于实现U盘功能,是软件实现的重点。Flash驱动代码的编写可以参考JM128参考手册“Flash存储器”一节。
2.1 Mass Storage类协议的实现
Mass Storage类协议需要实现以下部分:一是在设备枚举阶段,提供Mass Storage-类协议描述符,这样主机就可识别该设备为海量存储型设备;二是在数据传输阶段,实现Bulk-Only(批量传输)协议;三是实现SCSI命令集。
2.1.1 Mass Storage类协议描述符
USB主机通过枚举过程获得的USB设备描述符来获得设备类型和其他信息,并根据这些信息建立通信。这些描述符包括:设备描述符、配置描述符、接口描述符和端点描述符。
JM128芯片USB模块作为设备控制器时共有16个双向端点(endpoint),每个端点的每个方向都使用双缓冲区来达到最大的传输吞吐量。本设计中使用了3个端点。其中端点0为双向控制端点,用于控制传输,枚举过程中USB主机仅与该端点进行交互,获得信息。端点1和端点2用于Bulk-Only传输:端点1为IN端点,用来传输数据至PC方;端点2为OUT端点,用来接收PC方发送过来的数据。这些在描述符中都有体现。
2.1.2 批量传输协议的实现
当设备被识别为Bulk-Only的海量存储设备后即进入批量传输方式。在此方式下,USB主机与设备间的所有数据均通过Bulk-In和Bulk-Out来进行传输,不再通过控制端点传输数据。
在Bulk-Only传输方式中,USB主机和设备之间传送3种数据,CBW(Command Block Wrapper,命令块包)、CSW(Command Status Wrapper,命令状态包)和普通数据。CBW中的命令格式遵从SCSI传输命令集,USB设备需要分解CBW中包含的指令并执行相应命令,并向主机返回反映当前命令执行状态的CSW。USB设备方Bulk-Only传输流程如图1所示。


上一页 1 2 下一页

关键词: MCF 128 51 JM

评论


相关推荐

技术专区

关闭