wince6.0 s5pv210 中断

1. 在smdkv210\src\oal\oallib\ksarm.h头文件里可以看到wince的中断定义。

    设备中断的起始编号即wince预定义的设备中断ID的基值

    SYSINTR_DEVICES EQU 8

    一共支持64个设备中断                                
    SYSINTR_MAX_DEVICES EQU 64                    


    可用的设备中断ID的基值

    SYSINTR_FIRMWARE    EQU SYSINTR_DEVICES+16      

    中断总数                                      
    SYSINTR_MAXIMUM EQU SYSINTR_DEVICES+SYSINTR_MAX_DEVICES           

    

   那我们自己增加的外设的中断需要以SYSINTR_FIRMWARE为基值来定义所有自定义的系统中断号都应该基于该值进行累加加1,这些自定义的系统中断号用于和IRQ一一对应。如下:

   #define  SYSINTR_SHUTPOWER_DETECT  (SYSINTR_FIRMWARE+N)  

  SYSINTR_SHUTPOWER_DETECT为我定义的关机中的中断。      

   N为当前已定义的最大值(以保证此中断未使用过)。


2. 在datasheet上查要使用的中断号。

    

   我用的是XEINT1/GPH01----->EINT1


3. 在s5pv210_sec_v1\oal\inc\intr_reg.h 中找到我们要用的虚拟中断号IRQ_EINT1。


4. 在smdkv210\src\oal\oallib\intr.c中的BSPIntrInit()函数中加入对GPH01的初始化。

    //gph01 as eint1

    v_pGPIOregs->GPH0.GP_CON &=  ~(0xf<<4);

    //gph01 as eint1

    v_pGPIOregs->GPH0.GP_CON |=  (0xf<<4);

    //gph01 pull disable
    v_pGPIOregs->GPH0.GP_PUD &=~(0x3<<2);

    //gph01 low level triggered       

    v_pGPIOregs->EINTCON.EXT_INT0_CON &=~(0xF<<4);    

    //enable eint1 

    v_pGPIOregs->EINTMSK.EXT_INT0_MASK &=~(0x1<<1);

    //Filter Enable for EXT_INT[1] ---DISBLE

    v_pGPIOregs->EINTFLT.EXT_FLT0_CON._FLT_CON0   &=~(0x3<<14); 

    //EINT1 interrupt clear   

    v_pGPIOregs->EINTPND.EXT_INT0_PEND |=(0x1<<1);  

    然后调用OALIntrStaticTranslate(SYSINTR_SHUTPOWER_DETECT, IRQ_EINT1)来注册中断。

    然后使能中断。

    value = IRQ_EINT1;
    OALIntrEnableIrqs(1, &value);

    BSPIntrInit这个函数由s5pv210_sec_v1\oal\intr\intr.c的OALIntrInit()来调用,

    OALIntrInit()最终由OEMInit()来调用。

    看这个函数的注释。

    //  This is Windows CE OAL initialization function. It is called from kernel
    //  after basic initialization is made.

    他由内核来调用的。


5. 修改OALIntrEnableIrqs函数,加入我们对此中断的使能。

    if (PhysicalIRQ == PHYIRQ_EINT1)
        {
            g_pGPIOReg->EINTMSK.EXT_INT0_MASK &=~(0x1<<1); //enable eint1
            OALMSG(1, (L"+OALIntrEnableIrqs(%d,)\r\n", PhysicalIRQ));
        }

       6. 修改OALIntrDisableIrqs函数,加入我们对此中断的关闭。

        if (PhysicalIRQ == PHYIRQ_EINT1)
        {
                   g_pGPIOReg->EINTMSK.EXT_INT0_MASK |=(0x1<<1); //enable eint1
                   g_pGPIOReg->EINTPND.EXT_INT0_PEND |=(0x1<<1);  // Clear pending EINT1
                   OALMSG(1, (L"+OALIntrDisableIrqs(%d,)\r\n", PhysicalIRQ));  
        }

    至此,对bsp修改完成,接下来写驱动。

1. 在驱动的初始化函数中创建一个事件对象

    gShutpowerIntrEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

    此事件对象用于和中断绑定,来阻塞我们自己写的IST。


2. 然后将刚才创建的事件对象与中断绑定。

    InterruptInitialize(SYSINTR_SHUTPOWER_DETECT,gShutpowerIntrEvent, NULL, 0)


