硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1203|回复: 11
收起左侧

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

[复制链接]

9

主题

32

回帖

59

积分

初级会员

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2022-12-13 00:52:16 | 显示全部楼层
是最新版HAL库吗,之前版本的ETH驱动有bug
回复

使用道具 举报

9

主题

32

回帖

59

积分

初级会员

积分
59
 楼主| 发表于 2022-12-13 09:14:53 | 显示全部楼层
eric2013 发表于 2022-12-13 00:52
是最新版HAL库吗,之前版本的ETH驱动有bug

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

使用道具 举报

3

主题

48

回帖

57

积分

初级会员

积分
57
发表于 2022-12-13 09:21:07 | 显示全部楼层
你标题和你说的怎么是反的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2022-12-13 10:34:19 | 显示全部楼层
bigbigcong 发表于 2022-12-13 09:21
你标题和你说的怎么是反的

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2022-12-13 10:34:45 | 显示全部楼层
zhangzhang 发表于 2022-12-13 09:14
用的1.9的,我今天试试用最新的

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

使用道具 举报

9

主题

32

回帖

59

积分

初级会员

积分
59
 楼主| 发表于 2022-12-13 11:17:24 | 显示全部楼层
bigbigcong 发表于 2022-12-13 09:21
你标题和你说的怎么是反的

对的,写反了
回复

使用道具 举报

9

主题

32

回帖

59

积分

初级会员

积分
59
 楼主| 发表于 2022-12-13 11:23:57 | 显示全部楼层
eric2013 发表于 2022-12-13 10:34
1.9那没问题,估计你的工程模板有点问题。

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2022-12-14 10:26:52 | 显示全部楼层
zhangzhang 发表于 2022-12-13 11:23
对eth了解不多,所以使用cubemx生成了基础版的,按照网上例程加了以太网数据收发,以太网部分别的都没动 ...

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

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

使用道具 举报

9

主题

32

回帖

59

积分

初级会员

积分
59
 楼主| 发表于 2022-12-19 09:35:58 | 显示全部楼层
eric2013 发表于 2022-12-14 10:26
那看来移植确实有问题,都已经涉及到HAL ETH的修改了。

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

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2022-12-19 11:05:00 | 显示全部楼层
zhangzhang 发表于 2022-12-19 09:35
还是没解决,懵的地方有点多,跑着跑着Hal时基中断中每ms加1变成加0了,看了下会更改这个uwTickFreq值的 ...

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

使用道具 举报

9

主题

32

回帖

59

积分

初级会员

积分
59
 楼主| 发表于 2022-12-19 14:54:04 | 显示全部楼层
eric2013 发表于 2022-12-19 11:05
如果用到了事件标志组,这个要有必要搞高点。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 16:36 , Processed in 0.198268 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表