• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试之WinCE中OEM适配层编程点滴之创建OAL[1]

发布: 2009-10-14 11:04 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 92次 | 进入软件测试论坛讨论

领测软件测试网

软件测试之WinCE中OEM适配层编程点滴之创建OAL[1]   软件测试工具

关键字:

正如CE的帮助文档所言,创建OAL是一个非常复杂的任务,而通常的办法是复制原有的相同平台的OAL代码,然后修改来适应平台的特殊要求。也就是说对于没有特殊要求的平台,复制原有相同平台的OAL代码就足够了。由于OAL的复杂性在这篇文章中我只讲解常用的部分。
  一、实现ISR

  1. ISR的概念

  ISR(interrupt service routine)是处理IRQs(interrupt request line)的程序。Windows CE用一个ISR来处理所有的IRQ请求。当一个中断发生时,内核的异常处理程序先调用内核ISR,内核ISR禁用所有具有相同优先级和较低优先级的中断,然后调用已经注册的OAL ISR程序,一般ISR有下列特征:

  1) 执行最小的中断处理,最小的中断处理指能够检验、答复产生中断的硬件,而把更多的处理工作留给IST(interrupt service thread)。

  2) 当ISR完成时返回中断ID(中断ID大部分是预定义的)。

  2. X86平台的ISR结构

  X86平台的ISR保存在%_WINCEROOT%\PUBLIC\COMMON\OAK\CSP\I486      \OAL\fwpc.c中,函数名为PeRPISR。下面分析一下此函数的主要代码:

 ULONG PeRPISR(void)
 {
  ULONG ulRet = SYSINTR_NOP; ///返回值,既中断ID(以SYSINTR_为前缀)
  UCHAR ucCurrentInterrupt; ///当前中断号
  if (fIntrTime) ////// fIntrTime 用于测试SR和IST的延时时间,测试工具为ILTiming.exe。
   ......
   ucCurrentInterrupt = PICGetCurrentInterrupt(); ////返回当前中断IRQ
  if (ucCurrentInterrupt == INTR_TIMER0) ///IRQ0,IRQ0为系统时钟(system tick)中断,具体见“二、实现系统时钟”
  ......
  if (dwRebootAddress) ////是否需要重启动
   RebootHandler();
   ......
  if(ucCurrentInterrupt == INTR_RTC) ////IRQ8,real-time clock的中断
   ......
  else if (ucCurrentInterrupt <= INTR_MAXIMUM) ///如果中断小于 INTR_MAXIMUM
  {
   ulRet = NKCallIntChain(ucCurrentInterrupt); ////调用中断链
   if (ulRet == SYSINTR_CHAIN) ///如果中断链未包含中断
    ulRet = OEMTranslateIrq(ucCurrentInterrupt); ////在IRQ 和SYSINTR之间转换,此函数返回IRQ对应的SYSINTR
    ......
    PICEnableInterrupt(ucCurrentInterrupt, FALSE); ///启用除当前中断以外的所有中断
  } ///else if
  OEMIndicateIntSource(ulRet); ///通知内核已经发生SYSINTR中断

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 软件测试 适配 OEM OAL WinCE


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网