微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 加载失败和运行不起来的原因

加载失败和运行不起来的原因

时间:10-02 整理:3721RD 点击:


在我加载程序时,它提示我Data verification failed at address 0x48a0。Please verify target memory and memory map.点我点确定后,又出现这个错误对话框,可地址改为ox6320了,当我打开MAP文件发现这二个地址为:sysinit和text段的地址,下面我把这二个段在系统BIOS生成的cmd帖上来。我一加载后运行就跳出了,或者就在汇编出没有运行。我用的是6416和它的BIOS了。cmd是BIOS生成的。怎么才能改正过来呢?

sysinit和text的MAP文件:

.sysinit 0 000048a0 000003a0
000048a0 000002e0 BIOS_DSP_I_Ocfg.obj (.sysinit)
00004b80 000000c0 biosi.a64 : boot.o64 (.sysinit)

.text 0 00006320 00007fa0
00006320 00003720 dsp_sys.obj (.text)
00009a40 00000dc0 RTC.obj (.text)
0000a800 00000900 account.obj (.text)
0000b100 00000620 rts6400.lib : cmpd.obj (.text)
0000b720 000003a0 : imath40.obj (.text)
0000bac0 00000300 csl6416.lib : csl_cache.obj (.text:_CACHE_wait)
0000bdc0 000002c0 rts6400.lib : frcdivd.obj (.text)
0000c080 00000280 : frcaddd.obj (.text)
0000c300 000001e0 csl6416.lib : csl_cache.obj (.text:_CACHE_setL2Mode)
0000c4e0 000001e0 rts6400.lib : divd.obj (.text)
0000c6c0 000001e0 csl6416.lib : csl_irq.obj (.text:_IRQ_map)
0000c8a0 000001c0 rts6400.lib : exit.obj (.text)
0000ca60 000001c0 csl6416.lib : csl_cache.obj (.text:_CACHE_clean)
0000cc20 000001c0 rts6400.lib : mpyd.obj (.text)
0000cde0 000001a0 csl6416.lib : csl.obj (.text:__CSL_init)
0000cf80 00000180 rts6400.lib : frcmpyd.obj (.text)
0000d100 00000180 : addd.obj (.text)
0000d280 00000140 csl6416.lib : csl_timer.obj (.text:_TIMER_open)
0000d3c0 00000120 rts6400.lib : ltoa.obj (.text)
0000d4e0 00000100 csl6416.lib : csl_timer.obj (.text:_TIMER_reset)
0000d5e0 000000e0 : csl_cache.obj (.text:_CACHE_wbInvL1d)
0000d6c0 000000c0 : csl_irq.obj (.text:_mux2Tables)
0000d780 000000c0 rts6400.lib : divu.obj (.text)
0000d840 000000c0 : fixdul.obj (.text)
0000d900 000000a0 csl6416.lib : csl_irq.obj (.text:_getMux)
0000d9a0 000000a0 : csl_emifb.obj (.text:_EMIFB_config)
0000da40 000000a0 : csl_emifa.obj (.text:_EMIFA_config)
0000dae0 000000a0 : csl_irq.obj (.text:_setMux)
0000db80 000000a0 rts6400.lib : remu.obj (.text)
0000dc20 000000a0 : fltlid.obj (.text)
0000dcc0 00000080 : strcmp.obj (.text)
0000dd40 00000080 : renormd.obj (.text)
0000ddc0 00000080 csl6416.lib : csl_irq.obj (.text:__IRQ_init)
0000de40 00000080 rts6400.lib : strcpy.obj (.text)
0000dec0 00000080 : fltuld.obj (.text)
0000df40 00000080 : memcpy64.obj (.text)
0000dfc0 00000060 BIOS_DSP_I_Ocfg_c.obj (.text:CSL_cfgInit)
0000e020 00000060 rts6400.lib : strlen.obj (.text)
0000e080 00000060 csl6416.lib : csl_timer.obj (.text:_TIMER_configArgs)
0000e0e0 00000060 rts6400.lib : fltud.obj (.text)
0000e140 00000040 : _lock.obj (.text)
0000e180 00000040 : subd.obj (.text)
0000e1c0 00000040 csl6416.lib : csl_timer.obj (.text:_TIMER_start)
0000e200 00000020 : csl_irq.obj (.text:_IRQ_enable)
0000e220 00000020 : csl_irq.obj (.text:_IRQ_globalEnable)
0000e240 00000020 : csl_irq.obj (.text)
0000e260 00000020 : csl_irq.obj (.text:_IRQ_globalDisable)
0000e280 00000020 : csl.obj (.text:_CSL6416_LIB_)
0000e2a0 00000020 : csl_irq.obj (.text:_IRQ_nmiEnable)

你的CMD文件呢?会不会存储空间不够?
我的是片内没问题,但是程序载到片外就有问题了,提示和你的一样
郁闷了

Data verification failed at address 0x48a0。Please verify target memory and memory map.
这个需要从仿真器的下载过程说起:仿真器下载代码到RAM中时,其实也就是写ram。边写ram,边会再读ram,以求证是否是写成功了。如果读到的值和之前写的值不一样,那就有问题了,就会报告“Data verification failed”。
如果发现“Data verification failed”,一般会有两种情况:
1,写的那个地址根本就没有ram。这是就需要去调整memory map了。因为具体最后生成的代码,在地址空间如何分布是由memory map来控制和决定的。
2,写的那个地址有RAM,但还是有问题,那就是。

你的程序中有初始化RAM的部分,是在CCS仿真中运行的,而在独立的系统中不一定能成功运行,如果你需要初始化你的RAM,你需要将这部分功能写成程序烧录进FLASH中。

独立的系统是指非软硬件仿真的,不连接仿真器,也不连接CCS,也就是说上电后芯片自动装载代码,然后开始正常运行。

如果你需要芯片在复位后每次都初始话RAM 那么就把这个功能写成函数,放到你的主程序开始后的地方,然后和主程序一起一起烧录到FLASH中,以便芯片每次装载代码后都能够初始化RAM。

以上部分我是根据你提供的Warning理解的,不正之处还请谅解。

上一篇:FFT?
下一篇:双精度浮点乘法

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top