Embedded Artists
We are the leading providers of products and services around prototyping, evaluation and OEM platforms using NXP's ARM-based microcontrollers.
LPC4088DM Using CRC
The LPC4088 MCU on the display modules has a Cyclic Redundancy Check (CRC) generator described in detail the LPC4088 User Manual, found here.
The DMSupport library has a CRC class to make it easier to calculate the checksum.
The checksum is used when the BIOS is loaded to make sure it is not corrupted.
A small example using the CRC:
#include "mbed.h" #include "DMBoard.h" #include "crc.h" void main() { // initialize DMBoard... // Calculate checksum on the entire file /mci/firmware.bin FILE* f = fopen("/mci/firmware.bin", "r"); if (f == NULL) { DMBoard::instance().logger()->printf("Failed to open /mci/firmware.bin\n"); } else { uint32_t crcFirmware = crc_File(f); fclose(f); DMBoard::instance().logger()->printf("CRC32 checksum of /mci/firmware.bin is 0x%08x\n", crcFirmware); } // Calulate the checksum of the string "Hello World!" uint32_t crcHello = crc_Buffer((uint32_t*)"Hello World!", strlen("Hello World!")); DMBoard::instance().logger()->printf("CRC32 checksum of \"Hello World!\" is 0x%08x\n", crcHello); }