工欲善其事,必先利其器_第1页
工欲善其事,必先利其器_第2页
工欲善其事,必先利其器_第3页
工欲善其事,必先利其器_第4页
工欲善其事,必先利其器_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【开发学院第三期】工欲善其事,必先利其器。---OSBDM-JM60原理浅析】1]2010-04-1113:31写这篇文章前,曾经犹豫少许,因为大家都知道BDM是FREESCALE系列MCU著名的调试接口。所以之前也有很多泰斗级的人物,如邵贝贝教授王宜怀老师等有专著为之作论述。因此本文不对调试原理做很深入的分析[能力也有限,呵呵]。这里只对FREESCALE最新的推出的OSBDM-JM60做一个简单的介绍。技术上如有不妥,凡请赐教。在介绍前先回顾一下官方BDM的历史:TBDML-TurboBDMLight这是一个低成本,开源的调试接口,主要是为HCS12系列MCU开发的。它采用MC908JB08作为主控制器。通过软件升级可以到MC908JB16。TBLCF-TurboBDMLightColdfire:这也是基于MC908JB16的调试器,主要是针对ColdfireV2,V3,andV4系歹。MCU开发。OSBDM-OpenSourceBDM:它同样是基于MC908JB16的调试器接口,主要为目标为9S08,9RS08,andColdfireV1开发的。OSBDM-JM60-9S08JM60BasedOSBDM:它是基于9S08JM60的调试器接口,兼容以前所有的BDM功能。同时还可以为DSP56800E处理器提供JTAG接口。可以看出最新款的调试器OSBDM-JM60也是目前为止功能最强劲的。这款开源调试器是FREESCALE于去年底推出来的。它的资料可以从以下连接下载。/t5/OSBDM-JM60-Open-Source-BDM-for/OSBDM-JM60-build-20-1-now-available/m-p/48266里面的内容可谓之全,有软件代码[当然上位机的源程序,它还是没有公布的,而是提供库文件,不过这并不会影响我们制作或使用],硬件原理图,甚至BOM清单。如果看明白它的介绍,完全可以按照它的方法制作一个自己的调试器。让我们先从它的硬件构造来分析之:BGND接口:BGND接口为9S08,RS08,andColdfireV1系歹。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则为目标板一则的信号。电源控制: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电压。串口转换:这里用了一个ICL3232串口电平转换芯片。它的功能就是MCU的3V和电脑要的5V之间来回转。这类芯片只要在有串口应用的地方就可以看到它们的身影。虽然我们看到最多的是MAX232芯片。所以就不多说它了。4.VPP生成控制电路:这个电路是为RS08系列的MCU提供FLASH编程电压的,我们都知道对FLASH编程要较高的电压才行。这里为此提供了一个12V的电压。它是通过一个升压块U6tps61041来实现的°tps61041的输入是1.8-6v,输出是28V以下的电压。标准应用是输入3.3/5V,输出12V。正和我们的要求相合。芯片管脚也不多,一共5个,输入[VIN],输出[SW],使能[EN],反馈[FB]和地[GND]。目标板复位电路:这块由3个三极管实现。JM60一侧为TRESET_OUT和TRESET_IN信号,目标板一侧则为TRG_RESET+信号。这个信号又受到+V_TRG的电压控制。CF_V2/V3/V4接口:用两片门电路实现驱动和缓冲。将26针的标准BDM接口和MCU相连接。其它还有就是一些插针,跳线和LED什么的了,这些是对不同系列MCU有不同配置的,看一下它的使用说明可以了,这就不做介绍了。大家早上好,上次写的OSBDM分析,主要分析了一下它的硬件,时隔一周,今天写一下它的软件分析。一.软件架构OSBDM-JlWfiOGDIDLLWindow'^OpenSourceBDMUSBdriverOSBDM-JMOOUSBdriverDLLLlCDSLi(Tittp^.'iiixjsbsourcelorge.n&t/)OSBDM-JM&OPee-USBcafrrtFie叫河£iupdate妣USDIICporiSouire日口mgUngers曰邻「FrwairV口ebg珞FqeblDbcr&ceIZZIOutflSaurreEDMPCS如上图所示,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目录下。

