我尝试使用SWO引脚得到一些调试输出openocd
版本0.10.0+dev-00512-gfd044600
和gdb-multiarch
。
我整理与固件ARMToolchain_8-2018-q4
与标志--specs=nosys.specs --specs=nano.specs --specs=rdimon.specs
,把函数调用initialise_monitor_handles();
在main()
我.gdbinit
看起来像这样:
target extended-remote localhost:3333
monitor reset halt
monitor arm semihosting enable
monitor tpiu config internal ../bin/swo.log
load
break main
我安装了呼叫ITM_SendChar()
在_putchar()
这样的功能:
void _putchar(char c) { ITM_SendChar(c) };
该芯片是STM32L432KC和OpenOCD的命令是:
openocd -f board/stm32l4discovery.cfg
当我打印“测试\ r \ n”的字符串,我得到的一些额外的字符swo.log
(从输出文件xxd -b swo.log
):
000032e8: 00000001 01010100 00000001 01100101 00000001 01110011 .T.e.s
000032ee: 00000001 01110100 00000001 00001101 00000001 00001010 .t....
字符串“Test \ r \ n”是有,但有一些额外的垃圾。 我怎样才能摆脱呢?
我现在的解决方法是削减非打印字符:
tail -f ../bin/swo.log | tr -cd '\11\12\15\40-\176'