MMU---cp15中c0控制寄存器疑问

poiuyt   2010-1-31 15:11 楼主
如题,在CP15 控制寄存器 c0中
31bit Asynchronous clock
30bit notFastBus select

c0的高两位是什么意思,貌似在datasheet中没有找到说明啊???

现在在调试MMU中遇到很奇怪的问题
在开启MMU后,我专门弄了一个对寄存器的赋值操作,来验证是否OK(映射都是按照1-1来的)
但是有的寄存器赋值操作就引起调试器异常退出;
比如
    MMU_Init();
   
#if ADS10   
    __rt_lib_init();                //for ADS 1.0
#endif

    Port_Init();
    // below for test
    rGPFDAT = 0xffff;
    ;
    rGPFDAT = 0x0000;
    ;
    rGPECON = rGPECON;
    rMISCCR = rMISCCR;
    rGSTATUS4 = rGSTATUS4;
    rADCCON = rADCCON;    //执行该句时,MDK就报错“could not stop ARM device,please check the JTAG cable”点击确认后,MDK就跳出调试界面

太诡异了

回复评论 (4)

高手来帮帮忙啊,弄懂了,高分感激。。

MMU也是嵌入式学习的一道坎啊,这个通了,才能顺行往下做。。。
点赞  2010-1-31 15:13
再补充几个信息

这个是运行异常的寄存器地址
#define rADCCON    (*(volatile unsigned *)0x58000000) //ADC control

正常的比如是
#define rCLKDIVN    (*(volatile unsigned *)0x4c000014) //Clock divider control

我开发板上的SDRAM一共64MB,挂于系统内存空间的0x30000000处
MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB);  //bank0           //128MB
    MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_CNB);  //bank1
    MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB); //bank2
    MMU_SetMTT(0x18000000,0x1ff00000,0x18000000,RW_NCNB); //bank3
    MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_NCNB); //bank4
    MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB); //bank5

    MMU_SetMTT(0x30000000,0x33ffffff,0x30000000,RW_NCNB);
    MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB); //bank7           //128MB,
   
    MMU_SetMTT(0x40000000,0x47f00000,0x40000000,RW_NCNB); //SFR                   //128MB,物理寄存器,noncached nonbuffered
    MMU_SetMTT(0x48000000,0x5af00000,0x48000000,RW_NCNB); //SFR                   //48MB,
    MMU_SetMTT(0x5b000000,0xfff00000,0x5b000000,RW_FAULT);//not used   //如果应用层访问到该区域MMU会报错

    MMU_SetTTBase(_MMUTT_STARTADDRESS);
    。。。。。。

点赞  2010-1-31 15:17
我在调试状态下 看MMU_BASE处的内存,发现不对劲,我还特意改了一处内存,但是执行完SetMMU之后,该处内存还是我改的值,没有任何变化。
点赞  2010-1-31 15:31
帮顶~~~~~
点赞  2010-1-31 18:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复