Goto page Previous 1, 2, 3, 4, 5, 6
Piotr GaĹka
Guest
Wed Feb 22, 2023 2:28 pm
W dniu 2023-02-19 o 12:29, Marek pisze:
Quote:
On Fri, 17 Feb 2023 20:44:12 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Moim zdaniem zbyt optymistycznie do tego podchodzisz.
Jak flash będzie nie do końca zaprogramowany (bo zniknęło napięcie w
trakcie programowania) to może w większości przypadków dobrze się
odczytywać ale czasem źle. Taki błąd może być bardzo trudny do
znalezienia.
Co to znaczy "nie do końca"? Z flash jest jak z ciążą, nie można być w
niej trochę. Jeśli crc całości (po wygraniu) się zgadza to nie
przewiduje się by to jeszcze poprawiać. Jeśli zostało przerwane to
flashuje się ponownie, ale to chyba oczywista oczywistość.
Ja zakładam, że jeśli programowanie flasha zostanie nagle przerwane to
znaczy że gdzieś tam za mało elektronów mogło zostać wstrzyknięte i
odczyt niektórych bitów może być niepewny (np. większość razy
prawidłowy, ale sporadycznie błędny). Odczyt bitu z flasha na pewnym tam
poziomie jest działaniem analogowym a nie cyfrowym - czy poziom ładunku
jest powyżej czy poniżej pewnego poziomu. Bit nie ma trzeciej wartości
informującej, że może 0 a może 1 aby zaalarmować, że jest niepewny. Jak
sprawdzany poziom jest w pobliżu progu to różne czynniki zewnętrzne mogą
wpływać na to co zostanie za danym razem odczytane.
Dopuszczenie do takiej sytuacji wydaje mi się błędem.
Procesor po resecie nie musi wiedzieć, że ostatnią rzeczą jaką robił
było akurat wystartowanie procesu programowania strony flasha więc nie
wie, że musi jeszcze raz flashować. Sprawdzi crc - wyjdzie ok, bo akurat
ten odczyt miał szczęście być prawidłowy i błędnie przyjmie, że jest ok.
Jak pobiera upgrade to może mieć gdzieś info, że zaczął, ale nie
skończył więc trzeba powtórzyć, ale ja zakładam używanie flasha też do
danych. Zamiast otaczać każdy zapis zapisaniem, gdzieś w EEPROMie (co
też można zacząć kwestionować) informacji, że rozpoczynam zapis strony
100 flasha i jak po resecie jest taka informacja to wie, że strona
wymaga naprawy uważam, że lepiej zagwarantować dokończenie każdego
rozpoczętego zapisu.
A jak są procesory bez EEPROMu w których robi się emulację EEPROMu we
flashu to w ogóle nie wiem jak miałby sobie zapisywać informację, że
właśnie jest w trakcie programowania flasha, aby po resecie miał szansę
wiedzieć, że flash może być niepewny.
P.G.
Piotr GaĹka
Guest
Wed Feb 22, 2023 2:45 pm
W dniu 2023-02-22 o 13:16, heby pisze:
Quote:
On 22/02/2023 13:02, Piotr Gałka wrote:
Kiedyś w naszym emulatorze EPROMów mieliśmy taki błąd, że średnio
statystycznie raz na 3 miliony odczytów jakiś jeden bit potrafił mu
się przekłamać.
I jesteś pewny, że to statystycznie istotny przypadek?
W przypadku emulatora EPROMów jak najbardziej - raz na 3s program
idzie w maliny (51-ka z kwarcem 12MHz).
To wina w końcu emulatora czy epromu? Bo się pogubuiłem do czego to
dygresja.
Jak EPROM jest zastąpiony emulatorem to EPROMu jako takiego nie ma - nie
może być jego wina.
Quote:
A czy ja twierdziłem, że to miało jakikolwiek związek z błędami
programowania. To było na temat, że jak odczyt pamięci prawie zawsze
jest OK, a czasem błędny to może być problem (a tak się chyba może
zachować flash, gdy programowanie zostało przerwane wyłączeniem
zasilania).
Ale na to jest CRC. Trochę z tym problemem "źle działajacych flash bo
przerwali programowanie w połowie" przesadzamy. ja rozumiem, że mogło
się coś zaprogramować marginalnie źle, ale to znaczy, że zapewne za
szybko zanikło zasilanie, zanim flash zakończył co miał zakończyć.
Od samego początku o tym jest rozmowa.
Ktoś napisał (nie chce mi się sprawdzać kto), że można się nie
przejmować tym, że programowanie zostanie nagle przerwane.
A ja po prostu uważam, że jak rozpocznie się programowanie strony flasha
to należy zapewnić zasilanie aż do jego dokończenia bo uważam, że po
takim nie dokończonym programowaniu może powstać sytuacja w której crc
czasem pokaże że jest ok, mimo, że nie zawsze odczyt daje te same dane.
Quote:
Urządzenie z update firmware musi być sensownie zaprojektowane aby
zaniki zasilania nie były możliwe w połowie programowania strony
Mam wrażenie, że w tym miejscu już zapomniałeś, że cała dotychczasowa
Twoja wypowiedź kwestionuje moje stwierdzenie uznające za zbyt
optymistyczne podejście "A co to za problem? Jak się przerwie
programowanie z jakiekolwiek powodu to bootloader....".
a) stosujac CRC zapewniasz sobie ochornę przed przerwanym w połowie
programowaniem. Rola programisty.
b) stosujac zasilanie flasha na ułamek sekundy dłużej niż cpu (z
solidnym wykrywaniem zaniku) zapewniasz sobie że to co się zdążyło
zaprogramować powinno być poprawne. Rola hardwareowca.
Może źle zrozumiałem wypowiedź "A co to za problem..." jako sugerującą,
że zapewnienie zasilania flasha na czas programowania nie jest niezbędne.
P.G.
Grzegorz Niemirowski
Guest
Wed Feb 22, 2023 9:35 pm
Piotr Gałka <piotr.galka@cutthismicromade.pl> napisał(a):
Quote:
W którejś wiadomości już pisałem, że mam takie, może nie całkiem
racjonalne podejrzenie, że wpisana do RAMu wartość po 20 latach może ulec
jakiemuś zakłóceniu i nie wróci sama do stanu prawidłowego a dana z flasha
jak kiedyś przy jednym odczycie zostanie zakłócona to można liczyć, że
przy kolejnym już się odczyta prawidłowo.
P.G.
Czyli chcesz mieć koniecznie własną funkcję kopiującą żeby móc to kopiowanie
ponawiać w trakcie pracy urządzenia zamiast wykonywać je tylko na starcie?
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Marek
Guest
Wed Feb 22, 2023 9:41 pm
On Wed, 22 Feb 2023 13:28:28 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Quote:
Ja zakładam, że jeśli programowanie flasha zostanie nagle przerwane
to
znaczy że gdzieś tam za mało elektronów mogło zostać wstrzyknięte i
odczyt niektórych bitów może być niepewny (np. większość razy
Walnąłeś cały elaborat, który można skwitować prosto: jeśli
programowanie zostało przerwane to programuje się ponownie. Problem
solved!
Na prawdę nikt nie przejmuje się jak bardzo wszedł elektron poza
barierę, jeśli proces programowania zakończył się sukcesem.
--
Marek
Piotr GaĹka
Guest
Wed Feb 22, 2023 9:47 pm
W dniu 2023-02-22 o 20:35, Grzegorz Niemirowski pisze:
Quote:
Czyli chcesz mieć koniecznie własną funkcję kopiującą żeby móc to
kopiowanie ponawiać w trakcie pracy urządzenia zamiast wykonywać je
tylko na starcie?
To nie ja robię. Ale chyba na to wychodzi, że tak.
P.G.
Marek
Guest
Wed Feb 22, 2023 9:49 pm
On Wed, 22 Feb 2023 13:45:57 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Quote:
Od samego początku o tym jest rozmowa.
Ktoś napisał (nie chce mi się sprawdzać kto), że można się nie
przejmować tym, że programowanie zostanie nagle przerwane.
Ja to napisałem i widać kompletnie nie zrozumiałeś co miałem tym na
myśli. To chyba jasne, że nie chodziło o to by "pozostawić niepewny
stan zaprogramowania" jakkolwiek to sobie wyobrażasz.
Chodziło o to by przerwanie programowania nie brikowało urządzenia.
By "producent" nie straszył użytkownika idiotycznym "nie wyłączaj
urządzenia podczas aktualizacji bo wybuchnie/trwałe się
uszkodzi/whatever".
Urządzenie ma być odporne na takie zabiegi użytkownika a przerwa w
programowaniu ma jedynie spowodować jego ponowienie a nie
uszkodzenie/unieruchomienie urządzenia.
Użytkownik ma się nie przejmować jak podczas programowania wypadnie
mu wtyczka zasilania bo wie, że urządzenie dokończy to co zaczęło bez
względu na wszystko.
--
Marek
Piotr GaĹka
Guest
Wed Feb 22, 2023 9:51 pm
W dniu 2023-02-22 o 20:41, Marek pisze:
Quote:
Walnąłeś cały elaborat,
Bo jak piszę prosto, że może być stan w którym odczyt bywa dobry a bywa
zły to w odpowiedzi czytam, że crc to załatwia.
Quote:
który można skwitować prosto: jeśli
programowanie zostało przerwane to programuje się ponownie. Problem solved!
Na prawdę nikt nie przejmuje się jak bardzo wszedł elektron poza
barierę, jeśli proces programowania zakończył się sukcesem.
Czy to oznacza, że przed każdym programowaniem zapisujesz gdzieś (gdzie
i jak) informację, aby na wypadek zaniku napięcia po starcie wiedzieć,
że zanik nastąpił w trakcie zapisu flasha?
P.G.
Piotr GaĹka
Guest
Wed Feb 22, 2023 9:57 pm
W dniu 2023-02-22 o 20:49, Marek pisze:
Quote:
Użytkownik ma się nie przejmować jak podczas programowania wypadnie mu
wtyczka zasilania bo wie, że urządzenie dokończy to co zaczęło bez
względu na wszystko.
Masz rację. Nie zrozumiałem.
Przyjąłem, że to jest wypowiedź z punktu widzenia programisty a nie
użytkownika.
P.G.
Piotr GaĹka
Guest
Wed Feb 22, 2023 10:00 pm
W dniu 2023-02-22 o 20:51, Piotr Gałka pisze:
Quote:
W dniu 2023-02-22 o 20:41, Marek pisze:
Walnąłeś cały elaborat,
Bo jak piszę prosto, że może być stan w którym odczyt bywa dobry a bywa
zły to w odpowiedzi czytam, że crc to załatwia.
który można skwitować prosto: jeśli programowanie zostało przerwane to
programuje się ponownie. Problem solved!
Na prawdę nikt nie przejmuje się jak bardzo wszedł elektron poza
barierę, jeśli proces programowania zakończył się sukcesem.
Czy to oznacza, że przed każdym programowaniem zapisujesz gdzieś (gdzie
i jak) informację, aby na wypadek zaniku napięcia po starcie wiedzieć,
że zanik nastąpił w trakcie zapisu flasha?
Po przeczytaniu innej odpowiedzi...
Zaraz, zaraz.
Cały czas wypowiadasz się z punktu widzenia użytkownika?
Jeśli tak to zupełnie inaczej muszę czytać to co piszesz.
P.G.
heby
Guest
Wed Feb 22, 2023 10:16 pm
On 22/02/2023 20:51, Piotr Gałka wrote:
Quote:
Czy to oznacza, że przed każdym programowaniem zapisujesz gdzieś (gdzie
i jak) informację, aby na wypadek zaniku napięcia po starcie wiedzieć,
że zanik nastąpił w trakcie zapisu flasha?
Przy prawidłowo zrobionym hardware, które nie urwie w połowie zapisu, do
tego wystarczy samo CRC - jak się zgadza - to odpal, jak nie, to migaj
diodą i czekaj na załadunek.
Marek
Guest
Wed Feb 22, 2023 10:31 pm
On Wed, 22 Feb 2023 20:51:24 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Quote:
Czy to oznacza, że przed każdym programowaniem zapisujesz gdzieś
(gdzie
i jak) informację, aby na wypadek zaniku napięcia po starcie
wiedzieć,
że zanik nastąpił w trakcie zapisu flasha?
Jest tysiące sposobów na to, by oprogramować zdarzenie p.t.
"programowanie nie zakończyło się sukcesem" bez względu z jakich
powodów, bo tych powodów może być wiele niż tylko zanik napięcia.
Serio mam wymieniać jak to się robi? Przecież to oczywiste
oczywistości....
--
Marek
Marek
Guest
Wed Feb 22, 2023 10:37 pm
On Wed, 22 Feb 2023 21:00:30 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Quote:
Po przeczytaniu innej odpowiedzi...
Zaraz, zaraz.
Cały czas wypowiadasz się z punktu widzenia użytkownika?
Jeśli tak to zupełnie inaczej muszę czytać to co piszesz.
A jakie to ma znaczenie? Z pkt. widzenia użytkownika: urządzenie ma
się nie zepsuć przy aktualizacji bez względu na czynniki szkodliwe.
Z pkt. widzenia programisty: - on ma to zapewnić.
--
Marek
Piotr GaĹka
Guest
Wed Feb 22, 2023 11:15 pm
W dniu 2023-02-22 o 21:37, Marek pisze:
Quote:
On Wed, 22 Feb 2023 21:00:30 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Po przeczytaniu innej odpowiedzi...
Zaraz, zaraz.
Cały czas wypowiadasz się z punktu widzenia użytkownika?
Jeśli tak to zupełnie inaczej muszę czytać to co piszesz.
A jakie to ma znaczenie? Z pkt. widzenia użytkownika: urządzenie ma się
nie zepsuć przy aktualizacji bez względu na czynniki szkodliwe. Z pkt.
widzenia programisty: - on ma to zapewnić.
Z mojego punktu widzenia ma.
Użytkownik może powiedzieć, że nic go nie obchodzi czy napięcie zniknie
w czasie programowania, czy nie, a programistę taka możliwość powinna
obchodzić.
P.G.
Marek
Guest
Wed Feb 22, 2023 11:49 pm
On Wed, 22 Feb 2023 22:15:08 +0100, Piotr
Gałka<piotr.galka@cutthismicromade.pl> wrote:
Quote:
Z mojego punktu widzenia ma.
Użytkownik może powiedzieć, że nic go nie obchodzi czy napięcie
zniknie
w czasie programowania, czy nie, a programistę taka możliwość
powinna
obchodzić.
Wystarczy to pierwsze. Drugie ma wynikać z pierwszego.
--
Marek
Goto page Previous 1, 2, 3, 4, 5, 6