RTV forum PL | NewsGroups PL

Wybór prostego protokołu dla bootloadera po UART: xmodem czy coś innego?

Protokół dla bootloadera

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Wybór prostego protokołu dla bootloadera po UART: xmodem czy coś innego?

Goto page Previous  1, 2

Marek
Guest

Tue Feb 13, 2018 10:08 am   



On Tue, 13 Feb 2018 09:29:56 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Quote:
Alarm. Żołnierze lecą do magazynu uzbrojenia a system kontroli
dostępu:
"Proszę czekać, trwa aktualizacja" Smile

Bleh, nie takie rzeczy już bywały. Przypominam sprawę unieruchomienia
okrętów podwodnych USA z powodu aktualizacji ich układów sterowania
opratych o windows (końcówka lat 90 u.w.)

--
Marek

Bool
Guest

Tue Feb 13, 2018 2:43 pm   



W dniu 2018-02-12 o 18:11, Piotr Gałka pisze:
Quote:
Dla mnie przesyłanie pliku upgrade to przesyłanie go po kawałku aby nie przerywać normalnej pracy
urządzenia. A jak rozumiem Ty myślisz o przesłaniu całości jakąś jedną funkcją.

U mnie upgrade wygląda tak że ładuję cały plik do flasha i weryfikuję go. Jeśli weryfikacja
przebiegnie OK to ustawiam flagę we flashu i robię reset. Bootloader sprawdza zawsze flagę przy
starcie i jeśli jest ustawiona to rozpoczyna proces aktualizacji. Wtedy mam pewność że załaduję
zawsze poprawny firmware.

Piotr Gałka
Guest

Tue Feb 13, 2018 4:34 pm   



W dniu 2018-02-13 o 14:43, Bool pisze:
Quote:
W dniu 2018-02-12 o 18:11, Piotr Gałka pisze:
Dla mnie przesyłanie pliku upgrade to przesyłanie go po kawałku aby
nie przerywać normalnej pracy urządzenia. A jak rozumiem Ty myślisz o
przesłaniu całości jakąś jedną funkcją.

U mnie upgrade wygląda tak że ładuję cały plik do flasha i weryfikuję
go. Jeśli weryfikacja przebiegnie OK to ustawiam flagę we flashu i robię
reset. Bootloader sprawdza zawsze flagę przy starcie i jeśli jest
ustawiona to rozpoczyna proces aktualizacji. Wtedy mam pewność że
załaduję zawsze poprawny firmware.


Dokładnie takie działanie miałem na myśli (tylko flaga w EEPROMie Smile ).

Masz też pewność, że urządzenie nigdy nie zostanie bez działającego
programu niezależnie kiedy zabierze mu się napięcie.
Aby w ogóle uniknąć niedoprogramowanego flasha procesor jeszcze dostaje
przerwanie "wyłącz wszystko, aby energii w kondensatorach starczyło na
dokończenie rozpoczętego procesu programowania."
P.G.

jacek pozniak
Guest

Wed Feb 14, 2018 8:47 am   



Ja się podepnę z pytanianiem:

Nie jestem jeszcze superbiegły w STM32 i bootloaderach.

Czy jest możliwe aby w np. STM32F103 jakoś tak przygotować/zbudować
bootloader aby mozna było zaciągać obraz flasha(fragmentu) z karty SD z
pliku obraz.bin (z FATu).
Oczywiście obsługę FAT mam ogarniętą.
Plik obraz.bin to skompilowany wsad który normalnie wpalam STLinkiem.
Pytanie chyba raczej dotyczy tego czy bootloader moze być na tyle pojemny
aby ogarnąć ten FAT i inne prymitywy niezbędne do gadania z SD card.

jp



--

www.flowservice.pl
www.flowsystem.pl

jacek pozniak
Guest

Wed Feb 14, 2018 9:21 am   



Marek wrote:

Quote:
On Mon, 12 Feb 2018 18:44:27 +0100, Bool <no@no.com> wrote:
Możesz skrótowo napisać jak robiłeś to w przypadku z modemem GSM?

