[bootlin/training-materials updates] master: Kernel slides: add details about DMA (87259005)
Michael Opdenacker
michael.opdenacker at bootlin.com
Thu Sep 5 09:59:57 CEST 2019
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/872590059fe7b9a61034d3795c46ab9967f9b242
>---------------------------------------------------------------
commit 872590059fe7b9a61034d3795c46ab9967f9b242
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date: Thu Sep 5 09:59:57 2019 +0200
Kernel slides: add details about DMA
Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>
>---------------------------------------------------------------
872590059fe7b9a61034d3795c46ab9967f9b242
.../kernel-driver-development-dma.tex | 13 +++++++++++--
.../kernel-driver-development-dma/peripheral-dma.dia | Bin 1462 -> 1585 bytes
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex b/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex
index 0993a96b..a65aa045 100644
--- a/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex
+++ b/slides/kernel-driver-development-dma/kernel-driver-development-dma.tex
@@ -2,13 +2,17 @@
\begin{frame}
\frametitle{DMA integration}
+ DMA ({\em Direct Memory Access}) is used to copy data directly between
+ devices and RAM, without going through the CPU.
\begin{center}
- \includegraphics[height=0.8\textheight]{slides/kernel-driver-development-dma/dma-integration.pdf}
+ \includegraphics[height=0.7\textheight]{slides/kernel-driver-development-dma/dma-integration.pdf}
\end{center}
\end{frame}
\begin{frame}
\frametitle{Peripheral DMA}
+ Some device controllers embedded their own DMA controller
+ and therefore can do DMA on their own.
\begin{center}
\includegraphics[height=0.7\textheight]{slides/kernel-driver-development-dma/peripheral-dma.pdf}
\end{center}
@@ -16,13 +20,16 @@
\begin{frame}
\frametitle{DMA controllers}
+ Other device controllers rely on an external DMA controller (on the
+ SoC). Their drivers need to submit DMA descriptors to this controller.
\begin{center}
- \includegraphics[height=0.8\textheight]{slides/kernel-driver-development-dma/dma-controller.pdf}
+ \includegraphics[height=0.7\textheight]{slides/kernel-driver-development-dma/dma-controller.pdf}
\end{center}
\end{frame}
\begin{frame}
\frametitle{DMA descriptors}
+ DMA descriptors describe the various attributes of a DMA transfer, and are chained.
\begin{center}
\includegraphics[width=\textwidth]{slides/kernel-driver-development-dma/dma-descriptors.pdf}
\end{center}
@@ -222,6 +229,8 @@ void dma_unmap_single(struct device *dev, dma_addr_t handdle,
mapping seen previously
\item Some frameworks abstract it away, such as {\em SPI}
and {\em ASoC}
+ \item Example usage of the slave API: look at the code
+ for \kfunc{stm32_i2c_prep_dma_xfer}.
\end{itemize}
Details in kernel documentation: \kerneldochtml{driver-api/dmaengine/client}
\end{frame}
diff --git a/slides/kernel-driver-development-dma/peripheral-dma.dia b/slides/kernel-driver-development-dma/peripheral-dma.dia
index 91fdf0d8..939a7204 100644
Binary files a/slides/kernel-driver-development-dma/peripheral-dma.dia and b/slides/kernel-driver-development-dma/peripheral-dma.dia differ
More information about the training-materials-updates
mailing list