写了一个SWO驱动

发布于 2013-05-25 17:29:43
使用方法:

rt_hw_swo_init(); //初始化SWO,此时仅支持输出功能
rt_console_set_device("swo");

/* ............. */

rt_hw_swo_start(); // 启动监听线程,仅能在调试器启动以后执行
finsh_set_device("swo"); // 启动监听以后,就可以支持输入功能了,可以把finsh设置过来


参考:semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机

下载附件[swo.c]

查看更多

关注者
0
被浏览
2.7k
6 个回答
bernard
bernard 2013-05-25
这个是几条线呀
lngdzph
lngdzph 2013-11-27
有没有独立的类似于putty的调试工具,我用的JLinkSWOViewer,但没有输入
jeffwei
jeffwei 2013-11-27
我现在都没有引出SWO,用的swd调试,而且ST M0的芯片都没JTAG了,只有swd。
我之前都是留了一个串口专门给finsh的,可以方便非专业人员使用
sync
sync 2019-08-14
swo也是挺好用的,只是最新的rt-thread里面默认使用了RT_USING_POSIX,
static int finsh_getchar(void)
{
#ifdef RT_USING_POSIX
return getchar();
#else
char ch = 0;

RT_ASSERT(shell != RT_NULL);
while (rt_device_read(shell->device, -1, &ch, 1) != 1)
rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER);

return (int)ch;
#endif
}

上面的驱动文件应该怎么修改下,才能使用呢?
sync
sync 2019-08-14
getchar默认是和串口绑定的

/**
* uart operators
*/
struct rt_uart_ops
{
rt_err_t (*configure)(struct rt_serial_device *serial, struct serial_configure *cfg);
rt_err_t (*control)(struct rt_serial_device *serial, int cmd, void *arg);

int (*putc)(struct rt_serial_device *serial, char c);
int (*getc)(struct rt_serial_device *serial);

rt_size_t (*dma_transmit)(struct rt_serial_device *serial, rt_uint8_t *buf, rt_size_t size, int direction);
};

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览