已回答假定已回答

关于ADSP SHARC 数据长度问题请教

tianchangming 在 2015-1-29 詢問的問題
最後回覆由Sue.Wu於2015-2-4提供

我发现下面的函数不能生成正确的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);

}

結果