摘要:
一 WinCE中断体系结构中断涉及4层,即:硬件层、内核层、OAL层、IST处理层;1 硬件层:硬件层就是实际触发中断的硬件,这里主要有两方面作用,一个是触发中断,第二个是enable/disable硬件中断。2 内核层:这一层由内核来处理,包括中断异常产生后跳转到相应的ISR,以及根据SYSINTR来触发相应的Event。3 OAL层这一层主要就是我们需要实现的代码了,来识别硬件IRQ,对应到SYSINTR。4 IST处理层一般使用IST来做实际的中断处理,这样不会占用很多的锁定系统时间来处理中断,但是对中断的实时性大打折扣。二 IRQ,ISR,IST和SYSINTRIRQ:IRQ (Int 阅读全文
摘要:
设置事件的状态为有标记,释放任意等待线程。如果事件是手工的,此事件将保持有标记直到调用ResetEvent。这种情况下将释放多个线程,如果事件是自动的,此事件将保持有标记,直到一个线程被释放,系统将设置事件的状态为无标记。如果没有线程在等待,则此事件将保持有标记,直到一个线程被释放。SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号状态时才返回,OBJECT可以是EVENT,也可以是其它内核对象。 当你创建一个线程时,其实那个线程是一个循环,不像上面那样只运行一次的 阅读全文
摘要:
1.实现一个动态库,其中实现以下函数: DWORD xxx_Init( LPCTSTR pContext, LPCVOID lpvBusContext); DWORD xxx_Deinit( DWORD hDeviceContext ); DWORD xxx_Open(DWORD hDeviceContext,DWORD dwAccess, DWORD dwShareMode); DWORD xxx_Close( DWORD hDeviceContext ); void XXX_PowerUp( DWORD hDeviceContext ); void XXX_PowerDown(DWORD 阅读全文
摘要:
一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显 阅读全文
摘要:
From a command prompt, in your OS design directory, create two subdirectories for the driver. One is for a library corresponding to your driver and the other is for your driver's binary file, which can be a DLL or EXE. (建立src文件夹的copy,改名为DLL,一个生成lib,另一个生成DLL,在ep93xx\src\Drivers下面建立目录dm9isa,然后在下面建 阅读全文
摘要:
在WINCE下能够直接访问的都是虚拟地址,不能直接访问GPIO端口,因此我们首先需要将GPIO口的物理地址映射到虚拟地址上来。 分别使用VirtualAlloc和VirtualCopy这两个函数来完成映射! 这两个函数的原型: LPVOID VirtualAlloc( LPVOID lpAddress, DWORD dwSize, DWORD flAllocationType, DWORD flProtect ); BOOL VirtualCopy( LPVOID lpvDest, LPVOID lpvSrc, DWORD cbSize, DWORD fdwProtect ); 如果这两个函数 阅读全文
摘要:
I2C是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。I2C是总线结构,1个Master,1个或多个Slave,各Slave设备以7位地址区分,地址后面再跟1位读写位,表示读(=1)或者写(=0),所以我们有时也可看到8位形式的设备地址,此时每个设备有读、写两个地址,高7位地址其实是相同的。I2C数据格式如下:无数据:SCL=1,SDA=1;开始位(Start):当SCL=1时,SDA由1向0跳变;停止位(Stop):当SCL=1时,SDA由0向1跳变;数据位:当SCL由0向1跳变时,由发送方控制SD 阅读全文
摘要:
TI的达芬奇架构嵌入式应用处理器使用DSP与ARM结合的非对称多核结构,当然现在也有管脚全兼容的单核。本文要介绍的就是其中的一款低功耗处理器OMAPL138。 OMAPL138包括一个主频300M的ARM9处理器内核和一个300M的C6748DSP内核(均是32位处理器)。此外还有大量外设在此不做说明,与通用的ARM与DSP内核相比有如下一些不同点: 1.内存映射,该处理器的外设与内存统一编址,DSP与ARM共享4G内存空间。但其中有一部分DSP仅可见(如DSP的数据指令缓存),一部分ARM仅可见(如ARM的内部RAM),其余的两者都可以访问,具体的请参考其芯片资料。 2.中断,与通用的DSP 阅读全文
摘要:
struct mux_config {const char *name;const char *mux_reg_name;const unsigned char mux_reg;const unsigned char mask_offset;const unsigned char mask;const unsigned char mode;bool debug;};/** Device specific mux setup*/static const struct mux_config da850_pins[] = {#ifdef CONFIG_DAVINCI_MUX/* UART0 func 阅读全文
摘要:
1 OMAPL138-AINTC定义:AINTC是SOC片上系统中断和ARM9内核中断之间的接口,ARM9内核中断分为IRQ和FIQ两种; 1.1 101个系统中断 1.2 32个中断通道 1.3 通道0和1映射FIQ快速中断,通道2-31映射IRQ中断 1.4 每个系统中断可单独使能和禁止 1.5 ARM9内核中断可使能和禁止 1.6 硬中断优先级管理2 OMAPL138-AINTC之中断映射 2.1 101个片上系统中断可映射任意32个中断通道 2.2 多个系统中断可映射到一个中断通道 2.3 一个系统中断不能映射到多个中断通道 2.4 中断通道0-1映射到ARM内核的快速中断FIQ 2. 阅读全文