wince 启动停止了。

jiereliyi 2009-09-28 05:01:33
我在编写流驱动的时候,系统启动突然停止了。
串口输出信息:
[dm9: Tries to map io space with 18000000
[dm9: The mapped address is D0B80000
[dm9: Chip signature is 90000A46
[dm9: Chip signature is 90000A46
<DM9:--MiniportInitialize>
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;
}
初学,不知道哪里出问题了。帮忙分析下。
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiereliyi 2009-09-29
  • 打赏
  • 举报
回复

终于完成了,第一个按键中断程序,太高兴了,谢谢给我帮助的朋友们,呵呵。
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);
一会具体分析下
jiereliyi 2009-09-29
  • 打赏
  • 举报
回复
volatile S3C2440A_IOPORT_REG *v_pIOPregs;
S3C2440A_IOPORT_REG 结构体定义是:
typedef struct {
UINT32 GPACON; // Port A - offset 0
UINT32 GPADAT; // Data
UINT32 PAD1[2];

UINT32 GPBCON; // Port B - offset 0x10
UINT32 GPBDAT; // Data
UINT32 GPBUP; // Pull-up disable
UINT32 PAD2;

UINT32 GPCCON; // Port C - offset 0x20
UINT32 GPCDAT; // Data
UINT32 GPCUP; // Pull-up disable
UINT32 PAD3;

UINT32 GPDCON; // Port D - offset 0x30
UINT32 GPDDAT; // Data
UINT32 GPDUP; // Pull-up disable
UINT32 PAD4;

UINT32 GPECON; // Port E - offset 0x40
UINT32 GPEDAT; // Data
UINT32 GPEUP; // Pull-up disable
UINT32 PAD5;

UINT32 GPFCON; // Port F - offset 0x50
UINT32 GPFDAT;
UINT32 GPFUP;
UINT32 PAD6;

UINT32 GPGCON; // Port G - offset 0x60
UINT32 GPGDAT;
UINT32 GPGUP;
UINT32 PAD7;

UINT32 GPHCON; // Port H - offset 0x70
UINT32 GPHDAT;
UINT32 GPHUP;
UINT32 PAD8;

UINT32 MISCCR; // misc control reg - offset 0x80
UINT32 DCLKCON; // DCLK0/1 control reg

UINT32 EXTINT0; // external interrupt control reg 0
UINT32 EXTINT1; // external interrupt control reg 1
UINT32 EXTINT2; // external interrupt control reg 2

UINT32 EINTFLT0; // reserved
UINT32 EINTFLT1; // reserved
UINT32 EINTFLT2; // external interrupt filter reg 2
UINT32 EINTFLT3; // external interrupt filter reg 3

UINT32 EINTMASK; // external interrupt mask reg
UINT32 EINTPEND; // external interrupt pending reg

UINT32 GSTATUS0; // external pin status
UINT32 GSTATUS1; // chip ID
UINT32 GSTATUS2; // reset status
UINT32 GSTATUS3; // inform register
UINT32 GSTATUS4; // inform register

UINT32 FLTOUT; // C0 - added by simon
UINT32 DSC0;
UINT32 DSC1;
UINT32 MSLCON;

UINT32 GPJCON; // D0
UINT32 GPJDAT;
UINT32 GPJUP;
UINT32 PDA9;

} S3C2440A_IOPORT_REG, *PS3C2440A_IOPORT_REG;

里边包含 UINT32 EXTINT0; UINT32 EXTINT1; UINT32 EXTINT2; 看来不用S3C2440A_BASE_REG_PA_INTR做虚拟地址映射啊

jiereliyi 2009-09-29
  • 打赏
  • 举报
回复
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-09-28
  • 打赏
  • 举报
回复
一、v_pIOPregs 地址问题:

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

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

二、
你的设置 如终端的设置 影响到了其他的驱动 导致起不来
xuefeng_baggio 2009-09-28
  • 打赏
  • 举报
回复
是不是v_pIOPregs寄存器没有分配地址呀?这样会出错的!
Virace GPS Simulator V0.3.1 自述文件 2009.6.7 ====================================================================== Virace GPS Simulator是什么? ====================================================================== Virace GPS Simulator(以下简称为Virace)用软件模拟GPS接收器输出的GPS语 句,通过串行口输出到GPS应用软件。用鼠标或键盘控制Virace而模拟实际GPS接 收器的运动,或者重播已有的GPS航迹文件,从而在室内测试GPS导航软件等。 Virace具有手动实时控制及航迹重播两种方式。为了控制灵活方便,Virace定义 了许多鼠标及键盘动作。经过少许试用,就可以对照一个大比例尺的导航地图以 超过正常驾车速度行驶在市区及郊区路上。 ====================================================================== Virace运行在什么操作系统下? ====================================================================== Windows ====================================================================== Virace运行的方式 ====================================================================== 1. Windows下的GPS软件可通过Virace的虚拟串口直接测试。 2. Windows下有微软的Device Emulator,因此部分与Device Emulator兼容的 PPC、CE、SP软件可以在Device Emulator中模拟测试,由Virace提供GPS信号。 3. 可以将Virace输出到蓝牙的输出COM口,测试使用蓝牙GPS模块的PPC、SP及 Symbian S60等GPS软件。 4. Virace输出到PC的物理COM口,测试任何与PC物理串口连接的GPS设备 5. 用Virace将plt、gpx、kml、gpssim、trk格式的航迹文件,转为带速度、方 位角,及卫星状态的nmea文件,再在GpsGate内播放。 ====================================================================== Virace的特点 ====================================================================== 四种模式:自由驾驶模式 + 三种航迹重播模式(逐点重放航迹模式,手控速度 航迹模式,比例速度航迹模式)。运行中根据需要可在四种模式间无缝自由切换。 航迹文件支持plt、gpx(含gpx航迹及Garmin详细航线)、kml、gpssim、trk。 可将航迹文件另存为带速度、方位角,及卫星状态的nmea文件。 航迹重播时具有丰富的控制项,可快进、快退,选择某个段,反序,循环,亦可 人为加入左右偏移。 载入航迹时可选过滤掉点数少或距离小的段。 可选与PC版OziExplorer交互运行。通过Ozi API,在Ozi中双击地图上的某点, Virace就立即跳跃至该点(自由驾驶模式),或跳至离该点最近的航迹(航迹 重播模式);单击地图上的某点,则以当前速度向该点行驶(自由驾驶模式)。 最多3路COM口输出,加1路Ozi输出。每路的参数是独立选择的,且可以独立启停。 支持虚拟串口。与Eltima Virtual Serial Port ActiveX Control V2.5及对应的 Eltima Virtual Serial Port Driver兼容。注:Eltima Virtual Serial Port 是共享软件,一切权利归其所有人。Virace的发行包内不包括该虚拟串口驱动及 控件,请自行购买或下载试用版。 多种转向方式。鼠标滚轮,Ozi中单击,键盘左右箭头等。另有键盘45度及10度转 向键。键盘左右箭头及鼠标滚轮的转向灵敏度可自定义。 多个预设的速度键及上下箭头加减速,另外可随时暂停(速度为0,但依然输出GPS 信号)。 在退出时自动保存当前位置(经纬度、速度、方位角等)及所有
MyWifiAP 2.3.1.221注册版是一款由波黑难民开发的虚拟无线路由器软件,非常轻松的在Win7、Win8系统建立并开启Wifi热点,内置了注册机。只要您的电脑有支持承载网络的无线网卡(一般笔记本均自带、台式机可外接),并且是 Windows 7/8 系统,它就能将该电脑虚拟成一台WIFI路由器。其他的笔记本、手机、iPad、Surface、Galaxy Tab 等可通过 WIFI 上网的设备便能够连接到此虚拟的无线路由器实现共享上网。 解压后运行MyWifiAP.exe,点击任务栏右下角的软件图标→“设置”,设置完毕后点击“确定”,然后“开启”就可以享受无处不在的 WIFI了~ MyWifiAP 2.3.1.221 更新日志: 1.新增客户端查看及管理功能,可随时查看用户在线情况 2.新增对 ADSL 宽带连接共享的支持 3.增加虚拟无线路由服务重启选项 4.执行完“修复网络共享”操作后给予提示 5.解决在英文版操作系统中启用“保持活跃状态”选项后,CPU 占用率偏高的问题 6.修复部分支持承载网络的无线网卡被软件报不支持的故障 7.改变软件启停服务时的音效,原先的蜂鸣器声实在太不够动听了 8.加入操作系统版本判断,避免在不支持的系统中产生无用操作 9.修复了软件刚启动后快速打开它的一些窗口可能会发生控件错乱的问题 10.修复了服务为停止状态时,执行注册操作后服务会自行开启的问题 11.增加软件窗口的淡入淡出效果,纯粹手痒型更新 12.修改少部分界面提示文本
一些教学课件中,常看到一些一步一步屏幕操作的演示课件,这种教学演示非常适用实践于教学,其实要作这种屏幕录制影像并不难,它不需要什么特殊的设备,只要使用WinCAM 2000 V3.0就可实现这种功能。 作为一个包含了屏幕动态录制和影像编辑功能的软件,WinCAM 2000 V3.0在其屏幕录制功能中可抓取屏幕上的任何活动,包括鼠标的挪动、程序的处理及按键操作等。WinCAM 2000由WinCAM Recorder、WinCAM player、WinCAM Producer三个工具组成,WinCAM Recorder就是个屏幕摄影机,可完成对屏幕动作的录制;WinCAM player是个媒体播放器,但只能播放WinCAM 2000自己的WCO和WCM两种格式的文件;WinCAM Producer则是WinCAM 2000的主程序,它具有Recorder与Player的全部功能,并且还能对生成的影像进行编辑,从而能让用户做出更专业、更清晰的影像。WinCAM2000还能将影像转换为WCM、AVI等其它多种影像格式。 录制影像。WinCAM Producer提供了一个操作的向导,因此即使初次接触的人也能通过操作向导非常容易地掌握它,用户可通过程序组中WinCAM 2000下的“WinCAM Producer”来启动它。在录制前,我们首先要确定录制的区域,WinCAM 2000提供了全屏幕、指定窗口及自定义窗口三种,全屏幕是指全屏幕捕捉,最终文件会自动用全屏形式播放;指定窗口是可对指定窗口里的内容和活动进行捕捉;自定义窗口即自己定义一个区域,用户可通过鼠标拖动的方法在屏幕上画个矩形框,所有在矩形框内的操作都可被记录下来。为使制作的影像效果更突出,操作过程中可加入一些背景音乐或者事件的声音,如单点鼠标声、鼠标拖放声等等,WinCAM 2000都能自动录制下来。区域设置完后,就可直接开始录制,这时在窗口右下角有个绿色小按钮,您可随时通过点击该按钮来中止或开始录制,当然也可通过ESC键来停止。录制完后,影像文件会保存为WCM文件。 影像编辑。尽管考虑得很周到,但仍无法保证绝对正确,因此我们还需对生成的影像文件进行编辑,删除一些不需要的帧,或加入些说明及音效。实际上,WinCAM 2000是通过对帧的各种处理,按一定顺序和规则组合在一起,因此在编辑窗中我们既可针对某帧进行操作,也可对全部的帧进行操作。保存完后,系统自动进入影像编辑窗口,WinCAM Producer的窗口由工具栏、Slide栏、编辑栏及工作区四部分组成,很简洁。在多媒体演示操作中可以同时辅上语音讲解,通过麦克风直接即时录音。除声音外,还可在某一个帧或全部的帧中加进一些文字说明、标注。除此之外,用户还可通过“Slide栏”删除不需要的帧。编辑完后就可进行影像输出了,通过菜单“file|Convert File to AVI”或者“file|Convert File to EXE”可将影像输出成AVI或者EXE格式,在输出成AVI文件时,用户应根据自己的电脑配置来选择合适的颜色模式。 此外,WinCAM 2000还可录制游戏片断,以及把Flash动画录成AVI格式的电影。WinCAM 2000对系统要求不高,无论是作教学软件还是用于推广公司产品,它都能胜任,而且它生成的文件体积还很小。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