csbdE-JIM6匚bL9EnQ_071L20仍Figure1.3UnzippedOpenSourceBDMPackage:巳docEgd'Bbn白Classic-CWi凸Edbse-CW巳;Mosbdm-hw21Comxinent_DatB-osbdm-s,^j□占osbrim-cjornrr-cirindoc白src□己osbdm-JMSOblndoctods□二Josbdm-pc+[0osbdmuiiIr3^Dsbdrruii_apiosbdmtesteri匚jSource先从整体看一下OSBDM固件的构成,也好使我们对它有一个宏观的认识。csbdE-JIM6匚bL9EnQ_071L20仍USE接口驱动主机命令

姓理模块USE接口驱动主机命令

姓理模块目标很命会处珪模块目标按接口驱动主循环撮控模块如上图所示,整个固件被我们划分成五块。最下面是主程序模块,负责程序启动后的主循环调度。上面的四个小块可以认为是功能模块,其中左边两个小块由于主要和PC机端打交道,所以对所有类型的目标MCU都是适合的。而右边两个由于是和目标MCU关联比较密切,所以不同类型的MCU,所对应的具体文件是不一样的。下面分模块描述一下:主模块里的主要文件是main.c,在MAIN函数里先是初始化USB模块,使能中断,然后进入主循环不断的检查USB状态和处理BDM命令数据。USB接口驱动的主要文件是USB_User_API.c,它主要是对endpoint模块的操作,有三个功能:初始化,接收和发送,这也对应着三个函数:Endpoint_Init(),EndPoint_IN()及EndPoint_OUT()。主机命令处理模块的主文件是cmd_processing.c,这个文件只有一个函数,不过它也有几百行。主要负责PC发过来的BDM命令分析处理,这里将BDM命令分为四大类:系统命令,写内存命令,读内存命令以及外围硬件命令。目标板命令处理模块和接口驱动模块,这两个模块通常是在一个文件中实现的,由于使用的目标MCU不一样,这里对应的处理文件也一样。总的来说,它将目标MCU的处理分了四类分别对应四个文件:

文件名bdin_9S08rcbdiLi__cfvl.cbdin^qf..c-目标mCuHCS0MS08jtagdscFcdfire71/Flex^sgbldfireV2^/4DSCJTAG由于这部分涉及的MCU种类比较多以及BDM的详细命令结构,所以分析起来很困难。这里只是针对我比较了解的COLDFIRE-V2/3/4做个简要的说明,大家有兴趣,可以针对自己用到的目标MCU,专门进行学习分析。bdm_cfv1.c文件中主要分成两部分,前部分是实现了用文件名bdin_9S08rcbdiLi__cfvl.cbdin^qf..c-目标mCuHCS0MS08jtagdscFcdfire71/Flex^sgbldfireV2^/4DSCJTAGH131211ifr9STfl3«321。Operation0R'WOpSize0QA-DExlerreioriWar由割Figune33-lS.BDMCommandFormal所以BDM的16位数据格式都如上图所示组成。图中所涉及的部分如下:Operation:BDM命令代码。R/W:BDM数据传送方向。OPSIZE:操作数尺寸大小。A/D:地址/数据寄存器选择。REGISTER:寄存器号码。附图是一个源文件的功能描述列表,供参考。固件源文件名1相关MCU|功能描述startOS.cJM60复位向量表和启动代码main.c所有应用程序入口,主檐环和处撞cmd_pr<?cessiog.c所有主机命令处理usb_user_apLC,所有USE驱动接口函凝mcu.cJM60JM的初始化和相关硬件支持bdm_9s08.c9S08HCS03/9S0E目标MCU的命令处理bmd_ctvl,cCOLDEIRE-V1COLDFIRZV1/FLEXIS目标MCU的命令处理b<lm_bgnd_dnver.cS08;通用BGNB类型的接口驱动:bdm_cfcCOLEFLE<E^V2^/4;COLDFIREV2/3/4目标MCU的布令处理和接口驱动jUg^dsc.cDSCJTAGDSCJTAG目标MCU的命令处理和接口驱动timer,c所有定时器和时序处理支持uti.c所有一些工具函数和支持s&nalio.c所有串口通道和相关支持向JM60里面烧写程序的工具并不包含在上面的资料中,要到下面的连接下载。HYPERLINK"/webapp/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论