[elektro] STM32F100 Reset probléma. Programblokk törlődik.

Steve istvan.retaller at gmail.com
Tue Sep 22 11:09:41 CEST 2015


A kulcs mindenkéépen az, hogy magában az írási processzben kapod el és a 
cím figyelése alapján.
Ha - mint írod - tájékozatlanságból feleslegesen kapod el, pedig mehetne 
tovább, akkor ezt a feltételt is beleírod, hogy ilyenkor ne legyen break.
Persze, így halmozódhatnak mindenféle felesleges feltétel vizsgálatok, 
csúnya is - de hatékony.
A flash-be írás az író process miatt van, tehát ott kell elkapni - 
hacsak csodák nincsenek. :))

2015-09-22 11:00 keltezéssel, elight írta:
> Szia ,
>
> itt többminden eset  lehet Flash ügyben is ..
>      a memóriából van kihasítva ha jól  néztem.
> Nem úgy mint pl.  a PIC-eknél , ahol egy külön
> kis EEPROM chipterület, és nem része a programmemóriának.
>
> De a programom tulajdonképpen csak a legelején használja a Flash memóriát.
> Ez egy önálló , tesztelt és akár kiköthető rutin
> ( konstansokkal helyettesíthető rész, és csak init adatokat tárol).
>
> A gyanus ügy ,
> hogy programban sehol máshol nem használok Flash műveletet.
> mégis olyan mintha egy blokk időnként kapna Flash_Erase-t.
> Leginkább gyanum ez. Főleg egy   kommunikáció lezajlása után
> már tutira jelentkezik.
>
> Magának  a flash műveletnek minden csínját még nem teljesem értem.
> Tehát,  hogy ugyanaz a terület , mint a program mmeória, csak másik cím?
> És, hogy simán egy eltévedt ponterrel pl.  ártírható e így a program
> memória?
> És vannak persze  írásvédelmek is az ARM-ban, azok védik e ezt a felülírást?
>
> De tudom ez nem meggoldás! A hiba ( elírás ) tényleges okát
> meg  kell keresnem, különben a váratlan helyzetekben bármikor fetámadhat
> akár  egyéb jelenségekkel kísérve!
>      ( pl most éppen tör némi grafikát is  az Init képernyőn. ;)
>
> Üdv István
>
>
> 2015-09-22 10:33 keltezéssel, Steve írta:
>> Mezei avr-ben csináltam olyasmit, hogy a program írhatja a saját
>> flash-ét, ARM-ban nem vagyok járatos.
>> A leírtak alapján feltételezem, hogy van a programodban valahol egy
>> flash író process. Ide kellene valami break-et tenni.
>> Ha a normál futása alatt is van flash írás, akkorsincs baj, az író
>> rutinba beszúrod, hogy ellenőrizze, milyen címre akar írni. Ha a
>> kririkus területre írna, akkor break és lehet debuggolni, ha nem
>> kritikus terület a célja, akkor meg hadd fusson.
>>
>>
>> 2015-09-22 10:09 keltezéssel, elight írta:
>>> Sziasztok.
>>>
>>>
>>> ARM C programozásnál akadt egy olyan
>>> kellemetlen  jelenség  amit jelenleg  nézegetek..
>>>
>>>
>>> Maga a program Main része szokásos..
>>>
>>> Van egy Init és egy Int_Init rész , uart  , systick interrupt-al.
>>> Flash  területről 12 word  init változó olvasás,
>>> és ha nincs ott még adat akkor
>>> létrehozza , letárolja , ismét olvassa.
>>> Grafika initelés , nyitóképernyő
>>> SWD debug kikapcsolás. ( kellene a plusz lábak )
>>> Main képernyő
>>> while(1)  {  működö rész }
>>>
>>>
>>> Bele javítottam egy már tesztel működő program
>>> bizonyos részeibe..  és nem jövök rá hogy a javított ,
>>> vagy esetleg egy régóta bennemaradó hiba szívat?
>>>
>>> A jelenség az , ha beégetem a programot
>>> akkor minden hibátlanu fut , jól kommunikál
>>> jók az adatok a képernyőn, a kimenetek megfelelőek stb..
>>> Ha először le-resetelem már akkor SWD visszakapcsolódása
>>> és a program visszaolvasása után azt látom hogy a
>>> 0x8000000 - 0x800003FF  program terület kitörlődött
>>> és 0xFFFFFFFF  az értéke.
>>> Hatására az ismételt RESET-ek hatástalanok...  !!!
>>> Ismételten felülírom a programterületet , akkor a
>>> következő reset-ig megint jól működik.
>>>
>>> Maga a program már eléggé meghízott hogy egy az egyben
>>> végigdebugolhassam..   Szétszedegetni lassú.
>>> Valami gyorsabb tesztelési ötlet lenne jó előtte.
>>> Mit is bontsak ki, és nézegessek.
>>>
>>> Először  arra gondoltam hogy talán a FLASH init okozná. Megtéved.
>>> Ha tologatok a Main_Init  részben egy while(1); Stopp gyanánt:
>>> - Nyitóképernyőig is  jól fut le és vár... Bárhányszor resetelhető.
>>> Utána arra  gondoltam hogy az SWD  debug kikapcsolás okozza,
>>> de ha kiveszem ( ennek hatására 3-4 port inputban marad ,
>>> nem lesz Alternatív IO, de ez nem gond  )
>>>         a RESET probléma akkor is fennáll.
>>>
>>> Egyenlőre a hozzáírt részekben még nem igen találtam meg az igazi okát.
>>>
>>> Üdv István
>>>
>>>
>>>
>>>
>>> -----------------------------------------
>>>              elektro[-flame|-etc]
>>>
>>>
>> -----------------------------------------
>>             elektro[-flame|-etc]
>>
> -----------------------------------------
>            elektro[-flame|-etc]
>
>



More information about the Elektro mailing list