EFC-01: Nowy firmware.... przemyślenia.

  • 2 Odpowiedzi
  • 14087 Wyświetleń
EFC-01: Nowy firmware.... przemyślenia.
« dnia: Czerwca 27, 2018, 14:27:53 »
Witam wszystkich,
Mój pomysł na firmware EFC-01 jest taki.

1. Nowy bootloader
    Dlaczego ? Obecny jest bardzo ubogi i nie daje za wiele możliwości. Po pierwsze mikrokontroler STM32F32429VIT6 dysponuje sporą ilością pamięci FLASH (2MB), więc można by go podzielić na partycje aby możliwe było używanie kilku różnych firmwarów w zależności od wybranej opcji. Pozwoli to na szybsze testowanie nowych wersji alternatywnego firmwaru.
    Obecny podział jest taki:

Notacja "0x...." oznacza zapis w systemie szesnastkowym, brak prefixu 0x to zapis jest w systemie dziesiętnm. To dla osób nie związanych z programowaniem.

FLASH memory
Adres początkowy: 0x08000000
Adres końcowy:    0x08200000
Rozmiar:          0x200000 (2097152 bajtów)

SLOT0: (bootloader)
Adres początkowy: 0x08000000
Adres końcowy:    0x08020000
Rozmiar:          0x20000  (131072 bajtów)

SLOT1: (firware)
Adres początkowy: 0x08020000
Adres końcowy:    0x08095000
Rozmiar:          0x75000  (479232 bajtów)

Dodam, że nie zrozumiałe jest dla mnie wprowadzone ograniczenie przez Zamela co do SLOT1 o wielkości 0x75000 bajtów. Ograniczenie wynika ze sposobu obliczania sumy kontrolnej firmwaru w bootloaderze. Bootloader programuje w zakres pamięci od 0x08020000 wszystko co podamy na USB jako plik aktualizacji (ogólnie to tak wygląda bo szczegóły implementacji są troszeczkę bardziej zawiłe). Jednak przy starcie kontrolera obliczana i sprawdzana jest własnie suma kontrolna dla bloku o wielkości 0x75000 bajtów, która jeżeli jest błędna powoduje odmowę uruchomienia takiego oprogramowania.
Tak więc na moje zmarnowany zostaje zakres od 0x08095000 do 0x08200000 czyli 0x16B000 bajtów (1486848 bajtów), to się nazywa rozrzutność.

Proponowany przeze mnie nowy podział:

SLOT0: (bootloader)
Adres początkowy: 0x08000000
Adres końcowy:    0x08020000
Rozmiar:          0x20000  (131072 bajtów)

SLOT1: (firware-1)
Adres początkowy: 0x08020000
Adres końcowy:    0x08100000
Rozmiar:          0xE0000  (917504 bajtów)

SLOT2: (unused)
Adres początkowy: 0x08100000
Adres końcowy:    0x08120000
Rozmiar:          0x20000  (131072 bajtów)

SLOT3: (firware-2)
Adres początkowy: 0x08120000
Adres końcowy:    0x08200000
Rozmiar:          0xE0000  (917504 bajtów)


    * SLOT1 - możliwe będzie umieszczenie oryginalnego firmwaru Zamela lub alternatywnego
    * SLOT2 - na razie nie wykorzystany (może firmware wykonujący kopię zapasową karty SD na włożonego Pendriva lub odtwarzający kopie z Pena na kartę SD).
    * SLOT3 - możliwe będzie umieszczenie tylko alternatywnego firmwaru.

Można zawsze sobie zaktualizować tylko wybrany SLOT i przetestować zmiany w danym firmwarze. Ograniczenie będzie tylko takie, że firmware ZAMELa będzie mysiał zawsze lądować w SLOT1 (nie możliwy do zmiany adres bazowy w pamięci FLASH - 0x08020000). Alternatywny będzie zawsze dostępny w dwóch wersjach dla SLOT1 i SLOT3.

Postaram się również ująć w bootloaderze możliwość aktualizacji z alternatywnych źródeł (np. aktualizacje pobierane z zewnętrznego serwera).

Wybór SLOTu będzie możliwy do wykonania podczas startu kontrolera przy użyciu przycisku RESET lub też poprzez specjalnie przygotowany pendrive. Pomiędzy restartami kontrolera będzie uruchamiany ostatni ustawiony SLOT. Więcej szczegółów opiszę w miarę pisania oprogramowania.

