zhangzhang 发表于 2022-12-12 18:56:03

freertos+lwip,运行一段时间后DMADSR寄存器由6400变为6300

STM32H7+FreeRtos+LWIP,运行一段时间后在HAL_ETH_Transmit返回HAL_ETH_ERROR_BUSY,异常后执行关ETH中断再开ETH中断问题依旧存在,通过对比异常前后寄存器的值,发现DMADSR值由0x6300变为0x6400,表明ETH接收由接受中变为了保留供将来使用,DMAISR由0变为1,看数据手册应该是软件没读取相应寄存器,想问下这种情况原因是不是中断优先级太低,导致软件没读相应数据,还是别的原因,目前freeRTOS的可管理的最高中断优先级为5,配置的ETH中断优先级为6,另有部分中断,中断优先级不小于5,设置了两个任务。

eric2013 发表于 2022-12-13 00:52:16

是最新版HAL库吗,之前版本的ETH驱动有bug

zhangzhang 发表于 2022-12-13 09:14:53

eric2013 发表于 2022-12-13 00:52
是最新版HAL库吗,之前版本的ETH驱动有bug

用的1.9的,我今天试试用最新的

bigbigcong 发表于 2022-12-13 09:21:07

你标题和你说的怎么是反的

eric2013 发表于 2022-12-13 10:34:19

bigbigcong 发表于 2022-12-13 09:21
你标题和你说的怎么是反的

还是你看的仔细,我都没留意到他写反了。

eric2013 发表于 2022-12-13 10:34:45

zhangzhang 发表于 2022-12-13 09:14
用的1.9的,我今天试试用最新的

1.9那没问题,估计你的工程模板有点问题。

zhangzhang 发表于 2022-12-13 11:17:24

bigbigcong 发表于 2022-12-13 09:21
你标题和你说的怎么是反的

对的,写反了

zhangzhang 发表于 2022-12-13 11:23:57

eric2013 发表于 2022-12-13 10:34
1.9那没问题,估计你的工程模板有点问题。

对eth了解不多,所以使用cubemx生成了基础版的,按照网上例程加了以太网数据收发,以太网部分别的都没动,目前改了hal_eth.c的部分函数,跑了一个半小时了,暂时没崩,看下能否再坚持六七个小时

eric2013 发表于 2022-12-14 10:26:52

zhangzhang 发表于 2022-12-13 11:23
对eth了解不多,所以使用cubemx生成了基础版的,按照网上例程加了以太网数据收发,以太网部分别的都没动 ...

那看来移植确实有问题,都已经涉及到HAL ETH的修改了。

实际上这个驱动不用做任何修改的,除非你是老版本的HAL

zhangzhang 发表于 2022-12-19 09:35:58

eric2013 发表于 2022-12-14 10:26
那看来移植确实有问题,都已经涉及到HAL ETH的修改了。

实际上这个驱动不用做任何修改的,除非你是老 ...

还是没解决,懵的地方有点多,跑着跑着Hal时基中断中每ms加1变成加0了,看了下会更改这个uwTickFreq值的函数,又没调用,搞不太明白就直接把时基中断改为固定加一,这时候以太网发送超时能出来了(之前一直加0触发不了超时),大佬,想问下configTIMER_TASK_PRIORITY这个时基优先级需要配置的很高吗

eric2013 发表于 2022-12-19 11:05:00

zhangzhang 发表于 2022-12-19 09:35
还是没解决,懵的地方有点多,跑着跑着Hal时基中断中每ms加1变成加0了,看了下会更改这个uwTickFreq值的 ...

如果用到了事件标志组,这个要有必要搞高点。

zhangzhang 发表于 2022-12-19 14:54:04

eric2013 发表于 2022-12-19 11:05
如果用到了事件标志组,这个要有必要搞高点。

页: [1]
查看完整版本: freertos+lwip,运行一段时间后DMADSR寄存器由6400变为6300