\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}