原帖地址http://topic.youkuaiyun.com/u/20071008/11/D54DF4A6-09EF-4D7F-AADB-2F60FF3824FC.html
1 WinCE中第一次对中断的处理是在OAL的OEMInit()中,该函数调用OALIntrInit()完成对中断的初始化.
2 OALIntrInit()对中断的初始化做了如下工作:
2.1 通过配置IPR0-IPR33设置中断优先级,优先级定义在g_IntPriorities和g_IntPriorities2中,其中IRQ_OSMR0为最高优先级, IRQ_KEYPAD为最低优先级.
2.2 设置ICCR,在空闲模式时只对有效的,非屏蔽的中断响应.
2.3 BSPIntrInit().该函数对BSP中需要处理的中断进行初始化工作,主要是设置ICMR寄存器使GPIO1(CPLD)和GPIO2为非屏蔽状态,然后通过OALIntrStaticTranslate建立IRQ和sysintr之间的关联.
2.4 对于WinCE来说,中断可以作如下分类:
1> 与BSP无关的Kernel使用的内部中断, 比如IRQ_OSMR0(forsched),IRQ_RTCALARM;
2> 与BSP有关的CPU内部中断,比如IRQ_USBOHCI, IRQ_OSMR1, IRQ_KEYPAD, IRQ_FFUART, IRQ_BTUART, IRQ_STUART, IRQ_DMAC, IRQ_USBFN;
3> CPLD所管理的中断,以GPIO1通知CPU中断的产生,在收到GPIO1 产生的中断后可以通过读取地址0x0A00_0010判断具体的中断源,比如IRQ_GPIO1_MMCCD(MMC_IN_INT, MMC_OUT_INT), IRQ_GPIO1_USBCD(USB_IN_INT, USB_OUT_INT), IRQ_GPIO1_PCMCIA_S0_CSC(CF_IN_INT. CF_OUT_INT),还有在代码中没有处理的SIM卡中断(SIM_IN_INT, SIM_OUT_INT).
4> GPIO2_120产生的中断,通过寄存器ICIP的位10-GPIO_x通知CPU中断的产生,然后查询寄存器GEDR_x可以判断具体的中断源,比如IRQ_GPIO12_MARATHO, IRQ_GPIO10_ETHERNET,IRQ_GPIO13_UCB1400;
5> 以Installable ISR形式产生的中断,这类中断通常是以DLL的形式安装,在注册表中定义其实际的IRQ中断值,比如IRQ_MMC_DETECT,IRQ_MMC_CONTROL;
2.5 有几种方式可以建立实际中断IRQ到系统中断sysintr之间的关联,对于build-in设备,可以在OEMInit中通过 OALIntrStaticTranslate来建立静态的关联;但是对于installable ISRs,可以在注册表中定义实际的中断IRQ,然后通过在KernelIOControl中使用IOCTL_HAL_REQUEST_SYSINTR来实时分配新的sysintr,这有助于驱动的移植.
3 在CPU接收到中断后,对中断的处理是在 OEMInterruptHandler()中,该函数的首先屏蔽该中断,最后得到实际中断IRQ所对应的sysintr的值.
3.1 首先它通过中断寄存器ICHP得到实际的IRQ值;
3.2 对于GPIO产生的中断,通过清空GFER和GRER寄存器来屏蔽相同的中断;对于其余的CPU内部中断,通过清空ICMR寄存器的相应位来屏蔽中断;
3.3 对于Kernel使用的IRQ_OSMR0和IRQ_OSMR2,分别进行处理,得到sysintr;
3.4 对于通过GPIO0,GPIO1和GPIO2_120产生的中断,将IRQ的值进行转化,使之与OAL/intr.c和bulverder_intr.h中所定义的新的IRQ值相对应,此时的IRQ值就不是在ICIP中对定义的IRQ值了;
3.5 接着调用NKCallIntChain(irq)判断该IRQ是否已经被加入中断列表,同时开始调用该中断的ISR程序.
4 当中断处理完成后,调用OALIntrDoneIrqs(),重新使能中断.
相关推荐
基于Android13的系统启动流程分析(三)之FirstStageMain阶段
init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等。init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init1. Bootloader 引导当按下设备电源键时,最先运行的就是 bootloader(固化在ROM的程序),bootloader 的主要作用就是硬件设备(如 CPU、flash、内存)的初始化并加载到RAM,通过建立内存空间映射,为装载 Linux 内核做好准备,。
WINCE5.0的中断深入了解(转)
WINCE5.0的中断深入了解1.总体了解流程首先描述wince5.0 (2440BSP)的中断流程:流程1.创建事件aà创建线程ISTà用InterruptInitialize〈系统中断号绑定线程IST〉à线程IST进入等待事件a状态(挂起状态)。流程2.外部引发中断à OEMInterruptHandler屏蔽中断à把物理中断转换成系统中断,其他à重新使能中断。(ISR过程)>à操作系统根据系
4D Gaussian Splatting for Real-Time Dynamic Scene Rendering-4DGS阅读笔记
为了实现实时动态场景渲染,同时还能具备较高的训练和存储效率,作者提出了四维高斯溅射(4D-GS)方法,将其作为动态场景的一种整体表示方式,而不是对每个单独的帧应用三维高斯溅射(3D-GS)方法。在 4D-GS 中,提出了一种新颖的显式表示方法,它同时包含三维高斯模型和四维神经体素。受 HexPlane 启发,提出了一种分解的神经体素编码算法,以高效地从四维神经体素构建高斯特征,然后应用一个轻量级多层感知器(MLP)来预测在新时间戳下的高斯变形。
Windows下用diskpart挂载ESP分区:UEFI引导维护实战
ESP分区是UEFI引导体系下的核心区域,存放着bootmgfw.efi、BCD等启动关键文件。它采用FAT32文件系统,默认情况下Windows刻意不对其分配盘符,以避免普通用户误改导致系统无法启动。但在引导修复、双系统菜单调整、WinPE工具部署等场景中,挂载ESP分区几乎是绕不开的第一步。通过Windows自带的diskpart命令行,可以安全地为ESP分区分配临时盘符,完成引导文件备份、bcdedit配置或bcdboot重建等操作。从ESP分区的角色讲起,逐个梳理挂载前需掌握的分区识别方法与安全习惯
STK中的传感器、雷达、发射机、接收机、天线
本文根据STK手册介绍了传感器、雷达、发射机、接收机、天线等对象的基本属性,简略分析了它们的不同之处。
【上海大学计算机组成原理实验报告】七、程序转移机制
学习实现程序转移的硬件机制//掌握堆栈寄存器的使用//手动方式实现子程序调用转移过程//手动方式实现子程序返回转移过程//编程实现`OUT`寄存器交替显示`11`和`55`//若要求`11`和`55`各显示`50`次后停机,应该如何修改程序?//根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当`LDPC`有效时,如果此时`DUBS`上的值就是转移的目标地址,则此目标地址被打入`PC`,从而实现程序的转移;若`LDPC`为`0`是附带条件的,就形成“条件转移”。
WINCE5.0的中断深入了解
WINCE5.0的中断深入了解1.总体了解流程首先描述wince5.0 (2440BSP)的中断流程:流程1.创建事件aà创建线程ISTà用InterruptInitialize〈系统中断号绑定线
SAP ABAP 实用小技巧合集 (一)
本合集包含了笔者从事 ABAP 开发 17 年以来积累的小技巧。持续更新。
WINCE5.0+2443 camera中断不能进来的原因
<br />因为项目需要,我需要调试和完成WINCE5.0+2443系统和驱动的功能,在调试camera驱动的时候,发现一个很郁闷的问题,就是camera的中断一直进不来,因为我之前在WINCE6.0+2443系统中已实现了camera中断了,而WINCE5.0和WINCE6.0下的camra驱动架构基本一样,可是为什么camera中断一直会进不来呢?分析如下:<br />1. 中断ISR对camera中断设置不正确。<br />在OEMInterruptHandler()函数中加入调试信息,只
ESP32学习笔记06-UART 的485 通讯模式
通信方式选择UART 控制器支持多种通信模式,使用函数 uart_set_mode() 可以选择模式。选择特定模式后,UART 驱动程序将处理已连接 UART 设备的相应行为。例如,主机开始向 Tx FIFO 缓冲区写入数据时,UART 驱动程序会自动置位 RTS 管脚(逻辑 1);最后一位数据传输完成后,驱动程序就会取消置位 RTS 管脚(逻辑 0)。要使用此模式,软件。
11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)
11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)
WINCE5.0和WINCE6.0的内存与系统架构
<br />WINCE5.0和WINCE6.0的内存与系统架构<br />http://topic.csdn.net/u/20090410/14/75bba2cb-cefc-4ca5-b4f5-4165bbf16006.html<br />http://wenku.baidu.com/view/b7adad4bcf84b9d528ea7ab0.html<br />http://msdn.microsoft.com/en-us/library/bb331824.aspx<br />http://www.msd
【RH850/U2A】:功能安全
功能安全相关
分析三星5.0BSP中断
<br />看三星的5.0中断,看的一头雾水,相当郁闷。现在重新理清一下。<br />sontitan牛人也指示过一些。<br />引用楼主 wangxin_801115 的帖子:<br />请问这两个函数KernelIoControl和InterruptInitialize函数的区别是什么呢?? <br />个人理解:先用KernelIoControl申请中断号 <br /> 然后利用InterruptInitialize把 (从KernelIoControl申请的)中断号与事件相关联
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
WinCE OAL中的中断处理
作者:ARM-WinCE 关于WinCE的中断处理,OAL中主要是实现了ISR部分,一般IST会在设备驱动中实现。推荐一篇WinCE的中断架构的文章,如下:http://msdn.microsoft.com/zh-cn/library/ms836807.aspx 建议对WinCE中断不了解的朋友,可以先看看这片文章。架构如图: 这张图想必很多人都见过,主要
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
wince中断处理
1 WinCE中第一次对中断的处理是在OAL的OEMInit()中,该函数调用OALIntrInit()完成对中断的初始化. 2 OALIntrInit()对中断的初始化做了如下工作:2.1 通过配置IPR0-IPR33设置中断优先级,优先级定义在g_IntPriorities和g_IntPriorities2中,其中IRQ_OSMR0为最高优先级, IRQ_KEYPAD为最低优
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
wince 5.0 .2440 5.0BSP的中断过程
以前在优快云写过一些wince5.0中断的文章,现在重新看看,发现以前的有些理解是错误的,想翻开来改改,可是郁闷的优快云在前台没有返回后台的编辑功能,所以现在重新写一篇纠正一下。 首先描述wince5.0 (2440BSP)的中断流程
wince 中断
WINCE5.0的中断深入了解1.总体了解流程首先描述wince5.0 (2440BSP)的中断流程:流程1.创建事件aà创建线程ISTà用InterruptInitialize〈系统中断号绑定线程IST〉à线程IST进入等待事件a状态(挂起状态)。流程2.外部引发中断à OEMInterruptHandlerà操作系统根据系统中断号触发事件a。流程3.挂起的IST线程等待到事件a进入就绪状态,得到执行时间后开始执行中断服务代码, 最后调用InterruptDone重新使能当前的中断。你需要为你的设备驱动写
5496



被折叠的 条评论
为什么被折叠?



