请选择 进入手机版 | 继续访问电脑版

DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5472|回复: 4

[转载] OSBDM-JM60原理浅析

[复制链接]
发表于 2013-11-24 22:31:45 | 显示全部楼层 |阅读模式
源地址 http://www.eefocus.com/yinghuochong/blog/10-04/188045_44b99.html#articletop
OSBDM-JM60原理浅析
                                       

写这篇文章前,曾经犹豫少许,因为大家都知道BDM是FREESCALE系列MCU著名的调试接口。所以之前也有很多泰斗级的人物,如邵贝贝教授王宜怀老师等有专著为之作论述。因此本文不对调试原理做很深入的分析[能力也有限,呵呵]。这里只对FREESCALE最新的推出的OSBDM-JM60做一个简单的介绍。技术上如有不妥,凡请赐教。
在介绍前先回顾一下官方BDM的历史:
TBDML - Turbo BDM Light:这是一个低成本,开源的调试接口,主要是为HCS12系列MCU开发的。它采用MC908JB08作为主控制器。通过软件升级可以到MC908JB16。
TBLCF - Turbo BDM Light Coldfire:这也是基于MC908JB16的调试器,主要是针对Coldfire V2, V3, and V4系列MCU开发。
OSBDM - Open Source BDM:它同样是基于MC908JB16的调试器接口,主要为目标为 9S08, 9RS08, and Coldfire V1开发的。
OSBDM-JM60 - 9S08JM60 Based OSBDM: 它是基于9S08JM60的调试器接口,兼容以前所有的BDM功能。同时还可以为DSP56800E处理器提供JTAG接口。
可以看出最新款的调试器OSBDM-JM60也是目前为止功能最强劲的。
这款开源调试器是FREESCALE于去年底推出来的。它的资料可以从以下连接下载。
http://forums.freescale.com/t5/OSBDM-JM60-Open-Source-BDM-for/OSBDM-JM60-build-20-1-now-available/m-p/48266
里面的内容可谓之全,有软件代码[当然上位机的源程序,它还是没有公布的,而是提供库文件,不过这并不会影响我们制作或使用],硬件原理图,甚至BOM清单。如果看明白它的介绍,完全可以按照它的方法制作一个自己的调试器。
让我们先从它的硬件构造来分析之:
1.BGND接口:
BGND接口为9S08,RS08, and Coldfire V1系列MCU提供一个6针的BGDN命令调试接口。这个接口采用了74LVC1T45双电源转转换器芯片。用于JM60和目标板电压之间的转换。JM60通常是5V电压[用+5V_SW表示],而目标板电压可以是1.8-5.5V[用+V_TRG表示]。JM60通过TBGND_ EN的高低来控制数据转送的方向。这个信号高为JM60输出信号,低则为JM60接收信号。TBGND_OUT为JM60一则的信号,TBGND_IN则为目标板一则的信号。
2.电源控制:
OSBDM提供一个对调试器电源和目标板电源的限流功能。具说USB连到电脑初始化时,电流不是一般的大呀,因为搞这个调试器再把咱的电脑USB口烧了[>500mA],那多悲呀。这是通过一个电源切换芯片mic2026来实现的,它提供一个两路电源选择的功能,它的意思就是一个5V的电源输入,然后输出两路5V电源,而这两路电源是否有输出呢,是受你控制的,你使能那个管脚,那一路就电源就可以用。当然咱用它主要是因为它有一个过流检测的功能。它有两个管脚FLGA和FLGB分别指示+5VSW_FLAUT和+VTRG_FLAUT是否过流。刚才说了,它是一个双电源的芯片,一则是5V电源,为BGND,RS232以及26针的BDM调试口供电。另一则为目标板电源供电。由于目标电压为3.3V,所以又用了一个稳压块TPS79933来将5V转为3.3V。因为这个稳压块是可调的,所以通过调节一下R4,R7的阻值,可以得到1.8-4.5V的+V_TRG电压。
3.串口转换:
这里用了一个ICL3232串口电平转换芯片。它的功能就是MCU的3V和电脑要的5V 之间来回转。这类芯片只要在有串口应用的地方就可以看到它们的身影。虽然我们看到最多的是MAX232芯片。所以就不多说它了。

4.VPP生成控制电路:
这个电路是为RS08系列的MCU提供FLASH编程电压的,我们都知道对FLASH编程要较高的电压才行。这里为此提供了一个12V的电压。它是通过一个升压块U6 tps61041来实现的。tps61041的输入是1.8-6v,输出是28V以下的电压。标准应用是输入3.3/5V,输出12V。正和我们的要求相合。
芯片管脚也不多,一共5个,输入[VIN],输出[SW],使能[EN],反馈[FB]和地[GND]。
5.目标板复位电路:
这块由3个三极管实现。JM60一侧为TRESET_OUT和TRESET_IN信号,目标板一侧则为TRG_RESET+信号。这个信号又受到+V_TRG的电压控制。
6.CF_V2/V3/V4接口:
用两片门电路实现驱动和缓冲。将26针的标准BDM接口和MCU相连接。

1270963017_d72e9295.jpg

  其它还有就是一些插针,跳线和LED什么的了,这些是对不同系列MCU有不同配置的,看一下它的使用说明可以了,这就不做介绍了。

                        大家早上好,上次写的OSBDM分析,主要分析了一下它的硬件,时隔一周,今天写一下它的软件分析。
