当前位置:  开发笔记 > 运维 > 正文

从哪里开始学习linux DMA /设备驱动程序/内存分配

如何解决《从哪里开始学习linuxDMA/设备驱动程序/内存分配》经验,为你挑选了2个好方法。

我正在移植/调试设备驱动程序(由另一个内核模块使用)并面临死胡同,因为dma_sync_single_for_device()因内核oops而失败.

我不知道该功能应该做什么,谷歌搜索并没有真正帮助,所以我可能需要更多地了解这些功能.

问题是,从哪里开始?

哦,是的,如果它是相关的,代码应该在PowerPC上运行(而linux是OpenWRT)

编辑:优先考虑在线资源(书籍需要几天才能交付:)



1> Robert S. Ba..:

线上:

Linux slab分配器的剖析

了解Linux虚拟内存管理器

Linux设备驱动程序,第三版

Linux内核模块编程指南

在Linux中编写设备驱动程序:简要教程

图书:

Linux内核开发(第2版)

基本的Linux设备驱动程序 (仅限前4-5章)

有用的资源:

Linux交叉引用(所有内核的可搜索内核源代码)

2.6内核系列中的API更改


dma_sync_single_for_devicedma_sync_single_range_for_cpu在文件中进一步调用,这是源文档(我假设即使这是针对arm的接口和行为是相同的):

/**
 380 * dma_sync_single_range_for_cpu
 381 * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
 382 * @handle: DMA address of buffer
 383 * @offset: offset of region to start sync
 384 * @size: size of region to sync
 385 * @dir: DMA transfer direction (same as passed to dma_map_single)
 386 *
 387 * Make physical memory consistent for a single streaming mode DMA
 388 * translation after a transfer.
 389 *
 390 * If you perform a dma_map_single() but wish to interrogate the
 391 * buffer using the cpu, yet do not wish to teardown the PCI dma
 392 * mapping, you must call this function before doing so.  At the
 393 * next point you give the PCI dma address back to the card, you
 394 * must first the perform a dma_sync_for_device, and then the
 395 * device again owns the buffer.
 396 */



2> Matthew Flas..:

了解Linux内核?

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有