Přeskočit na hlavní obsah

Debug

Většinu kódu je možné debugovat pomocí logovacích funkcí Zephyr jako LOG_INF, LOG_HEXDUMP_INF a dalších.

Někdy je však nutné provést skutečné nízkoúrovňové hardwarové debugování s krokováním a náhledem do paměti.

To snadno umožní rozšíření nRF Connect for VS Code ve vašem VSCode.

Debugovací session ve VS Code zastavená na breakpointu v main.c s proměnnými, call stackem a registry periferií

Instalace

Ve VSCode stiskněte Ctrl + P, napište ext install nordic-semiconductor.nrf-connect a stiskněte enter.

Debugování

  1. Otevřete rozšíření nRF Connect for VS Code, klikněte na Open Existing Application a vyberte složku aplikace, ve které obvykle spouštíte west build.

Panel nRF Connect ve VS Code se zvýrazněným tlačítkem Open Existing Application

  1. V projektovém souboru prj.conf zakomentujte pomocí # nebo odstraňte CONFIG_CTR_BLE=y. BLE je citlivé na časování, a pokud je zapnuté, debugování nefunguje správně.

prj.conf v editoru se zakomentovanou řádkou CONFIG_CTR_BLE=y

  1. V levém panelu v sekci Applications klikněte na + Add build configuration

  2. V možnosti Board vyberte chester_nrf52840. Nastavte Optimization level na Optimize for debugging (-Og). Poté klikněte dole na tlačítko Build Configuration. Projekt se sestaví.

  3. V levém panelu v sekci Actions klikněte na Debug a spusťte debugování svého kódu.

warning

Nepoužívejte Erase board ani jinou podobnou možnost. Zařízení CHESTER využívá oblast UICR k uložení sériového čísla a komunikačních klíčů. Pokud ji vymažete, budete muset obnovit PIB data.

Pro vymazání desky použijte příkaz erase v HARDWARIO CLI, který oblasti UICR zachová.

Shell přes RTT

V levém panelu Connected devices můžete otevřít RTT komunikaci se zařízením. Používá kanál 0, což je shell Zephyr. Do terminálu můžete zadávat příkazy. Druhý RTT kanál s logy se zde nezobrazuje.

Panel Connected devices se zvýrazněnou položkou RTT a seznamem příkazů shellu Zephyr v terminálu

Vlákna

Na kartě NRF DEBUG můžete zkoumat vlákna a paměť.

Karta NRF DEBUG se zobrazením vláken, využitím stacku a prohlížečem flash paměti