* fix mbedtls bad pointer in function call (prototype mismatch) * fix issue with weak families functions implemented in static library, it will never be linked. fixed by redefining prototypes inside families * [ln882x] add support for lightning ln882x & ln882h families * add i2c (wire) support * add analog (adc) support * add watchdog support * [ln882x] changed default uart 0/1 pins; added board wl2s * [ln882x] fix IRQ & ADC pins * [ln882x] boards cosmetic * [ln882x] wifi sta use otp mac addr by default; re-enabled wifi powersave mode * [ln882x] clang-format clean code * [ln882x] clang-format clean code * Update families.json * Apply suggestions from code review * [ln882x] reformat json board files * [ln882x] os_queue cleanup * [ln882x] removed Beken auto-download command * [ln882x] removed personal script file * [ln882x] removed unusefull pi section in debugging.md * [ln882x] removed Arduino.h and changed private I2C definition * [ln882x] updated README.md * [ln882x] changed pin naming scheme to PA/PB * [ln882x] clean code * [ln882x] clean code * [ln882x] add ota image verification * Update push-dev.yml * [ln882x] fix boards ADC missing inputs] * [ln882x] removed reg_xxx fixup files and use include guards instead * [ln882x] cleanup code * [ln882x] cleanup code * [ln882x] fix lt_init weak functions linking * [ln882x] revert lt_api.h modification, fixed with previous commit * [ln882x] setup UF2 firmware for flasher with partitions * [ln882x] update README.md * [ln882x] include ln_wifi.h and ln_serial.h to avoid including bad headers on case insensitive systems * [ln882x] Replace RingBuffer by SerialRingBuffer * [ln882x] clang-format * [ln882x] update README.md * Apply suggestions from code review * Reformat board JSON files * Add mkdocs link redirect * Update ltchiptool to v4.12.0 --------- Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
60 lines
1.7 KiB
Markdown
60 lines
1.7 KiB
Markdown
# Debugging
|
|
|
|
Debugging of Lightning LN882x chips is possible and was tested with a JLink probe on OpenOCD and JLinkGDBServer.
|
|
|
|
*(the following is applicable to Arduino framework, and was not tested with SDK framework)*
|
|
|
|
LibreTiny has ready-to-use OpenOCD config files:
|
|
|
|
- [platform/lightning-ln882x/openocd/ln882x.cfg](../../../cores/lightning-ln882x/misc/ln882x.cfg)
|
|
|
|
## Local debugger
|
|
|
|
It should be possible to use PlatformIO's built-in debugging capabilities directly, when plugging an OpenOCD-compatible debugger into your PC. As there are no debugger interfaces built into these IoT boards, you need to specify your interface of choice in `platformio.ini`:
|
|
|
|
```ini
|
|
[env:my_board]
|
|
openocd_interface = <interface name>
|
|
```
|
|
where `<interface name>` is for example `raspberrypi2-native`, `stlink`, etc.
|
|
|
|
## JLink configuration
|
|
|
|
```ini
|
|
[env:my_board]
|
|
board = ln-02
|
|
debug_tool = custom
|
|
debug_server =
|
|
../JLink_Linux_V698e_x86_64/JLinkGDBServerExe
|
|
-singlerun
|
|
-if
|
|
SWD
|
|
-select
|
|
USB
|
|
-port
|
|
3333
|
|
-device
|
|
Cortex-M4
|
|
debug_init_cmds =
|
|
define pio_reset_halt_target
|
|
monitor reset
|
|
end
|
|
target extended-remote $DEBUG_PORT
|
|
;monitor speed auto
|
|
monitor reset
|
|
$LOAD_CMDS
|
|
$INIT_BREAK
|
|
upload_protocol = custom
|
|
upload_flags =
|
|
-auto
|
|
-startapp
|
|
-exit
|
|
upload_command = ../JLink_Linux_V698e_x86_64/JFlashExe -openprj"../JLink_Linux_V698e_x86_64/ln882h.jflash" -open"${BUILD_DIR}/image_firmware.bin",0 $UPLOAD_FLAGS
|
|
debug_init_break = tbreak Reset_Handler
|
|
```
|
|
|
|
## Technical details
|
|
|
|
GDB is first configured with `mem 0x0000000 0x1000000 ro` in order to mark flash memory as read-only. This makes GDB use hardware breakpoints, as software BPs don't work on these boards.
|
|
|