dma框架比较简单,网上关于dma框架的文章很多也很详细,这里就不在重复,这里只介绍一个知识点,就是当dma channel的原或目的是peripheral的时候,dma控制器如何知道参加传输的是哪个peripheral,我们基于linux-5.15.73版本介绍。
通过linux dma框架【1】的介绍,我们知道peripheral参与的dma传输需要一组handshaking信号,这其实就需要soc厂家在设计soc时为需要用到dma的peripheral设计一组handshaking信号,并且接入每个channel的一个mux中,每个外设的handshaking信号是否被选通是通过一个id来配置的,这就是dma的request id,每组handshaking对应的request id是多少是在soc设计时就确定好的。
我们以上面的dts节点为例,里面的dmas属性描述的就是这个pepherial使用的是dmac的第78,79号request id。
这个dmac对于的dts节点为
这其实就是通过dts来绑定pepherial和dma request id的方式,我们看看具体如何进行绑定的。
一、通过dts来绑定peripheral和dma request id的方式
1.client侧的channel request接