\documentclass[dvipdfm]{beamer}

% disable navi. symbols, because dvipdfmx does not work for this
\setbeamertemplate{navigation symbols}{}

\usepackage[english]{babel}
\usepackage{fancybox}
\usepackage{ulem}
\usepackage{color}
%\usepackage{bootabs}
\usepackage{hyperref}
\usepackage{lmodern}
\usepackage{fontspec}

\setmainfont{DejaVu Sans Condensed}
\setsansfont{DejaVu Sans Condensed}
\setmonofont{DejaVu Sans Mono}

\hypersetup{
	bookmarksnumbered=true,
	setpagesize=false,
	pdftitle={LessonsLearnedFromEarlyEmbeddedLinuxAdopter}
	pdfauthor={Hisao Munakata},
	pdfsubject={ALS2012},
	pdfkeywords={Linux; kernel; automotive; tutorial;}}

\usetheme{Warsaw}

% add slide no. to Warsaw template
\defbeamertemplate*{footline}{shadow theme}
{%
\leavevmode%
\hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fil,rightskip=.3cm]{author in head/foot}%
	\usebeamerfont{author in head/foot}\insertframenumber\,/\,\inserttotalframenumber\hfill\insertshortauthor
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}%
	\usebeamerfont{title in head/foot}\insertshorttitle%
\end{beamercolorbox}}%
\vskip0pt%
}

\setbeamertemplate{items}[square]

%% adjust line space partially
\newenvironment{narrowlinespace}{
	\baselineskip = 3.0mm
}

