问题标签 [ioports]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
35 浏览

linux - 将 ioport 形式的硬件映射到 vDSO 功能

我在 Linux 上使用 SAMA5d2 CPU,并希望能够从 vdso 功能访问 ioport。我应该如何将 ioport 映射到用户空间内存以访问从用户空间调用的 vdso 函数中的 ioport?实际上我想在 tcb_clksrc 定时器中实现定时器周期的获取。内核只有arch_arm_timer时钟源的实现,我想实现tcb_clksrc定时器在我的SAMA中使用它

0 投票
0 回答
112 浏览

assembly - I/O 端口寻址

我最近阅读了很多关于端口寻址等的内容,并且知道端口 0x20、0x21、0xA0 和 0xA1 是 8259A PIC,端口 0x40-0x47 处的 8253/8254 PIT,端口 0x60-0x64 是键盘控制器, 0x3F0-0x3F6 是软盘设备控制器分机。我正在尝试阅读专门针对 8086+ 处理器系列的内容,并且在网上看到了一些似乎非常值得购买的书籍,如果对此类书籍有任何建议,也请告诉我。

然而,令我惊讶的是,我仍然不确定这些端口号究竟是如何或从哪里来的?它们是否像 IDT 一样在某个地方为向量表占用空间进行映射?据我了解,您可以重新调整 Windows 上的端口号,或者这是不正确的?或者它们是否内置在处理器引脚的电路中?怎样才能找到有关哪些设备的端口以及计算机确切具有哪些端口的知识?

0 投票
1 回答
111 浏览

assembly - REP INSB 是可中断的吗?

假设我REP INSB在普通优先级线程中从用户模式读取 PCI 设备寄存器。在执行期间,以下哪些可以发生,哪些不能发生:

  1. 中断(其他内核)
  2. 中断(相同内核)
  3. PCI 访问(其他内核)
  4. PCI 访问(相同的核心 - 中断和/或不同的线程)
  5. 上下文切换在同一个核心上

如果答案取决于它,请假设一个相当现代的处理器。感兴趣的是 Atoms 和 Core i3。

0 投票
2 回答
341 浏览

x86 - 如何在 GNU 汇编器中使用 ins 指令

如何ins在 GNU 汇编器中使用 x86 指令?指令参考建议语法INS m8/16/32, DX,例如m16(我假设)是任何 16 位通用寄存器,其唯一目的是表示是否应该读取字节/字/双字,对吧?

现在,不幸的是,as拒绝ins %ax,%dxError: operand type mismatch for 'ins',这是为什么呢?

作为记录,我知道我可以简单地使用insbetc. 但我通过 C++ 程序中的内联汇编调用此指令,并且要读取的输入的大小取决于模板参数(并且编译时的字符串处理不是很实际的)。

编辑:这是我现在所拥有的,供参考(我不太喜欢宏)

0 投票
1 回答
475 浏览

linux - 如何找出分配给我的设备的 ioport

为所有制造的设备提供 linux 保留的 io 端口号。

我有英特尔内置网卡之类的设备。或我拥有的其他用于 wifi (usb) 的 realtek 设备。在 github 上的 linux 存储库中,设备驱动程序使用特定的 io 端口进行注册。内核将这些端口分配给设备驱动程序。设备驱动程序通常使用对 request_region 函数的调用来请求端口。所以对于某些以太网设备,它要求如下

上面以0x110to开头0x200,内核可以在此范围内将任何端口分配给驱动程序并出现在 /proc/ioports 文件中,这意味着驱动程序在成功返回时正在使用该 io 端口request_region

问题:所以我的问题是 linux 是否为所有可用于内核 5.7 或最新内核版本的制造设备分配了 io 端口?

问题:如果我想为任何设备编写设备驱动程序怎么办。如何找到要请求的 io 端口号范围。我不希望我必须查看内核代码并找到更相似的驱动程序端口范围。所以我怎样才能找到那个io端口号范围。如何实现编写设备驱动程序所需的第一步(任何设备。无论是 wifi 互联网设备还是以太网设备)

0 投票
0 回答
85 浏览

c - 使用 request_region 和 release_region 的示例

我阅读了有关 I/O 端口和与硬件通信的信息,我想访问 I/O 端口以查看各种功能的实时示例。我不明白第一个参数 ( unsigned long start)request_region是什么。

我希望有人向我展示这些功能的非常简单的用法。

另外,我们在哪里可以看到 I/O 端口列表?我猜它可能在/proc/ioports?

0 投票
1 回答
52 浏览

assembly - 字大小的 OUT 到字节 IO 寄存器?在旧 VGA 代码中不使用指令设置序列控制器寄存器

我无法理解如何使用一些旧的 VGA 代码在此示例中设置序列控制器寄存器:

该示例来自 Michael Abrash 的 VGA 书籍:https ://www.phatcode.net/res/224/files/html/ch47/47-02.html

根据描述,他想设置位于索引 4 的内存模式寄存器。他想禁用位于位索引 3 的 chain4(全部根据 Richard F. Ferraro 的 EGA、VGA 和超级 VGA 卡程序员指南)。

我不明白他为什么将 2 个字节 06 和 04 放入 ax 和out它们。out寄存器只有一个字节,他没有明确设置寄存器的索引来寻址。是不是发生了一些我不明白的魔法?

0 投票
1 回答
99 浏览

assembly - 访问 PIT (?) IO 端口 44h 和 46h - 这些端口有什么作用?

我正在反汇编一个 MS-DOS .com 应用程序,遇到了一些我不明白的端口访问。更准确地说,通过IN指令,从以下端口读取值。

此处找到的文档提到端口40h-47h属于“可编程间隔计时器”,但详细信息仅在端口上详细说明40h-43h

从反汇编的上下文中,我猜输入然后用作伪随机数。

我还找到了这个参考(德语),它没有提到其他 4 个端口。有没有人知道这些端口的确切功能,最好有参考?

编辑:为了提供更多上下文,反汇编的应用程序部分如下所示。

应用就是这个微小的效果;读取的值用于将 VGA 调色板的 RGB 值设置为最好是彩色的,最坏的情况是有趣的。

0 投票
0 回答
93 浏览

x86 - x86_64 内存映射是否与 x86 相同?

是的,x86 是 32 位的。为VGA、键盘IO、鼠标IO写了一个小内核。但是,x86_64 是 64 位的。主要区别在于寄存器扩展为 64 位并且数量更多。x86_64 指令集与 x86 一起还有更多指令。但事情是这样的——内存映射和 x86 一样吗?如果没有,我可以提供规格吗?