如何避免芯片串口接收大量数据导致死机?
有个STM32的芯片,用了:RT系统,串口接收10秒左右的大量数据后,会死机一段时间。数据有接收处理 串口这点数据量, STM32可以处理的过来. 检查下有咩有阻塞的地方. 这10秒钟,你要接收多少字节的数据? FIFO 评估一下数据大小 进行设置 我在RT的命令行接口设的460.8K,键盘输入的可以识别,用连续发送就不行,中断方式接收性能有上限的,我这是命令行接口也就没有在意 本帖最后由 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时间,啥也甭干了。 不知道你是怎么应用的,每秒钟200~300kbyte是没有问题的。 如果波特率高的话要开启DMA,否则一直在中断里处理 死机 估计是数组越界啦{:lol:}{:lol:}{:lol:} 丢数可以理解,死机肯定是软件问题,八成是内存问题,数组越界,堆栈溢出 vuo50z 发表于 2021-11-24 10:33
丢数可以理解,死机肯定是软件问题,八成是内存问题,数组越界,堆栈溢出 ...
赞成。死机铁定是软件有问题。 大概率是你数组越界了;我之前在Freertos中;使用串口9600的波特率;升级480KB程序;未发现死机问题。 蚁族 发表于 2021-11-24 12:24
大概率是你数组越界了;我之前在Freertos中;使用串口9600的波特率;升级480KB程序;未发现死机问题。 ...
你这升级一次得小半个钟头了都。。中间万一断一下电就成真板砖了。 wye11083 发表于 2021-11-24 12:39
你这升级一次得小半个钟头了都。。中间万一断一下电就成真板砖了。
你不会做备份啊,怎么会变砖,变砖是你软件没写好。或者做bootloader升级,这样怎么样都可以继续升。 wye11083 发表于 2021-11-24 12:39
你这升级一次得小半个钟头了都。。中间万一断一下电就成真板砖了。
没有那么慢;10分钟左右就结束了 Romate 发表于 2021-11-24 14:32
你不会做备份啊,怎么会变砖,变砖是你软件没写好。或者做bootloader升级,这样怎么样都可以继续升。 ...
做bootloader还行,但是我主要用FPGA。。这玩意变砖就真成硬砖头了。尤其是一些模组类的,没有USB芯片,不能在线更新,一旦变砖就只能拆开插下载线。
有USB的我统统做成在线升级的了。省事。 wye11083 发表于 2021-11-24 15:37
做bootloader还行,但是我主要用FPGA。。这玩意变砖就真成硬砖头了。尤其是一些模组类的,没有USB芯片, ...
FPGA还真不知道,厉害我很佩服玩FPGA的 Romate 发表于 2021-11-24 20:11
FPGA还真不知道,厉害我很佩服玩FPGA的
用多了很淡疼的。。我这周调了一周时序bug,现在还没搞定,在特定平台上面出现奇怪的现象,总有一个图像传感器工作不正常,无语了。 使用DMA+空闲中断 再配合DMA的完全传输和半传输中断。这样使用下来很稳定,而且节约CPU资源。
页:
[1]