硬汉嵌入式论坛

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

[有问必答] DM9000读写索引问题

[复制链接]

1

主题

17

回帖

20

积分

新手上路

积分
20
发表于 2023-4-6 16:24:53 | 显示全部楼层 |阅读模式
本帖最后由 wade_szcn 于 2023-4-6 16:31 编辑

版主、各位好!

今天在407板子上调试DM9000,从芯片读出的“读/写索引”,会出现索引错误情形。驱动代码采用的是安富来的典型驱动程序。

打开宏定义 FifoPointCheck;程序会进入if,停在断点处
发送函数里会频繁发生(有时会导致DM9K芯片宕机,无法ping通,需复位芯片);接收函数里偶尔出现。




#ifdef FifoPointCheck
        if(calc_MWR != ((ior(DM9000_REG_MWRH) << 8) + ior(DM9000_REG_MWRL)))
        {
#ifdef Point_Error_Reset
                /* 若是指针出错,等待此一封包送完 , 之後进行重置 */
                while(ior(DM9000_REG_TCR) & DM9000_TCR_SET) dm9k_udelay (5);
                dm9k_reset();
                return;
#endif
                /*若是指针出错,将指针移到下一个传送包的包头位置  */
                iow(DM9000_REG_MWRH, (calc_MWR >> 8) & 0xff);
                iow(DM9000_REG_MWRL, calc_MWR & 0xff);
        }
#endif


对比过STM和中科芯407(代码一致),中科芯出现的频率很高,约3-5分钟出现一次,STM因为测试次数少不是很确定,可能10-20分钟出现一次
请问哪些条件下会导致这种现象?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-4-7 00:39:37 | 显示全部楼层
可以调节下总线速度试试。像F407驱动的话,修改下FSMC配置时序会好很多。
回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2023-4-7 07:34:59 | 显示全部楼层
谢谢
FSMC时序也进行了调整,没有效果
回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2023-4-24 07:58:13 | 显示全部楼层
问题找到,结贴了
回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2023-4-24 08:05:54 | 显示全部楼层
问题找到,结贴了
主要原因,DM9K正常收发时,采用semp信号量做互斥保护。后来在动态监视DM9K的LINK状态时,未进行保护,导致问题出现
结论:DM9K收发操作内部SRAM的索引自加,连续读写报文数据时可能会跟其他操作REG冲突。所以建议做防护,避免异常
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-4-25 09:52:42 | 显示全部楼层
wade_szcn 发表于 2023-4-24 08:05
问题找到,结贴了
主要原因,DM9K正常收发时,采用semp信号量做互斥保护。后来在动态监视DM9K的LINK状态时 ...

谢谢告知最终原因。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 00:01 , Processed in 0.307878 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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