Mcu przez stos tcpip modemu GSM pobiera sobie binarny plik obrazu
firmware'u z serwera www. Stos większości modemów gsm umożliwia
prostą komunikacje przez polecenia AT. Modem zestawia połączenie a
mcu komendami AT wymienia sobie dane , można kawałeczkami pobrać
sobie dowolnie duży plik. Kod pobierający nowy soft nie jest częścią
bootloadera (bo byłby za duży) ale częścią softu użytkowego. W
związku z tym, że soft użytkowy nie może się sam nadpisać (no, byłoby
to klopotliwe, szczególnie gdyby np. połączenie zostało przerwane) to
tymczasowo zapisuje pobrany obraz firmware'u w wolnym za sobą
obszarze flash mcu (z pewnym marginesem) . Po wygraniu, robi reset po
którym startuje bootloader, który sprawdza czy pod odpowiednim
adresem jest obraz, jeśli jest kopiuje go pod docelowy adres
nadpisując poprzedni firmware (i usuwa znacznik w tymczasowym obrazie
by po kolejnym uruchomieniu nie kopiować ponownie). Tak w skrócie.
Pominąłem takie szczegóły jak, to że pobierany firmware jest
zaszyfrowany (klucz ma tylko bootloader i on deszyfruje dopiero przy
docelowym nadpisywaniu), w trakcie pierwszego kopiowania do flash pod
adres tymczasowy jest sprawdzane crc obrazu, by nie dopuścić do
uruchomienia nieprawidlowego kodu itp.
Aktualizacja ok 90kB obrazu pobieranego 256 bajtowymi paczkami po
9600bps uarcie mcu-modem trwa ok 4 min. Sama aktualizacja jest
inicjowana smsem, komunikacja zwrotna w przypadku problemów z
pobraniem pliku itp też jest smsem.
Jeśli chodzi o szczegóły komunikacji to już to jest zależne od
implementacji obsługi stosu w danym modemie, ja to ćwiczyłem na
modułach G510.

Ale rozumiem, że musisz mieć ponad 2x więcej flasha niż rozmiar wgrywanego

kodu?

jp

--


www.flowservice.pl
www.flowsystem.pl

Marek
Guest

Wed Feb 14, 2018 9:34 am   



On Wed, 14 Feb 2018 08:47:41 +0100, jacek pozniak
<jacek.pozniak@flowservice.pl> wrote:
Quote:
Pytanie chyba raczej dotyczy tego czy bootloader moze być na tyle
pojemny
aby ogarnąć ten FAT i inne prymitywy niezbędne do gadania z SD card.

Nie wiem jak jest w stm32 ale w pic32 z tego powodu olewam blok
flash dedykowany dla bootloadera, bootloader wrzucam do wcześniej
zarezerwowanego (odpowiednimi dyrektywami dla linkera) fragmentu
flash (o dowolnym rozmiarze) a kod aplikacyjny do pozostałej reszty
flash.

--
Marek

Marek
Guest

Wed Feb 14, 2018 9:46 am   



On Wed, 14 Feb 2018 09:21:33 +0100, jacek pozniak
<jacek.pozniak@flowservice.pl> wrote:
Quote:
Ale rozumiem, że musisz mieć ponad 2x więcej flasha niż rozmiar
wgrywanego
kodu?

Oczywiście. A dokładnie ciut więcej, bo;
1+2+3

1- bootloader
2- aplikacja.+ margines na rozwój aplikacji
3- tymczasowy bufor o rozmiarze z pkt 2

Dobierajac mcu do takuego projektu trzeba uwzględnić by dostępny
rozmiar flash uwzględniał powyższe punkty a szczególnie margines na
ewentualny rozwój aplikacji .

--
Marek

J.F.
Guest

Wed Feb 14, 2018 10:21 am   



Dnia Mon, 12 Feb 2018 10:56:30 +0100, Marek Wodzinski napisał(a):
Quote:
Sam kiedyś napisałem bootloader z xmodemem (*) i na dłuższą metę okazał
się dosyć upierdliwy, a na pewno jest problem z powiedzeniem
użytkownikowi końcowemu 'odpal minicoma, wciśnij cośtam, odpal lsz...'.

A propos - co sie teraz mowi ?

porty szeregowe zniknely z peceta, a wraz z nimi hyperterminal w
Windows.

Sam uzywam TeraTerm, ale co jeszcze jest akrywne ?
Niesmiertelny Kermit zyje ?

J.

cezar
Guest

Wed Feb 14, 2018 10:52 am   



On 14/02/18 07:47, jacek pozniak wrote:
Quote:
Ja się podepnę z pytanianiem:

Nie jestem jeszcze superbiegły w STM32 i bootloaderach.

Czy jest możliwe aby w np. STM32F103 jakoś tak przygotować/zbudować
bootloader aby mozna było zaciągać obraz flasha(fragmentu) z karty SD z
pliku obraz.bin (z FATu).
Oczywiście obsługę FAT mam ogarniętą.
Plik obraz.bin to skompilowany wsad który normalnie wpalam STLinkiem.
Pytanie chyba raczej dotyczy tego czy bootloader moze być na tyle pojemny
aby ogarnąć ten FAT i inne prymitywy niezbędne do gadania z SD card.

jp



chyba IAP bootloader od ST ma taką opcję


