dma

    4热度

    1回答

    我正在为SPI连接的LCD写帧缓冲驱动程序。我使用kmalloc分配缓冲区,这是相当大的 - 150KB。考虑到kmalloc分配缓冲区的方式,ksize报告说,更多的内存正在被使用 - 大约256KB左右。 SPI spi_transfer结构需要指向tx和rx缓冲区的指针,它们都必须是DMA安全的。因为我希望tx缓冲区大约为16KB,我可以在kmalloced视频缓冲区内分配缓冲区,并仍然是D

    0热度

    1回答

    我是Linux中的驱动程序开发的新手。我想在指定的目标地址触发DMA read操作,但我没有关于如何操作的基本概念。我应该为我的声卡写一个新的驱动程序吗?或者只是调用当前声卡驱动程序提供的一些API(如果有的话)? 我可以想像,我想是这样的(从LDD3 Ch15), int dad_transfer(struct dad_dev *dev, int write, void *buffer,

    0热度

    1回答

    这可能是一个非常基本的问题,但我想了解ioremap_page_range()和vmap_page_range()之间的区别。两者似乎都将物理地址映射到虚拟地址(在新分配的VM区域中)。 这两个函数每个需要4个参数,其中3个是相同的。 ioremap_page_range需要一个phys_addr_t,而vmap_page_range需要一个页面(帧)指针数组。 我的问题是这些功能可以互换使用(假

    0热度

    1回答

    我有这个问题涉及到Direct Memory Access(DMA)的概念。操作系统/ Linux内核有一些方法可以知道哪些指令使用DMA,哪些不使用?或者DMA完全由硬件实现,操作系统无法访问DMA控制器?

    1热度

    1回答

    我有我的OpenCL C++包装性能问题,我需要从缓冲器d的数据传输到缓冲液B尽可能快地(使用地图/取消映射实现的6Gb/s的DMA速度PCI-E),然后将数据复制到缓冲液A(在约40GB/s的器件速度) ********************************* * device(discrete gpu) * * * * (enqueueCopyBuffer)

    9热度

    1回答

    我试图使用monitor/mwait指令来监视从设备到内存位置的DMA写入。在于,在内核线程运行的内核模块(字符设备)我有以下代码(非常类似于内核代码this piece): static int do_monitor(void *arg) { struct page *p = arg; // p is a 'struct page *'; it's also remapped to

    0热度

    1回答

    请看下面的图片。 您可以看到三星将SATA 3集成到Exynos 5 Dual中。那么这是否意味着使用Exynos 5的智能手机将能够通过SATA接口连接到硬盘驱动器或光驱?我误解任何东西吗? 此外,图中的DMA(“32x DMA”)是指“Direct Memory Accessing”?

    3热度

    1回答

    我已经为传输模式下的DMA写入了一个简单的设备驱动程序,并启用了DMA以及中断。 我使用的硬件是带有Linux 3.4的omap 4460 pandaboard。 下面我分享了代码的相关部分。 在打开相: dma_map = ioremap(UART4_DMA_REG,0x1350); if(dma_map == NULL) { printk(KERN_INFO " unab

    0热度

    1回答

    通过用户空间的memcpy DMA:是否可以通过linux中的用户空间DMA实现memcpy?我知道有办法通过DMA将内核缓冲区复制到用户空间缓冲区,但是想通过用户空间的DMA将memcpy扩展到用户空间缓冲区?有什么想法吗 ?

    0热度

    1回答

    我试图利用GPDMA控制器访问SSP1通道。使用CMSIS库应该是全面的。但是我在SSP1输出中看不到任何东西。 作为第一个例子,我想发送一个字节。 uint8_t buffer[20] = { 0x9F }; int main(void) { // ... using PINSEL_ConfigPin to configure the SSP1 pins... //