ZHCU875Z August 2001 – October 2023 SM320F28335-EP
/*****************************************************************************/
/* crc_tbl.h */
/* */
/* 初步 - 可随时更改 */
/* 可由链接器自动生成的 CRC 表数据结构的规范 */
/* (使用链接器命令文件中的 crc_table() 操作符)。 */
/* */
/*****************************************************************************/
/* 链接器使用的 CRC 生成器基于以下文档中的概念: */
/* */
/* "A Painless Guide to CRC Error Detection Algorithms" */
/* */
/* Author : Ross Williams (ross@guest.adelaide.edu.au.). */
/* Date : 3 June 1993. */
/* Status : Public domain (C code). */
/* */
/* 说明:有关 Rocksoft^tm 模型 CRC 算法的更多信息, */
/* 请参阅 Ross Williams (ross@guest.adelaide.edu.au.) 撰写的 */
/* 文档“A Painless Guide to CRC Error Detection Algorithms”。 */
/* 该文档可能位于 "ftp.adelaide.edu.au/pub/rocksoft" 或 */
/* http:www.ross.net/crc/download/crc_v3.txt。 */
/* */
/* 注:Rocksoft 是澳大利亚阿德莱德 Rocksoft Pty Ltd 公司的商标。 */
/*****************************************************************************/
#include <stdint.h> /* For uintXX_t */
/*****************************************************************************/
/* CRC 算法说明符 */
/* */
/* 链接器使用基于上述引用的文档的下述规范 */
/* 来生成 CRC 值。 */
/* */
/* ID Name Order Polynomial Initial Ref Ref CRC XOR Zero */
/* Value In Out Value Pad */
/*-------------------------------------------------------------------------- */
/* 0, "CRC32_PRIME", 32, 0x04c11db7, 0x00000000, 0, 0, 0x00000000, 1 */
/* 1, "CRC16_802_15_4", 16, 0x00001021, 0x00000000, 0, 0, 0x00000000, 1 */
/* 2, "CRC16_ALT", 16, 0x00008005, 0x00000000, 0, 0, 0x00000000, 1 */
/* 3, "CRC8_PRIME", 8, 0x00000007, 0x00000000, 0, 0, 0x00000000, 1 */
/* */
/* 用户应在链接器命令文件中指定名称,例如 CRC32_PRIME。 */
/* 生成的 CRC_RECORD 结构将在 */
/* crc_alg_ID 字段中包含相应的 ID 值。 */
/*****************************************************************************/
#define CRC32_PRIME 0 /* Poly = 0x04c11db7 */ /* DEFAULT ALGORITHM */
#define CRC16_802_15_4 1 /* Poly = 0x00001021 */
#define CRC16_ALT 2 /* Poly = 0x00008005 */
#define CRC8_PRIME 3 /* Poly = 0x00000007 */
/*********************************************************/
/* CRC 记录数据结构 */
/* 注:字段列表和每个字段的大小 */
/* 因目标和存储器模型而异。 */
/*********************************************************/
typedef struct crc_record
{
uint16_t crc_alg_ID; /* CRC 算法 ID */
uint16_t page_id; /* 数据页数 */
uint32_t addr; /* 起始地址 */
uint32_t size; /* 16 位单元数据大小 */
uint32_t crc_value;
} CRC_RECORD;
/*********************************************************/
/* CRC 表数据结构 */
/*********************************************************/
typedef struct crc_table
{
uint16_t rec_size;
uint16_t num_recs;
CRC_RECORD recs[1];
} CRC_TABLE;