This repository has been archived by the owner on Nov 16, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
firmware.tex
171 lines (158 loc) · 5.54 KB
/
firmware.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
\section{Firmware}
%Nachdem der Aufbau der Firmware geklärt ist, soll ein kurzer Abriss
%über den Bauprozess der aktuellen Firmware gezeigt werden. Auch die
%letzten Entwicklungen der Franken eigenen Firmware werden gezeigt
%und erklärt. An dieser Stelle könnten Vorkenntnisse über OpenWrt
%Vorteilhaft sein, sind aber keine Voraussetzung für den Vortrag.
\begin{frame}[fragile]{Firmware}
\only<1-3>{
\begin{block}{Wie wird die Firmware gebaut?}
\begin{itemize}
\item<1-> git clone \sout{git://git.freifunk-ol.de/ffol/user/reddog/firmware.git}
\item<1-> cd firmware
\item<1-> ./buildscript
\item<3-> ./buildscript selectbsp bsp/board\_wr1043nd.bsp
\item<3-> ./buildscript selectcommunity community/franken.cfg
\item<3-> ./buildscript
\end{itemize}
\end{block}
}
\only<2>{
\texttt{\scriptsize
Please select a Board-Support-Package using:\\
./buildscript selectbsp
}
}
\only<4>{
\texttt{\scriptsize
Working with bsp/board\_wr1043nd.bsp and community/franken.cfg\\[2ex]
This is the Build Environment Script of the Freifunk Community\\
Oldenburg.\\
Usage: ./buildscript command\\
command:\\
\hspace{1cm}selectcommunity [communityfile]\\
\hspace{1cm}selectbsp [bsp file]\\
\hspace{1cm}prepare\\
\hspace{1cm}config\\
\hspace{1cm}build\\
\hspace{1cm}flash\\
\hspace{1cm}download\\[2ex]
If you need help to one of these options just type\\
./buildscript command help\\
}
}
\end{frame}
\begin{frame}[fragile]{Community File}
\begin{block}{community/franken.cfg:}
\scriptsize
\begin{lstlisting}[gobble=12]
BATMAN_CHANNEL=1
ESSID_AP=franken.freifunk.net
ESSID_MESH=batman.franken.freifunk.net
BSSID_MESH=02:CA:FF:EE:BA:BE
NETMON_IP=fe80::ff:feee:1
VPN_PROJECT=fff
NTPD_IP=fe80::ff:feee:1%br-mesh
UPGRADE_PATH=http://[fe80::ff:feee:1%br-mesh]/dev/firmware/current/
\end{lstlisting}
\end{block}
\end{frame}
\begin{frame}[fragile]{Board-Support-Package}
\begin{block}{bsp/board\_wr740n.bsp:}
\scriptsize
\begin{lstlisting}[gobble=12]
machine=wr740n
target=$builddir/$machine
board_prepare() {
}
board_prebuild() {
}
board_postbuild() {
cp $target/bin/ar71xx/openwrt-ar71[..]-squashfs-*.bin ./bin/
}
board_flash() {
echo "nothing implemented"
}
board_clean() {
/bin/rm -rf $target bin/*$machine*
}
\end{lstlisting}
\end{block}
\end{frame}
\begin{frame}{Board-Support-Package}
\begin{block}{bsp/wr740n/}
\begin{itemize}
\item .config
\item root\_file\_system/etc/
\begin{itemize}
\item rc.local.board
\item config/
\begin{itemize}
\item board
\item network
\item system
\end{itemize}
\item crontabs/
\begin{itemize}
\item root
\end{itemize}
\end{itemize}
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Was macht das Buildscript?}
\begin{itemize}
\item Das BSP file wird als dot Script eingeladen
\item Community file generiert dynamisches sed-Script
\begin{itemize}
\item[$\rightarrow$] Templates mit richtigen Werten zu füllen
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Was passiert beim prepare?}
\begin{itemize}
\item Sourcen Downloaden
\begin{itemize}
\item[$\rightarrow$] separater Source Folder
\item OpenWRT
\item Sämtliche Packages
\begin{itemize}
\item[$\rightarrow$] ggfs werden Patches angewandt
\end{itemize}
\end{itemize}
\item Ein ggfs altes Target wird gelöscht
\item OpenWRT wird ins Target exportiert (kopiert)
\item Eine OpenWRT Feed-Config wird mit dem lokalen Source Verzeichnis als Quelle angelegt
\item Die Feeds werden geladen
\item Spezielle Auswahl an Paketen wird geladen
\item Patches werden angewandt
\item board\_prepare wird aufgerufen (wird. z.B. für Patches für eine bestimmte HW verwendet)
\end{itemize}
\end{frame}
\begin{frame}{Was passiert beim build?}
\begin{itemize}
\item prebuild
\begin{itemize}
\item \$target/files aufräumen
\item Files aus default-bsp und bsp kopieren
\item OpenWRT- und Kernel-Config kopieren
\item board\_prebuild
\item Templates transformieren
\item Versionen speichern: \$target/files/etc/firmware\_release
\end{itemize}
\item OpenWRT: make
\item postbuild
\begin{itemize}
\item board\_postbuild
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Config Targets?}
\begin{itemize}
\item prebuild
\item OpenWRT: make menuconfig ; make kernel\_menuconfig
\item Speichern, y/n?
\item Config-Format vereinfachen
\item Config ins BSP zurück speichern
\end{itemize}
\end{frame}