- 主题:Re: CH340驱动很占用CPU资源,如何破?
re
cp210x什么的, 都试试呗
【 在 laserwin355 (laserwin355) 的大作中提到: 】
建议测一下FTDI的串口方案,看看cpu占用有没有区别,这样可以判断到底是ch340驱动的问题,还是你们应用层的问题。我经常基于串口做上位机开发,windows或linux下都没有发现cpu占用明显提高的情况。个人怀疑是测试程序的问题。
【 在 feiy 的大作中提到: 】
: 测试发现,CH340的驱动,似乎很消耗CPU资源。
:
: 测试方法:插上基于CH340的USB串口,通信时会发现,CPU占用率明显会比较高,多插几
: 个基于CH340的USB串口一起访问时,会看到CPU的温度会因为CPU的消耗迅速上升。
:
: 测试系统: Windows7
: ..................
发自「今日水木 on LYA-AL00」
--
FROM 63.210.148.*
据说CH340现在里面就是CH55x MCU模拟的
【 在 lvsoft (Lv(The Last Guardian)) 的大作中提到: 】
这个就是拍脑袋了。CPU占用率高只有两个原因,一个是驱动写的烂,
另一个是硬件为了cost down少了点啥,用软件模拟。
【 在 jaralist 的大作中提到: 】
: 这个应该和你的数据带宽、ch340的缓冲区大小都有关系。
: cpu占用高不一定是坏处。有可能是这样不容易丢数据
--
FROM 63.210.148.*
直接用500000波特率呗
CH340G和CP2102x跑1.5Mbps也没问题的, 免晶振的CH340*不行
【 在 lvsoft (Lv(The Last Guardian)) 的大作中提到: 】
新的代码,这次会对读回来的实际数据流的带宽进行计量。
之前的写法是半双工的,实际带宽依赖驱动实现。我测了下只跑到了115200理论带宽的70%左右。
要发挥全部性能得多线程或者异步,写起来太麻烦了。我这里偷懒直接把波特率翻倍,这样达到了19700Byte/s的实测速度,肯定超过115200了,CPU占用率在A53核上大概是7%上下。不过现在的代码复杂度比之前高了。如果把测速这块去掉,还是用之前的最简单的代码直接在230400波特率下跑,CPU的占用率没明显变化,图就不贴了,和之前完全一样看不出差别。
import serial
from tqdm.auto import tqdm
from tqdm.utils import CallbackIOWrapper
s = serial.Serial('/dev/ttyUSB0', 115200*2)
with tqdm(unit="B") as t:
f = CallbackIOWrapper(t.update, s, "read")
while True:
s.write(b"abcdefg" * 200)
l = f.read(6 * 200)
assert(len(l)==6*200)
【 在 lvsoft 的大作中提到: 】
: 额...这个CPU太弱了...
: 我这里已经找不到这么弱的CPU了...
: 找了块rk3399测下。 N2840 大概比Z8350快30%,但rk3399的A72单核心比Z8350快100%,但A53大概只相当于A72的1/3。综合来看rk3399的A53应该和N2840差不多。
: ...................
--
FROM 67.198.237.*