首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行Windows的嵌入式机器上访问IO端口

在运行Windows的嵌入式机器上访问IO端口
EN

Stack Overflow用户
提问于 2019-06-26 07:50:30
回答 1查看 597关注 0票数 0

我在进入Nuvoton NCT6793D的扩展功能模式时遇到了问题。数据表要求将87h写两次给正则用户2Eh,但是尝试这样做时,Visual抛出了一个异常,即第3行是“特权指令”。

在网上查找它时,我的理解是,该指令只能在内核模式下执行,但我无法找到在内核模式下运行组装代码的任何方法。

代码语言:javascript
复制
  .386
  .stack 4096
.
.
.
  main PROC
        mov DX,2EH
        mov AL,87H
        out DX,AL    <----
        out DX,AL
.
.
.

编写内核模式驱动程序是我唯一的选择吗?

预先感谢您的友好答复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-26 10:19:55

是的,out是一种特权指令。它必须在环形0(内核模式)下执行。

解决这一问题的唯一方法是开发驱动程序,Windows拥有用于开发驱动程序的视窗驱动套件 (它拥有所有的工具和许多示例)。

有一个指令可以跳入特权模式(实际上不止一个),但是当然,您可以跳到内核中的一个入口点。

所有这些指令基本上都是对特定例程的调用,您不能提升代码,否则操作系统将被完全破坏。

--我认为在某种程度上涉及到了,因为您使用的是Visual和x86代码,尽管标题是指嵌入式机器。

Windows不向用户模式应用程序公开读取/写入IO端口的函数(原因非常充分)。

未经测试(或者可能测试过,但我不记得了)

我找到了一个我为读取IO端口而编写的旧驱动程序,它公开了可以像往常一样打开、读取和写入的“文件”\Device\iomem_io (CreateFileReadFileWriteFile)。

读和写at X (参见SetFilePointer)将从/向端口X读写,操作的大小必须为1、2或4字节。

RWEverything来了允许读写端口(还有更多的)的和司机在一起。它通常被需要HW访问的恶意软件使用,没有文档,它是带有)代码的控制器,必须从反向工程中收集。

Note如果切换到Linux,可以使用iopl来允许用户模式程序访问IO端口。这对调试是很好的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56767811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档