diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..18810cbfc9a663ec9bbfcd9a2aa8b522726d4c05 --- /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 e41ad31f44998e5d477bfaa6882b4f80a1e3d7d5..c3fee681174c807f4be7a5ffc24e22a59753b857 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 9670f9e26d9ef70e5b2dbc7a3a1827394babc676..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..32eb05a76dddcf18868bf828188040d96d0bddeb --- /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 caddd9592e0296eefa45982edc1a1942870f5fba..79c9d333f8546ec7edf1f42e5790c91ce90f4618 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