找回密码
 注册
搜索
查看: 647|回复: 0

[讨论] MDK调试时出现MEMORY MISMATCH错误的原因及解决方法

[复制链接]
发表于 2008-5-28 18:43:14 | 显示全部楼层 |阅读模式
一、        问题
在用RealView MDK + ULink仿真器进行调试时,有些情况下会提示Memory Mismatch错误。但出现这种错误的情况并不多。有时同一个程序,在不同时间调试可能有时候会出现这个错误,有时却没有这个错误。似乎有一定的偶然和随机性。
二、        原因
看似有随机性,其实有深层的原因。首先说明一下,MDK调试方式有两种,即在RAM中调试和在Flash中调试。在RAM中调试时需要将可执行程序下载到RAM中,在Flash中调试时需要将可执行程序烧写到Flash中,为了方便描述暂时将前面的调试方法称为第一种调试方法,将后面的调试方法称为第二种调试方法。在默认设置下,在开始调试时CPU会重启并会检验下载的存储空间的内容。即采用第一种调试方法会检查RAM中的内容,采用第二种调试方法会检查Flash中的内容。
采用第一种调试方法时出现这种错误的原因有两种:其一,如果链接脚本给出了一个错误的地址空间,比如AT91SAM7S512/256/128/64/321/32/161/16的片上SRAM开始地址为0x200000,如果用户误写为0x300000,那么调试开始之时会从地址0x300000检查下载内容,而地址0x300000是没接任何存储芯片的,所以得到的是一个错误的值,会提示Memory Mismatch的错误。 其二,有些芯片的SRAM需要初始化才能正常使用,在调试时如果没有使用初始化脚本,也可能导致Memory Mismatch错误。
采用第二种调试方法时,出现这种错误的原因也有两种:其一,没有使用初始化脚本,即使Flash中内容烧写完全正确,当Flash没有完全使能时(比如有些与Falsh相关的寄存器还未配置),这时检测Flash内容会得到一个错误的结果。其二,使用了错误的地址空间。
三、        解决办法
我们主要遇到这种问题首先检测地址空间是否有错,在地址空是正确的情况下,还存在这个问题的有效解决办法有两种:
1、        打开对话框Project->Options->Debug->ULINK Settings。将Verify Code Download前面的勾去掉。去掉之后,不管第一种调试方法还是第二种调试方法均不会检查下载的内容。如下图,当然使用这种方法的前提是您确定生成的执行代码已正确下载。

图一  将选项Verify Code Download前面的勾去掉

2、        使用初始化文件(INI文件),初始化文件的内容一般和您的软件中初始化RAM、Flash的代码类似,功能主是初始化RAM、Flash和时钟等。在使用初始化文件时需要做以下设置:打开对话框Project->Options->Debug,去掉选项Load Application at Startup前面的勾。然后在Initialization选项中选择初始化文件,现举个初始化Flash的例子,如下图:

图二  使用初始化文件
附:初始化文件示例
// Switching from Slow Clock to Main Oscillator for faster Download
_WDWORD(0xFFFFFC20, 0x00000601);        // PMC_MOR: Enable Main Oscillator
_sleep_(10);                            // Wait for stable Main Oscillator
_WDWORD(0xFFFFFC30, 0x00000001);        // PMC_MCKR: Switch to Main Oscillator

_WDWORD(0xFFFFFF70, 0x00003284);        // SMC_CSR0: Setup SCM for Ext Flash

LOAD BasicIdle_test.axf INCREMENTAL     // Download
g, main                                                                        // Running to main function

注:关于初始化脚本的格式和作用可参考MDK帮助文档。
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-25 14:43 , Processed in 0.045596 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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