说明
RK3568 实际上是支持mark,space校验的,问过FAE了。
TRM手册上是:

就会有设置Mark/Space要保证 启用校验 和 强制校验位 都启用,bit5 的 强制校验位 怎么是 reserved ? 是不支持嘛?的疑问。
FAE回复说:
# 手册不准确,实际是支持的c_cflag |= PARENB | PARODD | CMSPAR; // mark parity:校验位始终为1
c_cflag |= PARENB | CMSPAR; // space parity:校验位始终为0
步骤
就是说驱动是不用改的。
就用AI调整手写了一个程序:
https://gitee.com/qaq-cmd/Drivers-outside-the-kernel/blob/master/uart/ms_test1.c
该程序是首字节mark,后续字节是space,读取文件(每行为一帧)或者运行之后输入一行数据(为一帧)。
SDK内编译命令:
./prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc -o ./ms_test ./ms_test1.c -lpthread
把数据写到一个文本文件里面,然后运行即可
./ms_test 115200 123.txt
PS
简写
奇校验(Odd) 和 偶校验(Even)

这种首字节Mark校验(1) + 随后的数据Space校验(0) 的做法叫多机通信(Multi-drop / 9-bit address mode)。
