2863|5

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

wince 启动停止了。 [复制链接]

我在编写流驱动的时候,系统启动突然停止了。
串口输出信息:
[dm9: Tries to map io space with 18000000
[dm9: The mapped address is D0B80000
[dm9: Chip signature is 90000A46
[dm9: Chip signature is 90000A46

STRINGS:***@@****DLL_PROCESS_ATTACH******
MYSTRINGGS:**@@*******InitKey_Init***********
*@@**********KeyInt_Setting***********

流驱动部分代码。
DWORD KEY_Init(DWORD dwContext)
{ // if you drive a idiographic device,add oter code ep: int,hardwareinit and so on
        DWORD   IDINTThread;
        RETAILMSG(1,(TEXT("MYSTRINGGS:**@@*******InitKey_Init***********\n")));
        //clear the ram which is used for this dll

        InitializeAddresses();
        INTInit();

        RETAILMSG(1,(TEXT("@before CreateThread \r\n")));
        Key_Key_Thread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)Key_KeyThread_Fun,0,0,&IDINTThread);
        if(!Key_Key_Thread)
        {
                RETAILMSG(1,(TEXT("@CreateThread  faile \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("@CreateThread  OK \r\n")));
        }
        Key_KeyIntr_Event = CreateEvent(NULL,false,false,NULL);
        if(!Key_KeyIntr_Event)
        {
                RETAILMSG(1,(TEXT("@CreateEvent  faile \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("@CreateEvent  OK \r\n")));
        }
。。。。。。。。
。。。。。。。
}
BOOL INTInit()

{
        RETAILMSG(1,(TEXT("*@@**********KeyInt_Setting***********\r\n")));

        v_pIOPregs->GPFCON  &= ~(0x3 << 2);                /* Set EINT1(GPF1) as EINT1                                                */
        v_pIOPregs->GPFCON  |=  (0x2 << 2);

        v_pIOPregs->EXTINT1 &= ~(0x7 << 3);
        v_pIOPregs->EXTINT1 |=  (0x2 << 3);                /* Configure EINT1 as Falling Edge Mode                                */

        return TRUE;
}
初学,不知道哪里出问题了。帮忙分析下。

最新回复

void InitializeAddresses() {     // INT Virtual alloc         v_pIOPregs = (volatile  S3C2440A_IOPORT_REG  *) VirtualAlloc(0,sizeof(S3C2440A_IOPORT_REG),MEM_RESERVE, PAGE_NOACCESS);         if(v_pIOPregs == NULL)         {                 RETAILMSG(1,(TEXT("@For S2440IOP: VirtualAlloc faiLED!\r\n")));         }         else         {                 if(!VirtualCopy((PVOID)v_pIOPregs,(PVOID)(S3C2440A_BASE_REG_PA_IOPORT>>8),sizeof(S3C2440A_IOPORT_REG),PAGE_PHYSICAL|PAGE_READWRITE|PAGE_NOCACHE ))                 {                         RETAILMSG(1,(TEXT("@For S2440IOP: VirtualCopy faiLED!\r\n")));                 }         }         } 我这样分配地址不可以吗? 其中有。 #define S3C2440A_BASE_REG_PA_IOPORT             (0x56000000) 我用到了中断是不是也要用S3C2440A_BASE_REG_PA_INTR做一下虚拟地址映射啊 #define S3C2440A_BASE_REG_PA_INTR               (0x4A000000)    详情 回复 发表于 2009-9-29 09:29
点赞 关注

回复
举报

10

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
是不是v_pIOPregs寄存器没有分配地址呀?这样会出错的!
 
 

回复

5

帖子

0

TA的资源

禁止访问

板凳
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 

终于完成了,第一个按键中断程序,太高兴了,谢谢给我帮助的朋友们,呵呵。
v_pIOPregs->EXTINT1 &= ~(0x7 < < 3);
v_pIOPregs->EXTINT1 |=  (0x2 < < 3); /* Configure EINT1 as Falling Edge Mode */
这里寄存器设置不对。应该是
v_pIOPregs->EXTINT0 &= ~(0x7 << 4);
v_pIOPregs->EXTINT0 |=  (0x2 << 4);       
一会具体分析下               
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
一、v_pIOPregs 地址问题:

KEY_Init  在这里面只留下INTInit();   屏蔽掉其他的
然后看正确不!

如果不正确就是v_pIOPregs 地址有问题

二、
你的设置 如终端的设置 影响到了其他的驱动 导致起不来
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
void InitializeAddresses()
{

    // INT Virtual alloc
        v_pIOPregs = (volatile  S3C2440A_IOPORT_REG  *) VirtualAlloc(0,sizeof(S3C2440A_IOPORT_REG),MEM_RESERVE, PAGE_NOACCESS);
        if(v_pIOPregs == NULL)
        {
                RETAILMSG(1,(TEXT("@For S2440IOP: VirtualAlloc faiLED!\r\n")));
        }
        else
        {
                if(!VirtualCopy((PVOID)v_pIOPregs,(PVOID)(S3C2440A_BASE_REG_PA_IOPORT>>8),sizeof(S3C2440A_IOPORT_REG),PAGE_PHYSICAL|PAGE_READWRITE|PAGE_NOCACHE ))
                {
                        RETAILMSG(1,(TEXT("@For S2440IOP: VirtualCopy faiLED!\r\n")));
                }
        }
       
}
我这样分配地址不可以吗?
其中有。
#define S3C2440A_BASE_REG_PA_IOPORT             (0x56000000)
我用到了中断是不是也要用S3C2440A_BASE_REG_PA_INTR做一下虚拟地址映射啊
#define S3C2440A_BASE_REG_PA_INTR               (0x4A000000)  
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/10 下一条
ADI 探索季,邀您在活动帖跟帖,ADI资深工程师将与您一道寻求解决之道!
春晚,最出圈当属穿着棉马甲跳秧歌的机器人”秧Bot”。
转手绢、飞手绢、变换队形,精准度和稳定性甚至超越人类,这背后少不了电机控制技术。

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表