主题 : MMU初始化中出现的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 32179
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2010-11-11
最后登录: 2011-11-23
楼主  发表于: 2011-03-21 21:01

 MMU初始化中出现的问题

我在做一个串口驱动的,在加了MMU初始化函数后就只在main和MMU_Init之间执行了,不会往下走。
void Main(void)
{    
    //char *pSInit = "Hello,this is dm9000 info ";
    //char str[NUM1];    

    MMU_Init();           //MMU不能使用
    
    //Array_init((char*)str);
     Uart_init(Pclk,115200);    
    Uart_change_line();    
    Uart_change_line();    
    //Uart_sendstring(pSInit);
    Uart_change_line();

    for(;;)
    {
        //Uart_getstring(str);
        //Uart_sendstring(str);
        Uart_change_line();    
    }
    
}    

之前在做按键中断和定时器中断没有现问题的。
在单步调试中发现每次执行了
      MOV_PC_LR
这段程序的最后一句后没有返回,在之后出现的这句也没有反应。最后一句 MOV_PC_LR就跳转到main了

请高人指点啊!!!

有时候出现如下调试信息
DBT warning 00135 :can't not set break points in literal pools

可是我没有设断点啊。
[ 此帖被mengzhongren在2011-03-21 21:59重新编辑 ]
级别: 新手上路
UID: 28365
精华: 0
发帖: 37
金钱: 185 两
威望: 37 点
综合积分: 74 分
注册时间: 2010-09-09
最后登录: 2018-06-27
1楼  发表于: 2011-03-21 21:45
你是裸机程序吗?
级别: 新手上路
UID: 32179
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2010-11-11
最后登录: 2011-11-23
2楼  发表于: 2011-03-21 21:49
是裸机程序。

再调试了一下,发现是 MMU_CleanInvalidateDCacheIndex这个函数里的
MOV_PC_LR
这个宏定义没有被执行到
它的宏定义是
   MACRO
     MOV_PC_LR
     [ THUMBCODE
       bx lr
     |
       mov pc,lr
     ]
   MEND

前面的函数中有执行MOV_PC_LR这句的能执行到
而之后的所有MOV_PC_LR 都不会被执行,也就是不会返回
级别: 新手上路
UID: 30113
精华: 0
发帖: 46
金钱: 230 两
威望: 46 点
综合积分: 92 分
注册时间: 2010-10-12
最后登录: 2018-02-08
3楼  发表于: 2011-03-22 09:57
也想知道,更想知道mmu的功能及设置过程
级别: 新手上路
UID: 32179
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2010-11-11
最后登录: 2011-11-23
4楼  发表于: 2011-03-23 14:58
继续求解答。
级别: 新手上路
UID: 35281
精华: 0
发帖: 17
金钱: 85 两
威望: 17 点
综合积分: 34 分
注册时间: 2010-12-29
最后登录: 2012-04-06
5楼  发表于: 2011-05-09 21:12
楼主的问题解决了么?我又遇到跟你一样的问题,能够加我QQ指点一下么? 我QQ: 419737344  谢谢!