[avrgcc] jak wypelnic niewykorzystany flash nopami



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?Krzysztof_Szmur=B3o?= <ks123_at_nospam_wyrzuc.to.wp.pl>
Subject: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 12:01:03 +0100


Cześć

procek: atmega16
Jak zbudowac takiego hexa który do niewykorzystanego obszaru flash'a
wrzucał nop'y ?
Chcę aby w przypadku niepożądanego wskoczenia PC w taki obszar kontroler
leciał po tych nop'ach a na koniec ma być skok do procedury obsługi
takiego przypadku.

Pozdrawiam
Krzysztof Szmurło

Poprzedni Następny
Wiadomość
Spis treści
From: =?iso-8859-2?Q?Piotr_Ga=B3ka?= <piotr.galka_at_nospam_CUTTHISmicromade.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 15:44:32 +0100



Użytkownik "Krzysztof Szmurło" <ks123_at_nospam_wyrzuc.to.wp.pl> napisał w wiadomości
news:dk4th4$pnt$1_at_nospam_atlantis.news.tpi.pl...
Cześć

procek: atmega16
Jak zbudowac takiego hexa który do niewykorzystanego obszaru flash'a
wrzucał nop'y ?
Chcę aby w przypadku niepożądanego wskoczenia PC w taki obszar kontroler
leciał po tych nop'ach a na koniec ma być skok do procedury obsługi
takiego przypadku.

Może zamiast NOPów od razu wpisać skoki do procedury obsługi.
Tylko tak dobrać adres, aby wskoczenie w nie pierwszy bajt instrukcji było
nieszkodliwe.

Jak miałem taką potrzebę to zrobiłem to tak:
Wygenerowałem na PC odpowiedni plik binarny (za pomocą krótkiego programu w
C).
Naszym bardzo starym programem piccolo.exe (jest jeszcze pewnie na naszej
stronie) załadowałem go do bufora w trybie bin (wcześniej rozmiar EPROMu
zgodny z potrzebą).
Na to załadowałem właściwy program hex (w trybie hex).
Potem całość save w trybie hex.

Może są gotowe edytory które to robią, ale zamiast szukać szybciej mi było
napisać tę jedną pętlę for w C.
P.G.


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_NOSPAM.gazeta.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 17:19:32 +0000 (UTC)


Piotr Gałka <piotr.galka_at_nospam_CUTTHISmicromade.pl> napisał(a):


Użytkownik "Krzysztof Szmurło" <ks123_at_nospam_wyrzuc.to.wp.pl> napisał w wiadomości
news:dk4th4$pnt$1_at_nospam_atlantis.news.tpi.pl...
Cześć

procek: atmega16
Jak zbudowac takiego hexa który do niewykorzystanego obszaru flash'a
wrzucał nop'y ?
Chcę aby w przypadku niepożądanego wskoczenia PC w taki obszar kontroler
leciał po tych nop'ach a na koniec ma być skok do procedury obsługi
takiego przypadku.

Może zamiast NOPów od razu wpisać skoki do procedury obsługi.
Tylko tak dobrać adres, aby wskoczenie w nie pierwszy bajt instrukcji było
nieszkodliwe.

Jak miałem taką potrzebę to zrobiłem to tak:
Wygenerowałem na PC odpowiedni plik binarny (za pomocą krótkiego programu w
C).
Naszym bardzo starym programem piccolo.exe (jest jeszcze pewnie na naszej
stronie) załadowałem go do bufora w trybie bin (wcześniej rozmiar EPROMu
zgodny z potrzebą).
Na to załadowałem właściwy program hex (w trybie hex).
Potem całość save w trybie hex.

Może są gotowe edytory które to robią, ale zamiast szukać szybciej mi było
napisać tę jedną pętlę for w C.
P.G.


Jest jeszcze prostrzy sposób (tak myślę ;-) )
a)Skompilować projekt i zerknąć , ile toto zajmuje bajtów.
b)Do projektu dołączamy plik np. "Nopy.s" o takiej treści:

//#define NOPS (całkowita_pamięć_programu/2)-(bajty_zajęte_przez_projekt/2)
//Dla ATMega8
#define NOPS (8192/2)-(bajty_zajęte/2)

#if NOPS > 3
.section .progmem.gcc
//sekcje można wybrać dowolnie(no prawie)
//powyższy przykład umieści nop-y
//za tablicą wektorów , a właściwy program na
//końcu pamięci
//dla .section .fini0 , nop-y na końcu(prawie)
// najlepszym miejscem będzie chyba .section .data

.rep NOPS-3
nop
.endr
clr r30 //dla ...
clr r31 //.. ATMega8 ...
ijmp // ...trza tak ;)
#endif
c)powtórnie skompilować i ... załadować do proca.

