Aktywne Wpisy

wjtk123 +240
Słucham Państwa, komu się Polska nie podoba i chciałby ponownie wziąć udział w narodzinowej loterii? xD
#polska #swiat #mapa #ciekawostki #statystyka
#polska #swiat #mapa #ciekawostki #statystyka
źródło: IMG_9995
Pobierz
nervous_breakdown +836
Ciekawostka: zespół Pectus istnieje tylko po to, aby występować w telewizji śniadaniowej, opowiadać o tym, że są braćmi i że w tym roku na święta będą lepić pierogi
#muzyka #ciekawostki
#muzyka #ciekawostki
źródło: 000LM014IOUC5MT8-C322-F4
Pobierz




Robię aktualnie firmware oraz software update na naszej płytce i zastanawiam się jak do tego podejść.
SoC którego używam posiada następujący stos fw / sw:
Firmware:
- Boot ROM (brak możliwośći aktualizacji)
- BL2 (TF-A BL2) (brak możliwości aktualizacji)
- BL31 (TF-A BL31) (część FIP)
- BL32 (OPTEE) (część FIP)
- BL33 (u-boot) (część FIP)
Software:
- kernel
- rootfs
Jak widać cały ten stos można podzielić na dwie kategorie:
- firmware który zapakowany jest w Firmware Image Package (BL31, BL32, BL33)
- software czyli kernel oraz rootfs
Aktualizacje chce robić na zasadzie A/B. Jeżeli chodzi o firmware, to TF-A BL2 umożliwia uruchomienie fwupdate zgodnie ze specyfikacja PSA Firmware Update, gdzie mam dwa banki firmware np. fip-a oraz fip-b, na podstawie informacji zawartych w metadanych bl2 wybiera wlaściwy bank i go bootuje. To trzbea było doimplementować w TF-A ofc dla naszej płytki (bo jedyny vendor który udostępnia gotowe rozwiązanie to ST...) co już zrobiłem. Podobnie w u-boocie, dwa banki na bootfs z image kernela, + dwa banki rootfs.
Czego akurat nie jestem pewien to jak podejść hmm koncepcyjnie do aktualizacji bo widzę kilka możliwości. Najczęściej wymienianym elementem będzie rootfs zawierający aplikacje, które będa zapewne aktualizowane dość często. Rzadziej aktualizowany będzie kernel, a zapewne najrzadziej FIP choć na pewno i tu akutalizacje się pojawia bo mamy kilka pomysłów gdzie chcielibyśmy wykorzystać optee, ale to zapewne w dalszej fazie projektu.
W związku z tym widzę następujące scenariusze:
1) jeżeli użytkownik będzie chciał zaktualizować firmware to instaluje paczkę która zawiera cały stos sw + fw
2) jeżeli użytkownk będzie chciał zaktualizować kernel to instaluje paczkę która zawiera kernel + obowiązkowo rootfs
3) jeżeli użytkownik będzie chciał zaktualizować rootfs to instaluje paczkę, która zawiera tylko rootfs
I o ile scenariusze 1 oraz 2 wydaja mi się sensowne, tak obawiam się troszkę scenariusza nr. 3, który w teorii jest najmniej inwazyjny. Generalnie posiadam na rootfs również moduły kernela i tak się zastanawiam czy może dojść do sytuacji gdzie dostarczony sam rootfs będzie zawierał moduły, które w jakiś sposób będą niekompatybilne z aktualnym kernelem. Rozwiązaniem potencjalnie byłaby obligatoryjna aktualizacja kernela przy aktualizacji rootfs. Czyli użytkownik chce zaktualizować nowe aplikacje (czyli de facto wymienić rootfs) ale paczka zawiera rootfs oraz obowiązkowo kernel.
Potencjalnie też mógłbym wywalić moduły do ramdisk (który i tak używam bo w initramfs uruchamiam dm-crypt do [de]szyfrowania rootfs), tylko to też niesie ze sobą pewne konsekwencje chociażby w postaci zwiększonego zużycia RAM na rzeczy, których aktualnie nie potrzebuje - np. moduły które są ładowane na X wariancie płyty a na Y nie, mimo to będą zajmować miejsce w RAM.
Kojarzy ktoś może jak to jest na androidzie? Podejrzłem sobie trochę jak wygląda impementacja bootowania androida zaimplementowana w u-boot ale ofc to jest już po etapie ładowania u-boota przez firmware...
#embedded
@Oo-oO: To sprecyzuję - już korzystamy z OPTEE chociażby do obsługi Secure Storage z wykorzystaniem RPMB na eMMC. Bardzo możliwe, że wykorzystamy go jeszcze do autoryzacji offline ale to jeszcze zobaczymy, nie jest to priorytet.
Swoją drogą im dłużej się nad tym
Sam u siebie w projektach nie stosuję optee ani arm-tf i znam te technologie tylko z nazwy, ale opisze Ci jak u mnie wygląda to na urządzeniach. Korzystam z swupdate do aktualizacji
Głównie zajmuję się płytkami z imx6ULL i imx7D. Domyślam się że używasz Yocto, bo kilka razy kiedyś coś tam pisaliśmy.
Mam zdefiniowane pliki .wks z partycjami:
I tak mniej więcej to u mnie wygląda pamięć eMMC:
1. Rzadko jest wymagana
2. Potencjał na zbrickowanie urządzenia np. przy nagłej utracie zasilania spory
W każdym razie samych takich aplikacji robiących aktualizację A/B jest więcej, rauc, mender i inne. Oczywiście coś za coś - licencje i koszty. Jeśli - jak piszesz, nie masz żadnych ograniczeń co do