SWO ve VS Code

Miroslav Mraz mrazik na volny.cz
Sobota Říjen 23 12:43:39 CEST 2021


Sice jsem to použil jen jednou a nezaujalo mne to, ale v poznámce k tomu 
mám toto:
/** @file
  *  @brief Trasování pomocí SWO.
  *
  * Na jádrech Cortex-M4 je poměrně složitá jednotka pro výpisy ladících 
informací.
  * Zde je provedeno její nastavení do režimu USART, dá se tedy připojit 
SWO na převodník
  * USB-serial a vypisovat ladící informace podobně jako přes USART. Má 
to jednu nevýhodu -
  * jednotka před každý vypisovaný znak umístí "číslo kanálu" (zde byte 
0x01), který se
  * při výpisu plete. Takže se to musí programově filtrovat.
  * Funkce TraceEnable() se musí použít pokud debug adaptér tuto 
funkcionalitu nepodporuje,
  * pokud ano (např. st-link + openocd nastavením např.
  * "tpiu config internal trace.log uart off 4000000 250000"), pak tato 
funkce není nutná.
  * V podstatě je to několik zápisů do systémových registrů Cortex-M4, 
které lze udělat
  * i přes SWD rozhraní.
  * */
a vlastní funkce pak vypadá takto:
void TraceEnable () {
   CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
   TPI->ACPR  = 0x0Fu;             // 4MHz / 16 = 250 kBd
   TPI->CSPSR = 1u;
   TPI->FFCR  = 0x100u;            // neformátovat
   TPI->SPPR  = 2u; // Example: 0x2 for asynchronous NRZ mode (UART like)
   DBGMCU->CR.B.TRACE_IOEN = 1u;
//DBGMCU->CR.B.TRACE_MODE = 0u;  // default
   ITM->LAR = 0xC5ACCE55;          // unlock ITM
   ITM->TCR = 0x00010001;          // Bit 2 = SYNCENA není potřeba
   ITM->TER = 1u;
   ITM->TPR = 1u;
}
Můžete to zkusit, je to pár řádek a když to bude fungovat, tak je to 
lepší než se několik hodin rýpat v konfiguraci. Problém může nastat, 
když se to s tou konfigurací nějak pomíchá a popere. A jak tak koukám, 
tak tohle počítalo se systémovými hodinami 4MHz.

Mrazík


Dne 23. 10. 21 v 11:53 Marek Sembol napsal(a):
> Zdravim,
> snazim se prestehovat s vyvojem pro STM do VS Code. Funguje mi preklad, 
> nahrani do MCU i debugovani.
> MCU: STM32G431
> Pro debugovani pouzivam 'cinsky klon' ST-Linku s upravou pro SWO
> A to je presne vec, ktera se mi nedari. Kdyz se pokusim neco vypsat pres 
> SWO, nic se nevypise a program v MCU vytuhne (nekonecna smycka pri 
> pokusu odeslat druhy znak)
> Podotykam, ze kdyz se pripojim pomoci STM32CubeProgrammer, tak 
> vypisy pres SWO normalne vidim.
> Pro vypis pouzivam printf, v kodu mam:
> 
> int _write(int file, char *ptr, int len)
> {
>    int DataIdx;
> 
>    for (DataIdx = 0; DataIdx < len; DataIdx++)
>    {
>      ITM_SendChar(*ptr++);
>    }
>    return len;
> }
> ----------------------------------------------------------------
> Muj launch.json:
> {
>      // Use IntelliSense to learn about possible attributes.
>      // Hover to view descriptions of existing attributes.
>      // For more information, visit: 
> https://go.microsoft.com/fwlink/?linkid=830387
>      "version": "0.2.0",
>      "configurations": [
>          {
>              "name": "Cortex Debug (OpenOCD)",
>              "cwd": "${workspaceRoot}",
>              "executable": "./build/Rts2000Stm32Test.elf",
>              "request": "launch",
>              "type": "cortex-debug",
>              "servertype": "openocd",
>              "device": "STM32G431KB",
>              "svdFile": "${workspaceRoot}/STM32G431xx.svd",
>              "configFiles": [
>                  "interface/stlink.cfg",
>                  "target/stm32g4x.cfg"
>              ],
>              "swoConfig": {
>                  "enabled": true,
>                  "cpuFrequency": 144000000,
>                  "swoFrequency": 2000000,
>                  "source": "probe",
>                  "decoders": [
>                      {
>                          "type": "console",
>                          "label": "ITM",
>                          "port": 0,
>                          "showOnStartup": true
>                      }
>                  ]
>              }
>          }
>      ]
> }
> 
> ---------------------------------------
> Jsem na windows, pouzivam OpenOCD:
> C:\Temp\VsCodeSTMtest>openocd --version
> Open On-Chip Debugger 0.11.0 (2021-07-29) 
> [https://github.com/sysprogs/openocd]
> Licensed under GNU GPL v2
> libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
> For bug reports, read
> http://openocd.org/doc/doxygen/bugs.html
> 
> ------------------------------------------
> Mate to nekdo rozchozene? Hraju si s tim uz pulden a dochazeji mi 
> napady. Goodle neporadil (nebo se neumim zeptat)
> BR,
> Marek
> 
> 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 


Další informace o konferenci Hw-list