Piotrek


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Poprzedni Następny
Wiadomość
Spis treści
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 21:18:24 +0100


Piotrek Sz. wrote:

Jak zbudowac takiego hexa który do niewykorzystanego obszaru flash'a
wrzucał nop'y ?

a)Skompilować projekt i zerknąć , ile toto zajmuje bajtów.
b)Do projektu dołączamy plik np. "Nopy.s" o takiej treści:
[...]

Ależ kombinujecie pod górę. A wystarczy wykorzystać możliwości linkera i
w pliku sterującym linkowaniem (trzeba skopiować do swojego zamiast
używać domyślnego) dodać magiczne słowo FILL z wartością rozkazu NOP.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.

Poprzedni Następny
Wiadomość
Spis treści
From: "Rafał Baranowski" <rufus_at_nospam_polsl.gliwice.pl.usun.to>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 21:58:10 +0100



Użytkownik "Adam Dybkowski" <adybkows123_at_nospam_amwaw.edu.pl> napisał w wiadomości
news:dk5u3p$chh$1_at_nospam_atlantis.news.tpi.pl...
Ależ kombinujecie pod górę. A wystarczy wykorzystać możliwości linkera i w
pliku sterującym linkowaniem (trzeba skopiować do swojego zamiast używać
domyślnego) dodać magiczne słowo FILL z wartością rozkazu NOP.

Ale i tego nie trzeba - choć FFFF to opcode zastrzeżony, to w praktyce rdzeń
AVR interpretuje go tak, jak NOPa.

Pzdr,
Raf.


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 12:33:44 +0100



Rafał Baranowski wrote:

Ale i tego nie trzeba - choć FFFF to opcode zastrzeżony, to w praktyce
rdzeń
AVR interpretuje go tak, jak NOPa.

W praktyce takich rzeczy się nie robi, a jak się robi, to
się powinno wylecieć z pracy z prędkością światła.

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_NOSPAM.gazeta.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 13:59:13 +0000 (UTC)


Piotr Wyderski <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> napisał(a):


Rafał Baranowski wrote:

Ale i tego nie trzeba - choć FFFF to opcode zastrzeżony, to w praktyce
rdzeń
AVR interpretuje go tak, jak NOPa.

W praktyce takich rzeczy się nie robi, a jak się robi, to
się powinno wylecieć z pracy z prędkością światła.

Pozdrawiam
Piotr Wyderski


Z całym szacunkiem ;)
Kolega pytał , więc starałem sie pomóc , nie wnikając do czego mu to
potrzebne.Gdybym wiedział , że można za takie "coś" wylecieć z pracy , to nie
pisnąłbym słówkiem ;-)

Pozdrawiam
Piotrek


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 16:23:32 +0100


Piotrek Sz. wrote:

Kolega pytał , więc starałem sie pomóc , nie wnikając do czego mu to
potrzebne.

Przecież nie do Twojej rady odnosił się mój komentarz. Zaproponowane
przez Ciebie rozwiązanie również jest dobre, tylko może mieć problemy
podczas łączenia wielu niezależnych plików, bo nie znasz sumy rozmiarów
poszczególnych sekcji. Jednoplikowo jednak jest OK.

Gdybym wiedział , że można za takie "coś" wylecieć z pracy , to nie
pisnąłbym słówkiem ;-)

Ech, włącz sobie "widok drzewa" przy sortowaniu wiadomości, to
zobaczysz, że mój post znajduje się w zupełnie innym miejscu niż Twój... :-)

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_NOSPAM.gazeta.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 16:11:26 +0000 (UTC)


Piotr Wyderski <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> napisał(a):

Piotrek Sz. wrote:

Kolega pytał , więc starałem sie pomóc , nie wnikając do czego mu to
potrzebne.

Przecież nie do Twojej rady odnosił się mój komentarz. Zaproponowane
przez Ciebie rozwiązanie również jest dobre, tylko może mieć problemy
podczas łączenia wielu niezależnych plików, bo nie znasz sumy rozmiarów
poszczególnych sekcji. Jednoplikowo jednak jest OK.

"Testowałem" toto , na 12-toplikowcu ;)
KamAVR - po kompilacji - pokazuje całkowitą ilość "zużytego" flash-u , więc
obchodzę się bez kalkulatora ;-)

Gdybym wiedział , że można za takie "coś" wylecieć z pracy , to nie
pisnąłbym słówkiem ;-)

Ech, włącz sobie "widok drzewa" przy sortowaniu wiadomości, to
zobaczysz, że mój post znajduje się w zupełnie innym miejscu niż Twój... :-)

Moje drzewo(Firefox) powiedziało mi ,że "pijesz" do mnie ;) Jednakże
Thunderbird wyprowadził mnie z błędu.Przepraszam Cię.


Pozdrawiam
Piotr Wyderski

Pozdrawiam
Piotrek