一.软件架构
1271469753_9228b107.jpg
如上图所示,OSBDM的软件在实际应用中被分成2部分,一个是位于PC端的USB驱动库,这部分是负责将PC上编好的固件程序下载到OSBDM硬件上。它是属于另一个在SF上的叫LIBUSB的开源项目。另一个就是OSBDM硬件上的BDM固件了,它负责整个调试过程中OSBDM的行为。
这里只说一下OSBDM的固件部分,不讨论第一部分。
二.JM60芯片简介
由于此OSBDM是基于MC9S08JM60开发的。所以在介绍软件功能及代码前,我们有必要先了解一下JM60的相关信息。MC9S08JM60是freescale推出的一款低成本高性能的HCS08系列的MCU。它有44,48和64三种管脚封装,根据封装的不同,分别可以提供33,37和51个外部IO口。后面的数字60表示这种MCU有60K的FLASH。另外它有4K的RAM和256字节的USB-RAM。由于它内部带有一个USB控制模块,所以比较合适做USB接口的调试器控制芯片。另外,它的内部还有两个16位SPI控制模块,适合于传送和处理BDM命令。它的USB模块有两部分,一个是它的3.3V供电电压管理,一个就是USB自己的控制,第二部分又分三小块:SIE,ENDPOINT-RAM及TRANSCEIVER。其中SIE叫串行接口引擎,ENDPOINT-RAM就是对内部256字节USB-RAM的管理。
三.源文件列表及模块说明
当我们下载并解压OSBDM的开发包后,我们可以在以下目录找到软件的相关文件,如下图所示,我们要介绍的文件都在OSBDM-SW/OSBDM-JM60/SRC目录下。
1271469763_9f68ca0e.jpg
先从整体看一下OSBDM固件的构成,也好使我们对它有一个宏观的认识。
1271470481_310f6f89.jpg
如上图所示,整个固件被我们划分成五块。最下面是主程序模块,负责程序启动后的主循环调度。上面的四个小块可以认为是功能模块,其中左边两个小块由于主要和PC机端打交道,所以对所有类型的目标MCU都是适合的。而右边两个由于是和目标MCU关联比较密切,所以不同类型
的MCU,所对应的具体文件是不一样的。下面分模块描述一下:
1.主模块里的主要文件是main.c,在MAIN函数里先是初始化USB模块,使能中断,然后进入主循环不断的检查USB状态和处理BDM命令数据。
2.USB接口驱动的主要文件是USB_User_API.c,它主要是对endpoint模块的操作,有三个功能:初始化,接收和发送,这也对应着三个函数:Endpoint_Init(), EndPoint_IN() 及EndPoint_OUT()。
3.主机命令处理模块的主文件是cmd_processing.c,这个文件只有一个函数,不过它也有几百行。主要负责PC发过来的BDM命令分析处理,这里将BDM命令分为四大类:系统命令,写内存命令,读内存命令以及外围硬件命令。
4.目标板命令处理模块和接口驱动模块,这两个模块通常是在一个文件中实现的,由于使用的目标MCU不一样,这里对应的处理文件也一样。总的来说,它将目标MCU的处理分了四类分别对应四个文件:
1271469742_f7c7e313.jpg
由于这部分涉及的MCU种类比较多以及BDM的详细命令结构,所以分析起来很困难。这里只是针对我比较了解的COLDFIRE-V2/3/4做个简要的说明,大家有兴趣,可以针对自己用到的目标MCU,专门进行学习分析。bdm_cfv1.c文件中主要分成两部分,前部分是实现了用SPI总线传BDM的读写命令。后部分提供对JTAG读写目标MCU的支持。BDM的命令格式一般是17位,由1位状态位加16位数据位组成。当接收时,状态位表示这次传输的状态是否有效,或是命令/数据不对。当发送时状态位被保留。
1271469738_51c1cbb6.jpg
所以BDM的16位数据格式都如上图所示组成。图中所涉及的部分如下:
Operation: BDM命令代码 。
R/W: BDM数据传送方向。
OP SIZE: 操作数尺寸大小。
A/D: 地址/数据寄存器选择。
REGISTER: 寄存器号码。

附图是一个源文件的功能描述列表,供参考。
1271469748_970f5575.jpg

向JM60里面烧写程序的工具并不包含在上面的资料中,要到下面的连接下载。
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=DEMOJM&nodeId=016246fNrgVJ4CxpCp2060215D&fpsp=1&tab=Design_Tools_Tab
好啦,到这里,OSBDM原理分析完毕。谢谢收看。

参考文献:
MC9S08JM60.pdf JM60 MCU数据手册
OSBDM-JM60_Users_Guide.pdf OSBDM用户手册
MCF52259RM.pdf MCF52259 参考手册
               
               

发表于 2013-11-25 09:37:02 | 显示全部楼层
真的不错.               
发表于 2013-11-26 19:52:27 | 显示全部楼层
电脑的串口电平可不是5v哦,而是双极性5v-12V .负逻辑。
 楼主| 发表于 2013-11-26 20:45:47 | 显示全部楼层
maithon 发表于 2013-11-26 19:52
电脑的串口电平可不是5v哦,而是双极性5v-12V .负逻辑。

电脑串口输出的是cmos电平
发表于 2015-1-2 13:55:54 | 显示全部楼层
好资料,感谢分享,学习学习,赚积分中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-3-29 03:28 , 耗时 0.105865 秒, 25 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表