memory missmatch;address:0x00000000;value=0xff
问题类别:ARM软件工具 > Keil MDK | 浏览次数:7866 |
发布日期:2012/4/23 15:05:26 | 文章来源:完美体育·(中国)手机网页版科技 |
回复日期:2020/12/20 10:20:50 |
环境说明
MDK 3.05 及以上,LPC229x系列开发板分析描述
在调试工程的时候出现 memory missmatch ; address:0x00000000; value=0xff 无法调试。问题解答
相似的工程已经提供在C:\Keil\ARM\Boards\Phytec\LPC229x\Hello工程下。
需要定义两种不同的targets:一种用于Flash Programming;一种用于Debugging in RAM。
在RAM下调试需要:
1.将片选CS0和RAM连接;
2.在STARTUP.S文件中的MEMMAP设置做如下修改:
$SET (RAM_INTVEC) ; enable code below
$IF (RAM_INTVEC)
LDR R0, =MEMMAP
MOV R1, #3 ; redirect interrupt vectors to off-chip memory
STR R1, [R0]
$ENDIF
3.在工程中的Project--->Options for Target...--->:
做如下设置:
Target: 关闭Use on-chip ROM;设置好External Memory 的地址空间
选择相应的ROM地址和大小
ASM - Set: EXTERNAL_MODE:
Debug - Use ULINK ARM Debugger - disable Load Application at Startup:
Debug - Use ULINK ARM Debugger - Initialization File参照
..\ARM\Boards\Phytec\LPC229x\Hello\Flash.ini 创建一个XRAM.INI
设置需要的PC指针等。
例如:
//*** <<< Use Configuration Wizard in Context Menu >>> ***
FUNC void Setup (void) {
// <h> External Memory Controller (EMC)
// <h> Bank Configuration 0 (BCFG0)
// <o1.0..3> IDCY: Idle Cycles <0-15>
// <o1.5..9> WST1: Wait States 1 <0-31>
// <o1.11..15> WST2: Wait States 2 <0-31>
// <o1.10> RBLE: Read Byte Lane Enable
// <o1.26> WP: Write Protect
// <o1.27> BM: Burst ROM
// <o1.28..29> MW: Memory Width <0=> 8-bit <1=> 16-bit
// <2=> 32-bit <3=> Reserved
// </h>
_WDWORD(0xFFE00000, 0x20003CE3); // BCFG0: Flash Bus Configuration
_WDWORD(0xE002C014, 0x0E6001E4); // PINSEL2: CS0, OE, WE, BLS0..3
// D0..31, A2..23, JTAG
// </h>
}
Setup(); // Setup for Flash
Load MyApp INCREMENTAL
PC = 0x80000000