logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ARM SAM7S256 - Samoczynne kasowanie pamięci flash po wyłączeniu zasilania

adamusx 20 Maj 2007 12:28 1062 3
REKLAMA
  • #1 3903050
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Witam.

    Mam dziwny problem.
    Programuje procesor ARM SAM7S256, procesor na docelowej plytce.

    Programowany był juz wiele razy (testy programu:) I wszystko było ok do wczorajszego dnia:)

    Problem polega na tym, że po właczeniu zasilania okazało się ze program nie rusza. Wygaldalo to na skasowana pamiec flash.
    Zaprogramowalem wiec ponownie procesor i wszystko chodziło. Dla testow resetowałem go, wyłaczalem zasilanie na pare minut. Po ponownym wlaczeniu wszystko było ok. Jednak nastepnego dnia, gdy wlaczylem zasilane procesor znow nie ruszal i znowu konieczne było jego ponowne zaprogramowanie.
    Wygląda na to jakby pamiec flash kasowala się przy dłuzszym braku napiecia.
    Wczesniej wszystkobyło ok, nie wiem co moze być przyczyna.
    Czy może przekroczona bądź bliska maksymalnemu liczba cykli programowania pamieci ? (w dokumentacji ATMELA napisane jest, że liczba cykli programowania flasha to około 10000 )
    Nie sadze bym przekroczyl ta liczbe...ale jesli nawet czy to mogłby by być przyczyna takiego zachowania się mikrokontrlera? że pamięć nie trzyma danych ?
    Pierwszy raz się z takim czymś spotykam... normalnie czary mary :D
  • REKLAMA
  • #2 3904595
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    inne procki też tak miały, zczytaj wsad z procka i porównaj z orginałem. Znając życie sypią się te same komurki
  • REKLAMA
  • #3 3904675
    bis
    Poziom 21  
    Posty: 274
    Pomógł: 54
    Ocena: 3
    Nie podajesz co tak naprawdę oznacza "procesor znowu nie ruszał" w porównaniu do "a kiedyś działał". Jeżeli oceniasz to nie badając dokładnie czy naprawdę jakieś rejony Flash straciły zawartość to może jest inna przyczyna. Przykładowo, jeżeli programujesz procka, to część RAM jest zapisywana jakimiś wartościami i restart programu (po programowaniu) używa tych wartości (np. dla niezainicjalizowanych zmiennych). Po wyłączeniu zasilania w RAM te komórki mają nadal jakieś wartości, dopiero po dłuższym czasie RAM "zapomina" i po ponownym włączeniu zasilania ma już inne wartości (takie przy których program "idzie w maliny"). Tutaj dużo zależy od używanych narzędzi do programowania. Jeżeli masz taką możliwość to bezpiecznym rozwiązaniem jest "zerowanie" całej pamięci ram zaraz na początku programu, jeszcze w fazie "startup", przed zainicjalizowaniem stosów itd.. Można też dodać badanie sumy kontrolnej programu i proste testowanie RAM.

    bis[/b]
  • #4 3904822
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Problem na pewno nie jest zwiazany z RAMem. Układ chodził poprawnie od kilku tygodni i problem ten nie występował. Poza tym dane które maja być zaincjalizowane są inicjalizowane na początku programu,

    Piszac procesor "znowu nie rusza" oznacza, że program nie daje znaków zycia ( komunikacja UART, diody debugujace nie daja znaku zycia). SAMy mają nózke ERASE, której zwarcie do masy powoduje skasowanie całej pamieci, ale tylko gdy zasilanie jest właczone.
    Nozke ta mam podciagnieta do + poprzez 10k rezystor , poza tym jest ona tez wewnetrznie podciagana w procesorze... moze jakieś zakłocenie powoduje aktywację tego wejścia.
REKLAMA