DMA+环形缓存区(Ring Buffer)

DMA+环形缓存区(Ring Buffer)

DMA

解释DMA

想象⼀下你家⾥有⼀个⼤厨房(这就像是你的计算机系统),厨房⾥有⼀个⼤厨(就像是CPU),还有⼀些厨房助⼿(就像是外设,⽐如UART、ADC等)。

情景1:没有DMA的情况

⼤厨负责所有的烹饪任务,包括切菜、炒菜、煮饭等等。⽽每次需要⼀些⻝材(数据)的时候,⼤厨都要亲⾃去冰箱(内存)拿⻝材,然后回到灶台继续烹饪。这种情况下,⼤厨要花很多时间来回跑冰箱和灶台,导致烹饪效率不⾼。

情景2:有DMA的情况

现在,假设你雇了⼀个专⻔负责搬运⻝材的助⼿(这就是DMA)。当⼤厨需要⻝材时,只需要告诉这个助⼿冰箱⾥有哪些⻝材(源地址),需要放到哪个位置(⽬标地址),以及需要多少(数据量)。然后这个助⼿就会⾃⼰去冰箱拿⻝材,并把它们放到指定的位置。这样,⼤厨可以专注于烹饪,不⽤再来回跑冰箱,⼤⼤提⾼了效率。

具体解释DMA

  1. DMA的⻆⾊:DMA就像那个搬运⻝材的助⼿,负责在冰箱(内存)和⼯作台(外设)之间搬运数据。

  2. CPU的⻆⾊:CPU就像⼤厨,负责处理主要任务。因为有了DMA的帮助,CPU可以集中精⼒处理更复杂的任务,⽽不是被数据搬运的琐事所困扰。

  3. 数据搬运:当需要传输数据时,⽐如从UART(串⼝)接收的数据,需要保存到内存⾥,CPU只需要配置DMA,让它知道数据来源(UART的缓冲区地址)、⽬标地址(内存位置),以及数据的⼤⼩,然后DMA就会⾃动完成数据传输。

例⼦ÿ

你可能感兴趣的:(笔记,oracle,学习)