3. 创建我们自己的IST

    gShutpowerIntrThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ShutpowerIntrThread,this, 0, NULL);


4. 编写IST完成我们在中断到来时需要完成的关机动作。

    IST的框架如下:

    int WINAPI ShutpowerIntrThread(void) {

          while(1) {

                  WaitForSingleObject(gShutpowerIntrEvent ,INFINITE);

                  关机代码

          }

          InterruptDone(SYSINTR_SHUTPOWER_DETECT);

    }

至此一个简单的CE中断关机驱动完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】vsftp配置实例-虚拟用户锁定目录

转自&#xff1a; vsftp配置实例-虚拟用户锁定目录_jasonyang69的博客-CSDN博客_vsftpd锁定用户目录 快速解决 vsftpd nologin 虚拟用户 拒绝访问 无法登录_小飞飞飞鱼的博客-CSDN博客_vsftpd 拒绝访问 一、实验步骤 0、启用 nologin shell #vim /etc/shells /bin/sh /bi…

【转】高端球管使用了哪些高科技?

转自&#xff1a;高端球管使用了哪些高科技&#xff1f; 本文来源&#xff1a;第三方维修平台 本文作者&#xff1a;RepairCT 随着人类发现X射线&#xff0c;这项技术不断应用到医学领域&#xff0c;比如X光机、DR、CT、乳腺钼靶等医疗设备&#xff0c;它们的主要核心均是利用…

关于代码组织的一些看法(上)

今天看了一个篇关于架构的文章&#xff0c;略有所感&#xff0c;记录一下。 软件的架构基本是从一个原始需求出发&#xff0c;逐步构建可维护、更灵活的开发框架的过程&#xff0c;在这个构建过程中可能会逐渐的增加代码的复杂度来满足灵活性的要求&#xff0c;从这个层面来讲&…

CE下基于Zylonite硬件平台的SD卡驱动开发

摘要&#xff1a;本文结合实际项目&#xff08;一款以WINCE为操作系统内核的GSM/PHS双模智能手机&#xff09;对嵌入式系统Windows CE5.0的底层驱动&#xff08;SD卡&#xff09;的架构进行了分析和研究&#xff0c;以MARVELL公司提供的基于INTEL Zylonite硬件平台的BSP为基础&…

pthread-win32在VC2005下的使用

pthread-win32是一个在Win32环境下的Unix POSIX线程库的移植. 有了它, 可以比较方便的移植Unix/Linux多线程程序到Windows下. 在VC2005下使用也很简单: 下载, 地址是 http://sourceware.org/pthreads-win32 里面include目录中是头文件, lib目录中是.lib和.dll文件. 在VC项目的属…

【转】apt命令

转自&#xff1a;apt命令详解 - 简书 apt命令可以说是Ubuntu系统下最为重要的命令&#xff0c;安装、更新、卸载软件&#xff0c;升级系统内核都离不开apt命令。 一、apt的简介 apt的全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具。 最初的时候&#xff…

maple 2018 窗口关闭提示乱码_如果解决SOLIDWORKS工程图转CAD字体出现乱码的问题_SolidWorks生信科技...

操作SOLIDWORKS工程图转CAD时&#xff0c;由于SOLIDWORKS使用的是Windows字体&#xff0c;而CAD使用的是线性字体&#xff0c;字体就容易出现乱码的苦恼。一般出现乱码是因为字体映射里面没有中文&#xff0c;所以会导致乱码。遇到这种情况&#xff0c;只需找到字体映射文件&am…

【转】apt 和 apt-get的区别

转自&#xff1a;https://www.sysgeek.cn/apt-vs-apt-get/ Ubuntu 16.04 发布时&#xff0c;一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年&#xff0c;apt 命令就已经发布了第一个稳定版&#xff0c;只是直到 2016 年的 Ubuntu 16.04 系统发布时才开始引人关注…

准确检测图像的轮廓 opencv_图像处理案例实战

1. 切边源图像&#xff1a; 需求&#xff1a;扫描仪扫描到的法律文件&#xff0c;需要切边&#xff0c;去掉边缘空白&#xff0c;这样看上去才真实&#xff0c;人工操作成本与时间花费高&#xff0c;希望程序自动实现&#xff0c;高效、准确。 实现思路&#xff1a;边缘检测 轮…

pp助手苹果版_再见!PP助手iOS端即将下线 曾是中国最大的苹果助手

