看了你们的资料,介绍了CRC在DMA应用,请问CRC模块还有什么其他的应用?可不可以用于内存CRC检测?,那该怎样怎样检测,流程是什么?,,
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
看了你们的资料,介绍了CRC在DMA应用,请问CRC模块还有什么其他的应用?可不可以用于内存CRC检测?,那该怎样怎样检测,流程是什么?,,
Hi Ron,
CRC模块式做循环冗余校验计算用的模块,一般情况下,用来做内存数据完整性(正确性)的测试。
按百度百科的说法,这种算法“所不能发现的错误的几率仅为0.0047%以下”,相比简单的校验和计算,它的有效性要强得多。
比如,系统上电后,需要运行外部RAM中的程序之前,先对其做CRC校验,来验证其中程序的正确性,避免出现程序损坏的问题。
或者,系统在线更新过程中,从例如以太网上接收了新的应用程序,向Flash烧写以前,可能要做一下CRC校验,以免数据流在传输过程中有损坏。
流程就是您提到的,DMA那个了。
说白了就是每次把一个内存中的数据放入CRC模块进行计算累加,每处理一个数据就接下来处理下一个内存单元中的数据,一般可能1KB为一个单位。
所以,最佳方法是用DMA一个一个把数据按顺序从内存读取并放入CRC模块,这样可以最大程度降低CPU的负载。
我们的CRC模块支持不同工作模式,当然,如果你愿意,也可以用CPU把数据一个一个运送到CRC模块中。