diff options
| author | Manuel Traut <manut@mecka.net> | 2013-03-10 12:13:49 +0100 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2013-03-10 12:13:49 +0100 |
| commit | 9c0f862749f30800837a45aff5abdcb529867dbc (patch) | |
| tree | b0ca51fff64f12fac03aea4afaa1fa722376844b /flash-memory | |
| parent | 33b79c725448efd2c9a72e2ae9a1fb04270492f5 (diff) | |
| parent | cea5039322781f6085dd47954af5584ca3f78911 (diff) | |
Merge branch 'schulung'
updates from current linutronix schulung.git
Conflicts:
Makefile
configpres.tex
flash-memory/ubi/handout_ubi_de.tex
handout.tex
index.txt
pres_master.tex
vorl.tex
vorl1.tex
vorl2.tex
vorl3.tex
vorl4.tex
vorl5.tex
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'flash-memory')
| -rw-r--r-- | flash-memory/flash-filesystems/pres_flashfilesystems_en.tex | 83 | ||||
| -rw-r--r-- | flash-memory/technology/Makefile | 9 | ||||
| -rw-r--r-- | flash-memory/technology/pres_technology_en.tex | 181 |
3 files changed, 245 insertions, 28 deletions
diff --git a/flash-memory/flash-filesystems/pres_flashfilesystems_en.tex b/flash-memory/flash-filesystems/pres_flashfilesystems_en.tex index 5de794f..718965d 100644 --- a/flash-memory/flash-filesystems/pres_flashfilesystems_en.tex +++ b/flash-memory/flash-filesystems/pres_flashfilesystems_en.tex @@ -17,6 +17,7 @@ \subsubsection{Emulation} \begin{frame}[fragile] \frametitle{Emulating flash devices} +Exercise: \begin{lstlisting} $ sudo modprobe nandsim $ cat /proc/mtd @@ -56,17 +57,26 @@ mtdparts=edb7312-nor:256k(ARMboot)ro, \begin{frame}[fragile] \frametitle{Using JFFS2} +Exercise: \begin{lstlisting} # Create JFFS2 image -$ mkfs.jffs2 -e 131072 \ - -d source_directory \ - -o jffs2.img +$ /usr/sbin/mkfs.jffs2 -e 131072 \ + -d source_directory \ + -o jffs2.img # Erase flash partition -$ flash_erase -j /dev/mtd0 0 0 +$ sudo flash_erase -j /dev/mtd0 0 0 # Write jffs2 image -$ nandwrite /dev/mtd0 jffs2.img +$ sudo nandwrite -p /dev/mtd0 jffs2.img +# Load mtdblock module +$ sudo modprobe mtdblock # Mounting the image -$ mount /dev/mtdblock0 /mnt +$ sudo mount -t jffs2 /dev/mtdblock0 /mnt +\end{lstlisting} +Clean-up: +\begin{lstlisting} +# Unmount the image and erase flash partition +$ sudo umount /mnt +$ sudo flash_erase -j /dev/mtd0 0 0 \end{lstlisting} \end{frame} @@ -96,13 +106,14 @@ root=/dev/mtdblock0 rootfstype=jffs2 \begin{frame}[fragile] \frametitle{Using UBIFS} +Exercise: \begin{lstlisting} -# 1) Attaching UBI to an MTD device -modprobe ubi -ubiattach ubiattach -m 0 -# or -modprobe ubi mtd=0 -# 2) Gathering some information +# 1) Loading module and attach UBI to MTD device +$ sudo modprobe ubi +$ sudo ubiattach ubiattach -m 0 +# or: 1a) Specify the MTD device during module load +$ sudo modprobe ubi mtd=0 +# 2) Gathering some information: $ dmesg UBI: attaching mtd0 to ubi0 UBI: physical eraseblock size: 16384 bytes (16 KiB) @@ -112,21 +123,29 @@ UBI: sub-page size: 256 UBI: VID header offset: 256 (aligned 256) UBI: data offset: 512 [...] -# 3) Creating a volume -$ ubimkvol /dev/ubi0 -N myvolume -s 64MiB +# 3) Creating an UBIFS image +$ /usr/sbin/mkfs.ubifs -r test -m 512 -e 15872 \ + -c 8450 -o ubifs.img \end{lstlisting} \end{frame} \begin{frame}[fragile] \frametitle{Using UBIFS} +Exercise (cont.): \begin{lstlisting} -# 4) Creating an UBIFS image -$ mkfs.ubifs -r test -m 512 -e 15872 \ - -c 8450 -o ubifs.img +# 4) Creating a volume +$ sudo ubimkvol /dev/ubi0 -N myvolume -s 64MiB # 5) Writing the image -$ ubiupdatevol /dev/ubi0_0 ubifs.img +$ sudo ubiupdatevol /dev/ubi0_0 ubifs.img # 6) Mounting UBIFS -$ mount -t ubifs ubi0:myvolume /mnt/ +$ sudo mount -t ubifs ubi0:myvolume /mnt/ +\end{lstlisting} +Clean-up: +\begin{lstlisting} +# Unmounting image, detach UBI from MTD device, and erase flash partition +$ sudo umount /mnt +$ sudo ubidetach -m 0 +$ sudo flash_erase -j /dev/mtd0 0 0 \end{lstlisting} \end{frame} @@ -147,17 +166,23 @@ vol_flags=autoresize \begin{frame}[fragile] \frametitle{UBI: Create flash images} +Exercise: \begin{lstlisting} # 1) Create the ubi image -ubinize -o ubi.img -m 512 -s 256 -p 16384 ubinize.cfg -# 2) erase the flash partition -flash_erase /dev/mtd0 0 0 -# 3) Write the image -nandwrite /dev/mtd0 ubi.img -# 4) Attach UBI -ubiattach -m 0 -# 5) Mount UBIFS -mount -t ubifs ubi0:myvolume /mnt/ +$ /usr/sbin/ubinize -o ubi.img -m 512 -s 256 -p 16384 ubinize.cfg +# 2) Write the image +$ sudo nandwrite /dev/mtd0 ubi.img +# 3) Attach UBI +$ sudo ubiattach -m 0 +# 4) Mount UBIFS +$ sudo mount -t ubifs ubi0:myvolume /mnt/ +\end{lstlisting} +Clean-up: +\begin{lstlisting} +# Unmounting image, detach UBI from MTD device, and erase flash partition +$ sudo umount /mnt +$ sudo ubidetach -m 0 +$ sudo flash_erase -j /dev/mtd0 0 0 \end{lstlisting} \end{frame} @@ -169,7 +194,9 @@ ubi.mtd=0 root=ubi0:myvolume rootfstype=ubifs \end{verbatim} \end{frame} +\subsection{} \begin{frame} +\frametitle{References} \begin{thebibliography}{1} \bibitem{UBIFS} http://mytechrants.wordpress.com/2010/01/20/ubiubifs-on-nandsim/ \end{thebibliography} diff --git a/flash-memory/technology/Makefile b/flash-memory/technology/Makefile new file mode 100644 index 0000000..d641258 --- /dev/null +++ b/flash-memory/technology/Makefile @@ -0,0 +1,9 @@ +all: + for pdf in `ls -1 *.tex` ; do \ + TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \ + TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \ + done + +clean: + rm -f *.aux *.log *.pdf *.log *.snm *.toc *.vrb *.nav *.out + diff --git a/flash-memory/technology/pres_technology_en.tex b/flash-memory/technology/pres_technology_en.tex new file mode 100644 index 0000000..546a1be --- /dev/null +++ b/flash-memory/technology/pres_technology_en.tex @@ -0,0 +1,181 @@ +\def\lximg{/usr/share/lx/icons/fueller.png} + +\input{configpres} + +\subsection{Technology} + +\title{Flash-Memory Technology} +\maketitle + +\def\lximg{none} + +\begin{frame} +\frametitle{Contents} +\tableofcontents +\end{frame} + +\subsubsection{Structure and Function} +\begin{frame}[fragile] +\frametitle{Single Cell Structure} +\begin{itemize} +\item Base element: MOSFET with a floating gate (FGMOS) +\item Organization of cells in blocks and pages +\end{itemize} +\begin{figure}[h] +\centering +\includegraphics[scale=0.5]{images/fmtech-fgmos.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Read} +\begin{figure}[h] +\centering +\includegraphics[scale=0.4]{images/fmtech-single_read.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Write (Program)} +\begin{figure}[h] +\centering +\includegraphics[scale=0.4]{images/fmtech-single_program.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Erase} +\begin{figure}[h] +\centering +\includegraphics[scale=0.4]{images/fmtech-single_erase.png} +\end{figure} +\end{frame} + +\subsubsection{Flash-Memory Types} +\begin{frame}[fragile] +\frametitle{Overview} +\begin{itemize} +\item NOR +\item NAND +\item Single- and Multi-Level Cells +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{NOR} +\begin{itemize} +\item direct addressable +\item usable like RAM/ROM (direct attach to CPU) +\item pros: + \begin{itemize} + \item fault tolerant + \item high write-rate for small data + \end{itemize} +\item cons: + \begin{itemize} + \item low data density (multiple gates per bit) + \item low write-rate for large data + \item cost + \end{itemize} +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{NAND} +\begin{itemize} +\item matrix organization (blocks and pages) +\item addressing via controller logic +\item pros: + \begin{itemize} + \item cost + \item high data density (1 to many bits per gate) + \item high read-/write-rate for large data + \item no layout change in hardware for more capacity + \end{itemize} +\item cons: + \begin{itemize} + \item large effort for extensive Error Correction Codes (ECC) + \end{itemize} +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Data density} +\begin{itemize} +\item Single-Level Cells (SLC) + \begin{itemize} + \item ca. 100,000 write/delete cycles + \item pros: + \begin{itemize} + \item robust + \item low Error Correction Code (ECC) effort + \end{itemize} + \item cons: + \begin{itemize} + \item low data density + \end{itemize} + \end{itemize} +\end{itemize} +\pause +\begin{itemize} +\item Multi-Level Cells (MLC) + \begin{itemize} + \item ca. 3,000 to 10,000 write/delete cycles + \item pros: + \begin{itemize} + \item high data density + \end{itemize} + \item cons: + \begin{itemize} + \item expensive Error Correction Codes (ECC) like BCH + \item wear prone + \item low read-rate + \end{itemize} + \end{itemize} +\end{itemize} +\end{frame} + +\subsubsection{NAND block operations and side effects} +\begin{frame}[fragile] +\frametitle{Read} +\begin{figure}[h] +\centering +\includegraphics[width=10cm]{images/fmtech-read.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Read Disturb} +\begin{figure}[h] +\centering +\includegraphics[width=10cm]{images/fmtech-read_disturb.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Write} +\begin{figure}[h] +\centering +\includegraphics[width=10cm]{images/fmtech-write.png} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Write Disturb} +\begin{figure}[h] +\centering +\includegraphics[width=10cm]{images/fmtech-write_disturb.png} +\end{figure} +\end{frame} + +\subsection{} +\begin{frame} +\frametitle{References} +\begin{thebibliography}{99} +% \bibitem{FLASHMEM} David Woodhouse. Presentation \emph{Flash Memory}, 2012. http://david.woodhou.se/dwmw2-kr-2012-09.odp +\bibitem{FLASHMEM} David Woodhouse. Presentation \emph{Flash Memory}, 2012. +\href{http://david.woodhou.se/dwmw2-kr-2012-09.odp}{http://david.woodhou.se/dwmw2-kr-2012-09.odp} +\end{thebibliography} +\end{frame} + +\input{tailpres} |