https://goo.gl/j18DTq

jacek pozniak
Guest

Wed Feb 14, 2018 12:59 pm   



Marek wrote:

Quote:
On Wed, 14 Feb 2018 09:21:33 +0100, jacek pozniak
jacek.pozniak@flowservice.pl> wrote:
Ale rozumiem, że musisz mieć ponad 2x więcej flasha niż rozmiar
wgrywanego
kodu?

Oczywiście. A dokładnie ciut więcej, bo;
1+2+3

1- bootloader
2- aplikacja.+ margines na rozwój aplikacji
3- tymczasowy bufor o rozmiarze z pkt 2

Dobierajac mcu do takuego projektu trzeba uwzględnić by dostępny
rozmiar flash uwzględniał powyższe punkty a szczególnie margines na
ewentualny rozwój aplikacji .

No nie będę mógł sobie na to pozwolić bo w urzadzeniu bedę miał zajeta około

3/4 flasha (ze 128kB) a wiekszego procka na razie nie mogę dać bo jest PCB
zrobione.
Pokombinuję coś z ładowaniem do ramu i przeprowadzenie flashowania zeń, albo
umieszczeniem (opcjami linkera, nie wiem czy sie da) fragmentu kodu gdzieś
wysoko i stamtąd przeprowadzę proces flashowania dolnych części flasha.
No nic, zobaczymy, nie jest to na razie superpilne.

jp

--

www.flowservice.pl
www.flowsystem.pl

Marek
Guest

Wed Feb 14, 2018 3:01 pm   



On Wed, 14 Feb 2018 10:21:53 +0100, "J.F."
<jfox_xnospamx@poczta.onet.pl> wrote:
Quote:
A propos - co sie teraz mowi ?
porty szeregowe zniknely z peceta, a wraz z nimi hyperterminal w
Windows.

Sporo chińszczyzny na klonach '51 jest na przejsciiowkach usbserial,
co wymaga instalowania oprócz softu flashujacego odpowiedniego
sterownika usbserial. Podobnie rodzime produkcję na atmegach.
Bardzo rzadko natywny USB HID nie wymagający instalacji dodatkowo
sterowników.

--
Marek

Marek
Guest

Wed Feb 14, 2018 4:05 pm   



On Wed, 14 Feb 2018 12:59:28 +0100, jacek pozniak
<jacek.pozniak@flowservice.pl> wrote:
Quote:
No nie będę mógł sobie na to pozwolić bo w urzadzeniu bedę miał
zajeta około
3/4 flasha (ze 128kB) a wiekszego procka na razie nie mogę dać bo
jest PCB

W stm32 nie ma w tej samej obudowie kilka wariantów z pamięcią do
wyboru 128/256/512?
Można rozważyć zamiast zmieniać mcu (w następnej wersji płytki)
dodanie serial flash jako bufor, są 128kB. Łatwiejsze niż zmiana
projektu na inny mcu .

--
Marek

Waldemar
Guest

Wed Feb 14, 2018 6:17 pm   



Am 10.02.2018 um 13:35 schrieb Bool:
Quote:
Zastanawiam się nad wyborem protokołu dla bootloadera po UART. Ma to być
prosty protokół, obsługiwany przez terminale pod Windows i Linux.
Wstępnie wybrałem xmodem. Czy warto zainteresować się jeszcze jakimś
innym protokołem?

Nie wiem, czy chcesz użyć gotowca, ale zobacz chip45boot2
(www.chip45.com). Używam do arduino nano, ale mają też inne platformy.
Jak weźmiesz bez zmian, to jest za darmo, jak chcesz kod źródłowy, to
chyba coś koło 30$, czyli też jeszcze znośnie.
Piszę programy na Arduino HW, ale bez softa arduinowego i wqu** mnie
programowanie przez ISP. Teraz wgrywam przez wbudowany USB/RS232
konwerter i jest dobrze. Tylko raz trzeba wgrać bootloadera przez usb.
Programować można ichnią GUI, albo dowolnym programem przesyłającym po
RS232.

Waldek

jacek pozniak
Guest

Wed Feb 14, 2018 6:18 pm   



Quote:

W stm32 nie ma w tej samej obudowie kilka wariantów z pamięcią do
wyboru 128/256/512?
W tym co mam jest lqfp48 z max 128k.

Takiego jakiś czas temu kupiłem do pierwszych prób i na razie go zostawię.
Są większe pamięci ale w lqfp64.

jp

--
www.flowservice.pl
www.flowsystem.pl

Goto page Previous  1, 2

elektroda NewsGroups Forum Index - Elektronika Polska - Wybór prostego protokołu dla bootloadera po UART: xmodem czy coś innego?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map