|
@ -1,55 +1,134 @@ |
|
|
\documentclass[11pt,ngerman]{beamer} |
|
|
\documentclass[11pt,ngerman]{beamer} |
|
|
|
|
|
|
|
|
\usetheme{AnnArbor} |
|
|
|
|
|
|
|
|
%\usetheme{Antibes} |
|
|
|
|
|
\usetheme{Bergen} |
|
|
\usecolortheme{seagull} |
|
|
\usecolortheme{seagull} |
|
|
|
|
|
|
|
|
|
|
|
\usepackage{listings} |
|
|
|
|
|
\usepackage{color} |
|
|
|
|
|
\lstset{ |
|
|
|
|
|
language=c++, |
|
|
|
|
|
columns=flexible, |
|
|
|
|
|
basicstyle={\small\ttfamily}, |
|
|
|
|
|
keepspaces=true, |
|
|
|
|
|
breaklines=true, |
|
|
|
|
|
breakatwhitespace=true, |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
\begin{document} |
|
|
\begin{document} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
\title{Implement Updates \textit{Over the Air} for ESP8266 microcontrollers} |
|
|
|
|
|
\author{Dustin Frisch\\ C/C++ for Embedded Systems and Physical Computing\\ Angewandte Informatik\\ University of Applied Sciences Fulda\\ \texttt{dustin.frisch@informatik.hs-fulda.de}} |
|
|
|
|
|
\date{\today} |
|
|
|
|
|
\titlepage |
|
|
|
|
|
|
|
|
\title{Implement Updates \textit{Over the Air} for \textit{ESP8266} microcontrollers} |
|
|
|
|
|
\author{Dustin Frisch\\ C/C++ for Embedded Systems and Physical Computing\\ Angewandte Informatik\\ University of Applied Sciences Fulda\\ \texttt{dustin.frisch@informatik.hs-fulda.de}} |
|
|
|
|
|
\date{\today} |
|
|
|
|
|
\titlepage |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
\frametitle{About the Project} |
|
|
|
|
|
|
|
|
\frametitle{About the Project} |
|
|
|
|
|
\framesubtitle{ESPer} |
|
|
|
|
|
\centering{\includegraphics[width=\columnwidth]{esp-01s.jpg}} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
\frametitle{Why Updates?} |
|
|
|
|
|
|
|
|
\frametitle{About the Project} |
|
|
|
|
|
\framesubtitle{Magrathea Laboratories e.V.} |
|
|
|
|
|
\centering{\includegraphics[scale=0.04]{maglab.png}} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
\frametitle{Why \textit{Over the Air}?} |
|
|
|
|
|
|
|
|
\frametitle{Updates} |
|
|
|
|
|
\begin{itemize} |
|
|
|
|
|
\item Changed requirement or environment |
|
|
|
|
|
\item Closing security issues |
|
|
|
|
|
\item Fixing bugs |
|
|
|
|
|
\item New Features |
|
|
|
|
|
\end{itemize} |
|
|
|
|
|
|
|
|
|
|
|
\centering{Often possible without hardware changes.} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
\frametitle{Implementation - Update mechanism} |
|
|
|
|
|
|
|
|
\frametitle{\textit{Over the Air (OTA)}} |
|
|
|
|
|
\centering{Reduces maintenance cost.} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
\frametitle{Implementation - Supporting multiple devices} |
|
|
|
|
|
|
|
|
\frametitle{Requirements} |
|
|
|
|
|
\begin{itemize} |
|
|
|
|
|
\item Automatic updates \textit{OTA} without administrative interaction |
|
|
|
|
|
\item Insusceptible to errors of any kind |
|
|
|
|
|
\item Downloading side-by-side with payload traffic |
|
|
|
|
|
\item Maximal uptime and minimal network load |
|
|
|
|
|
\item Maintenance and monitoring |
|
|
|
|
|
\item Categorizing devices by task-specific hardware |
|
|
|
|
|
\end{itemize} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
\frametitle{Implementation - Automatic deployment and roll-out} |
|
|
|
|
|
|
|
|
\frametitle{Implementation} |
|
|
|
|
|
\framesubtitle{Update mechanism} |
|
|
|
|
|
\begin{columns} |
|
|
|
|
|
\begin{column}{0.6\textwidth} |
|
|
|
|
|
\begin{enumerate} |
|
|
|
|
|
\item Download \texttt{.version} file and compare |
|
|
|
|
|
\item Download firmware binary for \emph{other} slot |
|
|
|
|
|
\item Reconfigure \textit{rBoot} bootloader |
|
|
|
|
|
\item Restart |
|
|
|
|
|
\end{enumerate} |
|
|
|
|
|
\end{column} |
|
|
|
|
|
\begin{column}{0.4\textwidth} |
|
|
|
|
|
\centering{\includegraphics[height=0.75\textheight]{flash_layout.pdf}} |
|
|
|
|
|
\end{column} |
|
|
|
|
|
\end{columns} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
|
|
|
|
|
|
\begin{frame}[fragile] |
|
|
|
|
|
\frametitle{Implementation} |
|
|
|
|
|
\framesubtitle{Supporting multiple devices} |
|
|
|
|
|
\begin{lstlisting} |
|
|
|
|
|
#include "Device.h" |
|
|
|
|
|
#include "features/Socket.h" |
|
|
|
|
|
|
|
|
|
|
|
Device device: |
|
|
|
|
|
|
|
|
|
|
|
constexpr const char SOCKET_NAME[] = "socket"; |
|
|
|
|
|
constexpr const uint16_t SOCKET_GPIO = 12; |
|
|
|
|
|
OnOffFeature<SOCKET_NAME, SOCKET_GPIO, false, 1> socket(&device); |
|
|
|
|
|
|
|
|
|
|
|
Device* getDevice() { return &device; } |
|
|
|
|
|
\end{lstlisting} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
|
|
|
\frametitle{Implementation} |
|
|
|
|
|
\framesubtitle{Supporting multiple devices} |
|
|
|
|
|
\centering{\texttt{make socket/flash} \\ to build and flash.} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
|
|
|
\frametitle{Implementation} |
|
|
|
|
|
\framesubtitle{Automatic deployment and roll-out} |
|
|
|
|
|
\begin{itemize} |
|
|
|
|
|
\item \texttt{git commit} |
|
|
|
|
|
\item \textit{drone} builds it |
|
|
|
|
|
\item \texttt{scp *.version *.rom\{0,1\}} to deployment server |
|
|
|
|
|
\item Served by \textit{nginx} |
|
|
|
|
|
\end{itemize} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
|
|
|
\frametitle{Conclusion} |
|
|
|
|
|
\centering{It works!} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\begin{frame} |
|
|
\begin{frame} |
|
|
|
|
|
\centering{\url{https://git.maglab.space/esper/esper}} |
|
|
|
|
|
|
|
|
|
|
|
\vspace{20mm} |
|
|
|
|
|
|
|
|
|
|
|
\centering{\large{Thank you for your attention.}} |
|
|
\end{frame} |
|
|
\end{frame} |
|
|
|
|
|
|
|
|
\end{document}} |
|
|
\end{document}} |