/** * \brief Application entry point for CRCCU example. * * \return Unused (ANSI-C compatibility). */ int main(void) { uint32_t ul_counter; uint32_t ul_crc; /* Initialize the system */ sysclk_init(); board_init(); /* Configure the console uart */ configure_console(); /* Output example information */ puts(STRING_HEADER); /* Enable CRCCU peripheral clock */ pmc_enable_periph_clk(ID_CRCCU); /* Initialize flash: 6 wait states for flash writing. */ flash_init(FLASH_ACCESS_MODE_128, FLASH_WAIT_STATE_NBR); /* Unlock flash page. */ flash_unlock(FLASH_BUFFER_ADDRESS, FLASH_BUFFER_ADDRESS + IFLASH_PAGE_SIZE - 1, NULL, NULL); /* Fill data buffer in SRAM (The data may be random data) */ for (ul_counter = 0; ul_counter < BUFFER_LENGTH; ul_counter++) { g_uc_data_buf[ul_counter] = ul_counter; } #if SAM4S || SAMG55 /* Fill data buffer in Flash, the data is same as in SRAM */ #if SAM4S flash_erase_page(FLASH_BUFFER_ADDRESS, IFLASH_ERASE_PAGES_8); #else flash_erase_page(FLASH_BUFFER_ADDRESS, IFLASH_ERASE_PAGES_16); #endif flash_write(FLASH_BUFFER_ADDRESS, (void *)g_uc_data_buf, BUFFER_LENGTH, 0); #else flash_write(FLASH_BUFFER_ADDRESS, (void *)g_uc_data_buf, BUFFER_LENGTH, 1); #endif /* Test CRC with CCITT-16 polynomial */ puts("\n\r====Test CRC with CCITT 16 (0x1021) ====\r"); /* Compute CRC in SRAM */ puts("Test CRC in SRAM buffer\r"); ul_crc = compute_crc(g_uc_data_buf, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT16); /* Compute CRC in Flash and compare it with the result in SRAM */ puts("Test CRC in Flash buffer\r"); compute_crc_and_compare((uint8_t *) FLASH_BUFFER_ADDRESS, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT16, ul_crc); /* Test CRC with CASTAGNOLI polynomial */ puts("\n\r====Test CRC with CASTAGNOLI (0x1EDC6F41) ====\r"); /* Compute CRC in SRAM */ puts("Test CRC in SRAM buffer\r"); ul_crc = compute_crc(g_uc_data_buf, BUFFER_LENGTH, CRCCU_MR_PTYPE_CASTAGNOLI); /* Compute CRC in Flash and compare it with the result in SRAM */ puts("Test CRC in Flash buffer\r"); compute_crc_and_compare((uint8_t *) FLASH_BUFFER_ADDRESS, BUFFER_LENGTH, CRCCU_MR_PTYPE_CASTAGNOLI, ul_crc); /* Test CRC with CCITT 802.3 polynomial */ puts("\n\r====Test CRC with CCITT 802.3 (0x04C11DB7) ====\r"); /* Compute CRC in SRAM */ puts("Test CRC in SRAM buffer\r"); ul_crc = compute_crc(g_uc_data_buf, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT8023); /* Compute CRC in Flash and compare it with the result in SRAM */ puts("Test CRC in Flash buffer\r"); compute_crc_and_compare((uint8_t *) FLASH_BUFFER_ADDRESS, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT8023, ul_crc); while (1) { } }
/** * \brief Application entry point for CRCCU example. * * \return Unused (ANSI-C compatibility). */ int main(void) { uint32_t ul_counter; uint32_t ul_crc; /* Initialize the system */ sysclk_init(); board_init(); /* Configure the console uart */ configure_console(); /* Output example information */ puts(STRING_HEADER); /* Enable CRCCU peripheral clock */ sysclk_enable_peripheral_clock(CRCCU); /* Fill data buffer in SRAM (The data may be random data) */ for (ul_counter = 0; ul_counter < BUFFER_LENGTH; ul_counter++) { g_uc_data_buf[ul_counter] = ul_counter; } /* Fill data buffer in Flash, the data is same as in SRAM */ flashcalw_memcpy((void *)FLASH_BUFFER_ADDRESS, g_uc_data_buf, sizeof(g_uc_data_buf), true); /* Test CRC with CCITT-16 polynomial */ puts("\n\r====Test CRC with CCITT 16 (0x1021) ====\r"); /* Compute CRC in SRAM */ puts("Test CRC in SRAM buffer\r"); ul_crc = compute_crc(g_uc_data_buf, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT16); /* Compute CRC in Flash and compare it with the result in SRAM */ puts("Test CRC in Flash buffer\r"); compute_crc_and_compare((uint8_t *) FLASH_BUFFER_ADDRESS, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT16, ul_crc); /* Test CRC with CASTAGNOLI polynomial */ puts("\n\r====Test CRC with CASTAGNOLI (0x1EDC6F41) ====\r"); /* Compute CRC in SRAM */ puts("Test CRC in SRAM buffer\r"); ul_crc = compute_crc(g_uc_data_buf, BUFFER_LENGTH, CRCCU_MR_PTYPE_CASTAGNOLI); /* Compute CRC in Flash and compare it with the result in SRAM */ puts("Test CRC in Flash buffer\r"); compute_crc_and_compare((uint8_t *) FLASH_BUFFER_ADDRESS, BUFFER_LENGTH, CRCCU_MR_PTYPE_CASTAGNOLI, ul_crc); /* Test CRC with CCITT 802.3 polynomial */ puts("\n\r====Test CRC with CCITT 802.3 (0x04C11DB7) ====\r"); /* Compute CRC in SRAM */ puts("Test CRC in SRAM buffer\r"); ul_crc = compute_crc(g_uc_data_buf, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT8023); /* Compute CRC in Flash and compare it with the result in SRAM */ puts("Test CRC in Flash buffer\r"); compute_crc_and_compare((uint8_t *) FLASH_BUFFER_ADDRESS, BUFFER_LENGTH, CRCCU_MR_PTYPE_CCITT8023, ul_crc); while (1) { } }