首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linux上模拟用于单元测试的内存I/O设备?

如何在linux上模拟用于单元测试的内存I/O设备?
EN

Stack Overflow用户
提问于 2012-05-31 21:16:40
回答 2查看 808关注 0票数 3

如何在Linux上模拟用于单元测试的内存I/O设备?

我正在为一些用于嵌入式部署的源代码编写单元测试。

该代码正在访问特定的地址空间,以便与芯片通信。

intervention.

  • I i想要在Linux上运行这段代码。
  • 单元测试必须能够在没有人的情况下运行,需要以正常用户的身份运行UT。
  • 必须测试的代码必须是在目标系统上运行的源代码。

对于如何解决这一问题,我能从哪里获得灵感呢?

普通用户能否以某种方式告诉MMU,必须在特定地址进行特定的内存分配。还是数据块必须位于特定的内存区域?

据我所知:

无法使用

  • σ;因为在从处理程序返回后,将再次调用相同的mem访问代码,然后再次失败。(或者,内存区域可能实际上有有效数据,只是不像我想要的那样)

谢谢

亨利·

EN

回答 2

Stack Overflow用户

发布于 2012-05-31 21:22:37

首先,使要读取的地址成为代码的注入依赖项,而不是硬编码依赖项。现在您不必担心测试条件下的位置,它可以是您喜欢的任何东西。

然后,您还可能需要将函数作为依赖项从/将其从/写入到魔术地址,这取决于您正在测试的内容。现在,您不必担心它将如何欺骗正在测试的代码,使其认为它正在执行I/O。您可以使用存根/模拟/任何硬件I/O行为。

在您描述的条件下测试低级代码是相当困难的,同时在非测试模式下保持它的超级效率,因为您不想引入太多的间接级别。

然而,“精确的源代码”可以隐藏大量的罪恶,这取决于您如何解释它。例如,您的“依赖项注入”可以通过宏进行,因此单元源是“相同的”,但是您已经完全改变了它使用鬼鬼祟祟的-D编译器选项所做的事情。

票数 2
EN

Stack Overflow用户

发布于 2012-05-31 21:46:17

AFAIK您需要创建一个块设备(我不确定字符设备是否工作)。创建一个将内存范围映射到自身的内核模块。创建读/写函数,因此每当触及内存范围时,就会调用这些读/写函数。

将这些读/写函数注册到内核中,这样,每当对这些地址进行读/写时,内核就会被调用,内核代表用户执行读/写功能。

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

https://stackoverflow.com/questions/10841410

复制
相关文章

相似问题

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