本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

☆★☆★☆★☆★☆★☆
生活的点点记录,以及一些体会...........

喜欢是淡淡的爱,爱是深深的喜欢.

时间会见证一切.......................

欢迎大家指出错误,共同进步..........

期待中..............................

☆★☆★☆★☆★☆★☆


我的分类(专题)

日志更新

最新评论

留言板

链接

世纪音频

 

 


Blog信息
blog名称:
日志总数:162
评论数量:312
留言数量:0
访问次数:940553
建立时间:2005年5月17日




[wince study]WINCE驱动程序快速入门及经验点滴(转)
文章收藏

oceanblue 发表于 2008/5/8 13:30:52

在CE中,最简单的驱动程序莫过于一个内置(Built-in)设备的流接口驱动。对于一个不支持热拔插的设备,最方便的做法就是为其实现一个内置的流接口驱动。这种驱动只需要做以下工作:

1.实现一个动态库,其中实现以下函数:
    DWORD xxx_Init( LPCTSTR pContext, LPCVOID lpvBusContext);
    DWORD xxx_Deinit( DWORD hDeviceContext );
    
    DWORD xxx_Open(DWORD hDeviceContext,DWORD dwAccess, DWORD     &nbs


阅读全文(1595) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]驱动流程(转)
文章收藏

oceanblue 发表于 2008/5/8 13:05:32

    在学习驱动程序之前,我们还有很多东西要了解。想来想去,可能最重要的还是中断了,所以,这次我们花点时间来了解一下在Windows CE中的中断机制。
    凡是学过计算机原理的人都知道中断是什么东西,所以这些基本知识我们就不再详述了,我们下面就先看一下CE对中断的整体处理流程,以方便从全局上有个整体的认识。
    下图是CE中中断处理的流程图示 

阅读全文(3051) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]Exception Process in WinCE & ARM(转
文章收藏

oceanblue 发表于 2008/5/8 12:39:21

今天INTEL的Application Engineer特地纠正了“中断向量表”的说法,应该叫Exception Vector.按我理解,应该只有IRQ和FIQ算做interrupt吧,像reset和几个abort叫做exception的确更合适些。 一般而言, 硬件的异常产生后,CPU将跳转到0x00000000地址访问中断向量表(normal exception vectors),  但ARM920T / ARM9 / ARM10 系列的CPU支持把中断向量表放到高地址0xFFFF0000(high exception vectors). 该跳转地址的决定因素为协处理器的CP15:BI13. 即CP15:BIT13 = 0时, 跳转到低地址; CP15:BIT13 = 1时, 跳转到高地

阅读全文(3053) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]OEMAddressTable介绍
文章收藏

oceanblue 发表于 2008/5/8 11:10:24

一般在ARM架构的CPU上,物理地址都是统一编址的,寻址空间为4GB(32Bit CPU)。也就是说,针对一个ARM的处理器,它可以访问的物理空间是4GB。在WinCE中,ARM中的4GB物理地址空间将被映射为512MB的虚拟内存空间。 OEMAddressTable就是一个4GB物理地址空间到WinCE Kernel中的512MB虚拟地址空间的映射表。 在BSP中,会定义OEMAddressTable来描述系统中可访问的物理空间及对应的虚拟地址空间,还有大小。这个表会在WinCE系统开始启动的时候传给MMU,具体到BSP中应该是在OAL中的startup.s中,OEMAddressTable的起始地址会被放到r0寄存器中,然后就跳转到KernelStart里面,KernelStart会用OEMAddressTable完成MMU得初始化。当WinCE启动以后,就只能访问虚拟地址空间了。 举个例子,比如我们要开发一个Flash的驱动程序,那么首先我们知道这个flash所接的片选对应的物理起始地址是多少(假如是0x60000000),大小

阅读全文(1650) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]VC中字符串类型的互相转换
文章收藏

oceanblue 发表于 2008/5/8 11:03:50

一,VC中字符串类型的互相转换
阅读全文(5853) | 回复(2) | 编辑 | 精华 | 删除
 


[wince study]wince源码分析中断之map.c
文章收藏

oceanblue 发表于 2008/5/8 9:39:50

wince学习手记
OAL是位于WindowsCE内核与目标设备硬件之间的一个代码层,用于实现windowCE与目标设备硬件之间的通信。为了实现内核与硬件之间最基本的通信功能,OEM必须实现一些必要的功能,同时为了适合不同的硬件配置与操作系统功能,OEM有必要的选择实现一些其他的功能。
在OAL开发过程中,OEM需要实现下列主要功能或函数:
.Startup函数;
.调试串口;
.OEMInit函数;
.系统计时器;
.中断处理;
.内核的输入/输出(ioctl);
.KITL。
下面给出微软公司提供的各个功能的函数。
/***************************中断处理****************************/
./platform/Common/src/common/intr/base/map.c
The file implement simple t

阅读全文(3527) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]WinCE BSP中OAL层中的OEMIoControl介绍
文章收藏

oceanblue 发表于 2008/5/8 9:05:51

在WinCE的BSP中的OAL部分,会有一个ioctl.c或者oemioctl.c文件,里面主要定义了一个叫OEMIoControl(..)的函数。可以说OEMIoControl是一个很有用的WinCE内核输入/输出函数。 在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用OEMIoControl函数,这样应用程序和驱动程序就可以访问到OAL中的资源了。但在WinCE6.0中,提供了更好的安全性,应用程序能够访问OEMIoControl中的case受到了限制,只有下面的这些case是可以让应用程序访问的: IOCTL_HAL_GET_CACHE_INFO
IOCTL_HAL_GET_DEVICE_INFO
IOCTL_HAL_GET_DEVICEID
IOCTL_HAL_GET_UUID
IOCTL_PROCESSOR_INFORMATION 如果用户在应用程序中试图访问其他的case,肯定会返回失败的。在WinCE6.0中,驱动程

阅读全文(1566) | 回复(0) | 编辑 | 精华 | 删除
 


« 1 2 3 4



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.078 second(s), page refreshed 144772770 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号