UUU, czyli narzędzie do wgrywania systemu operacyjnego dla procesorów NXP

UUU (Universal Update Utility) to narzędzie open source umożliwiające wgrywanie oprogramowania do pamięci RAM lub pamięci stałej (NAND, eMMC) dla układów SoC i.MX firmy NXP (czyli m.in. popularnych procesorów z rodziny i.MX6 czy i.MX8). Narzędzie wykorzystuje protokół SDP (Serial Download Protocol) i nazywane jest niekiedy 3. wersją dostępnego od wielu lat narzędzia MFGtools (Manufacturing Tools). Mówiąc jaśniej – narzędzie to umożliwia łatwe wgranie obrazu systemu operacyjnego (najczęściej Linux lub Android) zarówno w trakcie prac rozwojowych, jak i podczas procesu produkcyjnego.

uuu pierwotnie zostało przygotowane do pracy w systemie Linux. Później pojawiła się także możliwość korzystania z tego narzędzia w systemie Windows. W trakcie pisania tego tekstu na stronie projektu widniała informacja, że dostępna będzie również wersja dla systemu macOS. Zobaczymy – póki co uuu zarówno w wersji dla Linuksa, jak i Windows, są ze sobą zgodne i w obu środowiskach można korzystać z tych samych skryptów. W niniejszym tekście opisano sposób instalowania, a także prosty przykład użycia uuu w systemie Linux (dokładnie Ubuntu 18.04). Jako platformę sprzętową wybrano sprzęt firmy SoMLabs: moduł VisionSOM-8Mmini z mikroprocesorem i.MX8MMini zainstalowany w płytce bazowej VisionCB-8M-STD.

Instalacja uuu

uuu to narzędzie pracujące w linii komend. Zapewne niektórzy oczekiwali, że wystarczy w terminalu wpisać:

i program podpowie, jak z niego korzystać.

Rys. 1. Próba uruchomienia narzędzia uuu

Niestety uuu nie wchodzi w skład Ubuntu i konieczne jest jego zainstalowanie (rys. 1). Zdrowoubuntowe podejście, czyli myślenie, że uuu uda się zainstalować za pomocą komendy:

niestety nie działa. Konieczne jest samodzielne pobranie plików źródłowych, a także ich kompilacja – na szczęście nie jest to trudne:

Po tym ciągu poleceń uuu będzie już gotowe do działania (rys. 2).

Rys. 2. Narzędzie uuu zainstalowane w systemie

Wgrywanie systemu do pamięci za pomocą uuu

Zadaniem narzędzia uuu jest wgrywanie obrazu systemu operacyjnego do pamięci stałej komputera embedded. Najczęściej spotykane wywołanie uuu to:

polecenie zapisuje bootloader w pamięci eMMC;

polecenie zapisuje w pamięci eMMC bootloader oraz obraz partycji systemowej rootfs.

W opisywanym przykładzie obraz systemu został wygenerowany zgodnie z opisem na stronie producenta modułu z mikroprocesorem i.MX 8Mmini (https://wiki.somlabs.com/index.php/VisionSOM_imx-meta-somlabs). Jego zapisanie w pamięci eMMC wymaga kilku czynności (opis również znajduje się na stronie firmy SoMLabs: https://wiki.somlabs.com/index.php/Writing_VisionSOM-8MM_system_image_to_eMMC_memory):

Rys. 3. Złącze USB-OTG na płytce VisionCB-8M-STD

  1. Należy podłączyć płytkę VisionCB-8M-STD do komputera PC za pomocą złącza USB-OTG (gniazdko micro USB) (patrz rys. 3).
  2. Podłączyć zasilanie do płytki VisionCB-8M-STD.
  3. Przytrzymując wciśnięty przycisk BOOT/RCRV należy zresetować moduł SOM (naciskając przycisk RESET w VisionCB-8M-STD).
  4. Uruchomić uuu z odpowiednimi argumentami (użyte nazwy plików bootloadera i obrazu systemu są zgodne z procedurą opisaną na stronie https://wiki.somlabs.com/index.php/VisionSOM_imx-meta-somlabs; jako <BUILD_DIRECTORY> z opisu na stronie wiki przyjęto build15):
  • opcja -v (verbose mode) włącza wyświetlanie komunikatów podczas zapisywania pamięci eMMC;
  • opcja -b emmc_all – powoduje uruchomienie (-b) wbudowanego w uuu skryptu (emmc_all), którego pierwszym argumentem jest nazwa pliku bootloadera, a drugim argumentem jest nazwa pliku z obrazem systemu (rootfs);
  • plik imx-boot-visionsom-8mm-cb-std-sd.bin-flash_evk to bootloader do wgrania do pamięci eMMC;
  • plik fsl-image-validation-imx-visionsom-8mm-cb-std.sdcard to obraz partycji systemowej Linuksa wgrywany do pamięci eMMC;
  1. Po zakończonym zapisywaniu pamięci eMMC należy zresetować moduł SOM i zaprogramowany system uruchomi się.

Proces wgrywania obrazu systemu do pamięci eMMC modułu VisionSOM-8Mmini zaprezentowano również na poniższym filmie:

Więcej informacji o narzędziu uuu można także znaleźć na stronie projektu: https://github.com/NXPmicro/mfgtools

O autorze