知识大全 WinCE中OEM适配层编程点滴之创建OAL[2]

Posted

篇首语:搓绳不能松劲,前进不能停顿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 WinCE中OEM适配层编程点滴之创建OAL[2]相关的知识,希望对你有一定的参考价值。

WinCE中OEM适配层编程点滴之创建OAL[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    从以上代码不难看出ISR的任务就是返回以 SYSINTR_ 为前缀的中断ID 如果不需要进一步执行IST 那么就返回SYSINTR_NOP

   中断注册步骤

  参考X 平台的代码 中断注册步骤如下

   ) 用SETUP_INTERRUPT_MAP宏关联SYSINTR和IRQ 以 SYSINTR_ 为前缀的常量由内核使用 用于唯一标识发生中断的硬件 在Nkintr h文件中预定义了一些SYSINTR OEM可以在Oalintr h文件中自定义SYSINTR

   ) 用HookInterrupt函数关联硬件中断号和ISR 这里的硬件中断号为物理中断号 而非逻辑中断号IRQ 在InitPICs函数(和上述ISR位于同一文件)的最后调用了HookInterrupt函数 如下

for (i = ; i < ; i++) HookInterrupt(i (void *)PeRPISR); ///用ISR关联 个中断号

   中断处理步骤

   ) 调用InterruptInitialize函数关联SYSINTR和IST 具体是关联IST等待的事件 一般在驱动程序中按如下编写

  hEvent = CreateEvent( ) ///创建一个事件对象  InterruptInitialize(SYSINTR_SERIAL hEvent ) ///关联一个串口中断ID和这个事件  hThd = CreateThread( MyISTRoutine hEvent ) ///创建一个线程(IST)  CeSetThreadPriority(hThd ); ///提高此线程的优先级

   ) IST执行I/O操作 一般IST按如下编写

  for(;;) ///驱动程序一直处于服务状态     WaitForSingleObject(hEvent INFINITE); ////无限等待事件    //// I/O操作   InterruptDone(InterruptId); ///结束当前中断处理  

   ) ISR和IST之间数据传输

  假如我们要从一个设备频繁的读取数据而每次读取量非常少 那么每次读取都要调用IST会降低性能 作为解决方案 ISR可以做读取工作(存放到缓冲区) 并在缓冲区存放满后由IST到缓冲区读取 因为ISR运行在内核模式而IST运行在用户模式 IST不能轻易地访问ISR的缓冲区 为此CE提供了一个办法(参见标题为 Passing Data beeen an ISR and an IST 的帮助文档) 您也可以到天极网嵌入式开发论坛询问

  二 实现系统时钟

   系统时钟(system tick)概念

  系统时钟是内核需要的唯一中断(IRQ ) 系统时钟每毫秒产生一个中断 当发生中断时内核在ISR中累计 到 的倍数就是过了一秒钟 在处理系统时钟的ISR中不仅要累计计数 还要决定是否通知内核开始重新调度当前所有的线程 要实现一个OAL 系统时钟是第一个必须做的事

cha138/Article/program/SQL/201311/16413

相关参考

知识大全 WinCE中OEM适配层编程点滴之创建OAL[3]

WinCE中OEM适配层编程点滴之创建OAL[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 WebSphere SAP适配器编程基础

WebSphereSAP适配器编程基础  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  介绍  从

知识大全 通过数据适配器进行更新[2]

C#高级编程:通过数据适配器进行更新[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 多核编程的四层境界

  自发表老子是伟大的多核计算科学家一文来收到许多网友的强烈反响褒扬者有之砸板砖者亦有之不过板砖数量倒是在我的意料之中凡是跟哲学或者说是玄学的东西沾上边的总会招来一阵口舌之争虽然砸板砖者也没有说出任何

知识大全 Oracle编程经验及维护点滴

Oracle编程经验及维护点滴  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一在分布式数据库环

知识大全 .NET简谈设计模式之(适配器模式)

.NET简谈设计模式之(适配器模式)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天我们要学

知识大全 通过数据适配器进行更新[1]

C#高级编程:通过数据适配器进行更新[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 用数据适配器来填充 DataSet

C#高级编程:用数据适配器来填充DataSet  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

点滴型白癜风与继发性白斑的不同之处

点滴型白癜风在日常生活中很普遍,是所有白癜风中患病较多的病症,因为它的症状同继发性白斑相似,很多没有经验的人往往使两者相混淆,这样不利于白癜风的治疗。因此我们要学会辨认白癜风的能力,因为在众多白癜风病

点滴型白癜风与继发性白斑的不同之处

点滴型白癜风在日常生活中很普遍,是所有白癜风中患病较多的病症,因为它的症状同继发性白斑相似,很多没有经验的人往往使两者相混淆,这样不利于白癜风的治疗。因此我们要学会辨认白癜风的能力,因为在众多白癜风病