wince -- 外部中断调用可安装ISR错误(data abort)
可安装的 ISR
可安装的 ISR 是为响应 Windows CE .NET 为嵌入式空间带来的开放性而创建的。OEM 再也不必完全负责平台和应用程序代码了。现在平台提供商和应用程序开发人员都可涉及嵌入式空间这一领域的工作。如果某个应用程序开发人员在使用 Windows CE 3.0 的平台上向开放总线添加了新的设备,OEM 将必须说服该 OEM 将 ISR 添加到该平台。
要将 ISR 安装到平台中,需要完成两个步骤:
-
调用 LoadIntChainHandler 函数以加载包含 ISR 代码的 DLL。
-
必须将 ISR 编码为用 SYSINTR_ . . . 响应进行响应,就像在 OAL ISR 中一样。
LoadIntChainHandler 函数将 ISR 动态链接库 (DLL) 加载到内核的地址空间中。这意味着代码不能调用任何非内核函数,包括任何 C 语言运行时库函数。记住,某些结构到结构赋值会降格为 memcpy 调用,必须检查所有代码以确保不需要任何外部库(即使这些库是由编译器创建的)。
下面的源代码示例说明了一个用于创建可安装的 ISR 的基本外壳程序。有四个函数:
-
DLLEntry — 接收进程和线程附加消息
-
InfoCopy — 在进行任何结构赋值时使用的复制例程
-
IOControl — 任何使用 KernelLibIOControl 的 IST 调用的处理程序
-
ISRHandler — 实际的 ISR