arm7tdmi 发表于 2021-11-24 07:48:27

如何避免芯片串口接收大量数据导致死机?

有个STM32的芯片,用了:RT系统,串口接收10秒左右的大量数据后,会死机一段时间。数据有接收处理

qinxg 发表于 2021-11-24 08:32:39

串口这点数据量, STM32可以处理的过来. 检查下有咩有阻塞的地方.

68336016 发表于 2021-11-24 08:35:56

这10秒钟,你要接收多少字节的数据?

lb0857 发表于 2021-11-24 09:00:26

FIFO   评估一下数据大小   进行设置

2nd 发表于 2021-11-24 09:14:04

我在RT的命令行接口设的460.8K,键盘输入的可以识别,用连续发送就不行,中断方式接收性能有上限的,我这是命令行接口也就没有在意

wye11083 发表于 2021-11-24 09:29:45

本帖最后由 wye11083 于 2021-11-24 09:31 编辑

2nd 发表于 2021-11-24 09:14
我在RT的命令行接口设的460.8K,键盘输入的可以识别,用连续发送就不行,中断方式接收性能有上限的,我这是 ...

是的。uart没有dma很难受,中断一次起码0.5us,这是快的。就连stc都要至少10个周期(就填个fifo)。

为了实现串口更新固件的功能,我都给fpga加了1k的硬件fifo。要不然中断方式一个字节要浪费3us时间,啥也甭干了。

xinyou 发表于 2021-11-24 09:31:21

不知道你是怎么应用的,每秒钟200~300kbyte是没有问题的。

yuyu87 发表于 2021-11-24 10:11:59

如果波特率高的话要开启DMA,否则一直在中断里处理

lb0857 发表于 2021-11-24 10:25:56

死机   估计是数组越界啦{:lol:}{:lol:}{:lol:}

vuo50z 发表于 2021-11-24 10:33:23

丢数可以理解,死机肯定是软件问题,八成是内存问题,数组越界,堆栈溢出

yunqing_abc 发表于 2021-11-24 10:36:33

vuo50z 发表于 2021-11-24 10:33
丢数可以理解,死机肯定是软件问题,八成是内存问题,数组越界,堆栈溢出 ...

赞成。死机铁定是软件有问题。

蚁族 发表于 2021-11-24 12:24:29

大概率是你数组越界了;我之前在Freertos中;使用串口9600的波特率;升级480KB程序;未发现死机问题。

wye11083 发表于 2021-11-24 12:39:10

蚁族 发表于 2021-11-24 12:24
大概率是你数组越界了;我之前在Freertos中;使用串口9600的波特率;升级480KB程序;未发现死机问题。 ...

你这升级一次得小半个钟头了都。。中间万一断一下电就成真板砖了。

Romate 发表于 2021-11-24 14:32:27

wye11083 发表于 2021-11-24 12:39
你这升级一次得小半个钟头了都。。中间万一断一下电就成真板砖了。

你不会做备份啊,怎么会变砖,变砖是你软件没写好。或者做bootloader升级,这样怎么样都可以继续升。

蚁族 发表于 2021-11-24 15:11:47

wye11083 发表于 2021-11-24 12:39
你这升级一次得小半个钟头了都。。中间万一断一下电就成真板砖了。

没有那么慢;10分钟左右就结束了

wye11083 发表于 2021-11-24 15:37:41

Romate 发表于 2021-11-24 14:32
你不会做备份啊,怎么会变砖,变砖是你软件没写好。或者做bootloader升级,这样怎么样都可以继续升。 ...

做bootloader还行,但是我主要用FPGA。。这玩意变砖就真成硬砖头了。尤其是一些模组类的,没有USB芯片,不能在线更新,一旦变砖就只能拆开插下载线。

有USB的我统统做成在线升级的了。省事。

Romate 发表于 2021-11-24 20:11:15

wye11083 发表于 2021-11-24 15:37
做bootloader还行,但是我主要用FPGA。。这玩意变砖就真成硬砖头了。尤其是一些模组类的,没有USB芯片, ...

FPGA还真不知道,厉害我很佩服玩FPGA的

wye11083 发表于 2021-11-24 20:57:14

Romate 发表于 2021-11-24 20:11
FPGA还真不知道,厉害我很佩服玩FPGA的

用多了很淡疼的。。我这周调了一周时序bug,现在还没搞定,在特定平台上面出现奇怪的现象,总有一个图像传感器工作不正常,无语了。

xiaoergao 发表于 2021-11-25 21:48:26

使用DMA+空闲中断   再配合DMA的完全传输和半传输中断。这样使用下来很稳定,而且节约CPU资源。
页: [1]
查看完整版本: 如何避免芯片串口接收大量数据导致死机?