主题:[讨论] ESM3354 读取串口 性能瓶颈 共有101136人关注过本帖 |
---|
![]() barrypp |
1楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
[讨论] ESM3354 读取串口 性能瓶颈 ![]()
刚刚试了试,
程序仅仅读串口, 串口数据流量: 比较均匀的 32000字节/秒 就导致接近20%的cpu占用率,并且都是那个kworker占用的。 我不是很理解为啥会有这么高的cpu占用率?
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
2楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好:
3354的串口收发没有使用dma,所以收发数据都会占用CPU,CPU占用率就会比较高
使用top查看CPU占用率并不准确
[此贴子已经被作者于2017-1-25 13:15:21编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
3楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
除了top外,有哪些好用的开源工具来查看cpu占用率呢?
另外usb是不是也是这样的,接收数据时看起来cpu占用率也很高
[此贴子已经被作者于2017-1-25 15:07:31编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
4楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好
top是常用的了,CPU占用率计算的机制造成的占用率计算不准确,所有软件都一样的
usb有使用dma,USB数据量比较大
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
5楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
试了试FTDI的D2XX驱动。看起来cpu占用率依旧很高。开启DMA需要特殊的操作么?
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
6楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好,是否使用dma是驱动里面的代码决定的
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
7楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
根据https://e2e.ti.com/support/arm/sitara_arm/f/791/t/550336,http://processors.wiki.ti.com/index.php/Sitara_Linux_UART_-_Switching_to_8250_Driver,https://e2e.ti.com/support/embedded/linux/f/354/t/485284,似乎AM3354最新的驱动可以支持UART(H/W flow control) + DMA
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
8楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好,谢谢提供的信息,我们目前还没有支持使用dma,要支持使用dma的驱动我们还需要做些修改测试,有结果了会立即通知你
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
9楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
请问你需要支持硬件流控吗
|
单帖管理 | 引用 | 回复 ![]() |
barrypp |
10楼 |
![]() |
![]()
需要
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
11楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
需要硬件流控
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
12楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
我们只有COM2(ttyS1)有引出硬件流控的管脚,其他串口不支持硬件流控,需要硬件流控我们还要修改一下,现在dma的驱动已经测试了
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
13楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
使用硬件流控,如果CTS信号频繁变化的话,CPU占用率还是会很高的,处理CTS是在中断中,与是否使用DMA无关,我先给你发一个测试的,使用dma收发支持硬件流控,你测试一下,发你邮箱了barry-hp@163.com,
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
14楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
使用DMA后,串口的输入缓冲区依旧是4K么?
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
15楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
是对,除了使用dma收发数据,其他没有变化
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
16楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
使用dma后性能确实不错,同样的环境下,kworker仅有3%~5%
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
17楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
那就好,再次感谢你提供的串口dma驱动相关的信息
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
18楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
有个严重问题,使用新内核后,eta503的驱动就没法载入了
insmod 返回 can't insert '/lib/modules/4.1.6/eta503_seria.ko' : unkown symbol in module or invalid parameter
[此贴子已经被作者于2017-2-14 12:23:19编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
19楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
已经更新,邮件发给你了
|
单帖管理 | 引用 | 回复 ![]() |
![]() barrypp |
20楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
新的bug,eta503的驱动载入后,/dev目录下没有扩展串口
dmesg里的eta503驱动的信息是 [ 10.150791] ->eta503_serial_probe [ 10.154243] eta503_serial_probe: ETA503(4 ports) are found [ 10.159829] of_get_named_gpiod_flags: can't parse 'gpio-irq' property of node '/eta503[0]' [ 10.159845] eta503_uart eta503: can't get irq -2 [ 10.164488] <-eta503_serial_probe -2 [ 10.170294] eta503_uart: probe of eta503 failed with error -2 [此贴子已经被作者于2017-2-14 15:06:00编辑过]
|
单帖管理 | 引用 | 回复 ![]() |