ARM9+MDK 为啥我定义的内存是只读的,变量却没问题。
#define M8(adr) (*((volatile unsigned char*) (adr)))#define M16(adr) (*((volatile unsigned short *) (adr)))
#define M32(adr) (*((volatile unsigned long*) (adr)))
volatile unsigned long temp;
M32(0x200000) = 0x8505;
上面的代码0x200000里面的值总是不能被程序改动,可以用程序读,例如放到temp变量里面,却可以用keil调试环境改,
谁可以告诉我为啥呢,搞了一天了也没明白,我的MCU不在keil的芯片列表里面,我选了个最相近的,但是我在选项卡里面把ROM,和RAM都重新定义了。 搞不定啊,又没高手指点啊,记得stm32里面我有个VPB1,VPB2,次没打开VPB2的总线,有些模块就不能用,这次应该不会吧,我都可以读。 有了点进展,还是觉得奇怪。同样的程序,装入flash他执行正常,在RAM里面运行的时候就只可以读寄存器或RAM,却不能写读寄存器或RAM。不知道是MDK设置还是IC有限制,继续研究中。。。。
;Enable CLK_IF
LDRr0, =SCU_SYS_PCON;读出常量没问题
LDRr1, ;读出变量也没问题
ORRr2, r1, #CLK_IF_Bit ;这条指令不执行
STRr2, ;这条指令不执行
;Switch DCDC OFF, wait for transmission, and switch ON again
LDRr3, =APU_RANA8
LDRr4,
ANDr5, r4, #:NOT:DCL_EN_Bit ;这条指令不执行
STRr5, ;这条指令不执行 通读了一下IC资料,发现有个作为补丁的RAM区,吧程序下到那里,居然可以读写了。
页:
[1]