--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Poprzedni Następny
Wiadomość
Spis treści
From: "Rafał Baranowski" <rufus_at_nospam_polsl.gliwice.pl.usun.to>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 15:57:30 +0100


Użytkownik "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> napisał w
wiadomości news:dk7jqs$iq2$1_at_nospam_news.dialog.net.pl...
Ale i tego nie trzeba - choć FFFF to opcode zastrzeżony, to w praktyce
rdzeń
AVR interpretuje go tak, jak NOPa.

W praktyce takich rzeczy się nie robi, a jak się robi, to
się powinno wylecieć z pracy z prędkością światła.

Wybacz, ale czego nie robić? Zasugerowałem jedynie, że wypełnianie
nieużywanej przestrzeni NOPami będzie miało ten sam efekt, co brak
jakichkolwiek działań. Znacznie lepszym pomysłem jest wypełnianie rozkazami
skoków do podprogramu obsługi błędu.

Pzdr,
Raf.


Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?Krzysztof_Szmur=B3o?= <ks123_at_nospam_tlen.do.wyciecia.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 18:47:01 +0100


Rafał Baranowski wrote:
Użytkownik "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> napisał w
wiadomości news:dk7jqs$iq2$1_at_nospam_news.dialog.net.pl...
Ale i tego nie trzeba - choć FFFF to opcode zastrzeżony, to w praktyce
rdzeń
AVR interpretuje go tak, jak NOPa.

W praktyce takich rzeczy się nie robi, a jak się robi, to
się powinno wylecieć z pracy z prędkością światła.

Wybacz, ale czego nie robić? Zasugerowałem jedynie, że wypełnianie
nieużywanej przestrzeni NOPami będzie miało ten sam efekt, co brak
jakichkolwiek działań. Znacznie lepszym pomysłem jest wypełnianie
rozkazami skoków do podprogramu obsługi błędu.

Tylko ze skok JMP ma długość 2 słów, co powoduje, że PC może się ustawić
między dwoma słowami w rozkazie. Chyba o wiele lepsze rozwiązanie jest
ustawić obszar NOPami i na koniec jego dać skok do procedury obsługi błędów.

Pozdrawiam
Krzysztof Szmurło

Poprzedni Następny
Wiadomość
Spis treści
From: "Rafał Baranowski" <rufus_at_nospam_polsl.gliwice.pl.usun.to>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 21:08:16 +0100


Użytkownik "Krzysztof Szmurło" <ks123_at_nospam_tlen.do.wyciecia.pl> napisał w
wiadomości news:dk89mv$921$1_at_nospam_atlantis.news.tpi.pl...
Tylko ze skok JMP ma długość 2 słów, co powoduje, że PC może się ustawić
między dwoma słowami w rozkazie. Chyba o wiele lepsze rozwiązanie jest
ustawić obszar NOPami i na koniec jego dać skok do procedury obsługi
błędów.

Racja, przeoczyłem tę możliwość.

Pzdr,
Raf.


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 16:18:49 +0100


Rafał Baranowski wrote:

Wybacz, ale czego nie robić?

Nie polegać na zachowaniu nieokreślonym wynikającym z konkretnej
implementacji dekodera rozkazów w danej rodzinie procesorów. Adam
Dybkowski podał "jedynie słuszne" rozwiązanie i tyko w ten, lub równoważny
mu, sposób wolno rozwiązać problem nopów.

Zasugerowałem jedynie, że wypełnianie nieużywanej przestrzeni NOPami
będzie miało ten sam efekt, co brak jakichkolwiek działań.

Masz zupełną rację, ale nie do tego się odniosłem.

Znacznie lepszym pomysłem jest wypełnianie rozkazami skoków do podprogramu
obsługi błędu.

Bezdyskusyjnie.

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "Rafał Baranowski" <rufus_at_nospam_polsl.gliwice.pl.usun.to>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 1 Nov 2005 17:00:02 +0100


Użytkownik "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> napisał w
wiadomości news:dk819p$tq2$2_at_nospam_news.dialog.net.pl...
Wybacz, ale czego nie robić?

Nie polegać na zachowaniu nieokreślonym wynikającym z konkretnej
implementacji dekodera rozkazów w danej rodzinie procesorów. Adam
Dybkowski podał "jedynie słuszne" rozwiązanie i tyko w ten, lub równoważny
mu, sposób wolno rozwiązać problem nopów.

Moje pytanie miało na celu tylko wprowadzenie wyjaśnienia - oczywiście wiem,
formalnie masz rację. Jednak w tym szczególnym przypadku można na to
przymknąć oko - rozwiązujemy problem, do którego teoretycznie dochodzić nie
powinno. Wynik każdego rozwiązania innego niż zerowanie układu jest z
definicji niepewny i jest podobnego kalibru wykroczeniem, jak korzystanie z
wiedzy niepodpartej dokumentacją.

