SWD, RST, MWW... avagy a debugger debuggolasa(?)

Erdekes kiserlet: reset-eljunk egy Cortex-M0-t tisztan SWD-n keresztul, az nSRST hasznalata nelkul. Hogy ezt hogy is kell, erre nem tudom a valaszt (az internetek szerint lehet hogy nem is lehet megcsinalni de a nyomozas folyamatban), mindenesetre egy erdekes dolgot vettem eszre. Konkretabban: ha csak ugy megadom az OpenOCD-nek hogy "mww 0xe000ed0c 0x05fa0004", ami ugye a CMSIS szerinti NVIC_SystemReset()-nek megfelelo ertekadas akkor nem csinal semmit, nem resetel semmit. Se nem interaktivan (telnet 4444), se nem startup command line argument command (-c) formajaban. Ugyanitt az "mdw 0xe000ed0c" mukodik, szepen visszaadja hogy "0xfa050000". Viszont ha elobb az nSRST-vel kiresetelem (sima "reset" parancs a megfelelo beallitas, a "reset_config srst_only"  - es persze a harmadik drotmadzag bekotese - utan) akkor ugye szepen ujraindul a cuccmany, megy is, es akkor mar ki tudom resetelni ugy hogy "mww 0xe000ed0c 0x05fa0004". Es akkor megegyszer (meg utana tobbszor) is lehet mar resetelni igy szoftveres(ebb)en. 

Avagy jol mukodik a software reset miutan a hardware reset sikeresen lefutott. Avagy most ki kellene debuggolni a debuggert hogy tulajdonkeppen mi is tortenik. Lehet hogy az egyebkent kotelezoen kiadando OpenOCD "init" csinal valami turpissagot... erdekes...

Azert majd egy szep napon az X problemara (Cortex-Mx resetelese SWDIO + SWCLK-val, /RST nelkul) is jo lenne megoldast talalni :) 

Hozzászólások

Nem biztos, hogy segít és nem Cortex-M0, hanem Cortex-M3 és M4, valamint STM32 és a saját konfigurátora, de van benne a SYS rész alatt egy Debug beállítás, ez "Serial Wire" érték mellett resetelhetővé teszi SWD-vel.

Ha korábban volt másként konfigurált projekt az MCU-ban, akkor le kell húzni akár kézzel a reset lábat a programozás során, de utána resetelhető lesz SWD-n és az is marad.
Első felprogramozáskor felmegy a szoftver a reset láb piszkálása nélkül is.

Közelebb vihet a megoldáshoz, ha generálsz vele két projektet és összehasonlítod, mit csinál másként initkor.