From ac31c962bdbc77219af082d7912b12835bbed554 Mon Sep 17 00:00:00 2001 From: Zaltora Date: Sun, 12 Feb 2017 18:55:01 +0100 Subject: [PATCH] Update example and fix submodule --- examples/crc_example/crc_config_perso.h | 2 +- examples/crc_example/crc_main.c | 98 ++++++++++++++++++++----- extras/crc_generic/crc_lib | 2 +- 3 files changed, 81 insertions(+), 21 deletions(-) diff --git a/examples/crc_example/crc_config_perso.h b/examples/crc_example/crc_config_perso.h index 1f44f80..4f4b97d 100644 --- a/examples/crc_example/crc_config_perso.h +++ b/examples/crc_example/crc_config_perso.h @@ -8,7 +8,7 @@ #include "espressif/esp_common.h" #include "FreeRTOS.h" -#define CRC_DEBUG 1 +#define CRC_DEBUG 0 #define CRC_4BYTE_SUPPORT 0 /* Use the defaults for everything else */ #include_next "crc_config.h" diff --git a/examples/crc_example/crc_main.c b/examples/crc_example/crc_main.c index f0ca29b..ae42e31 100644 --- a/examples/crc_example/crc_main.c +++ b/examples/crc_example/crc_main.c @@ -1,5 +1,5 @@ /* - * Example code to test i2c link + * Example code to test crc and speed */ /////////////////////////////////Lib #include "espressif/esp_common.h" @@ -7,33 +7,30 @@ #include "FreeRTOS.h" #include "task.h" #include "esp8266.h" +#include //extras #include "crc_config_perso.h" +#define NUMBER_COMPUTE_TEST 1000 + unsigned char check_data[] = { "123456789" }; +uint8_t tab_data[512]; // void crc_8bit(void *pvParameters) { config_crc_8 customcrc ; // my crc object - crc_8 tabsrc[256]; // my crc kook-up table + uint8_t tabsrc[256]; // my crc look-up table + //init crc parameters (MAXIM parameters) crc_8_generic_init(&customcrc,0x31, 8, 0x00, 0x00, 1, 1, 1); // Use table algorithm / generate table crc_8_generic_select_algo(&customcrc, tabsrc, CRC_TABLE, 0); - //show table - printf("tabsrc[256] = {"); - for (crc_16 i = 0 ; i < 256 ; i++) - { - if(!(i%8)) printf("\n"); - printf("0x%02X, ",tabsrc[i]); - } - printf("\n};\n"); //show setting of crc - printf("CRC library v1.0 written on 11/02/2017 by Zaltora\n"); + printf("\nCRC library v1.0 written on 11/02/2017 by Zaltora\n"); printf("-------------------------------------------------\n"); printf("\n"); printf("Parameters:\n"); @@ -47,9 +44,23 @@ void crc_8bit(void *pvParameters) { printf("\n"); printf("check_data : '%s' (%d bytes)\n", check_data, sizeof(check_data)); printf("\n"); - printf("Results:\n"); + + + //show table + printf("Lookup table generated:\n"); + printf("\n"); + printf("tabsrc[256] = {"); + for (uint16_t i = 0 ; i < 256 ; i++) + { + if(!(i%8)) printf("\n"); + printf("0x%02X, ",tabsrc[i]); + } + printf("\n};\n\n"); + + printf("Check value results with all algorithms:\n"); printf("\n"); + //try different crc algorithm crc_8_generic_select_algo(&customcrc, (crc_8*)tabsrc, CRC_TABLE, 0); printf("CRC_TABLE\t\t: 0x%02X\n", crc_8_generic_compute(&customcrc, check_data, sizeof(check_data))); crc_8_generic_select_algo(&customcrc, (crc_8*)tabsrc, CRC_TABLE_FAST, 0); @@ -59,24 +70,73 @@ void crc_8bit(void *pvParameters) { crc_8_generic_select_algo(&customcrc, NULL, CRC_BIT_TO_BIT_FAST, 0); printf("CRC_BIT_TO_BIT_FAST\t: 0x%02X\n", crc_8_generic_compute(&customcrc, check_data, sizeof(check_data))); crc_8_generic_select_algo(&customcrc, (crc_8*)crc_8_tab_MAXIM, CRC_TABLE_FAST, 1); - printf("CRC_TABLE_BUILTIN\t\t: 0x%02X\n", crc_8_generic_compute(&customcrc, check_data, sizeof(check_data))); + printf("CRC_TABLE_BUILTIN\t: 0x%02X\n\n", crc_8_generic_compute(&customcrc, check_data, sizeof(check_data))); - vTaskDelay(2000 / portTICK_PERIOD_MS) ; + printf("Test speed algorithms with random data:\n"); + printf("\n"); + + //data to process + printf("%u bytes of DATA:",sizeof(tab_data)); + for (uint16_t i = 0 ; i < sizeof(tab_data) ; i++) + { + tab_data[i] = (uint8_t)hwrand(); + if(!(i%32)) printf("\n"); + printf("%02X",tab_data[i]); + } + printf("\n\n"); + + const uint32_t cst = NUMBER_COMPUTE_TEST ; + char algo_txt[30] ; + uint32_t time = 0; + uint8_t select = 0; + uint8_t result = 0; + for(select = 0; select < 5 ; select++) + { + switch(select){ + case 0: + crc_8_generic_select_algo(&customcrc, NULL, CRC_BIT_TO_BIT, 0); + sprintf(algo_txt,"CRC_BIT_TO_BIT"); + break; + case 1: + crc_8_generic_select_algo(&customcrc, NULL, CRC_BIT_TO_BIT_FAST, 0); + sprintf(algo_txt,"CRC_BIT_TO_BIT_FAST"); + break; + case 2: + crc_8_generic_select_algo(&customcrc, tabsrc, CRC_TABLE, 0); + sprintf(algo_txt,"CRC_TABLE"); + break; + case 3: + crc_8_generic_select_algo(&customcrc, tabsrc, CRC_TABLE_FAST, 0); + sprintf(algo_txt,"CRC_TABLE_FAST"); + break; + case 4: + crc_8_generic_select_algo(&customcrc, (crc_8*)crc_8_tab_MAXIM, CRC_TABLE_FAST, 1); + sprintf(algo_txt,"CRC_TABLE_FAST_BUILTIN"); + break; + } + vTaskDelay(1000 / portTICK_PERIOD_MS) ; + printf("test speed algorithm %s \n",algo_txt); + time = sdk_system_get_time(); + for (uint32_t i = 0 ; i < cst ; i++) + { + result = crc_8_generic_compute(&customcrc, tab_data, sizeof(tab_data)); + } + time = sdk_system_get_time()-time ; + printf("Speed algorithm: %.3f us\n",(float)time/(float)cst); + printf("Result algorithm: %02X\n\n",result); + } while (1) { - - vTaskDelay(1000 / portTICK_PERIOD_MS) ; + vTaskDelay(10000 / portTICK_PERIOD_MS) ; } } void user_init(void) { sdk_system_update_cpu_freq(160); - uart_set_baud(0, 115200); printf("SDK version:%s\n", sdk_system_get_sdk_version()); printf("Start\n\n"); - + vTaskDelay(2000 / portTICK_PERIOD_MS) ; xTaskCreate(crc_8bit, "crc_8bit", 512, NULL, 2, NULL); - } diff --git a/extras/crc_generic/crc_lib b/extras/crc_generic/crc_lib index 6f9a25c..a3b902a 160000 --- a/extras/crc_generic/crc_lib +++ b/extras/crc_generic/crc_lib @@ -1 +1 @@ -Subproject commit 6f9a25c016a03fc4664b37e70bf6c68fa4343c22 +Subproject commit a3b902a53216b1378e5cc856ed1dfc3ffd38bc09