Aktywne Wpisy
Ariel1990lbn +742
Pan sędzia dr Maciej Mitera skazał mordercę drogowego Żaka na 20 lat więzienia, argumentując to m.in.:
"Co trzeba mieć w głowie, żeby rozpędzić Arteona - to "mały czołg", do 200 km na godzinę? Wtedy nie ma szans na reakcję, nikt nie miałby szans z tym Arteonem. Uważam, że tylko ta kara zabezpieczy społeczeństwo przed takimi kierowcami jak pan. Tym wyrokiem chronię społeczeństwo przed panem. Obserwowałem pana podczas procesu - zero refleksji –
"Co trzeba mieć w głowie, żeby rozpędzić Arteona - to "mały czołg", do 200 km na godzinę? Wtedy nie ma szans na reakcję, nikt nie miałby szans z tym Arteonem. Uważam, że tylko ta kara zabezpieczy społeczeństwo przed takimi kierowcami jak pan. Tym wyrokiem chronię społeczeństwo przed panem. Obserwowałem pana podczas procesu - zero refleksji –
źródło: xcontain-1000-1000-max-sedzia.jpg.pagespeed.ic.E7Eeph_yd7
Pobierz
Treść przeznaczona dla osób powyżej 18 roku życia...





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