%% add width changeable block definition
\newenvironment<>{varblock}[2][\textwidth]{
	\begin{center}
	\begin{minipage}{#1}
		\setlength{\textwidth}{#1}
		\begin{actionenv}#3
			\def\insertblocktitle{#2}
			\par
			\usebeamertemplate{block begin}}
			{\par
			\usebeamertemplate{block end}
		\end{actionenv}
	\end{minipage}
	\end{center}}

%% add variable width hline
\newcommand{\bhline}[1]{\noalign{\hrule height #1}}  

\title{Lessons learned from CE embedded Linux}
\subtitle{9 trivial tips given from early Linux adaptor} 
\author[Hisao Munakata]{Hisao Munakata}
\institute[LF/CEWG]{Linux Foundation Consumer Electronics working group}
\date[2012-9-19 Automotive Linux Summit 2012]{September 19th 2012, ALS2012}

%% color setting adjust
\definecolor{cyan}{cmyk}{  .7, 0, 0, 0}
\definecolor{magenta}{cmyk}{0,.7, 0, 0}
\definecolor{yellow}{cmyk}{ 0, 0,.7, 0}
\definecolor{blue}{cmyk}{  .8,.8, 0, 0}
\definecolor{red}{cmyk}{    0,.8,.8, 0}
\definecolor{green}{cmyk}{ .2, 0,.7, 0}
\definecolor{orange}{cmyk}{ 0,.5,.8, 0}
\definecolor{gray}{cmyk}{  .2,.2,.2,.8}

%% adjust block environment definition
\setbeamertemplate{blocks}[shadow=true]
%\setbeamercolor{block title}{bg=blue!70!gray, fg=white}
%\setbeamercolor{block body}{bg=blue!40!gray}
%\setbeamercolor{block title alerted}{bg=red!70!gray, fg=white}  
%\setbeamercolor{block body alerted}{bg=red!40!gray}
%\setbeamercolor{block title example}{bg=green!70!gray, fg=white}
%\setbeamercolor{block body example}{bg=green!40!gray}

%% auto block in each column hight sync extension
%% http://tex.stackexchange.com/questions/14220/how-to-modify-columns-column-environments-so-they-resize-automatically-to-the-la
\usepackage{environ}% Required for \NewEnviron, i.e. to read the whole body of the environment
\makeatletter

\newcounter{acolumn}%  Number of current column
\newlength{\acolumnmaxheight}%   Maximum column height

% `column` replacement to measure height
\newenvironment{@acolumn}[1]{%
	\stepcounter{acolumn}%
	\begin{lrbox}{\@tempboxa}%
	\begin{minipage}{#1}%
		}{%
	\end{minipage}
	\end{lrbox}
\@tempdimc=\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax
% Save height of this column:
\expandafter\xdef\csname acolumn@height@\roman{acolumn}\endcsname{\the\@tempdimc}%
% Save maximum height
\ifdim\@tempdimc>\acolumnmaxheight
	\global\acolumnmaxheight=\@tempdimc
\fi
}

% `column` wrapper which sets the height beforehand
\newenvironment{@@acolumn}[1]{%
	\stepcounter{acolumn}%
	% The \autoheight macro contains a \vspace macro with the maximum height minus the natural column height
	\edef\autoheight{\noexpand\vspace*{\dimexpr\acolumnmaxheight-\csname acolumn@height@\roman{acolumn}\endcsname\relax}}%
	% Call original `column`:
	\orig@column{#1}%
}{%
	\endorig@column
}

% Save original `column` environment away
\let\orig@column\column
\let\endorig@column\endcolumn

% `columns` variant with automatic height adjustment
\NewEnviron{acolumns}[1][]{%
% Init vars:
\setcounter{acolumn}{0}%
\setlength{\acolumnmaxheight}{0pt}%
\def\autoheight{\vspace*{0pt}}%
% Set `column` environment to special measuring environment
\let\column\@acolumn
\let\endcolumn\end@acolumn
\BODY% measure heights
% Reset counter for second processing round
\setcounter{acolumn}{0}%
% Set `column` environment to wrapper
\let\column\@@acolumn
\let\endcolumn\end@@acolumn
% Finally process columns now for real
\begin{columns}[#1]%
	\BODY
\end{columns}%
}
\makeatother

%------------------------------------------------------------------------

\begin{document}

\begin{frame}
	\titlepage{}
\end{frame}

\begin{frame}
	\frametitle{Agenda}
	\tableofcontents{}
\end{frame}

\begin{frame}
\frametitle{Who am I ?}
	\begin{itemize}
		\item From embedded SoC provider company Renesas
		\item Linux Foundation CE\footnote{CE = consumer electronics} working Gr. Steering committee member, LF/CEWG Architecture Gr. co-chair
		\item One of LF/CEWG LTSI\footnote{LTSI = Long Term Stable kernel Initiative} project initial proposer
		\item ALS2012  (and others) steering committee
		\item At my company, I had been encouraging my team developers to send a patches upstream
		\item Also I have supported various CE customers who develop digital-TV, Blu-ray recorder and Smart-phone
\end{itemize}
\end{frame}

\section{Welcome to the Linux world}

\begin{frame}
	\frametitle{What was your original intention to adopt Linux ?} 
	\begin{alertblock}{\ New technology is not always better than previous}
		\begin{itemize}
	 		\item Analog TV channel selection was much faster 
	 		\item Feature phone battery lasts longer than Smartphone 
			\item Traditional IVI device could be designed to boot-up faster
		\end{itemize}
	\end{alertblock}
	\vspace{0.3cm}
	\begin{narrowlinespace}
	If you simply want to run the same application in the same way, adoption of Linux does not make any sense.
	\textcolor{red}{Clarification of your goal with Linux is essential.}
	\end{narrowlinespace}
	\vspace{0.1cm}
	\begin{block}{\ Linux might be mandatory option if you want to run\ldots}
		\begin{itemize}
			\item Social service application like Twitter, Facebook
			\item Play various open contents/library like Youtube 
			\item \textcolor{red}{Connect IVI device as a mobile node of cloud computing}
		\end{itemize}
	\end{block}
\end{frame}
  
\subsection{A wise man learns from the experience of others}

\begin{frame}
	\frametitle{History of struggles}
	\begin{narrowlinespace}
			We, Consumer Electronics (=CE) industries, heavily depend on the power of Linux now.
			However, we experienced various troubles at the early stage of Linux adoption. \\
			\textcolor{red}{So it would be a lovely idea to hear previous struggles not to repeat the same experiences} in the automotive industry.
	\end{narrowlinespace}
	\begin{alertblock}{\ CE industry problems with Linux adoption}
		\begin{itemize}
			\item Management thought Linux is low-cost replacement
			\item Developer thought they are consumer (=user) of Linux 
			\item They defined `CE-Linux spec` and asked the community to develop it,
					but it never happened. The community requested CE industry to submit 
					patch proposal instead. 
			\item Also they wanted to reuse existing RTOS asset on Linux 
			\item \textcolor{red}{Finally they start creating unique kernel for embedded} 
		\end{itemize}
	\end{alertblock}
\end{frame}
   
\begin{frame}
	\frametitle{Important findings after severe struggle}
	\begin{block}{\ Recommended approach to utilize Linux}
		\begin{itemize}
			\item \textcolor{red}{\bf Not to create your own fork} because it would create enormous burden at next kernel migration
			\item \textcolor{red}{\bf Work with the community} developer because the code you want to develop might be already written by them
			\item \textcolor{red}{\bf Adopt} proven development procedure like \textcolor{red}{\bf git} 
			\item \textcolor{red}{\bf Refer} public code repository \textcolor{red}{\bf (git-hub, ML and Wiki)} 
			\item \textcolor{red}{\bf Upstream} developed code as much as possible 
		\end{itemize}
	\end{block}
	\vspace{0.3cm}
	\begin{narrowlinespace}
			One practical idea is \textcolor{red}{having opensource team in your company} who can work with community developers. \\
			They can be a bridge between business and opensource. 
	\end{narrowlinespace}
\end{frame}
 
\subsection{Understanding essential design difference}

\begin{frame}
	\frametitle{Linux vs RTOS, how \textcolor{yellow}{technically} differs}
	{\small
	\begin{alertblock}{\ Technical essence of Linux design}
			\textcolor{red}{Essence of Linux is {\bf automatic coordination by heuristics,} 
		so you should write code to fully utilize to this mechanism. 
		If you try to override this, it will break Linux built-in system coordination.}
	\end{alertblock}}
	\begin{table}[tbp]
	\begin{center}
	\small
	\begin{tabular}{llr}\bhline{1.2pt}
									& Linux		 			& RTOS				\\ \bhline{1.2pt}
			scheduling				& \textcolor{red}{\bf heuristics}			& deterministic		\\ \hline
			resource allocation		& flexible				& fixed				\\ \hline
			execution order			& runtime coordination	& predictable		\\ \hline
			MMU (virtual address)	& support by default	& not support		\\ \hline
			multi-processor 		& support by default	& not support		\\ \hline
			virtualization 			& yes (KVM, others)		& not support		\\ \hline
			address description		& abstracted			& absolute value	\\ \bhline{1.2pt}
	\end{tabular}
	\end{center}
	\end{table}
\end{frame}

\begin{frame}
		\frametitle{\textcolor{yellow}{Statistics} of the latest Linux (is {\textcolor{yellow}{huge !}} asset)}
	\vspace{-0.5cm}
	\begin{table}[tbp]
	\begin{center}
	\small
	\caption{Statistics of Linux kernel 3.5.3 (released 2012.8.26)}
	\begin{tabular}{l@{\hspace{2.0cm}}r}\bhline{1.2pt}
			\textcolor{red}{\bf number of code lines}	& \textcolor{red}{\bf 15,598,058}			\\ \hline
			% find . -type f | xargs -l wc |awk '{ sum += $1} END {print sum}'
			number of files			& 39,097					\\ \hline
			% find . -type f |wc -l
			number of registered maintainer		& 1,255					\\ \hline
			% grep M: MAINTAINERS | wc -l
			number of newly added patches		& 9,534					\\ \hline
			update cycle						& every 75 - 80 days	\\ \hline
			configuration items					& 5,386					\\ \hline
			% grep CONFIG_ .config | wc -l
			\textcolor{red}{history of development}		& \textcolor{red}{over 20 years}			\\ \bhline{1.2pt}
	\end{tabular}
	\end{center}
	\end{table}
	\vspace{-0.4cm}
	{\small
	\begin{block}{\ No single company can do the same scale of development}
		Smartphone, DTV, Enterprise server and Super Computer \textcolor{red}{runs
		Linux kernel image generated from {\bf exact single source code} with different configuration setting.}
		So handling Linux kernel source is not a trivial thing. Be careful not to break system coordination.
	\end{block}}
\end{frame}
  
\section{Tips from early Linux adaptor} 
\subsection{Linux coding tips ( No.1 - No.5 )}

\begin{frame}
	\frametitle{1. kernel space and user space isolation} 
	\begin{block}{}
		\textcolor{blue}{\  {\bf Porting fully debugged RTOS code to Linux}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ Keep original code as possible}
				\begin{itemize}
					\item access h/w register via \textcolor{blue}{\bf mmap} from user space 
					\item inherit original RTOS code structure as much as possible  
					\item not fully utilize Linux kernel service 
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\  Adopt POSIX API for isolation}
				\begin{itemize}
					\item rewrite device driver to access real hardware
					\item isolate user/kernel space by \textcolor{blue}{\bf standard POSIX} 
					\item design for multi threaded program execution
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			\  \textcolor{red}{\bf Clean POSIX space isolation is essentially important}
	\end{block}
\end{frame}

\begin{frame}
\frametitle{2. device driver API design} 
	\begin{block}{}
			\textcolor{blue}{\  {\bf Writing a device driver for on-chip/on-board device}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ Full functional driver}
				\begin{itemize}
					\item \textcolor{blue}{\bf designed to support all device capabilities} at initial release
					\item adopt \textcolor{blue}{\bf original ioctl} to control original function
					\item kept as in-house code \\(no mainlining attempt)
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ Limited functional driver}
				\begin{itemize}
						\item \textcolor{blue}{\bf compatible with Linux standard framework}
					\item to add support for IP unique function, framework code is enhanced
					\item code is mainlined
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			\textcolor{red}{\ \bf Framework compatibility is preferable} than coverage
	\end{block}
\end{frame}

\begin{frame}
\frametitle{3. task execution order (priority) control} 
	\begin{block}{}
		\textcolor{blue}{\  {\bf Tune kernel scheduler setting to improve response}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ Entrust Linux scheduler }
				\begin{itemize}
					\item rely on kernel scheduler to minimize latency 
					\item not attempt to elaborate tune of priority setting
					\item release CPU resource while waiting ready status
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ Fine tune scheduling setting}
				\begin{itemize}
					\item fine tune process priority by \textcolor{blue}{\bf nice} setting
					\item adopt \textcolor{blue}{\bf rt-scheduling policy} to secure execution
					\item utilize busy wait loop \\( \textcolor{blue}{\bf udelay} ) for fine tune
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			\textcolor{red}{\ \bf Do not block (hold) CPU} by excessive timing manipulation 
	\end{block}
\end{frame}

\begin{frame}
	\frametitle{4. resource ( memory ) allocation}
	\begin{block}{}
		\textcolor{blue}{\  {\bf Allocating large contiguous memory for video buffer}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ Static allocation}
				\begin{itemize}
					\item reserve memory statically at out of side kernel management
					\item program want to reserve local buffer space 
					\item random alloc/dealloc 
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ Dynamic allocation}
				\begin{itemize}
					\item kernel memory allocation, low-memory detection
					\item \textcolor{blue}{\bf memory pool} to reduce page fragmentation 
					\item adopt modern memory allocator like \textcolor{blue}{\bf CMA}
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			\textcolor{red}{\ \bf Speculative resource allocation} works remarkably well
	\end{block}
\end{frame}

\begin{frame}
		\frametitle{5. binary components \textcolor{yellow}{(binary blobs)}}
	\begin{block}{}
		\textcolor{blue}{\  {\bf Handling binary component (library) with Linux code}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ Avoid binary code}
				\begin{itemize}
						\item \textcolor{blue}{\bf kernel code must be GPL} (source available)
					\item should have source of userland library as well
					\item source is mandatory if you want to generate \textcolor{blue}{\bf symbol for debug}
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ Accept binary code}
				\begin{itemize}
					\item IP/middleware vendor ask to use binary code 
					\item When environment (kernel, toolchain) update is needed, 
						\textcolor{blue}{\bf it may hit serious difficulty of whole system rebuilt}
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			{\  \textcolor{red}{\bf Avoid binary code as possible } to eliminate problems} 
	\end{block}
\end{frame}

\subsection{Development management tips ( No.6 - No.9 )}

\begin{frame}
\frametitle{6. code control process} 
	\begin{block}{}
		\textcolor{blue}{\  {\bf patch review / integration / tracking / debug flow}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ Sustain in-house method}
				\begin{itemize}
					\item keep use traditional way
					\item \textcolor{blue}{\bf merge without maintainer review} then test and debug
					\item improper use of git (\textcolor{blue}{\bf too large commit, no log})
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ Innovate open source way }
				\begin{itemize}
					\item allocate \textcolor{blue}{\bf in-house tree maintainer} who review all codes before merge 
					\item \textcolor{blue}{\bf use git for code control} 
					\item review public repo, BTS, ML discussion information
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			{\  \textcolor{red}{\bf Adopt and utilize OSS development methodology}}
	\end{block}
\end{frame}

\begin{frame}
		\frametitle{7. kernel version selection \textcolor{yellow}{\ ( LTS / LTSI )}} 
	\begin{block}{}
		\textcolor{blue}{\  {\bf Security maintenance period of Linux kernel vary}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ Simply adopt given kernel}
				\begin{itemize}
					\item simply use SoC vendor's kernel adopted in BSP 
					\item distribution / platform defined (Android, Genivi) 
					\item \textcolor{blue}{\bf stick on the old version} 
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ Conscious of version}
				\begin{itemize}
					\item adopt latest version
					\item chose community LTS 
					\item chose \textcolor{blue}{\ \bf LF/CEWG LTSI (Long-Term Stable kernel for Industry)}
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			{\  \textcolor{red}{\bf Ask SoC/distro/integrator to adopt LTSI in their BSP}}
	\end{block}
\end{frame}

\begin{frame}
	\frametitle{Community kernel maintenance scheme}
	\begin{figure}[tb] 
		\vspace{-1.0cm}
		\begin{center}
		\includegraphics[clip, angle=270, width=11cm]{ltsplan.eps}
		%\includegraphics[clip, width=11cm]{kmcycle.eps}
		\end{center}
	\end{figure} 
\end{frame}

\begin{frame}
	\frametitle{3.4 is next LTS (and LTSI) version}
	\begin{figure}[tb] 
		\begin{center}
		\includegraphics[clip, width=9.8cm]{34lslts.eps}
		\end{center}
	\end{figure} 
\end{frame}


\begin{frame}
	\frametitle{8. code \textcolor{yellow}{upstreaming}} 
	\begin{block}{}
		\textcolor{blue}{\ \ {\bf Is there any value / demands to do upstream ?}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ No needs for industry user}
				\begin{itemize}
					\item simply passive Linux user
					\item no chance/intention to join upstream development 
					\item can improve kernel inside a company if needed
					\item \textcolor{blue}{\ \bf hold in-house patches}
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ Sure, it certainly helps}
				\begin{itemize}
					\item actively feedback bug info to distro/integrator 
					\item ask SoC to upstream device support code 
					\item want to \textcolor{blue}{\ \bf minimize delta against upstream code}
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			\textcolor{red}{\   \bf Many companies start contributing upstream. Why ?}
	\end{block}
