请教 如何在rt_thread中使用STM32内置的硬件的CRC计算模块
正在用rt_thread做以太网通讯,通讯数据需要用到32位CRC校验,查到STM32中有内置的硬件的CRC计算模块,可不知在rt_thread如何使用,找不到CRC_CR 、CRC_DR在哪定义,如没有定义,要使用的话该在哪定义?请各位前辈指点一二。 SVN中的STM32F107/207的以太网驱动已经打开了硬件校验,可以直接关闭LWIP的校验.如果不使用内置的以太网MAC.则自己用硬件CRC取代LWIP的校验函数. 多谢aozima指点,不过我用的是STM32F103,应该如何处理? 去看STM32的参考手册,硬件用法与RT-Thread无关,原来怎么用现在一样用.
如果有多个线程可能会同时使用CRC计算单元,则还需要做资源互斥.
如果是使用DM9000AEP或是AX88796等硬件MAC,则可以使能其硬件checksum.
如果网络全速收发,使用硬件checksum在STM32上面有10%左右的性能提升. 非常感谢,我再看看参考手册,刚开始用STM32,惭愧。./emotion/em119.gif 貌似把CRC->DR错写为CRC_DR了,试一下是否正常计算。 aozima 发表于 2011-10-15 11:58 static/image/common/back.gif
SVN中的STM32F107/207的以太网驱动已经打开了硬件校验,可以直接关闭LWIP的校验.
如果不使用内置的以太网MA ...
RTT 1.1.0stm32f20xMDKLWIP DP83848 当打开#define CHECKSUM_BY_HARDWARE宏时,ping不通,抓包如下
当关闭#define CHECKSUM_BY_HARDWARE宏,可以ping通了。
查阅网络资料有的人的情况和我相反,他打开硬件校验宏就会出问题。请问版主,这会是原因啊?
RT-Thread 1.1.0 正式版本发布
wangpeng_521 发表于 2013-1-2 15:42 static/image/common/back.gifRTT 1.1.0stm32f20xMDKLWIP DP83848 当打开#define CHECKSUM_BY_HARDWARE宏时,ping不通,抓包如下 ...
可以对比一下107和20x,40x的网络驱动,看里面ICMP的校验清掉了没有。
硬件校验要求校验值位置必须为0,而LWIP的ICMP的校验是没有开关的,所以需要人工清掉。
页:
[1]