ADI 技术
直播中

韩刚龙

7年用户 1014经验值
私信 关注
[问答]

ADSP SHARC函数不能生成正确的CRC16

我发现下面的函数不能生成正确的CRC16结果,调试发现,
虽然进行了强制类型转换unsigned char *code = (unsigned char *)data;
但是对code++;仍旧对指针移动的4字节。

是由于SHARC的架构支持的最小寻址单位是32bit??
还是CCES生成的代码问题?如果使用汇编做基址变址寻址是否可以寻址到字节呢?

unsigned short int CRC16_Table(void *data,unsigned char len)
{
    unsigned char *code = (unsigned char *)data;
    unsigned short int  crc16 = 0xFFFF;
    unsigned char crcregister;
    unsigned char data0;
    for( ; len > 0; len--)
    {
        crcregister = (crc16 >> 8) & 0x000000FF;
        crc16 = (crc16 << 8) & 0x0000FF00;
        data0 = (*(unsigned char *)code)&0x000000FF;
        crc16 = (crc16 ^ crc16_tab[(crcregister ^ ((*code)&0x000000FF)) & 0x000000FF]) & 0x0000FFFF;
        (unsigned char *)code++;
    }
    return(crc16);
}

回帖(1)

袁喆

2019-3-1 14:52:03
你好!
 
SHARC 支持的数据类型CHAR,SHORT INT, INT 都是32位的。
具体你可以参看SHARC 的compiler手册。
 
举报

更多回帖

发帖
×
20
完善资料,
赚取积分