有谁知道如何访问主板或pci卡上的以太网端口等设备?
是否有特殊寄存器?操作码?我是否必须打电话给操作系统?如果是这样,怎么样?
提前致谢。
答案 0 :(得分:3)
这取决于您尝试与之交谈的特定以太网MAC芯片。即使是同一家族的芯片,它们的运作方式通常也会有细微差别。这就是现代操作系统具有“驱动程序”概念的原因:硬件制造商通常会编写驱动程序,因为他们知道硬件,驱动程序提供硬件与操作系统想要查看的内容之间的转换。
您经常可以从MAC芯片制造商处获取文档来编写自己的驱动程序。同样,你必须确切地知道你正在尝试与哪个芯片进行对话才能获得正确的规格。有些芯片没有公开文档,但这通常不是以太网芯片的问题。
答案 1 :(得分:2)
最简单的答案,虽然可能不是你想要的,但是要编写C代码来访问卡片,编译它,看看编译器生成的代码。
C代码可能直接通过NIC驱动程序,或使用winpcap之类的库。例如,Windows上对raw sockets的内置支持因安全原因而被禁用。
但这不是了解NIC如何工作的最佳方式。为此,选择一个流行的嵌入式NIC的数据表,如LAN91C111,并阅读如何访问它。 那将教会你很多关于以原始方式连接Eterthet的知识。
这仍然不是一个足够好的沙箱来研究汇编语言,恕我直言。为此,只需在汇编中实现一些小的算法程序 - 比如二叉树搜索。
答案 2 :(得分:0)
您可以使用inupt和输出指令或类似的东西来使用对卡本身的调用。每个以太网卡都不同,因此您需要制造商提供的文档。
下一级是DOS函数调用,假设您正在使用Windows。这些将允许您使用标准MSDOS调用访问以太网卡的有限功能。您可以在旧的MSDOS文档中找到它们。如果我没弄错的话,他们中的大多数仍然可以在更高版本的Windows上使用。
答案 3 :(得分:0)
您需要写入特定的端口地址。这个Wiki页面可能会让你开始。
MemoryMappedIO