首页 > 解决方案 > 我可以使用内核模块模拟具有硬件地址的硬件设备吗?(编辑:将路由到我的模块的虚拟地址)

问题描述

我需要测试我们的生产 Linux 模块如何处理硬件错误。我正在测试的驱动程序不应更改,除非可能是驱动程序用来与硬件通信的硬件地址。


我想编写一个内核模块来拦截对硬件的读/写,如果需要更改它们,它还需要处理中断,但我知道该怎么做。


我可以模拟一个硬件地址以供生产驱动程序加载,读/写将被路由到我的驱动程序,我将转发到硬件,还是我需要特定的硬件?


编辑:因为我可以覆盖我正在测试的驱动程序的 mmap,我可以在内核空间中创建一个虚拟地址,将读/写重定向到我的模块吗?

标签: linux-kernel

解决方案


显然,由于我们的驱动程序应该在不同的硬件上工作,它具有用户应该实现的“硬件抽象层”,并且对硬件的所有访问都在这一层。我将在那里添加错误插入。如果有人仍然有办法,请无论如何告诉我。顺便说一句,我正在研究 arm 处理器。


推荐阅读