FirmwareEntwicklung: Unterschied zwischen den Versionen
RedDog (Diskussion | Beiträge) (Init) |
RedDog (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
= Benutzung des Buildscripts = | |||
* git clone https://github.com/FreifunkFranken/firmware.git | * git clone https://github.com/FreifunkFranken/firmware.git | ||
* cd firmware | * cd firmware | ||
Zeile 9: | Zeile 11: | ||
* ./buildscript selectbsp bsp/board wr1043nd.bsp | * ./buildscript selectbsp bsp/board wr1043nd.bsp | ||
* ./buildscript | * ./buildscript | ||
= Was ist ein BSP? = | |||
Ein BSP beschreibt, was zu tun ist, damit ein Firmware Image für eine spezielle Hardware gebaut werden kann. | |||
Typischerweise ist eine folgene Ordner-Struktur vorhanden: | |||
* .config | |||
* root_file_system/ | |||
** etc/ | |||
*** rc.local.board | |||
*** config/ | |||
**** board | |||
**** network | |||
**** system | |||
*** crontabs/ | |||
**** root | |||
Die Daten des BSP werden nie alleine verwendet. Zu erst werden immer die Daten aus dem "default"-BSP zum Ziel kopiert, erst danach werden die Daten des eigentlichen BSPs dazu kopiert. Durch diesen Effekt kann ein BSP die "default" Daten überschreiben. | |||
= Der innere Aufbau des Buildscripts = | |||
* Das BSP file wird als dot Script eingeladen. | |||
* Community file generiert dynamisches sed-Script, dies geschriebt, damit die Templates mit den richtigen Werten gefüllt werden. | |||
== ./buildscript prepare == | |||
* Sourcen werden in einen separaten src-Folder geladen, sofern diese noch schont da sind. Zu den Sourcen zählen folgende Komponenten: | |||
** OpenWRT | |||
** Sämtliche Packages (ggfs werden Patches angewandt) | |||
* Ein ggfs altes Target wird gelöscht | |||
* OpenWRT wird ins Target exportiert (kopiert) | |||
* Eine OpenWRT Feed-Config wird mit dem lokalen Source Verzeichnis als Quelle angelegt | |||
* Die Feeds werden geladen | |||
* Spezielle Auswahl an Paketen wird geladen | |||
* Patches werden angewandt | |||
* board_prepare() aus dem BSP wird aufgerufen (wird. z.B. fur Patches für eine bestimmte HW verwendet) | |||
== ./buildscript build == | |||
* prebuild | |||
** $target/files aufräumen | |||
*** (In $target/files liegen Dateien, die später direkt im Ziel-Image landen) | |||
** Files aus default-bsp und bsp kopieren | |||
** OpenWRT- und Kernel-Config kopieren | |||
** board_prebuild() aus dem BSP wird aufgerufen | |||
* Templates transformieren | |||
* GIT Versionen speichern: $target/files/etc/firmware_release | |||
* OpenWRT: make | |||
* postbuild | |||
** board_postbuild() wird aufgerufen | |||
== ./buildscript config == | |||
Um das Arbeiten mit den OpenWRT .config's zu vereinfachen bietet das Buildscript die Möglichkeit die OpenWRT menuconfig und die OpenWRT kernel_menuconfig aufzurufen. Im Anschluss hat man die Möglichkeit die frisch editierten Configs in das BSP zu übernehmen. | |||
* prebuild | |||
* OpenWRT: make menuconfig ; make kernel_menuconfig | |||
* Speichern, y/n? | |||
* Config-Format vereinfachen | |||
* Config ins BSP zurück speichern |
Version vom 10. August 2014, 01:07 Uhr
Benutzung des Buildscripts
- git clone https://github.com/FreifunkFranken/firmware.git
- cd firmware
Mit Hilfe der Community-Files werden Parameter, wie die ESSID, der Kanal sowie z.B. die Netmon-IP gesetzt. Diese Einstellungen sind Community weit einheitlich und müssen i.d.R. nicht geändert werden.
- ./buildscript selectcommunity community/franken.cfg
Je nach dem, für welche Hardware die Firmware gebaut werden soll muss das BSP gewählt werden:
- ./buildscript selectbsp bsp/board wr1043nd.bsp
- ./buildscript
Was ist ein BSP?
Ein BSP beschreibt, was zu tun ist, damit ein Firmware Image für eine spezielle Hardware gebaut werden kann.
Typischerweise ist eine folgene Ordner-Struktur vorhanden:
- .config
- root_file_system/
- etc/
- rc.local.board
- config/
- board
- network
- system
- crontabs/
- root
- etc/
Die Daten des BSP werden nie alleine verwendet. Zu erst werden immer die Daten aus dem "default"-BSP zum Ziel kopiert, erst danach werden die Daten des eigentlichen BSPs dazu kopiert. Durch diesen Effekt kann ein BSP die "default" Daten überschreiben.
Der innere Aufbau des Buildscripts
- Das BSP file wird als dot Script eingeladen.
- Community file generiert dynamisches sed-Script, dies geschriebt, damit die Templates mit den richtigen Werten gefüllt werden.
./buildscript prepare
- Sourcen werden in einen separaten src-Folder geladen, sofern diese noch schont da sind. Zu den Sourcen zählen folgende Komponenten:
- OpenWRT
- Sämtliche Packages (ggfs werden Patches angewandt)
- Ein ggfs altes Target wird gelöscht
- OpenWRT wird ins Target exportiert (kopiert)
- Eine OpenWRT Feed-Config wird mit dem lokalen Source Verzeichnis als Quelle angelegt
- Die Feeds werden geladen
- Spezielle Auswahl an Paketen wird geladen
- Patches werden angewandt
- board_prepare() aus dem BSP wird aufgerufen (wird. z.B. fur Patches für eine bestimmte HW verwendet)
./buildscript build
- prebuild
- $target/files aufräumen
- (In $target/files liegen Dateien, die später direkt im Ziel-Image landen)
- Files aus default-bsp und bsp kopieren
- OpenWRT- und Kernel-Config kopieren
- board_prebuild() aus dem BSP wird aufgerufen
- $target/files aufräumen
- Templates transformieren
- GIT Versionen speichern: $target/files/etc/firmware_release
- OpenWRT: make
- postbuild
- board_postbuild() wird aufgerufen
./buildscript config
Um das Arbeiten mit den OpenWRT .config's zu vereinfachen bietet das Buildscript die Möglichkeit die OpenWRT menuconfig und die OpenWRT kernel_menuconfig aufzurufen. Im Anschluss hat man die Möglichkeit die frisch editierten Configs in das BSP zu übernehmen.
- prebuild
- OpenWRT: make menuconfig ; make kernel_menuconfig
- Speichern, y/n?
- Config-Format vereinfachen
- Config ins BSP zurück speichern