我一直用 MacOS 开发 ESP32,最近遇到 ESP32C2 的板子,波特率是 74880,导致无法使用 Minicom 调试单板。
Minicom 是开源软件,因此可以通过修改源代码来实现。
源代码来自 https://salsa.debian.org/minicom-team/minicom. (注意不是 https://github.com/Distrotech/minicom 项目,这个项目很久没更新了,编译会出错)
按照 Readme 说明,运行 ./autogen.sh --> ./configure --> make,看是否可以编译通过,如果有错误,应该是有些开发包没有安装。
下面是两个 c 文件 src/config.c src/sysdep1.c 的修改 :
zhouxiaochen@zhouxiaendeMini minicom % git diff src/config.c
diff --git a/src/config.c b/src/config.c
index e57ad4d..d02e82e 100644
--- a/src/config.c
+++ b/src/config.c
@@ -1541,7 +1541,7 @@ const char *J_col[] =
static const unsigned int speeds[] =
{ 300, 1200, 2400, 4800, 9600,
- 19200, 38400, 57600, 115200, 230400,
+ 19200, 38400, 57600, 74800, 115200, 230400,
460800, 500000, 576000, 921600, 1000000,
1152000, 1500000, 2000000, 2500000, 3000000,
3500000, 4000000
zhouxiaochen@zhouxiaendeMini minicom % git diff src/sysdep1.c
diff --git a/src/sysdep1.c b/src/sysdep1.c
index 165d650..c8199a8 100644
--- a/src/sysdep1.c
+++ b/src/sysdep1.c
@@ -43,6 +43,11 @@
* This is for supporting higher baud rates on MacOS.
* Reference:
* https://github.com/npat-efault/picocom/blob/master/custbaud_bsd.h */
+
+#ifndef B74800
+#define B74800 74800
+#endif
+
#ifndef B460800
#define B460800 460800
#endif
@@ -425,6 +430,8 @@ unsigned m_getmaxspd(void)
return 230400;
#elif defined(B115200)
return 115200;
+#elif defined(B74800)
+ return 74800;
#elif defined(B57600)
return 57600;
#elif defined(B38400)
@@ -509,6 +516,9 @@ void m_setparms(int fd, char *baudr, char *par, char *bits, char *stopb,
#ifdef B57600
case 576: spd = B57600; break;
#endif
+#ifdef B74800
+ case 748: spd = B74800; break;
+#endif
#ifdef B115200
case 1152: spd = B115200; break;
#endif
重新编译后,运行 ./src/minicom -s 选择一个新的波特率 74800 即可,注意快捷键变成了 CTRL-A Z。
我没有用 make install 来安装,这样不会覆盖系统原先安装的 Minicom。两个 Minicom 都可以运行。

最下方的波特率显示 74800