软件环境:esp-idf v4.3
硬件环境:esp32c3
问题描述:因为项目里面需要使用到3个uart:2个其他功能规划+1个日志打印调试;由于c3只有两个串口资源,所以我们打算用一个io引脚来模拟uart,用于打印日志;请问这种做法可以实现吗?可以将打印函数重定向到该模拟uart吗?如果可以,麻烦指导一下重定向需要修改哪几个函数?
ps:打印的函数主要涉及到printf()和ESP_LOGE()、ESP_LOGI()等函数;
目前我的软件已实现simulation_putchar()单字节打印,和simulation_printf()(模仿printf()函数),请问怎样能最方便的将代码里的printf()、ESP_LOGE()、ESP_LOGI()等函数重定向到我自己实现的打印函数上;
能不能将串口打印函数重定向到自己软件模拟的uart上?
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 能不能将串口打印函数重定向到自己软件模拟的uart上?
是可以重定向的,比如你可以参看:https://github.com/espressif/esp-qcloud ... er/src/log 里 log 的实现,是把 log 直接写到 flash 里,主要是 esp_log_set_vprintf 接口,具体你看下相关 sample。
但你用模拟 uart 的话,波特率应该上不去吧,会否影响系统整体性能。
但你用模拟 uart 的话,波特率应该上不去吧,会否影响系统整体性能。
Re: 能不能将串口打印函数重定向到自己软件模拟的uart上?
感谢回复,我们只是拿模拟uart来打印日志,应该不会影响性能,系统正常运行之后,打印的就比较少了;关于重定向,我使用了你说的esp_log_set_vprintf()接口,确实可以重定向ESP_LOGI()、ESP_LOGE()...等函数;但是对于printf()这个标准库函数,并没有重定向;请问有什么方式可以把printf()函数也重定向吗?我们的工程较大,一个一个替换掉printf()实在太没效率了?ESP_Gargamel wrote: ↑Fri Jul 23, 2021 3:13 am是可以重定向的,比如你可以参看:https://github.com/espressif/esp-qcloud ... er/src/log 里 log 的实现,是把 log 直接写到 flash 里,主要是 esp_log_set_vprintf 接口,具体你看下相关 sample。
但你用模拟 uart 的话,波特率应该上不去吧,会否影响系统整体性能。
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 能不能将串口打印函数重定向到自己软件模拟的uart上?
现在只有 uart0 和 自定义 uart 挂到 vfs 上,还有 USB Serial,没有考虑模拟 uart 的情况。
1、一种比较极端的方式是去 hack 一下 vfs_uart.c
2、如果可以用两个脚的话,可以用 GPIO18 和 GPIO19 的 USB Serial 来做打印,Component config → ESP System Settings → Channel for console output 下选 USB Serial/JTAG Controller
1、一种比较极端的方式是去 hack 一下 vfs_uart.c
2、如果可以用两个脚的话,可以用 GPIO18 和 GPIO19 的 USB Serial 来做打印,Component config → ESP System Settings → Channel for console output 下选 USB Serial/JTAG Controller
Re: 能不能将串口打印函数重定向到自己软件模拟的uart上?
在Component config → ESP System Settings 下面没有找到 Channel for console output额?大佬有截图么?
Who is online
Users browsing this forum: No registered users and 39 guests