dma 是soc上的硬件模块之间数据通信的接口,基本所有模块上都用到了它,他们都是固定的api,虽然只要知道api怎么调用就够用了,但是还是有必要看看底层的逻辑是什么。
documentation/dmaengine.txt
documentation/dma-api.txt
documentation/dma-apt-howto.txt
dma_alloc_coherent--->ops->alloc == arm_dma_alloc
dma_request_slave_channel_compat---> __dma_request_slave_channel_compat ---> dma_request_slave_channel ---> of_dma_request_slave_channel --->
ofdma->of_dma_xlate == (of_dma_controller_register--->at_dma_xlate) --->dma_request_channel--->__dma_request_channel--->private_candidate
dmaengine_slave_config--->dmaengine_device_control---> chan->device->device_control == atc_control--->set_runtime_config--->convert_burst
dma_map_single--->dma_map_single_attrs--->ops->map_page == arm_dma_map_page
sg_init_table
sg_dma_len
device_prep_slave_sg == atc_prep_slave_sg
tx_submit ==atc_tx_submit--->atc_dostart
device_issue_pending==atc_issue_pending--->atc_advance_work--->atc_complete_all--->atc_chain_complete--->callback--->dma_run_dependencies
DMA引擎深入解析
本文深入探讨了DMA引擎的工作原理及其实现细节,包括dma_alloc_coherent等关键函数的调用流程,以及dmaengine_slave_config配置过程。通过分析dma_map_single等函数的作用,帮助读者理解DMA在SOC中的应用。
640

被折叠的 条评论
为什么被折叠?



