Skip to content

Commit

Permalink
doom: auto-copy doom.bin after build for convenience
Browse files Browse the repository at this point in the history
  • Loading branch information
and3rson committed Mar 3, 2024
1 parent 872c637 commit b8493a5
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 3 deletions.
4 changes: 2 additions & 2 deletions docs/manual/main_firmware.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
- Вам не потрібно щоразу перепрошивати Лілку, щоб випробувати другорядні прошивки: просто скопіюйте їх на SD-картку.
- Ви можете ділитися своїми скомпільованими прошивками (у вигляді ``.bin``-файлів) з іншими користувачами Лілки, без необхідності відправляти їм весь код вашої основної прошивки.

Найяскравіший приклад використання цієї функції - запуск Doom. Достатньо скопіювати на SD-карту файли ``doom.bin`` і ``doom.wad``, і ви зможете грати в Doom!
Найяскравіший приклад використання цієї функції - запуск Doom. Достатньо скопіювати в корінь SD-карти файли ``doom.bin`` і ``doom.wad``, і ви зможете грати в Doom!

.. note:: Щоб отримати ``doom.bin``, вам потрібно скомпілювати прошивку, що знаходиться в папці ``firmware/doom``, і тоді скопіювати файл ``firmware/doom/.pio/build/v2/firmware.bin`` на SD-картку під назвою ``doom.bin``.
.. note:: Щоб отримати ``doom.bin``, вам потрібно скомпілювати прошивку, що знаходиться в папці ``firmware/doom``, і тоді скопіювати файл ``doom.bin`` на SD-картку.

.. note:: Щоб отримати ``doom.wad``, вам потрібно мати ліцензійну копію Doom, і витягти з неї файл ``doom.wad``.

Expand Down
3 changes: 2 additions & 1 deletion firmware/doom/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
*.user
.vs/
Debug/
Release/
Release/
doom.bin
20 changes: 20 additions & 0 deletions firmware/doom/move_firmware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# За замовчуванням PlatformIO кладе бінарний файл у директорію ".pio/build/<ENV>", але це не зручно.
# Цей скрипт копіює бінарний файл у поточну директорію та перейменовує його на "doom.bin".

import shutil
from pathlib import Path

Import("env")


def move_firmware(source, target, env):
src_path = Path(env.subst("$PROGPATH")).with_suffix(".bin")
dest_path = Path(env.subst("$PROJECT_DIR")) / "doom.bin"

print(f"Copying firmware from {src_path} to {dest_path}")
shutil.copy(src_path, dest_path)


# Using checkprogsize instead of buildprog to ensure that the firmware is always copied
# https://community.platformio.org/t/post-action-not-running/18393/6?u=and3rson
env.AddPostAction("checkprogsize", move_firmware)
2 changes: 2 additions & 0 deletions firmware/doom/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ board = lilka_v2
framework = arduino
lib_extra_dirs = ./lib
; Define LILKA_BREADBOARD to lower SPI speed to 40 MHz (instead of normal 80)
; TODO: Remove this when we have PCBs!
build_flags = -D LILKA_BREADBOARD
extra_scripts = move_firmware.py

0 comments on commit b8493a5

Please sign in to comment.