[avrgcc] jak wypelnic niewykorzystany flash nopami

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

Reply to
Krzysztof Szmurło
Loading thread data ...

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

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)

hmm... chyba lepiej dmuchać na zimne :)

Pozdrawiam Krzysztof Szmurło

Reply to
Krzysztof Szmurło

Piotr Gałka snipped-for-privacy@CUTTHISmicromade.pl napisał(a):

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

Reply to
Piotrek Sz.

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

Reply to
Krzysztof Szmurło

[...]

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.

Reply to
Adam Dybkowski
Reply to
invalid unparseable

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

pozdrawiam czerstwy

Reply to
czebaka
Reply to
Greg(G.Kasprowicz

mIrO napisał/a:

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

Reply to
czebaka
Reply to
Piotr Wyderski

Piotr Wyderski snipped-for-privacy@ii.uni.wroc.pl> napisał(a):

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

Reply to
Piotrek Sz.
Reply to
invalid unparseable
Reply to
invalid unparseable

Piotr Wyderski snipped-for-privacy@ii.uni.wroc.pl> napisał(a):

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

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

Pozdrawiam Piotrek

Reply to
Piotrek Sz.
Reply to
invalid unparseable

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.