\end{frame}

\begin{frame}
\frametitle{9. work with distribution} 
	\begin{block}{}
			\textcolor{blue}{\  {\bf Maintain binary compatibility of Linux application}}
	\end{block}
	\vspace{-0.3cm}
	\begin{acolumns}[T]
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=lime}
			\begin{block}{\ It is a part of SIer's job}
				\begin{itemize}
					\item \textcolor{blue}{\bf simple headless system}
					\item no OSS middleware
					\item no OSS library
					\item no OSS application
					\item have full source code 
				\end{itemize}
			\autoheight
			\end{block}
		\end{column}
		\begin{column}{0.5\linewidth}
			\setbeamercolor{structure}{fg=orange}
			\begin{block}{\ SI integrate code from distro}
				\begin{itemize}
					\item want to utilize binary distro like PC Linux  
					\item \textcolor{blue}{\bf keep system-wide binary compatibility}
					\item require security update for userland program
				\end{itemize}
				\autoheight
			\end{block}
		\end{column}
	\end{acolumns}
	\pause
	\begin{block}{\ Recommended choice is}
			\  \textcolor{red}{\bf Distro manages interdependency of OSS packages}
	\end{block}
\end{frame}

\section{Conclusion}

\begin{frame}
	\frametitle{Conclusion}
	\begin{block}{}
		{\small
		\begin{itemize}
			\item Essence of Linux is \textcolor{red}{automatic coordination by heuristics.}\\
				It is crucial to write the correct code that can work with such automation mechanism.
				Code originally developed for RTOS need to be rewritten to comply with Linux environment. 
			\item CE industry had struggled to find the right approach to utilize Linux environment. 
				Here, \textcolor{red}{introduced {\bf 9 tips} for your reference of early CE Linux.}
				Please do not reproduce the same mistakes again and become successful Linux adaptor.
			\item Linux is a massive asset contains over 15 million lines of code. It is pretty sure that 
				migration of kernel version needed to use new function.
				\textcolor{red}{It is essential to care for {\bf future version upgradability 
				and code reusability}} when editing the code.
		\end{itemize}
		}
	\end{block}
\end{frame}
 
\end{document}
