gmyu 发表于 2010-8-17 18:51:13

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都重新定义了。

gmyu 发表于 2010-8-18 08:34:11

搞不定啊,又没高手指点啊,记得stm32里面我有个VPB1,VPB2,次没打开VPB2的总线,有些模块就不能用,这次应该不会吧,我都可以读。

gmyu 发表于 2010-8-19 08:52:57

有了点进展,还是觉得奇怪。同样的程序,装入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,    ;这条指令不执行

gmyu 发表于 2010-8-19 12:59:53

通读了一下IC资料,发现有个作为补丁的RAM区,吧程序下到那里,居然可以读写了。
页: [1]
查看完整版本: ARM9+MDK 为啥我定义的内存是只读的,变量却没问题。