-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Mamy moduł dmffs (Flash File System):
https://github.com/choco-technologies/dmffs
który pozwala na stworzenie systemu plików typu read-only na podstawie wybranego katalogu - czyli mozemy podac jakis katalog, stworzyc z niego plik binarny, wbudowac do naszego firmware'u, załadować moduł dmffs, zamontować go w wybranej ścieżce i odczytywać pliki w firmwerze.
Tworzymy katalog modules i dodajemy w nim dmffs jako subrepo. Jako, że katalog modules musi być kompilowany z parametrem -DDMOD_MODE=DMOD_MODULE, a cała reszta z -DDMOD_MODE=DMOD_SYSTEM, to musimy w modules stworzyć osobny katalog build/, dodać go do ignorowanych i to w nim będziemy mieć zbudowane nasze moduły, z których na koniec zrobimy paczkę za pomocą narzędzia todmp z repozytorium dmod. Możesz założyć, że todmp jest już dostępne w ścieżkach (na CI wystarczy, że użyjesz dockerowego obrazu chocotechnologies/dmboot:1.0.0, który już zawiera to narzędzie w PATH. Nie wiem czy możesz używać dockera do testów, ale jeśli tak - to też możesz je wziąć z tamtąd. Jeśli nie możesz, to po prostu sobie sklonuj repo dmod gdzies na boku i zbuduj je z toolsami dla x86. Paczka stworzona przez nas z katalogu modules powinna nazywać się modules.dmp i być umieszczona w firmwarze w podobny sposób jak startup.dmp
Chcialbym abysmy rozszerzyli nasza implementacje o wbudowane wsparcie dla tego modułu. Widziałbym to tak:
- Do konfiguracji cmake przekazujemy parametr
-DDMBOOT_ROMFS_DIR=./rom-fs - Jeśli ten parametr jest wykryty, to musimy użyć
dmod_loaderz modułemmake_dmffs.dmf(zbudowanym dla x86) aby stworzyć plik binarny, który umieścimy we flashu podobnie jakuser_data. Moduł make_dmffs jest już też dostępny w obrazie dockerowym, nawet jest już tam alias make_dmffs który odpala moduł przez dmod_loader. Możesz sobie sprawdzić Dockerfile jeśli chcesz zrozumieć jak to działa - Jak już mamy romfs.bin w fw, to w main.c ładujemy paczkę modules.dmp i montujemy romfs w katalogu /romfs/