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ć:
1 |
uuu |
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:
1 |
sudo apt-get install uuu |
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:
1 2 3 4 5 6 |
sudo apt-get install libusb-1.0-0-dev libzip-dev libbz2-dev pkg-config cmake libssl-dev g++ cd ~ git clone https://github.com/NXPmicro/mfgtools.git cd ~/mfgtools cmake . make |
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:
1 |
uuu -b emmc bootloader |
polecenie zapisuje bootloader w pamięci eMMC;
1 |
uuu -b emmc_all bootloader rootfs.sdcard |
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
- Należy podłączyć płytkę VisionCB-8M-STD do komputera PC za pomocą złącza USB-OTG (gniazdko micro USB) (patrz rys. 3).
- Podłączyć zasilanie do płytki VisionCB-8M-STD.
- Przytrzymując wciśnięty przycisk BOOT/RCRV należy zresetować moduł SOM (naciskając przycisk RESET w VisionCB-8M-STD).
- 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):
1 2 |
cd ~/imx-yocto-bsp/build15/tmp/deploy/images/visionsom-8mm-cb-std/ sudo ~/mfgtools/uuu/uuu -v -b emmc_all imx-boot-visionsom-8mm-cb-std-sd.bin-flash_evk fsl-image-validation-imx-visionsom-8mm-cb-std.sdcard |
- 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;
- 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