DSP C5509A中调用地址总线端口映射当作IO口如何写程序

> > > TMS320C5509A的例程及使用说明TMS320C5509A的例程及使用说明已有 433509个资源相关资源下载专区上传者其他资源DSP热门资源本周本月全部文档信息资源大小:7.55MB上 传 者: () 上传日期:资源类型:源码资源积分:2分评
论:下载次数:3参与讨论:标&&&&签:分&&&&享:文档简介本例程是为学习和评估TI的TMS320C5509A而开发的,主要包含两部分:硬件模板和相应的软件测试。文件列表.BMP----|000005.BMP----|000010.BMP----|000024.BMP----|000025.BMP----|000027.BMP----|000039.BMP----|000059.BMP----|000068.BMP----|000074.BMP----|000078.BMP----|000092.BMP----|000108.BMP----|000109.BMP----|000113.BMP----|000122.BMP----|Thumbs.db.NET Compact Framework .dep----|lcd_lib.o.d----|main.o.d----|twi_i2c.o.d.deps----|ControlResource.Po----|DCU99Editor.Po----|DuplexEditor.Po.eclipseme.tmp----|emulation----|----|PhoneBook.jad----|----|PhoneBook.jarverified----|classes----|----|com----|----|----|north----|----|----|----|phonebook----|----|----|----|----|model----|----|----|----|----|----|Account.class----|----|----|----|----|----|ApplicationException.class----|----|----|----|----|----|Index.class----|----|----|----|----|----|Model$AccountFilter.class----|----|----|----|----|----|Model$IndexFilter.class----|----|----|----|----|----|Model.class----|----|----|----|----|----|Preference.class----|----|----|----|----|----|UserModel.classui----|ConfirmationDialog.class----|DetailInfoUI.class----|Dialog.class----|DialogListener.class----|IndexFunctionUI$ListIndex.class----|IndexFunctionUI.class----|ListMerchantGroupUI.class----|ListPhoneUI.class----|LoginUI.class----|MerchantGroupDetailInfoUI.class----|NewPhoneUI.class----|SearchPhoneUI.class----|Title.class----|UIController$1.class----|UIController$EventID.class----|UIController.class----|WaitCanvas$1.class----|WaitCanvas.class----|WelcomeUI.classPhoneBookMIDlet.class.metadata----|.plugins----|----|org.eclipse.core.resources----|----|----|.projects----|----|----|----|Nios II Device Drivers----|----|----|----|----|.location----|----|----|----|----|.propertieshello_led_0----|.markers----|.propertieshello_led_0_syslib----|.markers----|.properties.root----|112.tree.safetable----|org.eclipse.core.resourcesorg.eclipse.core.runtime----|.settings----|----|org.eclipse.cdt.core.prefs----|----|org.eclipse.cdt.ui.prefs----|----|org.eclipse.ui.prefsorg.eclipse.ui.workbench----|dialog_settings.xml----|workbench.xml.lock.logversion.ini.myeclipse----|CVS----|----|Repository----|----|Root.settings----|CVS----|----|Entries----|----|Repository----|----|Rootorg.eclipse.core.resources.prefs.sopc_builder----|install.ptf.svn----|prop-basepropstext-base----|readme.txt.svn-basetmp----|prop-basepropstext-baseall-wcpropsdir-prop-baseentriesformat.tmp_versions----|dw4002.mod5509programme----|1602----|----|Debug----|----|----|emif_button.map----|----|----|emif_button.obj----|----|----|lcd.map----|----|----|lcd.obj----|----|----|lcd.outlcd.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTDATA0Debug.lkfDebug.lkvEMIF.wksPROG0P_VECTc5509.gelcc_build_Debug.logemif.cmdemif.pafemif.paf2emif.sblemif_button.paf2emif_button.sbllcd.clcd.paf2lcd.pjtlcd.sblreadme.txt240128----|Debug----|----|EmulatorResetTemp.wks----|----|LED.map----|----|LED.obj----|----|LED.out----|----|clk_init.obj----|----|main.obj----|----|sdram_init.objLED.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTDebug.lkfDebug.lkvLED.cLED.pafLED.paf2LED.pjtLED.sblcc_build_Debug.logclk_init.cfunc.hled.cmdmyapp.hsdram_init.czk16.hAD----|AD.CS_----|----|FILE.CDX----|----|FILE.DBF----|----|FILE.FPT----|----|SYMBOL.CDX----|----|SYMBOL.DBF----|----|SYMBOL.FPTDebug----|AD.map----|AD.out----|clk_init.obj----|main.obj----|sdram_init.obj----|util.obj5509.hAD.pafAD.paf2AD.pjtAD.sblDebug.lkfDebug.lkvSY.wksad.cmdc5509.hc55xxdefs.hcc_build_Debug.logclk_init.ccsedu.hfunc.hmain.cmyapp.hperipherals.hscancode.hsdram_init.cutil.cutil.hvectors.asmADDR2GPIO----|Debug----|----|timer.map----|----|timer.obj----|----|timer.out----|----|vectors.objtimer.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPT5509timer.wksDebug.lkfDebug.lkvcc_build_Debug.logreadme.txttimer.ctimer.cmdtimer.paftimer.paf2timer.pjttimer.sblvectors.s55BELL----|5509gpio.CS_----|----|FILE.CDX----|----|FILE.DBF----|----|FILE.FPT----|----|SYMBOL.CDX----|----|SYMBOL.DBF----|----|SYMBOL.FPTDebug----|5509gpio.map----|5509gpio.out----|gpio.obj5509gpio.paf5509gpio.paf25509gpio.pjt5509gpio.sblDebug.lkfDebug.lkvc5509.gelcc_build_Debug.logcsl5509x.libgpio.cgpio.cmdgpio.wksreadme.txtrts55x.libCodec----|Debug----|----|codec.map----|----|codec.obj----|----|codec.outcodec.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.DBF----|SYMBOL.FPTDebug.lkfDebug.lkvc5509.gelcc_build_Debug.logcodec.ccodec.cmdcodec.pafcodec.paf2codec.pjtcodec.sblcodec.wksreadme.txtDM12864----|Debug----|----|emif_button.map----|----|emif_button.obj----|----|lcd.map----|----|lcd.obj----|----|lcd.outlcd.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTDATA0Debug.lkfDebug.lkvEMIF.wksPROG0P_VECTc5509.gelcc_build_Debug.logemif.cmdemif.pafemif.paf2emif.sblemif_button.paf2emif_button.sbllcd.clcd.paf2lcd.pjtlcd.sblreadme.txtEXINT----|Debug----|----|exint.map----|----|exint.obj----|----|exint.out----|----|vectors_exint.objexint.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTDebug.lkfDebug.lkvEMIF.wksIP.paf2IP.sblc5509.gelcc_build_Debug.logemif.cmdemif.pafemif.paf2emif.sblexint.cexint.paf2exint.pjtexint.sblreadme.txtvectors_exint.s55Echo----|Debug----|----|aic23.obj----|----|audio.map----|----|audio.obj----|----|audio.out----|----|i2c.obj----|----|sdram_init.obj----|----|util.objaudio.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPT5509.hDebug.lkfDebug.lkvSY.wksaic23.caudio.caudio.cmdaudio.pafaudio.paf2audio.pjtaudio.sblc55xxdefs.hcc_build_Debug.logi2c.creadme.txtsdram_init.cutil.cutil.hFFT----|Debug----|----|FFT.obj----|----|Fir.map----|----|Fir.out----|----|clk_init.obj----|----|sdram_init.obj1.DATDebug.lkfDebug.lkvFFT.cFFT.c.bakFFT.pafFFT.pjtFFT.wksc5509.hcc_build_Debug.logclk_init.ccsedu.hfunc.hmyapp.hperipherals.hscancode.hsdram_init.ctest.cmd图片.docFIR----|Debug----|----|Fir.map----|----|Fir.obj----|----|Fir.out----|----|IOPin.map----|----|clk_init.obj----|----|demo.hex----|----|demo.map----|----|demo.mxp----|----|hex.bat----|----|hex55.exe----|----|hex5509.cmd----|----|main.obj----|----|sdram_init.obj----|----|vectors.objDebug.lkfDebug.lkvFir.cFir.c.bakFir.pafFir.pjtc5509.hcc_build_Debug.logclk_init.ccsedu.hfir.wksfunc.hmyapp.hperipherals.hscancode.hsdram_init.csina1.datsine.dattest.cmdvectors.asm图片.docFIRLMS----|Debug----|----|FIRLMS.map----|----|FIRLMS.obj----|----|FIRLMS.outDebug.lkfDebug.lkvFIRLMS.cFIRLMS.pafFIRLMS.pjtSY.wkscc_build_Debug.logtest.cmd图片.docGPIO----|5509gpio.CS_----|----|FILE.CDX----|----|FILE.DBF----|----|FILE.FPT----|----|SYMBOL.CDX----|----|SYMBOL.DBF----|----|SYMBOL.FPTDebug----|5509gpio.map----|5509gpio.out----|gpio.obj5509gpio.paf5509gpio.paf25509gpio.pjt5509gpio.sblDebug.lkfDebug.lkvc5509.gelcc_build_Debug.logcsl5509x.libgpio.cgpio.cmdgpio.wksreadme.txtrts55x.libIIR----|Debug----|----|IIR.map----|----|IIR.out----|----|iir.objDebug.lkfDebug.lkvIIR.cmdIIR.pafIIR.pjtIIR.wkscc_build_Debug.logiir.c图片.docKeyboard----|Debug----|----|EmulatorResetTemp.wks----|----|LED.map----|----|LED.obj----|----|LED.out----|----|clk_init.obj----|----|main.obj----|----|sdram_init.objLED.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTDebug.lkfDebug.lkvLED.cLED.pafLED.paf2LED.pjtLED.sblcc_build_Debug.logclk_init.cfunc.hled.cmdmyapp.hsdram_init.cLED_7seg----|Debug----|----|EmulatorResetTemp.wks----|----|LED.map----|----|LED.obj----|----|LED.out----|----|clk_init.obj----|----|main.obj----|----|sdram_init.objLED.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTDebug.lkfDebug.lkvLED.cLED.pafLED.paf2LED.pjtLED.sblcc_build_Debug.logclk_init.cfunc.hled.cmdmyapp.hsdram_init.cRTC----|Debug----|----|rtc.map----|----|rtc.outrtc.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTDebug.lkfDebug.lkvc5509.gelcc_build_Debug.logreadme.txtrtc.crtc.cmdrtc.objrtc.pafrtc.paf2rtc.pjtrtc.sblrtc.wksvectors.objvectors.s55SDRAM----|Debug----|----|5502_FLASH.obj----|----|emif.map----|----|emif.obj----|----|emif.outemif.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPT5502_FLASH.c5502_flash.hDebug.lkfDebug.lkvEMIF.wksc5509.gelcc_build_Debug.logemif.cemif.cmdemif.pafemif.paf2emif.pjtemif.sblreadme.txtSPI BOOTLOAD----|Debug----|----|5509gpio.bin----|----|5509gpio.map----|----|AudioDMA.bin----|----|ConfigTime.bin----|----|burncsi.map----|----|burncsi.obj----|----|burncsi.out----|----|codec.bin----|----|codecLed.bin----|----|timer.bin----|----|vectors_mcbsp.objDebug.lkfDebug.lkvEEPROM.hburncsi.cburncsi.cmdburncsi.pafburncsi.pjtc5509.gelcc_build_Debug.logcsl5509ax.libcsl5509x.librts55x.libvectors_mcbsp.s55Timer----|Debug----|----|timer.map----|----|timer.obj----|----|timer.out----|----|vectors.objtimer.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPT5509timer.wksDebug.lkfDebug.lkvcc_build_Debug.logcsl5509.libreadme.txtrts55.libtimer.ctimer.cmdtimer.paftimer.paf2timer.pjttimer.sblvectors.s55USB----|DSK5509_USB.CS_----|----|FILE.CDX----|----|FILE.DBF----|----|FILE.FPT----|----|SYMBOL.CDX----|----|SYMBOL.DBF----|----|SYMBOL.FPTDebug----|DSK5509_USB.map----|DSK5509_USB.obj----|DSK5509_USB.out----|vectors.objDSK5509_USB.cDSK5509_USB.cmdDSK5509_USB.pafDSK5509_USB.paf2DSK5509_USB.pjtDSK5509_USB.sblDSK5509_USB.wksDSK5509_USBLIB.libDebug.lkfDebug.lkvDescriptors.hGlobal_Maco.hINPUT.txtUSB_FUNCTION.hc5509.gelcc_build_Debug.logcsl5509x.librts55x.libtest.txtvectors.s55WDT----|Debug----|----|wdt.outwdt.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPTc5509.gelreadme.txtwdt.cwdt.cmdwdt.pafwdt.paf2wdt.pjtwdt.sblXF----|Debug----|----|timer.map----|----|timer.obj----|----|timer.out----|----|vectors.objtimer.CS_----|FILE.CDX----|FILE.DBF----|FILE.FPT----|SYMBOL.CDX----|SYMBOL.DBF----|SYMBOL.FPT5509timer.wksDebug.lkfDebug.lkvcc_build_Debug.logcsl5509.libreadme.txtrts55.libtimer.ctimer.cmdtimer.paftimer.paf2timer.pjttimer.sblvectors.s55eeprom----|5509eeprom.CS_----|----|FILE.CDX----|----|FILE.DBF----|----|FILE.FPT----|----|SYMBOL.CDX----|----|SYMBOL.DBF----|----|SYMBOL.FPTDebug----|5509boot.map----|5509eeprom.map----|5509eeprom.out----|eeprom.obj5509eeprom.paf5509eeprom.paf25509eeprom.pjt5509eeprom.sblDebug.lkfDebug.lkvc5509.gelcc_build_Debug.logcsl5509.libcsl5509x.libeeprom.ceeprom.cmdrts55.librts55x.libtest----|12864.out----|1602.out----|240128.out----|7seg_LED.out----|AD.out----|USB.out----|addr2gpio.out----|audio.out----|bell.out----|burncsi.out----|codec.out----|eeprom.out----|exint.out----|gpio_led.out----|keyboard+LED.out----|rtc.out----|sdram.out----|timer.out----|xf.outc5509.gel. Online calibration of Nyquist-rate analog-to-digital converters.pdf..dir.dat.DS_Store.NET Compact Framework mpact Framework ._.DS_Store._CotEditor_346._MacOS_Setup._PortVaR.actionScriptProperties.apriori_config.ccsproject.classpath.config.o.flags.cproject.cvsignore.cxl.depend.dw4002.ko.cmd.dw4002.mod.o.cmd.dw4002.o.cmd.epautoconf.o.flags.exe.file_storage.o.flags.flexProperties.gitignore.htaccess.indent.pro.message.pdf.project.qmake.internal.cache.screenrc.synopsys_dc.setup.synopsys_pt.setup.untf.usbstring.o.flags.vimrc.xhdl3.xref使用说明.pdf相关帖子大学堂最新课程请选择理由 辱骂 色情 广告提交若举报审核通过,可奖励2下载分举报人:被举报人:星落之殇举报的资源分:2* 类型:请选择类型资源无法下载资源分类不正确资源无法使用标题与实际内容不符含有危害国家安全内容含有反动色情等内容含广告内容版权问题,侵犯个人或公司的版权其他* 详细原因:回到顶部EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱service(.cn 或通过站内短信息或QQ:联系管理员okhxyyo,我们会尽快处理。C5509a通过HPI接口下载程序的问题,求教!! - C5000(TM) 超低功耗 DSP - 德州仪器在线技术支持社区
C5509a通过HPI接口下载程序的问题,求教!!
发表于4年前
<input type="hidden" id="hGroupID" value="30"
通过HPI接口下载程序到5509a中时,遇到比较奇怪的问题,希望大家看看,我的步骤是不是有什么地方不对的?&/p>
&p>项目中CPU和c5509a之间是16位的HPI接口&/p>
&p>下载程序的过程基本上是按照SPRA375F的顺序来做的:&/p>
&p>1.将5509a芯片复位;&/p>
&p>2.检测到5509a的IO4管脚产生下降沿;&/p>
&p>3.然后开始通过HPI接口将bin文件写入到HPI接口可以操作的DRAM中,SPRA375F上推荐从0x100这个地址开始烧写程序。我的bin文件很小大概只有2k左右(只是用来闪灯,以便测试c5509a bootloader是否成功),也是从0x100这个地址往里面写。这里有个问题想问下,c5509a的DRAM存放数据是否是小端模式,假设我的bootloader只有4个字节{0x1,0x2,0x3,0x4},那么写入到DRAM中的格式是0x3(高字节在前,低字节在后)。&/p>
&p>4.将上面的文件写入到DRAM中后,我又重新将代码从DRAM中读出,与我写入的进行比较,确定没有烧写错。&/p>
&p>5. SPRA375F上介绍是向0x60,0x61这两个地址中写入程序开始运行的地址,我是从0x100这个地址开始烧写的,因此0x61这个地址内我写入了0x200(PDF上是说将字地址转换成字节地址,因此这里写了0x200),然后再往0x60中写入0xa500。其中0xa5是告诉5509a,可以运行烧写的程序了。&/p>
&p>问题出现了,上述过程完成了,我的程序并没有运行起来(因为我是通过闪灯来验证的),&/p>
&p>我的bin文件是将产生的.out文件通过hex55.exe来生成.bin文件的,命令代码如下:&/p>
&p>hex55.exe -boot -v5510:2 -memwidth 8 -romwidth 16 -map LED.mxp LED.out -e start -b -o LED.bin&/p>
&p>其中LED.out是输入文件,LED.bin是得到的输出文件,也就是我上面烧写到DSP中的文件。&/p>
&p>这里有个问题请教下,使用HPI接口烧入的bin文件,在由.out文件得到的过程中是不是有什么限制呢,例如说不能写某些寄存器等等。&/p>
&p>我是一名新手,还希望论坛里的高手能够指点一下!万分感谢!&/p>
&p>&&/p>&div style=&clear:&>&/div>" />
C5509a通过HPI接口下载程序的问题,求教!!
此问题已被解答
All Replies
通过HPI接口下载程序到5509a中时,遇到比较奇怪的问题,希望大家看看,我的步骤是不是有什么地方不对的?
项目中CPU和c5509a之间是16位的HPI接口
下载程序的过程基本上是按照SPRA375F的顺序来做的:
1.将5509a芯片复位;
2.检测到5509a的IO4管脚产生下降沿;
3.然后开始通过HPI接口将bin文件写入到HPI接口可以操作的DRAM中,SPRA375F上推荐从0x100这个地址开始烧写程序。我的bin文件很小大概只有2k左右(只是用来闪灯,以便测试c5509a bootloader是否成功),也是从0x100这个地址往里面写。这里有个问题想问下,c5509a的DRAM存放数据是否是小端模式,假设我的bootloader只有4个字节{0x1,0x2,0x3,0x4},那么写入到DRAM中的格式是0x3(高字节在前,低字节在后)。
4.将上面的文件写入到DRAM中后,我又重新将代码从DRAM中读出,与我写入的进行比较,确定没有烧写错。
5. SPRA375F上介绍是向0x60,0x61这两个地址中写入程序开始运行的地址,我是从0x100这个地址开始烧写的,因此0x61这个地址内我写入了0x200(PDF上是说将字地址转换成字节地址,因此这里写了0x200),然后再往0x60中写入0xa500。其中0xa5是告诉5509a,可以运行烧写的程序了。
问题出现了,上述过程完成了,我的程序并没有运行起来(因为我是通过闪灯来验证的),
我的bin文件是将产生的.out文件通过hex55.exe来生成.bin文件的,命令代码如下:
hex55.exe -boot -v5510:2 -memwidth 8 -romwidth 16 -map LED.mxp LED.out -e start -b -o LED.bin
其中LED.out是输入文件,LED.bin是得到的输出文件,也就是我上面烧写到DSP中的文件。
这里有个问题请教下,使用HPI接口烧入的bin文件,在由.out文件得到的过程中是不是有什么限制呢,例如说不能写某些寄存器等等。
我是一名新手,还希望论坛里的高手能够指点一下!万分感谢!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
这里追加提问一下,SPRA375F中是说通过hpi接口来下载程序是不需要boot table的,那么生成bin文件中的
hex55.exe -boot -v5510:2 -memwidth 8 -romwidth 16 -map LED.mxp LED.out -e start -b -o LED.bin 这条命令是不是正确的呢,因为这个也是按照PDF资料上写的,此外,我查看了生成的mxp文件,我明明指定了rom宽度是16,为什么mxp文件中
ffffff& Page=0& Memory Width=8& ROM Width=8
还是指定ROM Width是8呢!
********************************************************************************TMS320C55x COFF/Hex Converter&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Version 2.56********************************************************************************
INPUT FILE NAME: &LED.out&OUTPUT FORMAT:&& Binary
PHYSICAL MEMORY PARAMETERS&& Default data width&& :&& 8&& Default memory width :&& 8&& Default output width :&& 8
BOOT LOADER PARAMETERS&& Table Address:&& 0x, PAGE 0&& Entry Point:&&& 0x& (start)
OUTPUT TRANSLATION MAP--------------------------------------------------------------------------------ffffff& Page=0& Memory Width=8& ROM Width=8--------------------------------------------------------------------------------&& OUTPUT FILES: LED.bin [b0..b7]
&& CONTENTS: 0006c1&& BOOT TABLE&&&&&&&&&&&&&&&&&&&&&&&&&&& .text : dest=& size=0000056c& width=x&&&&&&&&&&&&&&&&&&&&&&&&&& .cinit : dest=00008af4& size=& width=x
--------------------------------------------------------------------------------ffffff& Page=1& Memory Width=8& ROM Width=8& &*DEFAULT PAGE 1*&--------------------------------------------------------------------------------&& NO CONTENTS
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
还有就是程序入口我在0x60,0x61中写的是0x200,为什么mxp文件中写的是:
&Entry Point:&&& 0x& (start)
希望能有人回复我的帖子,十分感谢!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元79490分
1. bootloader只有4个字节{0x1,0x2,0x3,0x4},那么写入到DRAM中的格式是0x4, 程序空间是按照字节字节寻址的, 程序空间的存放格式可以参考下面的文档第105页.
2. 0x60应该写应该写0x0200 3. mxp文件中memwidth是8不是16, 是-b选项强制8bit memwidth. 4. 你现在的程序入口地址是0x, 如果你把程序入口地址设为0x100, 那么你在cmd文件中要强制定义-e 0x100. 你用仿真器跟一下程序, 看程序是一直在0x60, 0x61里还是已经跳到你的程序入口地址开始执行程序了?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
感谢Shine Zhang的回复,我将程序作了一下修改,首先是字节顺序,已经改成Shine Zhang给出的模式,
cmd命令我也改为了-e 0x100,
0x60这块,不论是0x0000,还是0xa500(高8位非0),我都试过了,程序还是没有办法顺利跑起来,
我想请教下Shine Zhang,bootloader过程如何才能仿真呢,不是只有在程序运行时才能仿真嘛?断点如何设置呢?我看bootloader上说仿真
此外-b 这个选项应该是要保留的嘛?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元79490分
把仿真器连上,选择debug-&Reset CPU。查看PC寄存器地址应该在0xff8000,这是bootloader源代码在ROM中的位置,选择file-&load symbols-&load symbols only,然后选择out文件,这样只载入符号定义,便于调试,然后单步执行(F11),就可以跟踪整个boot过程,或者在判断0x60处不为0的代码处设置一个硬件断点, 执行F5, 当Host加载完毕并往0x60处写0x0200后, 程序应该停在断点处, 接着再一步步单步跟踪看有没有跳到程序入口地址处.
如果你用binary格式, 要用-b选项. 其实c55x hex conversion utlity中的-b这个选项官方并没有正式release, 所以你可以先试试-a ASCII格式, 成功了, 再试回-b.
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
今天按照 Shine Zhang& 上面给出的boot方法测试了一下,确实可以对bootloader过程进行调试:
FF8000 ec314e000090&&&&&&&&&&&& AMAR *(#00090h),XSP......FF80FF 0603be&&&&&&&&&&&&&&&&&& B #0xff84c0//发现0x60不为0后进运行到这条跳转代码
FF84C0 4683&&&&&&&&&&&&&&&&&&&& BSET ST1_SXMD& //从上面跳转到这里来了FF84C2 f&&&&&&&&&&&& OR #16,port(#03401h)FF84C8 9103&&&
然后从上面单步调试可以进入到0x200这个地址,但是进入到0x200后又出现了一个奇怪的问题,程序会死在0x20c这个地方,无法再往前进了。
000200&&&&&&&&& __text, .text, _c_int00:002&&&&&&&&&&&&&&&&&& RPTCC #2, AC0 == #0000&&&&&&&&&&&&&&&&&& RPTCC #0, AC0 == #0000&&&&&&&&&&&&&&&&&& RPTCC #0, AC0 == #0570&&&&&&&&&&&&&&&&&& RPTCC #112, T1 == #00&&&&&&&&&&&&&&&&&& RPTCC #2, AC0 == #00&&&&&&&&&&&&&&&&&& RPTCC #49, e00_05acec&&&&&&&&&&&&& AADD #0,SP || BCC #0x000203,AR4 & #0e&&&&&&&&&&&&&&&&&&&& MIN T1,AR64b2&&&&&&&&&&&&&&&&&& RPTCC #178, T0 == #0
我将上面几个几条代码和我生成的2进制代码进行了比较确实是一样的。但是感觉好像这段开始几条代码是不是没有对齐,特别是这两条
0&&&&&&&&&&&&&&&&&& RPTCC #49, e00_05acec&&&&&&&&&&&&& AADD #0,SP || BCC #0x000203,AR4 & #0
参考bootloader中的代码:FF8000&&& ec314e000090&&&&&&&&&&&& AMAR *(#00090h),XSP
ec314e0005ac这才一条命令才对,而bin文件中的两条指令看起来非常奇怪,还希望有人可以在帮忙解答下。
我生成bin文件的命令就是我前面贴出来的那条,后来我又试着将cmd中-boot改成-bootorg,结果生成的bin文件如下,然后我又尝试着单步运行,结果程序
000200 ec314e0005ac&&&&&&&&&&&& AMAR *(#005ach),XSP000206 ec315e0004b2&&&&&&&&&&&& AMAR *(#004b2h),XSSP00020C f406f91f_98&&&&&&&&&&&&& AND #63775,mmap(@ST1_55)64100_98&&&&&&&&&&&&& OR #16640,mmap(@ST1_55)6fa00_98&&&&&&&&&&&&& AND #64000,mmap(@ST2_55)00021B f&&&&&&&&&&&&& OR #32768,mmap(@ST2_55)6&&&&&&&&&&&&&&&&&&&& BCLR ST3_SATA7&&&&&&&&&&&&&&&&&&&& BSET ST3_SMUL000&&&&&&&&&&&&&&&&&& MOV #0,DPH001&&&&&&&&&&&&&&&&&& MOV #0,MDP050&&&&&&&&&&&&&&&&&& MOV #0,MDP670348&&&&&&&&&&&&&&&& CALL _auto_initc00030c&&&&&&&&&&&&&&&& CALL _args_mainc19&&&&&&&&&&&&&&&&&&&& MOV #1,AR1c00023b&&&&&&&&&&&&&&&& CALL exit
然后我又尝试着单步运行,结果程序又在auto_init中的00x378死掉了,程序进入到0x378后,pc就不会在发生改变,一直是0x378这个值。
000348&&&&&&&&& _auto_init:eff&&&&&&&&&&&&&&&&&&&& AADD #-1,SP00034A ec318e0005fc&&&&&&&&&&&& AMAR *(#005fch),XAR0f&&&&&&&&&&&&&&&&&&&& NOT AR0,AR7f29&&&&&&&&&&&&&&&&&& BCC #0x00037e,AR7 == #0000355 aa03&&&&&&&&&&&&&&&&&&&& MOV *AR0+,AR2a24&&&&&&&&&&&&&&&&&& BCC #0x00037e,AR2 == #000035A fa&&&&&&&&&&& MOV uns(*AR0+) && #8,AC0 || SUB #1,AR2000360 df0315_53ac&&&&&&&&&&&&& MOV uns(*AR0+),AC1 || MOV AR2,CSR138&&&&&&&&&&&&&&&&&& OR AC1 && #-8, AC0ff11&&&&&&&&&&&&&&&&&& AND #255,AC1,AC10e&&&&&&&&&&&&&&&&&&&& MOV AC0,XAR60&&&&&&&&&&&&&&&&&&&& BCC #0x000376,AC1 != #00&&&&&&&&&&&&&&&&&&&& RPT CSR714&&&&&&&&&&&&&&&&&& MOV *AR0+,*AR6+a5f&&&&&&&&&&&&&&&&&&&& B #0x0003550&&&&&&&&&&&&&&&&&&&& RPT CSR714_9a&&&&&&&&&&&&&&& MOV *AR0+,port(*AR6+)
我感觉bootloader过程应该是通过了,应该是bin文件生成出现了问题,我生成bin的命令完全是按照pdf上的说明来写的,实在搞不清楚,到底是哪里出问题了。还请高手指点下!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
我把dsp工程的配置文件贴出来,让大家看看,是不是我的配置文件有什么问题呢:
-w-stack 500-sysstack 500-l rts55x.lib
MEMORY {&&& DARAM:&o=0x200,&l=0x6f00&&& VECT :& o=0x8000,&l=0x100&&& DARAM2: o=0x8100,&l=0x7f00&&& SARAM:& o=0x10000,&l=0x30000&&& SDRAM:&o=0x40000,&l=0x3e0000}
SECTIONS{&&& .text:&&& {} & DARAM &&& .vectors: {} & VECT&&& .trcinit: {} & DARAM &&& .gblinit: {} & DARAM &&&& frt:&&&& {} & DARAM &&& &&& .cinit:&& {} & DARAM &&& .pinit:&& {} & DARAM &&& .sysinit: {} & DARAM &&& .bss:&&&& {} & DARAM &&& .far:&&&& {} & DARAM &&& .const:&& {} & DARAM &&& .switch:& {} & DARAM &&& .sysmem:& {} & DARAM &&& .cio:&&&& {} & DARAM &&& .MEM$obj: {} & DARAM &&& .sysheap: {} & DARAM &&& .sysstack {} & DARAM &&& .stack:&& {} & DARAM&&& }
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
我也尝试用过ASCLL文件down到dsp中,结果0x200的那条命令就让我的ccs直接挂了,所以没有再试了。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元79490分
bin文件正确加载了, 但0x200处开始的代码跟你的代码一样吗?
用ASCII格式时, memwidth, romwidth选择16, ASCII文件第一行是地址信息, 不用加载. ASCII格式加载后, 0x200开始的代码是你的代码吗?另外, 在compiler编译选项中不要用-cr选项, 只能用-c(Run-Time Autoinitialization)或者省略.
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
谢谢shine zhang的回复。
从0x200开始的代码和我自己的bin代码确实是一样的,我已经一个字节一个字节比对过了
2进制文件bin文件的第一行也是地址信息吗不用加载的嘛?我怎么感觉2进制文件的第一行也像是地址信息,呵呵
,另外想问下,第一行是指前面几个?是指前面16个字节吗,用UltraEdit打开2进制文件的第一行吗?
我今天还做了个测试,我先用CC3给5509a装载了代码,也就是.out文件,CC3全速运行时,程序是能正常工作的,运行几秒后,将仿真器停下来,但是5509a并没有断电,然后我再通过主机给5509a再加载一次程序,也就是加载前面的bin文件,神奇的是,这个时候程序就能够正常运行了,然后我将5509a断电,然后在重新上电,直接用主机给5509a下载程序,5509a又不能正常工作了。弄得我糊涂!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
shine zhang,你好,我在您的另一个回复的帖子中(也是关于5509A bootloader的问题),看到您的回答是:
看看gel文件中的初始化设置有没有搬到应用程序中.
使用boot方式, 可以用jtag追踪程序运行到哪里出错
而且这个回复,对方给了正确答案的评价,我想问下的是,如何查看gel文件中的初始化设置是否搬到应用程序中呢 ?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
问题,终于搞定了,呵呵,果真是C 编译器选项的问题,必须选择 NO&&那个选项,程序才能正常的跑起来!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元79490分
恭喜啊, 谢谢分享!使用了-cr这个编译选项,这样在CCS load程序时会自动把.cinit段的数据复制到.bss段,但是当脱机运行时,就不能选-cr,而是需要选-c或省略。具体可以参考下面的FAQ。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
今天又做了下测试,情况和shine zhang 说的真好相反,使用-cr选项时或者省略时,程序能够正常运行,而采用-c这个选项,程序反而不能正常运行。
看了下-cr的介绍,还是不得其解!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.

我要回帖

更多关于 总线端口 的文章

 

随机推荐