\documentclass[aspectratio=169]{beamer}
\usetheme{metropolis}
\usepackage{lmodern}
\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{color}
\usepackage{mathtools}
\usepackage{hyperref}
\usepackage{epstopdf}
\usepackage{amsmath}
\usepackage{minted}
\hypersetup{
    colorlinks,
    citecolor=black,
    filecolor=black,
    linkcolor=black,
    urlcolor=black
}
\usepackage{pdflscape}
\definecolor{omnia}{rgb}{0, 0.635, 0.886}

\title{Nuttx na STM32}
\author{Karel Kočí}
\date{3.3.2018}

\begin{document}

\frame{\titlepage}

\begin{frame}[fragile]
	\frametitle{NuttX?}
	\includegraphics[width=60px]{NuttX_logo.png}
	\begin{itemize}
		\item RTOS pro 8-bit až 32-bit
		\item Vyvíjen Gregory Nuttem
		\item Poprvé vydán v roce 2007
		\item Posix a ANSI standardy + podobné API jako VxWorks
		\item Dobré vrstvení (arch, board, config, app / lower, upper drivers)
		\item Open-source
	\end{itemize}
	\url{https://nuttx.org}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Proč?}
	\begin{itemize}
		\item Posix a standardní API
		\item Jednotná implementace
		\item Velký výběr z driverů
		\item Easy to hack
		\item Dobře dokumentovaný kód
		\item Dobře konfigurovatelný
		\item Široká podpora architektur i prototypových desek
		\item Podpora ELF
	\end{itemize}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Na čem?}
	 \begin{columns}[T]
		 \begin{column}[T]{5cm}
			stm32f103-minimum

			(Blue Pill)
			\begin{itemize}
				\item STM32F103C8
				\item Flash: 64KB (128KB)
				\item RAM: 20KB
				\item Clock: 72MHz
				\item Micro-USB, LED
				\item Cena: \textasciitilde 50Kč
			\end{itemize}
		 \end{column}
		 \begin{column}[T]{5cm}
			\includegraphics[width=6cm]{STM32_Blue_Pill_perspective.jpg}
		 \end{column}
     \end{columns}
	 \vspace{0.5cm}

	\url{https://wiki.stm32duino.com/index.php?title=Blue_Pill}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Co potřebujeme?}
	\begin{itemize}
		\item Blue Pill
		\item ST-link (v2)
		\item USB to TTL (serial cable)
	\end{itemize}

	\begin{itemize}
		\item NuttX (\url{https://bitbucket.org/nuttx/nuttx})
		\item NuttX apps (\url{https://bitbucket.org/nuttx/apps})
		\item Kconfig (NuttX tools: \url{https://bitbucket.org/nuttx/tools})
		\item Toolchain: arm-none-eabi (\url{https://crosstool-ng.github.io/})
		\item OpenOCD
	\end{itemize}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Clone me.. tool me..}
	\begin{verbatim}
git clone https://bitbucket.org/nuttx/nuttx
git clone https://bitbucket.org/nuttx/apps
git clone https://bitbucket.org/nuttx/tools
\end{verbatim}

	\begin{verbatim}
cd tools/kconfig-frontends
autoreconf -fi
./configure --disable-shared --enable-static \
	--enable-frontends=kconf,conf,mconf \
	--prefix=$HOME/.local 
make install
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Konfigurace a build}
	\begin{enumerate}
		\item Vygeneruj výchozí konfiguraci
		\item Použij mconf pro doladění
	\end{enumerate}

	\begin{verbatim}
./tools/configure.sh stm32f103-minimum/nsh
make menuconfig
\end{verbatim}

	\begin{verbatim}
make -j$(nproc)
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Nahrání do pilulky}

	\begin{verbatim}
openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg \
	-f /usr/share/openocd/scripts/target/stm32f1x.cfg

telnet localhost 4444
> reset halt
> program nuttx.bin 0x08000000 verify
> reset run
\end{verbatim}

	\begin{verbatim}
NuttShell (NSH)
nsh> 
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Vlastní aplikace}
	Přečtěte si: apps/README.txt (Předvedu třetí metodu)
\end{frame}

\begin{frame}[fragile]
	\frametitle{Dokumentace k přečtení}
	\begin{enumerate}
		\item nuttx/configs/stm32f103-minimum/README.txt
		\item nuttx/Documentation/NuttxUserGuide.html
		\item nuttx/Documentation/NuttShell.html
		\item nuttx/Documentation/NuttxPortingGuide.html
	\end{enumerate}
\end{frame}

\begin{frame}
	\Large Děkuji za pozornost.

	\url{git.cynerd.cz}
\end{frame}

{
\setbeamercolor{background canvas}{bg=omnia}
\begin{frame}
	\pagecolor{yellow!30!orange}
	\center \color{white} \Huge play.turris.cz
\end{frame}
}

\end{document}