Nowy bootloader też będzie implementował funkcję sum kontrolnych i nie będzie możliwe wgranie innego firmwaru niż ten od Zamela lub alternatywnego. Ograniczenie to pozostawię ze względu na obietnicę jaką dałem Zamelowi, że nie otworzę zupełnie dostępu do kontrolera bo dało by to możliwość odczytania klucza używanego do szyfrowania/deszyfrowania pakietów radiowych. To niestety kolejny ZONK zamela, że dla całego systemy ExtaLife klucz jest niezmienny i taki sam dla wszystkich urządzeń. Obecnie SLOT0 zawiera powyższe klucze. Po ujawnieniu kluczy system komunikacji radiowej przestałby być bezpieczny i pozwoliłby na sniffowanie i podszywanie. A chyba nikt z nas nie chciałby żeby obcy sobie np otwierali bramę garażową w naszym domu ;).

2. Firmware aktualizujący bootloader
Do aktualizacji bootloadera będzię niezbędne napisanie nowego firmwaru który go podmieni z zachowaniem pewnych informacji zawartych w przestrzeni SLOT0 (dane niezbędne do prawidłowej obsługi komunikacji systemu ExtaLife). Wykonanie tej operacji będzie konieczne w kilku krokach bo aktualizator bootloader będzie musiał tymczasowo nadpisać wersję w SLOT1 uruchomić się z niej, dokonać aktualizacji bootloadera w SLOT0 i ponownie załadować firmware właściwy do SLOT1. Instrukcja krok-po-kroku będzie dołączona przy publikacji nowego bootloader'a i aktualizatora.

3. Firmware alternatywny

TO BE CONTINUED...
« Ostatnia zmiana: Czerwca 27, 2018, 14:38:01 wysłana przez Gadulowaty »
Produkcja:RPi5,EFC-01; Sensory:MEM-21,RCK-21,9xRCM-21,2xRCR-21,RCW-21; Odbiorniki: 2xROB-21, 5xROG-21,11xROP-21,11xROP-22,1xRDP-21,11xSRP-22; Nadajniki: 2xP-457/36,4xP-457/4,P-457/8,P-521L,1xRNK-22,1xRNK-24 | Developer:RPi4,EFC-01,RCK-21,ROB-21,ROP-22,ROG-21,RCM-21

Odp: EFC-01: Nowy firmware.... przemyślenia.
« Odpowiedź #1 dnia: Czerwca 27, 2018, 14:51:52 »
Narobiłeś kolego mi apetytu  :) chyba zaczynam poszukiwania EFC-01 w jakiejś dobrej cenie :) możne trafi się używka  O0
A tak na serio kibicuję z całych sił bo naprawdę wygląda że będzie pełna profeska!
A jak wygląda kwestia aplikacji na smartphony?
ExtaFree 12xSRP-02 2xROB-01 EFC-02

*

Offline admin

  • *****
  • 1657
  • Twórca i moderator forum
    • Zobacz profil
    • Forum ExtaLife
Odp: EFC-01: Nowy firmware.... przemyślenia.
« Odpowiedź #2 dnia: Czerwca 27, 2018, 16:27:01 »
Witam wszystkich,
Mój pomysł na firmware EFC-01 jest taki.(...)
Wygląda to wszystko bardzo dobrze i jest dobrze przemyślane. Wszystkie przytoczone przez Ciebie funkcje zapowiadają się świetnie i mogą znacząco zwiększyć możliwości tego kontrolera, a przynajmniej wygodę korzystania z niego i poddawania go czynnościom "serwisowym".

Ponadto co napisałeś - słowo komentarza. Warto moim zdaniem rozważyć oprogramowanie operacji rollbacku do stanu fabrycznego "wysmażonego" w Pszczynie np gdyby komuś EFC-01 "padł" (przykładowo karta sieciowa, czytnik karty SD, radio) - i musiał pójść z tego powodu do reklamacji (albo gdyby Zamel postanowił kiedyś skorzystać z tego nieużywanego 1,4 MB FLASH i zrobić jakieś wodotryski  ;) choć prędzej chyba Elon Musk wyśle człowieka na Marsa).
To do rozważenia i myślę, że prędzej czy później dobrze by było mieć taką funkcjonalność, ale nie dawałbym temu wysokiego priorytetu.

3. Firmware alternatywny

TO BE CONTINUED...
Jak mam być szczery to na tą część przedstawienia czekam bardziej :)

Pozdro
Elementy systemu, których używam: 3xSRP-22, 5xRDP-21, 3xROP-22, 4x ROP-21, 1xP-456/36, 1xRNK-24, 3x RNP-21, 1xRCT-22, aplikacja na Android oraz iOS + Home Assistant