我是相当新的Linux设备驱动程序programmring,但为了调试的目的,我想编写一个数据流直接到文件中。或者,也许我应该AKS不同的问题:

我有一个系统级芯片,其中一个模块提供的数据流。该模块具有与写地址initlized。取而代之的将数据写入内存的,我想数据流到该地址重定向到一个文件。这也可以通过用户空间完成,因为写入内核空间到文件是不推荐的。

有人可以大致勾画如何做到这一点?

谢谢,斯蒂芬

有帮助吗?

解决方案

从你的问题,我想这是一个硬件模块直接写入到存储器缓冲器中。你将永远需要的道路上文件的中间存储缓冲器,但有几种方法在你的设备驱动程序来管理这一点。

在简单的情况下是实现一个字符设备驱动程序,其通过读出操作的数据返回到用户空间。那么你是写入文件的用户空间应用程序可以像cat一样简单。你的模块将写入你的驱动程序分配内存缓冲区,以及read方法将这个缓冲区拷贝数据到用户空间缓存。这是通过DMA-Mapping.txt内核文档和 Linux设备驱动程序(LDD)覆盖。

如果数据速率是高的(其中,高可相对于装置的性能),则需要考虑更高级的读出操作,在这里锁定read请求到存储器的页中,和模块写入直接到这些网页。这是比较复杂的,并在此区域中LDD的文档是很老。我建议学习内核视频采集设备驱动程序的源明白这一点。

如果你的驱动有更多种类的通信来进行的,你可能需要使用的网络链路

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top