Pzdr,
Raf.

P.S. W 8085 wprowadzono kilka nowych rozkazów względem 8080, jednak... nie
udokumentowano ich oficjalnie. Mimo to, były one znane i... wykorzystywane
(nie pochwalam, przytaczam anegdotę ;) ).


Poprzedni Następny
Wiadomość
Spis treści
From: czebaka <czebaka_at_nospam_op.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 22:29:44 +0100


Krzysztof Szmurło napisał/a:
procek: atmega16
Jak zbudowac takiego hexa który do niewykorzystanego obszaru flash'a
wrzucał nop'y ?

Czy to ma jakiś sens, że kod idzie tam gdzie się nie spodziewamy?
pytam z ciekawości bo nie zgadza się to z tym, czego mnie uczono o
programowaniu

pozdrawiam
czerstwy

Poprzedni Następny
Wiadomość
Spis treści
From: "Greg\(G.Kasprowicz\)" <gkasprow_at_nospam_gmail.com>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 23:40:15 +0100



Czy to ma jakiś sens, że kod idzie tam gdzie się nie spodziewamy?
pytam z ciekawości bo nie zgadza się to z tym, czego mnie uczono o
programowaniu

z calym szacunkiem, uczono cie teorii...
w praktyce okazuje sie ze np na wskutek zaklocen, procesor dokonuje skoku do
nieuzywanej czesci programu. Mozna z tego wyjsc albo pozwalajac mu przewinac
sie przez cala pamiec az do 0000, gdzie zacznei od poczatku, albo wychwycic
ten fakt i cos z nim zrobic, czyli sprobowac rozwiazac jakos te sytuacje nie
tracac np cennych danych



Poprzedni Następny
Wiadomość
Spis treści
From: "mIrO" <mIrO_at_nospam_mIrO.mIrO>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 23:58:44 +0100


Użytkownik "czebaka" napisał w wiadomości
Krzysztof Szmurło napisał/a:
Czy to ma jakiś sens, że kod idzie tam gdzie się nie spodziewamy?
pytam z ciekawości bo nie zgadza się to z tym, czego mnie uczono o
programowaniu
W laboratorium sie to raczej nie zdarzy, chyba ze specjalnie bedziesz
zaklocac prace kontrolera.
W swiecie rzeczywistym - hulaj dusza ;)

pozdrawiam
czerstwy

pzdr
mIrO


p.s.
Mnie uczono obu przypadkow ;)



Poprzedni Następny
Wiadomość
Spis treści
From: czebaka <czebaka_at_nospam_op.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Tue, 01 Nov 2005 09:26:34 +0100


mIrO napisał/a:
W laboratorium sie to raczej nie zdarzy, chyba ze specjalnie bedziesz
zaklocac prace kontrolera.
W swiecie rzeczywistym - hulaj dusza ;)

tylko skąd założenie, że akurat proc wyskoczy do obszaru nieużywanego? w
większości projektów, które robiłem flash miał zajętość 50-75% więc
skuteczność tej metody jest raczej mała

zewnętrzny watchdog jest chyba sensownym rozwiązaniem w środowisku o
dużych zakłóceniach

jakoś nie wierzę w skuteczność ochrony za pomocą tej metody

pozdrawiam
czerstwy

Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?Krzysztof_Szmur=B3o?= <ks123_at_nospam_tlen.do.wyciecia.pl>
Subject: Re: [avrgcc] jak wypelnic niewykorzystany flash nopami
Date: Mon, 31 Oct 2005 18:01:47 +0100


czebaka wrote:
mIrO napisał/a:
W laboratorium sie to raczej nie zdarzy, chyba ze specjalnie bedziesz
zaklocac prace kontrolera.
W swiecie rzeczywistym - hulaj dusza ;)

tylko skąd założenie, że akurat proc wyskoczy do obszaru nieużywanego? w
większości projektów, które robiłem flash miał zajętość 50-75% więc
skuteczność tej metody jest raczej mała

Nie ma takiego założenia ale istnieje pewne prawdopodobieństwo i dobrze
jest się zabezpieczyć również na taką przypadłość.

zewnętrzny watchdog jest chyba sensownym rozwiązaniem w środowisku o
dużych zakłóceniach

Watchdog też jest załączony i wykorzystywany. Mi się wydaje, że jak
urządzenie ma być jak najbardziej odporne to powinno być zabezpieczone
ze wszystkich stron, poczynając od dobrego PCB, kondensatorów
blokujących itp itd, a kończąc na zabezpieczeniach softwarowych (a może
nawet odwrotnie)

jakoś nie wierzę w skuteczność ochrony za pomocą tej metody
hmm... chyba lepiej dmuchać na zimne :)

Pozdrawiam
Krzysztof Szmurło