linux-kernel - 我可以使用内核模块模拟具有硬件地址的硬件设备吗?(编辑:将路由到我的模块的虚拟地址)
问题描述
我需要测试我们的生产 Linux 模块如何处理硬件错误。我正在测试的驱动程序不应更改,除非可能是驱动程序用来与硬件通信的硬件地址。
我想编写一个内核模块来拦截对硬件的读/写,如果需要更改它们,它还需要处理中断,但我知道该怎么做。
我可以模拟一个硬件地址以供生产驱动程序加载,读/写将被路由到我的驱动程序,我将转发到硬件,还是我需要特定的硬件?
编辑:因为我可以覆盖我正在测试的驱动程序的 mmap,我可以在内核空间中创建一个虚拟地址,将读/写重定向到我的模块吗?
解决方案
显然,由于我们的驱动程序应该在不同的硬件上工作,它具有用户应该实现的“硬件抽象层”,并且对硬件的所有访问都在这一层。我将在那里添加错误插入。如果有人仍然有办法,请无论如何告诉我。顺便说一句,我正在研究 arm 处理器。
推荐阅读
- visual-studio - Gulp 错误缺少脚本:在 MVC 项目中构建
- java - 在使用 Spring Boot 进行集成测试期间使用测试数据填充数据库
- assembly - 编写 Microsoft Fastcall 64 位汇编函数
- c++ - 如何用 0x00 覆盖所有可用磁盘空间?
- google-sheets - 试图将“增长率”添加到谷歌表格
- javascript - 赛普拉斯 cy.write 将新项目推送到数组会引发“推送不是函数”错误
- python - 调用 Fortran Intel MKL dgemm 与 numpy 以及与 matmul 的函数性能不佳
- amazon-web-services - AWS Kinesis Firehose 是否在数据传输期间提供完整性控制?
- docker - 如何在 docker 中部署带有静态文件的 Web 应用程序?
- python - 无法弄清楚为什么 PyDub 不起作用