diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.c index 992af05e5207a4b90f7a163e115d1d034d75ce92..5df9072d1b3a6c3772acbcab2730e58623017179 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.h index 69ae05bcba985c53a7217bd9c2f1ad848b8c250a..0353f0c7c9cfa239ece3531873d500eadb75336f 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_adc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_can.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_can.c index bc52daf367027288e5eb68c3e00842eb5dbcf837..b42455aa22154ebfa49f0abc72f273746bf8e905 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_can.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_can.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2022, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_can.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_can.h index 9c3c65932ddd26234ca10a33368ce2662e6b65e1..8342b9ae245193335174b3572e6024bc0d1ce1ac 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_can.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_can.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2022, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.c index 9af2d83e60f8d121bda1ac4399ff8aca152b64fb..e05fb58207b0c9b54dfd9021bb76b1cd742b17dc 100755 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.h index d61d64fc8ca166b7dcf66b03d7ee314d311217ff..f8c4f7f76b64550a4e38fc6cb68c2f187fa2b246 100755 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_clk.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_common.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_common.c index d70dfb2789f47b3e21afe8a5ce4665a942e36a1e..723dcddf1c818fe413a4f811af78377e9ccc38db 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_common.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_common.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_common.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_common.h index 9fb8b211d783fc2477e8edfd7c9a8ab2101948e8..fdec52ed445c59b8c4ae9607feea771dabb1ecee 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_common.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_common.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.c index 98523c22f8ba3dd6c18304259853f1b63163f16f..debf00c747191d4c184f9a0e91823db049186c79 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.c @@ -1,416 +1,416 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-21 wolfJane first version - */ - -#include -#include "drv_crypto.h" - -#ifdef RT_USING_HWCRYPTO - -#define DRV_DEBUG -#define LOG_TAG "drv.crypto" -#include - -#ifdef RT_HWCRYPTO_USING_CRC - #define BSP_USING_CRC -#endif - -static uint16_t _reverse_16bit(uint16_t x) -{ - x = (((x & 0xaaaa) >> 1) | ((x & 0x5555) << 1)); - x = (((x & 0xcccc) >> 2) | ((x & 0x3333) << 2)); - x = (((x & 0xf0f0) >> 4) | ((x & 0x0f0f) << 4)); - return ((x >> 8) | (x << 8)); -} - - -static uint16_t _get_crc16(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length) -{ - uint16_t temp = 0; - - if (ctx ->crc_cfg.poly != CRC16_PLOY) - { - LOG_E("n32g45x crc16 is available only use poly 0x%04X", CRC16_PLOY); - return 0; - } - - if (ctx ->crc_cfg.flags & CRC_FLAG_REFIN) - { - CRC->CRC16CTRL |= CRC16_CTRL_LITTLE; - } - else - { - CRC->CRC16CTRL &= (~CRC16_CTRL_LITTLE); - } - - CRC->CRC16CTRL |= CRC16_CTRL_RESET; - CRC->CRC16D = ctx ->crc_cfg.last_val; - CRC->LRC = 0; - - while (length--) - { - CRC->CRC16DAT = *in++; - } - temp = CRC->CRC16D; - - if (ctx ->crc_cfg.flags & CRC_FLAG_REFOUT) - { - temp = _reverse_16bit(temp); - } - - return temp; -} - -static uint32_t _get_crc32(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length) -{ - uint32_t result = 0; - int length_4 = length >> 2; - uint8_t *xdat = (uint8_t *)in; - - if (ctx ->crc_cfg.poly != CRC32_PLOY) - { - LOG_E("n32g45x crc32 is available only use poly 0x%08X", CRC32_PLOY); - return 0; - } - - switch (ctx ->crc_cfg.flags & 0x03) - { - case 0: - { - while (length_4--) - { - result = ((uint32_t)xdat[0] << 24) | ((uint32_t)xdat[1] << 16) - | ((uint32_t)xdat[2] << 8) | xdat[3]; - CRC->CRC32DAT = result; - xdat += 4; - } - - result = CRC->CRC32DAT; - length_4 = length & 0x03; - - if (length_4 < 1) - { - break; - } - - uint8_t i = 0; - while (length_4--) - { - result ^= (*xdat++) << 24; - - for (i = 0; i < 8; i++) - { - if (result & 0x80000000) - { - result = (result << 1) ^ CRC32_PLOY; - } - else - { - result <<= 1; - } - } - } - } - break; - case CRC_FLAG_REFIN: - /* TODO: add control command handle */ - case CRC_FLAG_REFOUT: - /* TODO: add control command handle */ - case (CRC_FLAG_REFIN|CRC_FLAG_REFOUT): - /* TODO: add control command handle */ - default: - break; - } - - return result; -} - -static rt_uint32_t _crc_update(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length) -{ - rt_uint32_t result = 0; - struct n32_hwcrypto_device *n32_hw_dev = (struct n32_hwcrypto_device *)ctx->parent.device->user_data; - - rt_mutex_take(&n32_hw_dev->mutex, RT_WAITING_FOREVER); - - if (ctx ->crc_cfg.flags >> 2) - { - LOG_E("flags out range 0x%08X", ctx ->crc_cfg.flags); - goto _exit; - } - - if (ctx ->crc_cfg.width == 16) - { - result = _get_crc16(ctx, in, length); - } - else if (ctx ->crc_cfg.width == 32) - { - result = _get_crc32(ctx, in, length); - } - -_exit: - rt_mutex_release(&n32_hw_dev->mutex); - - return result; -} - -static const struct hwcrypto_crc_ops crc_ops = -{ - .update = _crc_update, -}; - - -static rt_err_t _crypto_create(struct rt_hwcrypto_ctx *ctx) -{ - rt_err_t res = RT_EOK; - - switch (ctx->type & HWCRYPTO_MAIN_TYPE_MASK) - { -#if defined(BSP_USING_RNG) - case HWCRYPTO_TYPE_RNG: - { - break; - } -#endif /* BSP_USING_RNG */ - -#if defined(BSP_USING_CRC) - case HWCRYPTO_TYPE_CRC: - { - RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_CRC, ENABLE); - ((struct hwcrypto_crc *)ctx)->ops = &crc_ops; - break; - } -#endif /* BSP_USING_CRC */ - -#if defined(BSP_USING_HASH) - case HWCRYPTO_TYPE_MD5: - case HWCRYPTO_TYPE_SHA1: - case HWCRYPTO_TYPE_SHA2: - { - break; - } -#endif /* BSP_USING_HASH */ - -#if defined(BSP_USING_CRYP) - case HWCRYPTO_TYPE_AES: - case HWCRYPTO_TYPE_DES: - case HWCRYPTO_TYPE_3DES: - case HWCRYPTO_TYPE_RC4: - case HWCRYPTO_TYPE_GCM: - { - break; - } -#endif /* BSP_USING_CRYP */ - - default: - res = -RT_ERROR; - break; - } - return res; -} - -static void _crypto_destroy(struct rt_hwcrypto_ctx *ctx) -{ - /* TODO: add control command handle */ - switch (ctx->type & HWCRYPTO_MAIN_TYPE_MASK) - { -#if defined(BSP_USING_RNG) - case HWCRYPTO_TYPE_RNG: - break; -#endif /* BSP_USING_RNG */ - -#if defined(BSP_USING_CRC) - case HWCRYPTO_TYPE_CRC: - break; -#endif /* BSP_USING_CRC */ - -#if defined(BSP_USING_HASH) - case HWCRYPTO_TYPE_MD5: - case HWCRYPTO_TYPE_SHA1: - case HWCRYPTO_TYPE_SHA2: - break; -#endif /* BSP_USING_HASH */ - -#if defined(BSP_USING_CRYP) - case HWCRYPTO_TYPE_AES: - case HWCRYPTO_TYPE_DES: - case HWCRYPTO_TYPE_3DES: - case HWCRYPTO_TYPE_RC4: - case HWCRYPTO_TYPE_GCM: - break; -#endif /* BSP_USING_CRYP */ - - default: - break; - } - - if (ctx->contex) - rt_free(ctx->contex); -} - -static rt_err_t _crypto_clone(struct rt_hwcrypto_ctx *des, const struct rt_hwcrypto_ctx *src) -{ - rt_err_t res = RT_EOK; - /* TODO: add control command handle */ - switch (src->type & HWCRYPTO_MAIN_TYPE_MASK) - { -#if defined(BSP_USING_RNG) - case HWCRYPTO_TYPE_RNG: - break; -#endif /* BSP_USING_RNG */ - -#if defined(BSP_USING_CRC) - case HWCRYPTO_TYPE_CRC: - break; -#endif /* BSP_USING_CRC */ - -#if defined(BSP_USING_HASH) - case HWCRYPTO_TYPE_MD5: - case HWCRYPTO_TYPE_SHA1: - case HWCRYPTO_TYPE_SHA2: - break; -#endif /* BSP_USING_HASH */ - -#if defined(BSP_USING_CRYP) - case HWCRYPTO_TYPE_AES: - case HWCRYPTO_TYPE_DES: - case HWCRYPTO_TYPE_3DES: - case HWCRYPTO_TYPE_RC4: - case HWCRYPTO_TYPE_GCM: - break; -#endif /* BSP_USING_CRYP */ - - default: - res = -RT_ERROR; - break; - } - return res; -} - -static void _crypto_reset(struct rt_hwcrypto_ctx *ctx) -{ - /* TODO: add control command handle */ - switch (ctx->type & HWCRYPTO_MAIN_TYPE_MASK) - { -#if defined(BSP_USING_RNG) - case HWCRYPTO_TYPE_RNG: - break; -#endif /* BSP_USING_RNG */ - -#if defined(BSP_USING_CRC) - case HWCRYPTO_TYPE_CRC: - break; -#endif /* BSP_USING_CRC */ - -#if defined(BSP_USING_HASH) - case HWCRYPTO_TYPE_MD5: - case HWCRYPTO_TYPE_SHA1: - case HWCRYPTO_TYPE_SHA2: - break; -#endif /* BSP_USING_HASH*/ - -#if defined(BSP_USING_CRYP) - case HWCRYPTO_TYPE_AES: - case HWCRYPTO_TYPE_DES: - case HWCRYPTO_TYPE_3DES: - case HWCRYPTO_TYPE_RC4: - case HWCRYPTO_TYPE_GCM: - break; -#endif /* BSP_USING_CRYP */ - default: - break; - } -} - -static const struct rt_hwcrypto_ops _ops = -{ - .create = _crypto_create, - .destroy = _crypto_destroy, - .copy = _crypto_clone, - .reset = _crypto_reset, -}; - -int n32_hw_crypto_device_init(void) -{ - static struct n32_hwcrypto_device _crypto_dev; - rt_uint32_t cpuid[3] = {0}; - - _crypto_dev.dev.ops = &_ops; -#if defined(BSP_USING_UDID) - /* TODO: add control command handle */ - -#endif /* BSP_USING_UDID */ - - _crypto_dev.dev.id = 0; - rt_memcpy(&_crypto_dev.dev.id, cpuid, 8); - - _crypto_dev.dev.user_data = &_crypto_dev; - - if (rt_hwcrypto_register(&_crypto_dev.dev, RT_HWCRYPTO_DEFAULT_NAME) != RT_EOK) - { - return -1; - } - rt_mutex_init(&_crypto_dev.mutex, RT_HWCRYPTO_DEFAULT_NAME, RT_IPC_FLAG_PRIO); - return 0; -} -INIT_DEVICE_EXPORT(n32_hw_crypto_device_init); - -static void crc_demo(uint8_t argc, char **argv) -{ - struct hwcrypto_crc_cfg modbus_cfg = - { - .last_val = 0xFFFF, - .poly = 0x8005, - .width = 16, - .xorout = 0x0000, - .flags = CRC_FLAG_REFIN | CRC_FLAG_REFOUT, - }; - struct hwcrypto_crc_cfg crc32mpeg2_cfg = - { - .last_val = 0xFFFFFFFF, - .poly = 0x04C11DB7, - .width = 32, - .xorout = 0x00000000, - .flags = 0, - }; - - struct rt_hwcrypto_ctx *ctx; - rt_uint32_t result = 0; - rt_uint8_t temp[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; - rt_uint8_t i = 0; - rt_uint8_t len = sizeof(temp); - - ctx = rt_hwcrypto_crc_create(rt_hwcrypto_dev_default(), HWCRYPTO_CRC_CRC32); - - rt_kprintf("crc dat:\n"); - for (i = 0; i < len; i++) - { - rt_kprintf("%02X ", temp[i]); - } - rt_kprintf("\n"); - - rt_hwcrypto_crc_cfg(ctx, &crc32mpeg2_cfg); - result = rt_hwcrypto_crc_update(ctx, temp, len); - rt_kprintf("crc32mpeg2: %x \n", result); - - rt_hwcrypto_crc_cfg(ctx, &modbus_cfg); - result = rt_hwcrypto_crc_update(ctx, temp, len); - rt_kprintf("crc16modbus: %x \n", result); - - /*chang to msb*/ - modbus_cfg.flags = 0; - rt_hwcrypto_crc_cfg(ctx, &modbus_cfg); - result = rt_hwcrypto_crc_update(ctx, temp, len); - rt_kprintf("crc16 msb: %x \n", result); - - rt_hwcrypto_crc_destroy(ctx); -} - -MSH_CMD_EXPORT(crc_demo, demo for hardwave crc.); - -#endif +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-04-21 wolfJane first version + */ + +#include +#include "drv_crypto.h" + +#ifdef RT_USING_HWCRYPTO + +#define DRV_DEBUG +#define LOG_TAG "drv.crypto" +#include + +#ifdef RT_HWCRYPTO_USING_CRC + #define BSP_USING_CRC +#endif + +static uint16_t _reverse_16bit(uint16_t x) +{ + x = (((x & 0xaaaa) >> 1) | ((x & 0x5555) << 1)); + x = (((x & 0xcccc) >> 2) | ((x & 0x3333) << 2)); + x = (((x & 0xf0f0) >> 4) | ((x & 0x0f0f) << 4)); + return ((x >> 8) | (x << 8)); +} + + +static uint16_t _get_crc16(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length) +{ + uint16_t temp = 0; + + if (ctx ->crc_cfg.poly != CRC16_PLOY) + { + LOG_E("n32g45x crc16 is available only use poly 0x%04X", CRC16_PLOY); + return 0; + } + + if (ctx ->crc_cfg.flags & CRC_FLAG_REFIN) + { + CRC->CRC16CTRL |= CRC16_CTRL_LITTLE; + } + else + { + CRC->CRC16CTRL &= (~CRC16_CTRL_LITTLE); + } + + CRC->CRC16CTRL |= CRC16_CTRL_RESET; + CRC->CRC16D = ctx ->crc_cfg.last_val; + CRC->LRC = 0; + + while (length--) + { + CRC->CRC16DAT = *in++; + } + temp = CRC->CRC16D; + + if (ctx ->crc_cfg.flags & CRC_FLAG_REFOUT) + { + temp = _reverse_16bit(temp); + } + + return temp; +} + +static uint32_t _get_crc32(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length) +{ + uint32_t result = 0; + int length_4 = length >> 2; + uint8_t *xdat = (uint8_t *)in; + + if (ctx ->crc_cfg.poly != CRC32_PLOY) + { + LOG_E("n32g45x crc32 is available only use poly 0x%08X", CRC32_PLOY); + return 0; + } + + switch (ctx ->crc_cfg.flags & 0x03) + { + case 0: + { + while (length_4--) + { + result = ((uint32_t)xdat[0] << 24) | ((uint32_t)xdat[1] << 16) + | ((uint32_t)xdat[2] << 8) | xdat[3]; + CRC->CRC32DAT = result; + xdat += 4; + } + + result = CRC->CRC32DAT; + length_4 = length & 0x03; + + if (length_4 < 1) + { + break; + } + + uint8_t i = 0; + while (length_4--) + { + result ^= (*xdat++) << 24; + + for (i = 0; i < 8; i++) + { + if (result & 0x80000000) + { + result = (result << 1) ^ CRC32_PLOY; + } + else + { + result <<= 1; + } + } + } + } + break; + case CRC_FLAG_REFIN: + /* TODO: add control command handle */ + case CRC_FLAG_REFOUT: + /* TODO: add control command handle */ + case (CRC_FLAG_REFIN|CRC_FLAG_REFOUT): + /* TODO: add control command handle */ + default: + break; + } + + return result; +} + +static rt_uint32_t _crc_update(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length) +{ + rt_uint32_t result = 0; + struct n32_hwcrypto_device *n32_hw_dev = (struct n32_hwcrypto_device *)ctx->parent.device->user_data; + + rt_mutex_take(&n32_hw_dev->mutex, RT_WAITING_FOREVER); + + if (ctx ->crc_cfg.flags >> 2) + { + LOG_E("flags out range 0x%08X", ctx ->crc_cfg.flags); + goto _exit; + } + + if (ctx ->crc_cfg.width == 16) + { + result = _get_crc16(ctx, in, length); + } + else if (ctx ->crc_cfg.width == 32) + { + result = _get_crc32(ctx, in, length); + } + +_exit: + rt_mutex_release(&n32_hw_dev->mutex); + + return result; +} + +static const struct hwcrypto_crc_ops crc_ops = +{ + .update = _crc_update, +}; + + +static rt_err_t _crypto_create(struct rt_hwcrypto_ctx *ctx) +{ + rt_err_t res = RT_EOK; + + switch (ctx->type & HWCRYPTO_MAIN_TYPE_MASK) + { +#if defined(BSP_USING_RNG) + case HWCRYPTO_TYPE_RNG: + { + break; + } +#endif /* BSP_USING_RNG */ + +#if defined(BSP_USING_CRC) + case HWCRYPTO_TYPE_CRC: + { + RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_CRC, ENABLE); + ((struct hwcrypto_crc *)ctx)->ops = &crc_ops; + break; + } +#endif /* BSP_USING_CRC */ + +#if defined(BSP_USING_HASH) + case HWCRYPTO_TYPE_MD5: + case HWCRYPTO_TYPE_SHA1: + case HWCRYPTO_TYPE_SHA2: + { + break; + } +#endif /* BSP_USING_HASH */ + +#if defined(BSP_USING_CRYP) + case HWCRYPTO_TYPE_AES: + case HWCRYPTO_TYPE_DES: + case HWCRYPTO_TYPE_3DES: + case HWCRYPTO_TYPE_RC4: + case HWCRYPTO_TYPE_GCM: + { + break; + } +#endif /* BSP_USING_CRYP */ + + default: + res = -RT_ERROR; + break; + } + return res; +} + +static void _crypto_destroy(struct rt_hwcrypto_ctx *ctx) +{ + /* TODO: add control command handle */ + switch (ctx->type & HWCRYPTO_MAIN_TYPE_MASK) + { +#if defined(BSP_USING_RNG) + case HWCRYPTO_TYPE_RNG: + break; +#endif /* BSP_USING_RNG */ + +#if defined(BSP_USING_CRC) + case HWCRYPTO_TYPE_CRC: + break; +#endif /* BSP_USING_CRC */ + +#if defined(BSP_USING_HASH) + case HWCRYPTO_TYPE_MD5: + case HWCRYPTO_TYPE_SHA1: + case HWCRYPTO_TYPE_SHA2: + break; +#endif /* BSP_USING_HASH */ + +#if defined(BSP_USING_CRYP) + case HWCRYPTO_TYPE_AES: + case HWCRYPTO_TYPE_DES: + case HWCRYPTO_TYPE_3DES: + case HWCRYPTO_TYPE_RC4: + case HWCRYPTO_TYPE_GCM: + break; +#endif /* BSP_USING_CRYP */ + + default: + break; + } + + if (ctx->contex) + rt_free(ctx->contex); +} + +static rt_err_t _crypto_clone(struct rt_hwcrypto_ctx *des, const struct rt_hwcrypto_ctx *src) +{ + rt_err_t res = RT_EOK; + /* TODO: add control command handle */ + switch (src->type & HWCRYPTO_MAIN_TYPE_MASK) + { +#if defined(BSP_USING_RNG) + case HWCRYPTO_TYPE_RNG: + break; +#endif /* BSP_USING_RNG */ + +#if defined(BSP_USING_CRC) + case HWCRYPTO_TYPE_CRC: + break; +#endif /* BSP_USING_CRC */ + +#if defined(BSP_USING_HASH) + case HWCRYPTO_TYPE_MD5: + case HWCRYPTO_TYPE_SHA1: + case HWCRYPTO_TYPE_SHA2: + break; +#endif /* BSP_USING_HASH */ + +#if defined(BSP_USING_CRYP) + case HWCRYPTO_TYPE_AES: + case HWCRYPTO_TYPE_DES: + case HWCRYPTO_TYPE_3DES: + case HWCRYPTO_TYPE_RC4: + case HWCRYPTO_TYPE_GCM: + break; +#endif /* BSP_USING_CRYP */ + + default: + res = -RT_ERROR; + break; + } + return res; +} + +static void _crypto_reset(struct rt_hwcrypto_ctx *ctx) +{ + /* TODO: add control command handle */ + switch (ctx->type & HWCRYPTO_MAIN_TYPE_MASK) + { +#if defined(BSP_USING_RNG) + case HWCRYPTO_TYPE_RNG: + break; +#endif /* BSP_USING_RNG */ + +#if defined(BSP_USING_CRC) + case HWCRYPTO_TYPE_CRC: + break; +#endif /* BSP_USING_CRC */ + +#if defined(BSP_USING_HASH) + case HWCRYPTO_TYPE_MD5: + case HWCRYPTO_TYPE_SHA1: + case HWCRYPTO_TYPE_SHA2: + break; +#endif /* BSP_USING_HASH*/ + +#if defined(BSP_USING_CRYP) + case HWCRYPTO_TYPE_AES: + case HWCRYPTO_TYPE_DES: + case HWCRYPTO_TYPE_3DES: + case HWCRYPTO_TYPE_RC4: + case HWCRYPTO_TYPE_GCM: + break; +#endif /* BSP_USING_CRYP */ + default: + break; + } +} + +static const struct rt_hwcrypto_ops _ops = +{ + .create = _crypto_create, + .destroy = _crypto_destroy, + .copy = _crypto_clone, + .reset = _crypto_reset, +}; + +int n32_hw_crypto_device_init(void) +{ + static struct n32_hwcrypto_device _crypto_dev; + rt_uint32_t cpuid[3] = {0}; + + _crypto_dev.dev.ops = &_ops; +#if defined(BSP_USING_UDID) + /* TODO: add control command handle */ + +#endif /* BSP_USING_UDID */ + + _crypto_dev.dev.id = 0; + rt_memcpy(&_crypto_dev.dev.id, cpuid, 8); + + _crypto_dev.dev.user_data = &_crypto_dev; + + if (rt_hwcrypto_register(&_crypto_dev.dev, RT_HWCRYPTO_DEFAULT_NAME) != RT_EOK) + { + return -1; + } + rt_mutex_init(&_crypto_dev.mutex, RT_HWCRYPTO_DEFAULT_NAME, RT_IPC_FLAG_PRIO); + return 0; +} +INIT_DEVICE_EXPORT(n32_hw_crypto_device_init); + +static void crc_demo(uint8_t argc, char **argv) +{ + struct hwcrypto_crc_cfg modbus_cfg = + { + .last_val = 0xFFFF, + .poly = 0x8005, + .width = 16, + .xorout = 0x0000, + .flags = CRC_FLAG_REFIN | CRC_FLAG_REFOUT, + }; + struct hwcrypto_crc_cfg crc32mpeg2_cfg = + { + .last_val = 0xFFFFFFFF, + .poly = 0x04C11DB7, + .width = 32, + .xorout = 0x00000000, + .flags = 0, + }; + + struct rt_hwcrypto_ctx *ctx; + rt_uint32_t result = 0; + rt_uint8_t temp[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + rt_uint8_t i = 0; + rt_uint8_t len = sizeof(temp); + + ctx = rt_hwcrypto_crc_create(rt_hwcrypto_dev_default(), HWCRYPTO_CRC_CRC32); + + rt_kprintf("crc dat:\n"); + for (i = 0; i < len; i++) + { + rt_kprintf("%02X ", temp[i]); + } + rt_kprintf("\n"); + + rt_hwcrypto_crc_cfg(ctx, &crc32mpeg2_cfg); + result = rt_hwcrypto_crc_update(ctx, temp, len); + rt_kprintf("crc32mpeg2: %x \n", result); + + rt_hwcrypto_crc_cfg(ctx, &modbus_cfg); + result = rt_hwcrypto_crc_update(ctx, temp, len); + rt_kprintf("crc16modbus: %x \n", result); + + /*chang to msb*/ + modbus_cfg.flags = 0; + rt_hwcrypto_crc_cfg(ctx, &modbus_cfg); + result = rt_hwcrypto_crc_update(ctx, temp, len); + rt_kprintf("crc16 msb: %x \n", result); + + rt_hwcrypto_crc_destroy(ctx); +} + +MSH_CMD_EXPORT(crc_demo, demo for hardwave crc.); + +#endif diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.h index 0e261fd124657c75fcd1fd4c8d72546a9bc0132b..3fa2ddb7ec20fec7d083ba427de2d898d71775f7 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_crypto.h @@ -1,35 +1,35 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-21 wolfJane first version - */ - -#ifndef __DRV_CRYPTO_H_ -#define __DRV_CRYPTO_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define CRC32_PLOY (0x04C11DB7) -#define CRC16_PLOY (0x8005) - -struct n32_hwcrypto_device -{ - struct rt_hwcrypto_device dev; - struct rt_mutex mutex; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_CRYPTO_H_ */ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-04-21 wolfJane first version + */ + +#ifndef __DRV_CRYPTO_H_ +#define __DRV_CRYPTO_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define CRC32_PLOY (0x04C11DB7) +#define CRC16_PLOY (0x8005) + +struct n32_hwcrypto_device +{ + struct rt_hwcrypto_device dev; + struct rt_mutex mutex; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_CRYPTO_H_ */ diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.c index 32012927538b8c0bf6bbd973f1e1043776bbbaa2..e6026162924d3019fd419618e9bd9c991975adb5 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.h index caac8795cba9d3bf6d42777029740f8f5787fd3d..27a04f3aae677dc8b4d96a11aebad618a99a1e4c 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_flash.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.c index eece7aa780a7702715212c18c2d4fb45e7cbd6fb..f618c75d26c7960c6651b8ae4379a9d8d6f246da 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.h index babfde2bb566617aba295bf7aff9b02da850770c..515ece158ab766cd466eacd4666cc4d35ae65ba4 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_gpio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.c index 1afea268781120cb9e278fd4b5f3c3466ebfb00a..65c05ce702e348e357c9c1186d97ac34dfa1e0a0 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.h index cf42459a35e85466832cc6309b8299447073a2c6..73647845e063e88dd12d3e039d07f0f2199a5c30 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_hwtimer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_log.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_log.h index 0c8631bdbbf03e380ecc85df10760da422223fbd..f529d534b1fc01255a1f38a90a91b0b35eab448d 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_log.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_log.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.c index a5dadf573dcc07689e19bda77bff367257e16743..22b79a6fbe894e6d7d408d280e04866c0c86c503 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.h index dc05465d898f07153056ff473535c1a7608852fd..03a773ef283f8391d4b6757c3c3448c6345f8772 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_pwm.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c index 91847b303ab43c021e20048a5ac184061cc105c6..63215d1678f85c16a5e1ef59d53e1afc4a19a4ee 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h index af501c3e19ac27d4152b26017c020a40f5aafaae..12e84df0880ac2f487903a815834d06c2c44fcef 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.c index 2d2e381f18e09b5c77ecadc1dbc8047a97d9d560..ae6379de00e6dd023ba82d4657545f2270cec5c3 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2022, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.h index 50a34cbec797cf622666dd1623ef78c886b78e99..a9ff8f5981b9e0f21c203191d3872401134de8c4 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_spi.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.c index eb38043eb74141816d9cc958a85f6a1c13970f29..39966188448c1b5367aa74e434ab11066fe2e9eb 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2022, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.h index a9668db438f4fde833ed8e0c49cb3818a1f0e606..b73871b5658055490cacf54a07c3b364864af684 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.h +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_usart.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_wdt.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_wdt.c index 31f921db0a7e5b61c6e5316695719bee4fc90ca9..7312357e471708add1a0fedb3f7f61a784d816d5 100644 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_wdt.c +++ b/bsp/n32g452xx/Libraries/rt_drivers/drv_wdt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/n32g452xx-mini-system/applications/main.c b/bsp/n32g452xx/n32g452xx-mini-system/applications/main.c index fcb0110413aa256346d72bd5415ff0f25d726170..fb47ecabb78e09c1e31ba39602e1d8337e69501d 100644 --- a/bsp/n32g452xx/n32g452xx-mini-system/applications/main.c +++ b/bsp/n32g452xx/n32g452xx-mini-system/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/n32g452xx-mini-system/board/board.c b/bsp/n32g452xx/n32g452xx-mini-system/board/board.c index 90484157528423aada2519706a5e389ff65dd8f7..a5adb014e1373ef2c664fac4b3256325ee38f7e1 100644 --- a/bsp/n32g452xx/n32g452xx-mini-system/board/board.c +++ b/bsp/n32g452xx/n32g452xx-mini-system/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/n32g452xx-mini-system/board/board.h b/bsp/n32g452xx/n32g452xx-mini-system/board/board.h index fd5fa543f4372ebcf2541577f621916ca57ccfd2..5e26ca4d5859881da4864a22a4d0b121d84aa28c 100644 --- a/bsp/n32g452xx/n32g452xx-mini-system/board/board.h +++ b/bsp/n32g452xx/n32g452xx-mini-system/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.c b/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.c index 0d70aa3d99f31d050a60aedfe8bb6e2027c6d3b7..88060bb8d5505e636656ac603ae9347791b72341 100644 --- a/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.c +++ b/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2022, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.h b/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.h index 5d911a9ca4f723bf61e16638322ce585c1fb5fbc..47ac228525a11ba9fd526480ced621c67b0a99c9 100644 --- a/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.h +++ b/bsp/n32g452xx/n32g452xx-mini-system/board/msp/n32_msp.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 *