苹果PP助手即将下线 在今日PP助手官方发布公告&#xff1a;尊敬的PP助手iOS版用户&#xff1a;衷心感谢您多年以来对我们的支持及厚爱。因业务调整&#xff0c;PP助手将于2020年2月28日正式下线iOS版产品&#xff0c;包括PP助手iOS版、PP助手iOS PC版等。 对您造成的不便还望理…

oppo手机工程模式清除数据需要密码_手机隐藏的快捷键都有哪些?

手机从开发出来到现在&#xff0c;已经换了很多代了&#xff0c;从大哥大&#xff0c;小灵通&#xff0c;到诺基亚到山寨机到苹果到华为&#xff0c;几十年过去了。手机从奢侈品一下飞去每个人手里&#xff0c;反正我手机有手机已经快10年了&#xff0c;所以我相信每个人对自己…

关于竖表转横表的问题

本文作者&#xff1a;dinya内容摘要&#xff1a;在开发过程&#xff0c;经常遇到一些将表的显示方式进行转换的需求&#xff0c;我们习惯性称之为竖表到横表的转换&#xff0c;本文通过一个例子来简要说明常见的两种竖表转横表的问题。本文适宜读者范围&#xff1a;oracle初级&…

全系光谱完整版

宇宙射线也叫电磁波&#xff0c;其中包含γ射线、X射线、紫外线、可见光、红外线、近红外、远红外&#xff0c;还有无线电和超声波。 无线电波是振荡电路中自由电子作周期性的运动产生的&#xff0e; 红外线、可见光、紫外线是原子外层电子受激发产生的&#xff0e; X射线是原…

cat 几行_迷风花说Cat!Cat因为林教练是好教练回去现实却给了一巴掌

滔博TES前主教练迷风花26日发布了微博&#xff0c;就自己离职、Cat林教练事件以及汤汤纵情转会事件进行了澄清&#xff0c;网友粉丝们在看到教练迷风花发布的微博后&#xff0c;更加了解了很多事情的真相&#xff0c;粉丝们纷纷对教练迷风花送上了祝福&#xff0c;教练迷风花到…

前端和后端的英文_计算机专业的本科生在前端、后端、测试和运维之间该如何选择...

首先&#xff0c;对于计算机专业的同学来说&#xff0c;在选择发展方向的时候往往会遇到一些困惑&#xff0c;当前随着计算机技术体系的不断壮大&#xff0c;计算机领域的岗位分类也越来越细化&#xff0c;而且在新技术的推动下&#xff0c;还在不断出现新的岗位&#xff0c;比…

医学影像后处理技术超详细收藏版(上)

转自&#xff1a;医学影像后处理技术超详细收藏版&#xff08;上&#xff09; 导语&#xff1a; 医学图像后处理是通过综合运用计算机图像处理技术&#xff0c;医学知识&#xff0c;将由各种数字化成像技术所获得的人体信息按照一定的需要在计算机上表现出来&#xff0c;使之…

【转】VTK和ITK中的坐标系统

当我们在处理医学图像和应用时&#xff0c;一个问题就是坐标系统之间的不同。在图像应用中通常有三个坐标系&#xff0c;分别是世界坐标系&#xff0c;解剖坐标系和图像坐标系。 每种坐标系目的不同&#xff0c;呈现数据的方式也不一样。 解剖坐标系由三个平面组成&#xff0c;…

(ZT)在日本市场推广 iPhone 应用的经验

原贴&#xff1a;http://www.cocoachina.com/appstore/market/2010/0728/1942.html 本文作者为 CocoaChina 会员 “lawrencewu”&#xff0c;是一位专攻日本市场的 iPhone 开发者。他的10款 App &#xff08;9个收费&#xff0c;一个免费&#xff09;在9个月的时间里已经取得了…

嵌入式系统 Boot Loader 技术内幕

1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次&#xff1a; 1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选)&#xff0c;和 Boot Loader 两大部分。 2. Linux 内核。特定于嵌入…

互联网医院 2020年突出成就_【关注】中国社科院发布2020中国医院互联网影响力排行榜...

导 读:11月4日&#xff0c;中国社科院健康业发展研究中心联合好大夫在线&#xff0c;发布2020中国医院互联网影响力排行榜&#xff0c;这是该榜单连续第5年发布。中国社科院健康业发展研究中心以好大夫在线平台611.6亿次的患者浏览轨迹、6648万患者的在线问诊记录、4.7亿次医…