From d641aa12c3293355d74d62478045897337f81be8 Mon Sep 17 00:00:00 2001 From: Bernhard Heinloth <heinloth@cs.fau.de> Date: Mon, 11 Nov 2019 15:05:12 +0100 Subject: [PATCH] Firmware: Renamed, improved doc, added CI --- .gitlab-ci.yml | 28 ++++++++++++ .gitmodules | 2 +- CODE_CUBE.md | 30 ------------- INSTALL.md | 45 +++++++++++++++++++ README.md | 5 +-- {timecube => firmware}/CMakeLists.txt | 0 {timecube => firmware}/components/arduino | 0 {timecube => firmware}/config.example.h | 0 {timecube => firmware}/main/CMakeLists.txt | 0 {timecube => firmware}/main/accelerometer.cpp | 0 {timecube => firmware}/main/accelerometer.h | 0 {timecube => firmware}/main/timecube.cpp | 0 {timecube => firmware}/main/timelog.h | 0 {timecube => firmware}/sdkconfig | 0 14 files changed, 76 insertions(+), 34 deletions(-) create mode 100644 .gitlab-ci.yml delete mode 100644 CODE_CUBE.md create mode 100644 INSTALL.md rename {timecube => firmware}/CMakeLists.txt (100%) rename {timecube => firmware}/components/arduino (100%) rename {timecube => firmware}/config.example.h (100%) rename {timecube => firmware}/main/CMakeLists.txt (100%) rename {timecube => firmware}/main/accelerometer.cpp (100%) rename {timecube => firmware}/main/accelerometer.h (100%) rename {timecube => firmware}/main/timecube.cpp (100%) rename {timecube => firmware}/main/timelog.h (100%) rename {timecube => firmware}/sdkconfig (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..18810cb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,28 @@ +variables: + GIT_SUBMODULE_STRATEGY: recursive + +firmware: + image: debian:stable + before_script: + - ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime + - export DEBIAN_FRONTEND=noninteractive + - apt-get update -qq && apt-get install -y -qq make git wget libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache + - git submodule update --init --recursive + - git clone --depth=1 --recursive --branch v3.3 https://github.com/espressif/esp-idf.git + - export IDF_PATH="$(readlink -f esp-idf)" + - wget -qO- https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz | tar xvz + - export PATH="$PATH:$(readlink -f xtensa-esp32-elf/bin)" + script: + - mkdir -p firmware/build + - cp firmware/config.example.h firmware/config.h + - cd firmware/build + - cmake .. + - make + - make flash || true + artifacts: + paths: + - firmware/build/bootloader/bootloader.bin + - firmware/build/partition_table/partition-table.bin + - firmware/build/timecube.bin + - firmware/components/arduino/tools/esptool.py + diff --git a/.gitmodules b/.gitmodules index e41ad31..c3fee68 100644 --- a/.gitmodules +++ b/.gitmodules @@ -14,5 +14,5 @@ path = server/www/assets/apexcharts.js url = https://github.com/apexcharts/apexcharts.js.git [submodule "sketch_timecube/arduino"] - path = timecube/components/arduino + path = firmware/components/arduino url = https://github.com/espressif/arduino-esp32.git diff --git a/CODE_CUBE.md b/CODE_CUBE.md deleted file mode 100644 index 9670f9e..0000000 --- a/CODE_CUBE.md +++ /dev/null @@ -1,30 +0,0 @@ -Bauen und Flashen der Würfelsoftware -==================================== - -Voraussetzungen ---------------- - -Auf dem Rechner müssen folgende Komponenten installiert sein: - - * xtensa-esp32-Toolchain, siehe https://docs.espressif.com/projects/esp-idf/en/latest/get-started/linux-setup.html - * das ESP IDF *in Version 3.3* (die verwendeten Arduino-Erweiterungen kommen aktuell mit neuen Versionen nicht zurecht): https://github.com/espressif/esp-idf - - -Bauen der Software ------------------- - -``` -mkdir build -cd build -cmake .. -make -make flash -``` - -Flashen des Würfels -------------------- - -Mittels `make flash` kann die Software dann auf den Würfel geflasht werden. -Hat man mehr als einen ESP32 angeschlossen, dann kann/muss man mittel Umgebungsvariable `ESPPORT` angeben, welcher Chip geflasht werden soll: -`ESPPORT=/dev/ttyUSB5 make flash` - diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..32eb05a --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,45 @@ +Installation der Firmware +------------------------- + +### Voraussetzungen + +Folgende Komponenten werden benötigt: + + * [xtensa-esp32-Toolchain](https://docs.espressif.com/projects/esp-idf/en/release-v3.3/get-started/linux-setup.html) + * [ESP IDF *in Version 3.3*](https://github.com/espressif/esp-idf) (die verwendeten Arduino-Erweiterungen kommen aktuell mit neuen Versionen nicht zurecht) + + +### Vorbereitung + +Auf einem debianoiden Linux mit aktueller Version können die benötigten Komponenten wie folgt installiert werden: + + # Dieses Repo für Firmware rekursiv auschecken + git clone https://gitlab.cs.fau.de/heinloth/timecube.git + cd timecube + git submodule update --init --recursive + # Benötigte Pakete installeiren + sudo apt-get install make git wget libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache + # ESP IDF Version 3.3 rekursiv auschecken + git clone --depth=1 --recursive --branch v3.3 https://github.com/espressif/esp-idf.git + export IDF_PATH="$(readlink -f esp-idf)" + # xtensa-esp32-Toolchain laden (URL von der linux-setup Webseite) + wget -qO- https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz | tar xvz + export PATH="$PATH:$(readlink -f xtensa-esp32-elf/bin)" + + +### Bauen der Firmware + +Nach der Vorbereitung im `timecube`-Verzeichnis folgende Schritte ausführen: + + mkdir build + cd build + cmake .. + make + + +### Flashen des Würfels + +Mittels `make flash` kann die Software dann auf den Würfel geflasht werden. +Hat man mehr als einen ESP32 angeschlossen, dann kann/muss man mittel Umgebungsvariable `ESPPORT` angeben, welcher Chip geflasht werden soll: +`ESPPORT=/dev/ttyUSB5 make flash` + diff --git a/README.md b/README.md index caddd95..79c9d33 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,8 @@ Die Zeiterfassung soll dabei helfen das Verhältnis der verschiedenen Tätigkeit Anleitung --------- -[Detaillierte und bebilderte Montageanleitung](MONTAGE.md) - -[Anleitung zum Bauen der Würfelsoftware](CODE_CUBE.md) + * [Detaillierte und bebilderte Montageanleitung](MONTAGE.md) + * [Anleitung zum Bauen der Firmware für den Würfel](INSTALL.md) Grundüberlegungen diff --git a/timecube/CMakeLists.txt b/firmware/CMakeLists.txt similarity index 100% rename from timecube/CMakeLists.txt rename to firmware/CMakeLists.txt diff --git a/timecube/components/arduino b/firmware/components/arduino similarity index 100% rename from timecube/components/arduino rename to firmware/components/arduino diff --git a/timecube/config.example.h b/firmware/config.example.h similarity index 100% rename from timecube/config.example.h rename to firmware/config.example.h diff --git a/timecube/main/CMakeLists.txt b/firmware/main/CMakeLists.txt similarity index 100% rename from timecube/main/CMakeLists.txt rename to firmware/main/CMakeLists.txt diff --git a/timecube/main/accelerometer.cpp b/firmware/main/accelerometer.cpp similarity index 100% rename from timecube/main/accelerometer.cpp rename to firmware/main/accelerometer.cpp diff --git a/timecube/main/accelerometer.h b/firmware/main/accelerometer.h similarity index 100% rename from timecube/main/accelerometer.h rename to firmware/main/accelerometer.h diff --git a/timecube/main/timecube.cpp b/firmware/main/timecube.cpp similarity index 100% rename from timecube/main/timecube.cpp rename to firmware/main/timecube.cpp diff --git a/timecube/main/timelog.h b/firmware/main/timelog.h similarity index 100% rename from timecube/main/timelog.h rename to firmware/main/timelog.h diff --git a/timecube/sdkconfig b/firmware/sdkconfig similarity index 100% rename from timecube/sdkconfig rename to firmware/sdkconfig -- GitLab