[elektro] STM32F100 Reset probléma. Programblokk törlődik.
elight
elight at gmail.hu
Tue Sep 22 13:32:17 CEST 2015
de jó!
Ennek még utána kell néznem....
ASM-ben ugyan már nézegettem a címhasználati dolgot, és voltak gyanusak
bizonyos címterületek.. Csak még nem volt időm teljesen összeegyeztetni.
De akkor előbb inkább talán ezzel próbákozom. :-)
Üdv István
2015-09-22 12:48 keltezéssel, hg12345 írta:
> A linkerben tilsd ki azt a területet program elhelyezésre ahová írsz. Mert a flash törlés blokkosan történik, vagyis ha ezen a területen más adat is van ezt bizony törli...
>
> elight <elight at gmail.hu> í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]
>>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list