打印
[应用相关]

夜深了,出个解决方案,让stm32f的CRC32主流化:

[复制链接]
5788|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
McuIsp|  楼主 | 2009-4-15 23:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//CopyRight:www.mcuisp.com
//版权: 单片机在线编程网
详细代码请到www.mcuisp.com下载
沙发
hotpower| | 2009-4-15 23:59 | 只看该作者

哈哈~~~McuIsp辛苦了,不过要考虑硬件成本,软件可以胡搞~~~

主流都是软件人瞎搞的~~~
相关链接:http://www.hotpower.org/HotPower_CRC.html

使用特权

评论回复
板凳
grant_jx| | 2009-4-16 00:27 | 只看该作者

辛苦了楼上的两位

一个“非主流CRC”PC端验证,整出一堆夜猫子。

使用特权

评论回复
地板
王紫豪| | 2009-4-16 07:33 | 只看该作者

现在流行非主流啊,哈哈

使用特权

评论回复
5
香水城| | 2009-4-16 08:27 | 只看该作者

哈哈,楼主这个CRC32主流化似乎是个非典应用

看看这个区别,最主要的是第1、2点:

//可以看出,stm32f与主流计算工具有三点差别:
//1、输入位序颠倒,只需数据输入前颠倒位序
//2、输出位序颠倒,获得结果后再颠倒回来。
//3、异或0xffffffff


哈哈,最终证实了我的怀疑——所谓主流化CRC32是个非典应用。

使用特权

评论回复
6
hotpower| | 2009-4-16 20:49 | 只看该作者

CRC32运算实际根本没如此复杂~~~有2种方法~~~

1.输入数据crcdword移动,菜农喜欢的方法,它实际与i的位置无关
function crc32l(crcdword)
{
var i,temp;
  for(i = 0; i < 32; i++){
    temp = crcvalue ^ crcdword;//记录方向端点(D31)
    crcvalue <<= 1;//前面已记录,此时不管三七二十一左移1次
    crcdword <<= 1;//此句可以在以下任何地方~~~
    if(temp & 0x80000000) {//方向端点跳变,需要变换,实际“左环移”
      crcvalue ^= crcval;//0x04C11DB7,注意D0肯定为1~~~
    }
//    crcdword <<= 1;//上面的写法可以看出它实际和crcvalue一起移动的。
  }
}

2.输入数据crcdword不移动,这估计是大多数人想到的~~~
  从上例可以看出,crcvalue和crcdword是一同移动的~~~
  它永远记录方向端点(D31),故和位置i无关
  这样就可以动态跟踪位置i的跳变

function crc32l(crcdword)
{
var i,temp;
  temp = crcvalue;//暂存CRC,应为它必须移动,但temp可以不移动
  for(i = 31; i >= 0; i--){
    crcvalue <<= 1;//不管三七二十一左移1次
//下面(1 << i)实际可以用xbit= 1<< 31;然后xbit>>=1,这里主要表现与位置i有关
    if((temp ^ crcdword) & (1 << i)) {//判断记录方向可变端点(D31~D0) 
      crcvalue ^= crcval;//0x04C11DB7,注意D0肯定为1~~~
    }
  }
}

可以看出例2在硬件上实现比例1难度增加,假若硬件是33位,那么程序可简化为:

function crc32l(crcdword)
{
var i;//省去temp;//i实际是32个脉冲时钟
  for(i = 32; i > 0; i--){//33位计数器,倒数肯定简单(与0比较)
    crcvalue <<= 1;//不管三七二十一左移1次,因为是33位的寄存器~~~
    crcdword <<= 1;//不管三七二十一左移1次,因为是33位的寄存器~~~
    if((crcvalue ^ crcdword) >= 0x100000000) {//记录方向端点(D32),硬件只需检测D32即可
      crcvalue ^= crcval;//0x04C11DB7,注意D0肯定为1~~~
    }
  }
}//出口是32位的CRC结果crcvalue,D32不输出,只输出D31~D0

相关链接:http://www.hotpower.org/HotPower_CRC.html

使用特权

评论回复
7
hotpower| | 2012-10-23 19:14 | 只看该作者
挖墓为2012.10.25菜农个人版《HotWC3密码体系》开版搜索

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

340

主题

4985

帖子

22

粉丝