diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript index 6f2f6c5427a5b9423b32463ba5714b5d68ffd576..f27691f32da9d6c1feabae4de03a5a68ddd53f1a 100644 --- a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript @@ -7,18 +7,36 @@ cwd = GetCurrentDir() src = [] path = [cwd, cwd + '/config'] -if GetDepend('BSP_USING_GPIO'): +if GetDepend(['BSP_USING_GPIO', 'RT_USING_PIN']): src += ['drv_gpio.c'] -if GetDepend('BSP_USING_UART'): +if GetDepend(['BSP_USING_UART', 'RT_USING_SERIAL']): src += ['drv_uart.c'] -if GetDepend('BSP_USING_CAN'): +if GetDepend(['BSP_USING_CAN', 'RT_USING_CAN']): src += ['drv_can.c'] -if GetDepend('BSP_USING_ECAP'): +if GetDepend(['BSP_USING_ECAP']): src += ['drv_ecap.c'] +if GetDepend(['BSP_USING_IWDG1']): + src += ['drv_iwdg1.c'] + +if GetDepend(['BSP_USING_IWDG2']): + src += ['drv_iwdg2.c'] + +if GetDepend(['BSP_USING_WWDG']): + src += ['drv_wwdg.c'] + +if GetDepend(['BSP_USING_HARD_I2C']): + src += ['drv_hard_i2c.c'] + + +if GetDepend(['BSP_USING_SOFT_I2C']): + src += ['drv_soft_i2c.c'] + +if GetDepend(['BSP_USING_DAC']): + src += ['drv_dac.c'] group = DefineGroup('HAL_Drivers', src, depend = [''], CPPPATH = path) Return('group') diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.c new file mode 100644 index 0000000000000000000000000000000000000000..307c1ed3b97788258f77af4d8815a7134bdde73d --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.c @@ -0,0 +1,148 @@ + +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-09-09 WCH the first version + * 2022-09-17 hg0720 add some operation function + */ + +#include +#include +#include +#include "drv_dac.h" +#include "src_dac.h" +#if defined BSP_USING_DAC + +//#define DRV_DEBUG +#define LOG_TAG "drv.dac" +#include + +static DAC_HandleTypeDef dac_config[] = +{ +#ifdef BSP_USING_DAC1 + { \ + .Instance = DAC1, \ + .dacName = "dac1", \ + }, +#endif + +#ifdef BSP_USING_DAC3 + { + .Instance = DAC3, \ + .dacName = "dac3", \ + } +#endif +}; + +struct ns800_dac +{ + DAC_HandleTypeDef DAC_Handler; + struct rt_dac_device ns800_dac_device; +}; + +static struct ns800_dac ns800_dac_obj[sizeof(dac_config) / sizeof(dac_config[0])]; + +static rt_err_t ns800_dac_enabled(struct rt_dac_device *device, rt_uint32_t channel) +{ + DAC_HandleTypeDef *ns800_dac_handler; + RT_ASSERT(device != RT_NULL); + ns800_dac_handler = device->parent.user_data; + DAC_enableModule(ns800_dac_handler ); + return RT_EOK; +} + +static rt_err_t ns800_dac_disabled(struct rt_dac_device *device, rt_uint32_t channel) +{ + DAC_HandleTypeDef *ns800_dac_handler; + RT_ASSERT(device != RT_NULL); + ns800_dac_handler = device->parent.user_data; + DAC_disableModule(ns800_dac_handler ); + return RT_EOK; +} + +static rt_uint8_t ns800_dac_get_resolution(struct rt_dac_device *device) +{ + DAC_HandleTypeDef *ns800_dac_handler; + + RT_ASSERT(device != RT_NULL); + + ns800_dac_handler = device->parent.user_data; + (void)ns800_dac_handler; + + /* Only has supported DAC_ALIGN_12B_R, so it will return 12 bits */ + return 12; +} + +static rt_uint32_t ns800_dac_get_channel(rt_uint32_t channel) +{ + rt_uint32_t ns800_channel = 1; + return ns800_channel; +} + +static rt_err_t ns800_set_dac_value(struct rt_dac_device *device, rt_uint32_t channel, rt_uint32_t *value) +{ + rt_uint32_t dac_channel; + DAC_HandleTypeDef *ns800_dac_handler; + + RT_ASSERT(device != RT_NULL); + RT_ASSERT(value != RT_NULL); + + ns800_dac_handler = device->parent.user_data; + DAC_setShadowValue(ns800_dac_handler, *value); + rt_kprintf("Value=%d\n",*value); + + return RT_EOK; +} + +static const struct rt_dac_ops ns800_dac_ops = +{ + .disabled = ns800_dac_disabled, + .enabled = ns800_dac_enabled, + .convert = ns800_set_dac_value, + .get_resolution = ns800_dac_get_resolution, +}; + +static int ns800_dac_init(void) +{ + int result = RT_EOK; + /* save dac name */ + int i = 0; + + for (i = 0; i < sizeof(dac_config) / sizeof(dac_config[0]); i++) + { + /* dac channel init */ + ns800_dac_obj[i].DAC_Handler = dac_config[i]; + DAC_disableModule(ns800_dac_obj[i].DAC_Handler.Instance); + /* DACVALA load on next SYSCLK. Determines when the DACVALA register is updated with the value from DACVALS */ + DAC_setLoadMode(ns800_dac_obj[i].DAC_Handler.Instance , DAC_LOAD_SYSCLK); + /* DAC delayTime */ + DAC_setDetaDelayTime(ns800_dac_obj[i].DAC_Handler.Instance, 0xFF); + /* DAC SettlingTime */ + DAC_setSettlingTime(ns800_dac_obj[i].DAC_Handler.Instance, 0xFF); + /* DAC SettlingTime */ + DAC_setDacVrefMode(ns800_dac_obj[i].DAC_Handler.Instance, DAC_REFSEL_VDAC); + /* set DAC value is zero */ + DAC_setShadowValue(ns800_dac_obj[i].DAC_Handler.Instance , 0x0); + /* Enable DAC and close output function */ + /* register dac device */ + char name[32] ={0}; + sprintf(name,"%s",ns800_dac_obj[i].DAC_Handler.dacName); + if (rt_hw_dac_register(&ns800_dac_obj[i].ns800_dac_device, name, &ns800_dac_ops, &ns800_dac_obj[i].DAC_Handler) == RT_EOK) + { + LOG_D("%s init success", ns800_dac_obj[i].DAC_Handler.dacName); + } + else + { + LOG_E("%s register failed", ns800_dac_obj[i].DAC_Handler.dacName); + result = -RT_ERROR; + } + } + return result; +} +INIT_DEVICE_EXPORT(ns800_dac_init); + +#endif /* BSP_USING_DAC */ diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.h new file mode 100644 index 0000000000000000000000000000000000000000..14838cf3df21c30c8308f7885543ed95c27386e5 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-17 Jeffery Yuan the first version + */ + +#ifndef DRV_DAC_H__ +#define DRV_DAC_H__ + +#include +#include +typedef struct +{ + DAC_TypeDef *Instance; + char *dacName; +}DAC_HandleTypeDef; + +#endif diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c index b3e67ae04df03b21f26e29fb8def37d2c2b3d073..b3ba11f153ed92a74a3e43ef18e34d9925726449 100644 --- a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c @@ -5,7 +5,7 @@ * * Change Logs: * Date Author Notes - * + *2026-05-17 Jeffery Yuan add interrupt operation function */ #include @@ -18,6 +18,40 @@ #define PIN_ENTRY(pin_macro) {pin_macro} + + +#if defined(GPIOZ) +#define __NS800_PORT_MAX 12u +#elif defined(GPIOK) +#define __NS800_PORT_MAX 11u +#elif defined(GPIOJ) +#define __NS800_PORT_MAX 10u +#elif defined(GPIOI) +#define __NS800_PORT_MAX 9u +#elif defined(GPIOH) +#define __NS800_PORT_MAX 8u +#elif defined(GPIOG) +#define __NS800_PORT_MAX 7u +#elif defined(GPIOF) +#define __NS800_PORT_MAX 6u +#elif defined(GPIOE) +#define __NS800_PORT_MAX 5u +#elif defined(GPIOD) +#define __NS800_PORT_MAX 4u +#elif defined(GPIOC) +#define __NS800_PORT_MAX 3u +#elif defined(GPIOB) +#define __NS800_PORT_MAX 2u +#elif defined(GPIOA) +#define __NS800_PORT_MAX 1u +#else +#define __NS800_PORT_MAX 0u +#error Unsupported NS800 GPIO peripheral. +#endif + +#define PIN_STPORT_MAX __NS800_PORT_MAX + + static const rt_pin_info_t pin_map_table[225] = { /* 0-21: 连续 */ [0] = PIN_ENTRY(GPIO_0), @@ -161,6 +195,84 @@ static const rt_pin_info_t pin_map_table[225] = { [224] = PIN_ENTRY(GPIO_224), }; + + +static struct rt_pin_irq_hdr pin_irq_hdr_table[32] = +{ + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, +}; + + +static const struct pin_irq_map pin_irq_map[32] = +{ + {GPIO_PIN_0, EXTI3_0_IRQn}, + {GPIO_PIN_1, EXTI3_0_IRQn}, + {GPIO_PIN_2, EXTI3_0_IRQn}, + {GPIO_PIN_3, EXTI3_0_IRQn}, + {GPIO_PIN_4, EXTI7_4_IRQn}, + {GPIO_PIN_5, EXTI7_4_IRQn}, + {GPIO_PIN_6, EXTI7_4_IRQn}, + {GPIO_PIN_7, EXTI7_4_IRQn}, + {GPIO_PIN_8, EXTI11_8_IRQn}, + {GPIO_PIN_9, EXTI11_8_IRQn}, + {GPIO_PIN_10, EXTI11_8_IRQn}, + {GPIO_PIN_11, EXTI11_8_IRQn}, + {GPIO_PIN_12, EXTI15_12_IRQn}, + {GPIO_PIN_13, EXTI15_12_IRQn}, + {GPIO_PIN_14, EXTI15_12_IRQn}, + {GPIO_PIN_15, EXTI15_12_IRQn}, + {GPIO_PIN_16, EXTI3_0_IRQn}, + {GPIO_PIN_17, EXTI3_0_IRQn}, + {GPIO_PIN_18, EXTI3_0_IRQn}, + {GPIO_PIN_19, EXTI3_0_IRQn}, + {GPIO_PIN_20, EXTI7_4_IRQn}, + {GPIO_PIN_21, EXTI7_4_IRQn}, + {GPIO_PIN_22, EXTI7_4_IRQn}, + {GPIO_PIN_23, EXTI7_4_IRQn}, + {GPIO_PIN_24, EXTI11_8_IRQn}, + {GPIO_PIN_25, EXTI11_8_IRQn}, + {GPIO_PIN_26, EXTI11_8_IRQn}, + {GPIO_PIN_27, EXTI11_8_IRQn}, + {GPIO_PIN_28, EXTI15_12_IRQn}, + {GPIO_PIN_29, EXTI15_12_IRQn}, + {GPIO_PIN_30, EXTI15_12_IRQn}, + {GPIO_PIN_31, EXTI15_12_IRQn}, +}; + + + + /* 1. PIN_NUM: 从(port, pin)获取引脚编号 */ int get_pin_num(GPIO_TypeDef *port, GPIO_PinNum pin) { @@ -271,9 +383,6 @@ const rt_pin_info_t* get_pin_info(int pin_num) return &pin_map_table[pin_num]; } -#define PIN_STPORT(pin) (pin_map_table[(pin)].port) -#define PIN_STPIN(pin) (pin_map_table[(pin)].pin) - static uint32_t pin_irq_enable_mask = 0; @@ -287,6 +396,7 @@ static rt_base_t ns800_pin_get(const char *name) uint8_t port_index; GPIO_TypeDef *port = RT_NULL; char *endptr; + if ((name == RT_NULL) || (name[0] == '\0')) { @@ -417,24 +527,614 @@ static void ns800rt7_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) } +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +rt_inline const struct pin_irq_map *get_pin_irq_map(rt_uint32_t pinbit) +{ + rt_int32_t mapindex = get_pin_index(pinbit); + if (mapindex < 0 || mapindex >= (rt_int32_t)ITEM_NUM(pin_irq_map)) + { + return RT_NULL; + } + return &pin_irq_map[mapindex]; +} + + + + static rt_err_t ns800_pin_attach_irq(struct rt_device *device, rt_base_t pin, rt_uint8_t mode, void (*hdr)(void *args), void *args) { + rt_base_t level; + rt_int32_t irqindex = -1; + const rt_pin_info_t *info = get_pin_info(pin); + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + switch (mode) + { + case PIN_IRQ_MODE_RISING: + case PIN_IRQ_MODE_FALLING: + case PIN_IRQ_MODE_RISING_FALLING: + break; + case PIN_IRQ_MODE_HIGH_LEVEL: + /* hardware not supported */ + case PIN_IRQ_MODE_LOW_LEVEL: + /* hardware not supported */ + default: + return -RT_EINVAL; + } + irqindex = get_pin_index(info->pin); + if (irqindex < 0 || irqindex >= (rt_int32_t)ITEM_NUM(pin_irq_hdr_table)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_table[irqindex].pin == info->pin && + pin_irq_hdr_table[irqindex].hdr == hdr && + pin_irq_hdr_table[irqindex].mode == mode && + pin_irq_hdr_table[irqindex].args == args) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + if (pin_irq_hdr_table[irqindex].pin != -1) + { + rt_hw_interrupt_enable(level); + return -RT_EBUSY; + } + pin_irq_hdr_table[irqindex].pin = info->pin; + pin_irq_hdr_table[irqindex].hdr = hdr; + pin_irq_hdr_table[irqindex].mode = mode; + pin_irq_hdr_table[irqindex].args = args; + rt_hw_interrupt_enable(level); return RT_EOK; } static rt_err_t ns800_pin_dettach_irq(struct rt_device *device, rt_base_t pin) { + rt_base_t level; + rt_int32_t irqindex = -1; + const rt_pin_info_t *info = get_pin_info(pin); + + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + + irqindex = get_pin_index(info->pin); + if (irqindex < 0 || irqindex >= (rt_int32_t)ITEM_NUM(pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_table[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + pin_irq_hdr_table[irqindex].pin = -1; + pin_irq_hdr_table[irqindex].hdr = RT_NULL; + pin_irq_hdr_table[irqindex].mode = 0; + pin_irq_hdr_table[irqindex].args = RT_NULL; + rt_hw_interrupt_enable(level); return RT_EOK; } + +static SYSCON_ExtiSel EXTI_enableGpioLine (GPIO_TypeDef *port, GPIO_PinNum pin) +{ + SYSCON_ExtiSel retLine; + retLine = (SYSCON_ExtiSel)((uint16_t)pin % 16); + /* Unlock SYSCON register writing function */ + SYSCON_UNLOCK; + + + + + if (port == GPIOA) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_0); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_8); + } + } + else if (port == GPIOB) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_1); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_9); + } + } + else if (port == GPIOC) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_2); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_10); + } + } + else if (port == GPIOD) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_3); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_11); + } + } + else if (port == GPIOE) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_4); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_12); + } + } + else if (port == GPIOF) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_5); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_13); + } + } + else if (port == GPIOG) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_6); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_14); + } + } + else if (port == GPIOH) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_7); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_15); + } + } + + /* Lock SYSCON register writing function */ + SYSCON_LOCK; + + return retLine; +} + +static IRQn_Type EXTI_getLineIrqn (SYSCON_ExtiSel line) +{ + IRQn_Type irq = EXTI3_0_IRQn; + + switch (line) + { + case SYSCON_EXTISEL_0: + case SYSCON_EXTISEL_1: + case SYSCON_EXTISEL_2: + case SYSCON_EXTISEL_3: + { + irq = EXTI3_0_IRQn; + } + break; + + case SYSCON_EXTISEL_4: + case SYSCON_EXTISEL_5: + case SYSCON_EXTISEL_6: + case SYSCON_EXTISEL_7: + { + irq = EXTI7_4_IRQn; + } + break; + + case SYSCON_EXTISEL_8: + case SYSCON_EXTISEL_9: + case SYSCON_EXTISEL_10: + case SYSCON_EXTISEL_11: + { + irq = EXTI11_8_IRQn; + } + break; + + case SYSCON_EXTISEL_12: + case SYSCON_EXTISEL_13: + case SYSCON_EXTISEL_14: + case SYSCON_EXTISEL_15: + { + irq = EXTI15_12_IRQn; + } + break; + + default: + break; + } + + return irq; +} + +void EXTI_handler(void); + + static rt_err_t ns800_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint8_t enabled) -{ +{ + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t irqindex = -1; + rt_uint8_t gpio_port_souce=0; + const rt_pin_info_t *info = get_pin_info(pin); + uint32_t key_line_idx = 0; + IRQn_Type key_irq_idx; + RT_ASSERT(info->port >= 3 && "gpio just support A,B,C"); + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + + if (enabled == PIN_IRQ_ENABLE) + { + irqindex = get_pin_index(info->pin); + if (irqindex < 0 || irqindex >= (rt_int32_t)ITEM_NUM(pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + + if (pin_irq_hdr_table[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return -RT_ENOSYS; + } + + irqmap = &pin_irq_map[irqindex]; + + key_line_idx = EXTI_enableGpioLine(info->port,info->pin); + key_irq_idx = EXTI_getLineIrqn((SYSCON_ExtiSel)key_line_idx); + EXTI_setIntrMaskReg(EXTI, (1 << key_line_idx)); + /* Interrupt handler function registration. */ + Interrupt_register(key_irq_idx, &EXTI_handler); + /* Enable the interrupt signals. Enable global interrupts.*/ + Interrupt_enable(key_irq_idx); + + switch (pin_irq_hdr_table[irqindex].mode) + { + case PIN_IRQ_MODE_RISING: + GPIO_setPadConfig(info->port,info->pin, GPIO_PIN_TYPE_PULLDOWN); + EXTI_setRiseEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + break; + case PIN_IRQ_MODE_FALLING: + GPIO_setPadConfig(info->port,info->pin, GPIO_PIN_TYPE_PULLUP); + EXTI_setFallEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + break; + case PIN_IRQ_MODE_RISING_FALLING: + GPIO_setPadConfig(info->port,info->pin, GPIO_PIN_TYPE_STD); + EXTI_setRiseEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + EXTI_setFallEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + break; + } + /* Enable the interrupt signals. Enable global interrupts.*/ + Interrupt_enable(irqmap->irqno); + rt_kprintf("IRQn=%d\n",irqmap->irqno); + + rt_hw_interrupt_enable(level); + } + else if (enabled == PIN_IRQ_DISABLE) + { + irqmap = get_pin_irq_map(info->pin); + if (irqmap == RT_NULL) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + + pin_irq_enable_mask &= ~irqmap->pinbit; + + if ((irqmap->pinbit>=GPIO_PIN_0)&&(irqmap->pinbit<=GPIO_PIN_3)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_4)&&(irqmap->pinbit<=GPIO_PIN_7)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_8)&&(irqmap->pinbit<=GPIO_PIN_11)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_12)&&(irqmap->pinbit<=GPIO_PIN_15)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_16)&&(irqmap->pinbit<=GPIO_PIN_19)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_16|GPIO_PIN_17|GPIO_PIN_18|GPIO_PIN_19))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_20)&&(irqmap->pinbit<=GPIO_PIN_23)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_20|GPIO_PIN_21|GPIO_PIN_22|GPIO_PIN_23))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_24)&&(irqmap->pinbit<=GPIO_PIN_27)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_24|GPIO_PIN_25|GPIO_PIN_26|GPIO_PIN_27))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_28)&&(irqmap->pinbit<=GPIO_PIN_31)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_28|GPIO_PIN_29|GPIO_PIN_30|GPIO_PIN_31))) + { + Interrupt_disable(irqmap->irqno); + } + } + else + { + NVIC_DisableIRQ(irqmap->irqno); + } + + rt_hw_interrupt_enable(level); + } + else + { + return -RT_ENOSYS; + } + return RT_EOK; } + + +rt_inline void pin_irq_hdr(int irqno) +{ + if (pin_irq_hdr_table[irqno].hdr) + { + pin_irq_hdr_table[irqno].hdr(pin_irq_hdr_table[irqno].args); + } +} + +void HAL_GPIO_EXTI_Callback(rt_uint16_t GPIO_Pin) +{ + pin_irq_hdr(get_pin_index(GPIO_Pin)); +} + + +void EXTI_handler(void) +{ + rt_interrupt_enter(); + + uint32_t tempPr = EXTI_getPendReg(EXTI); + + if(tempPr & (1 << SYSCON_EXTISEL_0)) + { + if(pin_irq_hdr_table[GPIO_PIN_0].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_0); + } + else if(pin_irq_hdr_table[GPIO_PIN_16].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_16); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_1)) + { + if(pin_irq_hdr_table[GPIO_PIN_1].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_1); + } + else if(pin_irq_hdr_table[GPIO_PIN_17].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_17); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_2)) + { + if(pin_irq_hdr_table[GPIO_PIN_2].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_2); + } + else if(pin_irq_hdr_table[GPIO_PIN_18].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_18); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_3)) + { + if(pin_irq_hdr_table[GPIO_PIN_3].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_3); + } + else if(pin_irq_hdr_table[GPIO_PIN_19].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_19); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_4)) + { + if(pin_irq_hdr_table[GPIO_PIN_4].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_4); + } + else if(pin_irq_hdr_table[GPIO_PIN_20].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_20); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_5)) + { + if(pin_irq_hdr_table[GPIO_PIN_5].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_5); + } + else if(pin_irq_hdr_table[GPIO_PIN_21].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_21); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_6)) + { + if(pin_irq_hdr_table[GPIO_PIN_6].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_6); + } + else if(pin_irq_hdr_table[GPIO_PIN_22].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_22); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_7)) + { + if(pin_irq_hdr_table[GPIO_PIN_7].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_7); + } + else if(pin_irq_hdr_table[GPIO_PIN_23].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_23); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_8)) + { + if(pin_irq_hdr_table[GPIO_PIN_8].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_8); + } + else if(pin_irq_hdr_table[GPIO_PIN_24].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_24); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_9)) + { + if(pin_irq_hdr_table[GPIO_PIN_9].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_9); + } + else if(pin_irq_hdr_table[GPIO_PIN_25].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_25); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_10)) + { + if(pin_irq_hdr_table[GPIO_PIN_10].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_10); + } + else if(pin_irq_hdr_table[GPIO_PIN_26].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_26); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_11)) + { + if(pin_irq_hdr_table[GPIO_PIN_11].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_11); + } + else if(pin_irq_hdr_table[GPIO_PIN_27].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_27); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_12)) + { + if(pin_irq_hdr_table[GPIO_PIN_12].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_12); + } + else if(pin_irq_hdr_table[GPIO_PIN_28].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_28); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_13)) + { + if(pin_irq_hdr_table[GPIO_PIN_13].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_13); + } + else if(pin_irq_hdr_table[GPIO_PIN_29].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_29); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_14)) + { + if(pin_irq_hdr_table[GPIO_PIN_14].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_14); + } + else if(pin_irq_hdr_table[GPIO_PIN_30].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_30); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_15)) + { + if(pin_irq_hdr_table[GPIO_PIN_15].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_15); + } + else if(pin_irq_hdr_table[GPIO_PIN_31].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_31); + } + } + + EXTI_clearPendReg(EXTI, tempPr); + + rt_interrupt_leave(); + +} + + static const struct rt_pin_ops _ns800rt7_pin_ops = { ns800rt7_pin_mode, @@ -447,10 +1147,6 @@ static const struct rt_pin_ops _ns800rt7_pin_ops = RT_NULL, }; -rt_inline void pin_irq_hdr(int irqno) -{ - -} int rt_hw_pin_init(void) { diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h index 24a5980dbfa8cfd3b8cf70cc84ada4da1d2d02fb..4dfbd53a1836974861692dbc9e9297ba52e0ba54 100644 --- a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h @@ -25,6 +25,11 @@ typedef struct { GPIO_PinNum pin; } rt_pin_info_t; +struct pin_irq_map +{ + rt_uint16_t pinbit; + IRQn_Type irqno; +}; #define PIN_NUM(...) get_pin_num(__VA_ARGS__) #define PIN_PORT(pin) get_port_index_by_num(pin) diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..481d5c17f058d30e14cbb8330b027c4491ef1bbd --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.c @@ -0,0 +1,277 @@ +/* + * Copyright (c) 2006-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-14 Jeffery Yuan the first version + */ +#include "drv_config.h" +#include "drv_hard_i2c.h" + + +#ifdef RT_USING_I2C + +#define LOG_TAG "drv.i2c" +#include + +#if !defined(BSP_USING_HARD_I2C1) && !defined(BSP_USING_HARD_I2C2) +#error "Please define at least one BSP_USING_I2Cx" +/* This driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ +#endif + +#define I2C_SPEED (100000UL) /* I2C bus speed: 100 kHz */ + +#define IS_I2C_LEGACY(periph) ((periph) == I2C1 || (periph) == I2C2) + + +#if defined(BSP_USING_HARD_I2C1) +struct rt_i2c_bus_device i2c1; /* I2C1 bus device instance */ +#endif /* BSP_USING_I2C1 */ + +#if defined(BSP_USING_HARD_I2C2) +struct rt_i2c_bus_device i2c2; /* I2C2 bus device instance */ +#endif /* BSP_USING_I2C2 */ + + + + +static const struct ns800_i2c_bus ns800_i2c_config[] = { +#ifdef BSP_USING_HARD_I2C1 + { + &i2c1, /* Pointer to I2C1 bus device */ + I2C1, /* I2C1 peripheral base address */ + "hwi2c1", /* Device name */ + GPIOB, /* SCL port: GPIOB */ + GPIO_PIN_11, /* SCL pin: 11 */ + ALT6_FUNCTION, /* SCL alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SCL pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SCL direction: input */ + GPIOB, /* SDA port: GPIOB */ + GPIO_PIN_10, /* SDA pin: 10 */ + ALT6_FUNCTION, /* SDA alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SDA pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SDA direction: input */ + }, +#endif + +#ifdef BSP_USING_HARD_I2C2 + { + &i2c2, /* Pointer to I2C2 bus device */ + I2C2, /* I2C2 peripheral base address */ + "hwi2c2", /* Device name */ + GPIOB, /* SCL port: GPIOB */ + GPIO_PIN_3, /* SCL pin: 3 */ + ALT6_FUNCTION, /* SCL alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SCL pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SCL direction: input */ + GPIOB, /* SDA port: GPIOB */ + GPIO_PIN_2, /* SDA pin: 2 */ + ALT6_FUNCTION, /* SDA alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SDA pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SDA direction: input */ + }, +#endif + }; + +/** + * @brief Initializes the I2C pins and peripheral. + * @param i2c: Pointer to the I2C bus configuration structure + * @retval None + */ +static void ns800_i2c_bus_init(const struct ns800_i2c_bus *i2c) +{ + /* I2C SCL pinmux control */ + GPIO_setPinConfig(i2c->scl_port, i2c->scl_pin, i2c->scl_mux); /* Configure SCL alternate function */ + GPIO_setAnalogMode(i2c->scl_port, i2c->scl_pin, GPIO_ANALOG_DISABLED); /* Disable analog mode for SCL */ + //GPIO_setPadConfig(i2c->scl_port,i2c->scl_pin, GPIO_PIN_TYPE_OD); /* Optional: Open-drain configuration (commented) */ + GPIO_setPadConfig(i2c->scl_port, i2c->scl_pin, i2c->scl_pad); /* Set SCL pad type (e.g., pull-up) */ + GPIO_setQualificationMode(i2c->scl_port, i2c->scl_pin, GPIO_QUAL_ASYNC); /* Set SCL asynchronous qualification */ + //GPIO_setDirectionMode(i2c->scl_port, i2c->scl_pin, i2c->scl_direction); /* Set SCL direction */ + + /* I2C SDA pinmux control */ + GPIO_setPinConfig(i2c->sda_port, i2c->sda_pin, i2c->sda_mux); /* Configure SDA alternate function */ + GPIO_setAnalogMode(i2c->sda_port, i2c->sda_pin, GPIO_ANALOG_DISABLED); /* Disable analog mode for SDA */ + //GPIO_setPadConfig(i2c->sda_port,i2c->sda_pin, GPIO_PIN_TYPE_OD); /* Optional: Open-drain configuration (commented) */ + GPIO_setPadConfig(i2c->sda_port, i2c->sda_pin, i2c->sda_pad); /* Set SDA pad type (e.g., pull-up) */ + GPIO_setQualificationMode(i2c->sda_port, i2c->sda_pin, GPIO_QUAL_ASYNC); /* Set SDA asynchronous qualification */ + //GPIO_setDirectionMode(i2c->sda_port, i2c->sda_pin, i2c->sda_direction); /* Set SDA direction */ + + /* Reset module before configuring it. */ + I2C_resetMaster(i2c->base); /* Reset I2C master module */ + + /* Disable debug mode */ + I2C_disableMasterDebug(i2c->base); /* Disable I2C debug mode to prevent interference */ + + /* Set master water marks. */ + I2C_setMasterWatermarks(i2c->base, I2C_MASTER_WATERMARK_0, I2C_MASTER_WATERMARK_0); /* Set FIFO watermarks to 0 */ + + /* Configure master glitch filters. + And set FILTSDA to 0 disables the filter, so the min value is 1. */ + I2C_setMasterGlitchFilter(i2c->base, I2C_MASTER_FILTER_PCLK1, I2C_MASTER_FILTER_PCLK1); /* Enable glitch filtering */ + + /* Configure baudrate after the SDA/SCL glitch filter setting, + since the baudrate calculation needs them as parameter. */ + I2C_configMasterBaudRate(i2c->base, RCC_getPclk2Frequency(), I2C_SPEED); /* Set I2C clock to 100 kHz */ + + /* Configure bus idle timeouts after baudrate setting. + The value is equal to BUSIDLE cycles of functional clock divided by prescaler. + And set BUSIDLE to 0 disables the filter, so the min value is 1. */ + I2C_setMasterBusIdleTimeout(i2c->base, 1U); /* Set bus idle timeout to 1 cycle */ + + /* Configure pin low timeouts after baudrate setting. + The value is equal to PINLOW cycles of functional clock divided by prescaler. + And set PINLOW to 0 disables the filter, so the min value is 1. */ + I2C_setMasterPinLowTimeout(i2c->base, I2C_MASTER_PINLOW_SCLSDA, 0U); /* Disable pin low timeout */ + + /* Config master data match mode, match code and rxmatchonly. */ + I2C_configMasterDataMatch(i2c->base, I2C_MASTER_MATCHMODE_DISABLED, 0U, 0U, I2C_MASTER_RXMATCHDATAONLY_DISABLE); /* Disable data match feature */ + + /* Enable master module */ + I2C_enableMasterModule(i2c->base); /* Enable I2C master peripheral */ +} + +/** + * @brief Master I2C transfer for NS800 I2C controller. + * + * @param bus The I2C bus device. + * @param msgs Array of I2C messages to transfer. + * @param num Number of messages in the array. + * @return Number of messages successfully transferred, or 0 on error. + */ +static rt_ssize_t ns800_master_xfer(struct rt_i2c_bus_device *bus, + struct rt_i2c_msg msgs[], + rt_uint32_t num) +{ + // Obtain the hardware-specific I2C bus instance from the bus private data. + struct ns800_i2c_bus *ns800_i2c = (struct ns800_i2c_bus *)bus->priv; + I2C_TypeDef *i2c = ns800_i2c->base; // Base address of I2C registers. + I2C_Status status = I2C_STATUS_SUCCESS; // Status of I2C operations. + + // Iterate over each message in the transfer list. + for (rt_uint32_t i = 0; i < num; i++) + { + struct rt_i2c_msg *msg = &msgs[i]; // Current message. + + /* Build the 8-bit device address (7-bit address << 1) with R/W bit + * (the lowest bit will be set by the hardware start condition). */ + uint8_t addr8 = (msg->addr << 1); + I2C_Direction dir; + // Determine transfer direction from message flags. + if (msg->flags & RT_I2C_RD) + { + dir = I2C_DIRECTION_READ; // Master read. + } + else + { + dir = I2C_DIRECTION_WRITE; // Master write. + } + + /* Send START or REPEATED START condition. + * For the first message, send a normal START. + * For subsequent messages, send a RESTART unless the NO_START flag is set. */ + if (i == 0) + { + status = I2C_sendStart(i2c, addr8, dir); + } + else + { + if (!(msg->flags & RT_I2C_NO_START)) + { + status = I2C_sendReStart(i2c, addr8, dir); + } + // If RT_I2C_NO_START is set, skip the start condition and continue data transfer. + } + + // If start/restart failed, log error and abort. + if (status != I2C_STATUS_SUCCESS) + { + LOG_E("[I2C] Start/Restart failed, addr=0x%02X err=%d\n", addr8, status); + goto __exit; + } + + /* Data transfer phase. + * Depending on the direction, either receive data from the slave or send data to it. */ + if (msg->flags & RT_I2C_RD) + { + status = I2C_receiveDataMaster(i2c, msg->buf, msg->len); + } + else + { + status = I2C_sendDataMaster(i2c, msg->buf, msg->len); + } + + // If data transfer failed, log error and abort. + if (status != I2C_STATUS_SUCCESS) + { + LOG_E("[I2C] Data transfer failed, err=%d\n", status); + goto __exit; + } + + /* Send STOP condition: + * Only for the last message and if the NO_STOP flag is not set in that message. + * This ensures the bus is released after the complete transaction. */ + if (!(msg->flags & RT_I2C_NO_STOP) && (i == num - 1)) + { + // Wait for FIFO to become idle before sending STOP to avoid corruption. + status = I2C_sendStop(i2c); + if (status != I2C_STATUS_SUCCESS) + { + LOG_E("[I2C] Send stop failed, err=%d\n", status); + goto __exit; + } + } + } + + // All messages transferred successfully. + return num; + +__exit: + /* Error recovery: try to send STOP to release the bus, + * then reset the I2C master hardware to prevent deadlock. */ + I2C_sendStop(i2c); // Attempt to issue a STOP condition. + I2C_resetMaster(i2c); // Reset the I2C master module. + return 0; // Return 0 to indicate failure. +} + + + +const struct rt_i2c_bus_device_ops ns800_i2c_ops = { + .master_xfer = ns800_master_xfer, /* Master transfer operation */ + .slave_xfer = RT_NULL, /* Slave transfer not supported */ + .i2c_bus_control = RT_NULL, /* Bus control not implemented */ +}; + +/** + * @brief I2C initialization function + * @param None + * @retval RT_EOK indicates successful initialization. + */ +int rt_hw_i2c_init(void) +{ + rt_size_t obj_num = sizeof(ns800_i2c_config) / sizeof(ns800_i2c_config[0]); /* Calculate number of I2C instances */ + + for(int i = 0; i < obj_num; i++) + { + /* Initialize I2C pins and peripheral */ + ns800_i2c_bus_init(&ns800_i2c_config[i]); + + /* Set I2C speed clock = 100kHz */ + if(IS_I2C_LEGACY(ns800_i2c_config[i].base)) /* Check if it's a legacy I2C peripheral */ + { + /* Set bus device operations */ + ns800_i2c_config[i].bus->ops = &ns800_i2c_ops; + /* Set private data pointer to configuration */ + ns800_i2c_config[i].bus->priv = (void *)&ns800_i2c_config[i]; + /* Register I2C bus device with RT-Thread */ + rt_i2c_bus_device_register(ns800_i2c_config[i].bus, ns800_i2c_config[i].device_name); + } + } + + return RT_EOK; /* Return success */ +} + +INIT_BOARD_EXPORT(rt_hw_i2c_init); /* Initialize I2C at board initialization phase */ + +#endif /* RT_USING_I2C */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.h new file mode 100644 index 0000000000000000000000000000000000000000..cf11491639af24b8009ddc4edfd0cd2fd80a32fc --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-14 Jeffery Yuan first version + */ + +#ifndef __DRV_HARD_I2C_H__ +#define __DRV_HARD_I2C_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct ns800_i2c_bus +{ + struct rt_i2c_bus_device *bus; + I2C_TypeDef *base; + char *device_name; + GPIO_TypeDef *scl_port; + GPIO_PinNum scl_pin; + GPIO_AltFunc scl_mux; + rt_uint32_t scl_pad; + GPIO_Direction scl_direction; + GPIO_TypeDef *sda_port; + GPIO_PinNum sda_pin; + GPIO_AltFunc sda_mux; + rt_uint32_t sda_pad; + GPIO_Direction sda_direction; +}; + +int rt_hw_hard_i2c_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_HARD_I2C_H__ */ + diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.c new file mode 100644 index 0000000000000000000000000000000000000000..9d55f70197e86c209e4c86844a16c2c95d5a55a1 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.c @@ -0,0 +1,279 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery.Yuan Floating-point timeout support + */ + +#include +#include +#include "board.h" +#include "iwdg1.h" +#include "drv_iwdg1.h" + +#ifdef RT_USING_WDT +#ifdef BSP_USING_IWDG1 + +/* IWDG1 clock source frequency (Hz) = 10 MHz */ +#define IWDG1_CLK_FREQ_HZ (10000000U) + +/* PSC encoding to division ratio and tWDCLKD (microseconds) */ +static const uint32_t psc_div_table[] = { + 1, /* 0: DIV1 */ + 2, /* 1: DIV2 */ + 4, /* 2: DIV4 */ + 8, /* 3: DIV8 */ + 16, /* 4: DIV16 */ + 32, /* 5: DIV32 */ + 0, /* 6: Invalid */ + 0, /* 7: Invalid */ + 128, /* 8: DIV128 */ + 256, /* 9: DIV256 */ + 512, /* 10: DIV512*/ + 1024, /* 11: DIV1024*/ + 2048, /* 12: DIV2048*/ + 4096, /* 13: DIV4096*/ + 8192, /* 14: DIV8192*/ + 64 /* 15: DIV64 */ +}; +static const float tWDCLKD_us_table[] = { + 0.1f, 0.2f, 0.4f, 0.8f, 1.6f, 3.2f, + 0.0f, 0.0f, + 12.8f, 25.6f, 51.2f, 102.4f, 204.8f, 409.6f, 819.2f, 6.4f +}; + +/* TOPS encoding to ARR value */ +static const uint32_t tops_arr_table[] = { + 1023, /* 00: 0x3FF */ + 4095, /* 01: 0xFFF */ + 8191, /* 10: 0x1FFF */ + 16383 /* 11: 0x3FFF */ +}; + +/* IWDG1 device object */ +struct iwdg1_device +{ + IWDG1_TypeDef *base; + uint8_t psc_code; /* PSC encoding (0~15) */ + uint8_t tops_code; /* TOPS encoding (0~3) */ + float timeout_ms; /* Actual timeout in milliseconds (floating point) */ + rt_bool_t started; + rt_bool_t interrupt_mode; /* intterrupt flag */ +}; + +static struct iwdg1_device iwdg1_dev; +static rt_watchdog_t watchdog; + +/** + * @brief Calculate the closest hardware configuration for a desired timeout + * @param timeout_ms Desired timeout in milliseconds (float) + * @param psc_code Output PSC encoding + * @param tops_code Output TOPS encoding + * @param actual_ms Output actual timeout in milliseconds (float) + * @return RT_EOK always successful + */ +static rt_err_t iwdg1_calc_config_float(float timeout_ms, uint8_t *psc_code, uint8_t *tops_code, float *actual_ms) +{ + float target_us = timeout_ms * 1000.0f; + float best_diff = 1e9f; + uint8_t best_psc = 0, best_tops = 0; + float best_actual_us = 0; + + for (uint8_t psc = 0; psc < 16; psc++) + { + float tWDCLKD_us = tWDCLKD_us_table[psc]; + if (tWDCLKD_us == 0.0f) continue; + for (uint8_t tops = 0; tops < 4; tops++) + { + uint32_t arr = tops_arr_table[tops]; + float ov_us = (arr + 1) * tWDCLKD_us; + float diff = (ov_us > target_us) ? (ov_us - target_us) : (target_us - ov_us); + if (diff < best_diff) + { + best_diff = diff; + best_psc = psc; + best_tops = tops; + best_actual_us = ov_us; + if (diff == 0) goto found; + } + } + } + +found: + *psc_code = best_psc; + *tops_code = best_tops; + *actual_ms = best_actual_us / 1000.0f; + if (*actual_ms < 0.0001f) *actual_ms = 0.1024f; // С 0.1024ms + rt_kprintf("psc_code=%d, tops_code=%d, actual=%.4f ms\n", best_psc, best_tops, *actual_ms); + return RT_EOK; +} + + +/* IWDG1 Interrupt Handler + NOTE: Due the IWDG1 operates in a low-speed clock domain and the operation + to clear the flag requires a certain number of clock cycles, so wait + for the flag status update to complete before exiting! + */ +void IWDG1_Handler(void) +{ + rt_interrupt_enter(); + rt_kprintf("Enter iwdg1 IRQ!\n"); + IWDG1_clearErrorStatus(iwdg1_dev.base); + IWDG1_clearIntStatus(iwdg1_dev.base); + while(IWDG1_getIntStatus(iwdg1_dev.base) == 1) + { + ; + } + + IWDG1_enableModule(iwdg1_dev.base); + rt_interrupt_leave(); +} + + + + +/* Apply hardware configuration (without enabling) */ +static void iwdg1_apply_config(void) +{ + uint32_t temp; + uint32_t cr = iwdg1_dev.base->CR.WORDVAL; + if (cr != 0x000033FF) { + rt_kprintf("iwdg1: CR already configured (0x%08X), skip write\n", cr); + // Reverse calculate actual timeout from existing CR + uint8_t psc = (cr >> 4) & 0xF; + uint8_t tops = cr & 0x3; + iwdg1_dev.psc_code = psc; + iwdg1_dev.tops_code = tops; + iwdg1_dev.timeout_ms = (tops_arr_table[tops] + 1) * tWDCLKD_us_table[psc] / 1000.0f; + rt_kprintf("iwdg1: using existing config, timeout=%.4f ms\n", iwdg1_dev.timeout_ms); + return; + } + if (iwdg1_dev.interrupt_mode) + { + /* Interrupt handler function registration. */ + Interrupt_register(IWDG1_IRQn, &IWDG1_Handler); + /* Enable the IWDG1 interrupt signals. Enable global interrupts.*/ + Interrupt_enable(IWDG1_IRQn); + temp = iwdg1_dev.tops_code | (IRQ_EN << IWDG_CR_RSTIRQS_S) \ + | (LPRUN << IWDG_CR_SLCSTP_S) \ + | (iwdg1_dev.psc_code << IWDG_CR_CKS_S) \ + | (END_PERCENT0 << IWDG_CR_RPES_S) \ + | (HEAD_PERCENT100 << IWDG_CR_RPSS_S); + } + else + { + temp = iwdg1_dev.tops_code | (RESET_EN << IWDG_CR_RSTIRQS_S) \ + | (LPRUN << IWDG_CR_SLCSTP_S) \ + | (iwdg1_dev.psc_code << IWDG_CR_CKS_S) \ + | (END_PERCENT0 << IWDG_CR_RPES_S) \ + | (HEAD_PERCENT100 << IWDG_CR_RPSS_S); + } + WRITE_REG(iwdg1_dev.base->CR.WORDVAL, temp); + + + IWDG1_clearErrorStatus(iwdg1_dev.base); + IWDG1_clearIntStatus(iwdg1_dev.base); +} + +/* Start watchdog (enable) */ +static void iwdg1_start_hw(void) +{ + IWDG1_enableModule(iwdg1_dev.base); + iwdg1_dev.started = RT_TRUE; + rt_kprintf("iwdg1: started, timeout=%.4f ms\n", iwdg1_dev.timeout_ms); +} + +static rt_err_t iwdg1_init(rt_watchdog_t *wdt) +{ + return RT_EOK; +} + +static rt_err_t iwdg1_control(rt_watchdog_t *wdt, int cmd, void *arg) +{ + switch (cmd) + { + case RT_DEVICE_CTRL_WDT_KEEPALIVE: + IWDG1_refreshModule(iwdg1_dev.base); + break; + + case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: + { + // Standard integer millisecond interface (backward compatible) + uint32_t req_ms_int = *(uint32_t *)arg; + float req_ms = (float)req_ms_int; + uint8_t psc, tops; + float actual_ms; + iwdg1_calc_config_float(req_ms, &psc, &tops, &actual_ms); + iwdg1_dev.psc_code = psc; + iwdg1_dev.tops_code = tops; + iwdg1_dev.timeout_ms = actual_ms; + rt_kprintf("iwdg1: set timeout req=%u ms, actual=%.4f ms (PSC=%d, TOPS=%d)\n", + req_ms_int, actual_ms, psc, tops); + if (iwdg1_dev.started) + { + iwdg1_apply_config(); + IWDG1_enableModule(iwdg1_dev.base); + } + } + break; + + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: + // Standard integer millisecond interface returns floor of actual timeout + *(uint32_t *)arg = (uint32_t)iwdg1_dev.timeout_ms; + break; + + case RT_DEVICE_CTRL_WDT_START: + if (!iwdg1_dev.started) + { + iwdg1_apply_config(); + iwdg1_start_hw(); + } + else + { + rt_kprintf("iwdg1: already started\n"); + } + break; + + case RT_DEVICE_CTRL_WDT_STOP: + rt_kprintf("iwdg1: stop not supported\n"); + return -RT_ENOSYS; + + default: + return -RT_ERROR; + } + return RT_EOK; +} + +/* Operation function table - constant */ +static const struct rt_watchdog_ops iwdg1_ops = { + .init = iwdg1_init, + .control = iwdg1_control, +}; + +int rt_hw_iwdg1_init(void) +{ + iwdg1_dev.base = IWDG1; + /* Default factory configuration: maximum timeout 13421.7728 ms */ + iwdg1_dev.psc_code = 14; // PSC = 14 (DIV8192), tWDCLKD = 819.2us + iwdg1_dev.tops_code = 3; // TOPS = 3 (ARR=16383) + iwdg1_dev.timeout_ms = (tops_arr_table[3] + 1) * tWDCLKD_us_table[14] / 1000.0f; // 16384*819.2/1000 = 13421.7728 ms + iwdg1_dev.started = RT_FALSE; + iwdg1_dev.interrupt_mode = RT_TRUE; + + watchdog.ops = &iwdg1_ops; + if (rt_hw_watchdog_register(&watchdog, IWDG1_DEVICE_NAME, RT_DEVICE_FLAG_DEACTIVATE, RT_NULL) != RT_EOK) + { + rt_kprintf("iwdg1: register failed\n"); + return -RT_ERROR; + } + rt_kprintf("iwdg1: driver initialized (clock=%d Hz, max timeout=%.4f ms)\n", IWDG1_CLK_FREQ_HZ, iwdg1_dev.timeout_ms); + return RT_EOK; +} + +INIT_BOARD_EXPORT(rt_hw_iwdg1_init); + +#endif /* BSP_USING_IWDG1 */ +#endif /* RT_USING_WDT */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.h new file mode 100644 index 0000000000000000000000000000000000000000..b233159d62308226e4d235174b8627314f126dad --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-12 Jeffery Yuan first version + */ + +#ifndef DRV_IWDG1_H__ +#define DRV_IWDG1_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define IWDG1_DEVICE_NAME "iwdg1" + +/** + * @brief Initialize IWDG1 hardware and register it as a watchdog device. + * + * @return RT_EOK on success, negative error code otherwise. + */ +int rt_hw_iwdg1_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* DRV_IWDG1_H__ */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.c new file mode 100644 index 0000000000000000000000000000000000000000..9105895e24dc9b9d74c0c1e4fa82e526902d34b7 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.c @@ -0,0 +1,326 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery Yuan IWDG2 driver based on chip manual + */ + +#include +#include +#include "board.h" +#include "iwdg2.h" +#include "drv_iwdg2.h" +#ifdef RT_USING_WDT +#ifdef BSP_USING_IWDG2 + +/* IWDG2 ʱԴƵ (Hz) = 128 kHz (LIRC) */ +#define IWDG2_CLK_FREQ_HZ (128000U) + +/* PSC ӦķƵ */ +static const uint32_t psc_div_table[] = { + 128, /* 0: DIV128 */ + 2048, /* 1: DIV2048 */ + 1024, /* 2: DIV1024 */ + 512, /* 3: DIV512 */ + 256, /* 4: DIV256 */ + 64, /* 5: DIV64 */ + 32, /* 6: DIV32 */ + 16, /* 7: DIV16 */ + 8, /* 8: DIV8 */ + 4, /* 9: DIV4 */ + 0, /* 10: Ч */ + 0, /* 11: Ч */ + 0, /* 12: Ч */ + 0, /* 13: Ч */ + 0, /* 14: Ч */ + 0 /* 15: Ч */ +}; + +/* ݷƵȼ tWDCLKD () */ +static float get_wdclk_period(uint8_t psc_code) +{ + uint32_t div = psc_div_table[psc_code]; + if (div == 0) return 0.0f; + return (float)div / IWDG2_CLK_FREQ_HZ; +} + +/* IWDG2 豸 */ +struct iwdg2_device +{ + IWDG2_TypeDef *base; + uint8_t psc_code; /* PSC (0~15) */ + uint16_t reload; /* װֵ (12λ: 0~4095) */ + float timeout_s; /* ʵʱ () */ + rt_bool_t started; + rt_bool_t interrupt_mode; /* жģʽ־ */ +}; + +static struct iwdg2_device iwdg2_dev; +static rt_watchdog_t watchdog; + +/** + * @brief ʱʱӽӲ (PSC RELOAD) + * @param timeout_s ʱʱ () + * @param psc_code PSC + * @param reload RELOAD ֵ + * @param actual_s ʵʳʱʱ () + * @return RT_EOK ɹ, -RT_ERROR Ч + */ +static rt_err_t iwdg2_calc_config(float timeout_s, uint8_t *psc_code, uint16_t *reload, float *actual_s) +{ + float best_diff = 1e9f; + uint8_t best_psc = 0; + uint16_t best_reload = 0; + float best_actual = 0; + + if (timeout_s <= 0) return -RT_ERROR; + + for (uint8_t psc = 0; psc < 16; psc++) + { + float tWDCLKD = get_wdclk_period(psc); + if (tWDCLKD == 0.0f) continue; /* Ч */ + + /* RELOAD ֵ (¼ʱ = (RELOAD+1) * tWDCLKD) */ + float reload_f = timeout_s / tWDCLKD - 1.0f; + uint16_t reload_val; + + if (reload_f < 0) + { + reload_val = 0; /* Сʱ */ + } + else if (reload_f > 4095.0f) + { + reload_val = 4095; /* ʱ */ + } + else + { + reload_val = (uint16_t)(reload_f + 0.5f); /* */ + } + + /* ȷЧΧ */ + if (reload_val > 4095) reload_val = 4095; + + float ov_s = (reload_val + 1) * tWDCLKD; + float diff = (ov_s > timeout_s) ? (ov_s - timeout_s) : (timeout_s - ov_s); + + if (diff < best_diff) + { + best_diff = diff; + best_psc = psc; + best_reload = reload_val; + best_actual = ov_s; + /* С1msֱʹ */ + if (diff < 0.001f) break; + } + } + + *psc_code = best_psc; + *reload = best_reload; + *actual_s = best_actual; + return RT_EOK; +} + +/** + * @brief IWDG2 жϷ + * @note ļеһ£ֱӸǼɡ + * Ҫڳʼʱעᣬͻ + */ +void IWDG2_Handler(void) +{ + rt_interrupt_enter(); + if (IWDG2_getIntStatus(iwdg2_dev.base)) + { + rt_kprintf("iwdg2: timeout interrupt occurred!\n"); + IWDG2_clearIntStatus(iwdg2_dev.base); + /* ȴ־ */ + while (IWDG2_getIntStatus(iwdg2_dev.base)) + { + ; + } + } + rt_interrupt_leave(); +} + +/* ӦӲ (ʹ) */ +static void iwdg2_apply_config(void) +{ + /* IWDG2: жģʽλģʽ */ + if (iwdg2_dev.interrupt_mode) + { + /* עᲢж */ + Interrupt_register(IWDG2_IRQn, &IWDG2_Handler); + Interrupt_enable(IWDG2_IRQn); + IWDG2_configModule(iwdg2_dev.base, IRQ_SEL, + (IWDG2_Prescaler)iwdg2_dev.psc_code, + iwdg2_dev.reload); + } + else + { + IWDG2_configModule(iwdg2_dev.base, RESET_SEL, + (IWDG2_Prescaler)iwdg2_dev.psc_code, + iwdg2_dev.reload); + } + + /* ȴװֵ */ + while (IWDG2_getRVUStatus(iwdg2_dev.base) != 0) + { + ; + } +} + +/* Ź (ʹ) */ +static void iwdg2_start_hw(void) +{ + if (iwdg2_dev.interrupt_mode) + { + /* ܲжϱ־ */ + IWDG2_clearIntStatus(iwdg2_dev.base); + /* ʹ IWDG2 ж */ + IWDG2_enableInterrupt(iwdg2_dev.base); + } + + /* ʹ IWDG2 ģ */ + IWDG2_enableModule(iwdg2_dev.base); + + /* ιȷ RELOAD ֵص */ + IWDG2_refreshModule(iwdg2_dev.base); + + iwdg2_dev.started = RT_TRUE; + + rt_kprintf("iwdg2: started, timeout = %.3f s, mode = %s\n", + (double)iwdg2_dev.timeout_s, + iwdg2_dev.interrupt_mode ? "interrupt" : "reset"); +} + +static rt_err_t iwdg2_init(rt_watchdog_t *wdt) +{ + /* ʹ LIRC ȴȶ */ + RCC_unlockRccRegister(); + RCC_enableLircOscillator(); + RCC_lockRccRegister(); + + rt_kprintf("iwdg2: LIRC clock enabled (%d Hz)\n", IWDG2_CLK_FREQ_HZ); + return RT_EOK; +} + +static rt_err_t iwdg2_control(rt_watchdog_t *wdt, int cmd, void *arg) +{ + switch (cmd) + { + case RT_DEVICE_CTRL_WDT_KEEPALIVE: + /* ι */ + IWDG2_refreshModule(iwdg2_dev.base); + break; + + case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: + { + uint32_t req_ms = *(uint32_t *)arg; + float req_s = req_ms / 1000.0f; + uint8_t psc; + uint16_t reload; + float actual_s; + + /* */ + if (iwdg2_calc_config(req_s, &psc, &reload, &actual_s) != RT_EOK) + { + rt_kprintf("iwdg2: invalid timeout value %d ms\n", req_ms); + return -RT_ERROR; + } + + /* 鳬ʱΧ */ + if (actual_s < 0.00003125f || actual_s > 65.536f) + { + rt_kprintf("iwdg2: timeout out of range (%.6f ~ 65.536 s)\n", 0.00003125); + return -RT_ERROR; + } + + iwdg2_dev.psc_code = psc; + iwdg2_dev.reload = reload; + iwdg2_dev.timeout_s = actual_s; + + rt_kprintf("iwdg2: set timeout req=%d ms, actual=%.3f s (PSC=%d, RELOAD=%d)\n", + req_ms, (double)actual_s, psc, reload); + + if (iwdg2_dev.started) + { + /* ѾҪò */ + iwdg2_apply_config(); + IWDG2_enableModule(iwdg2_dev.base); + IWDG2_refreshModule(iwdg2_dev.base); + } + } + break; + + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: + /* سʱʱ䣨룩 */ + *(uint32_t *)arg = (uint32_t)(iwdg2_dev.timeout_s * 1000.0f); + break; + + case RT_DEVICE_CTRL_WDT_START: + if (!iwdg2_dev.started) + { + iwdg2_apply_config(); + iwdg2_start_hw(); + } + else + { + rt_kprintf("iwdg2: already started\n"); + } + break; + + case RT_DEVICE_CTRL_WDT_STOP: + /* IWDG2 һ޷ֹͣӲ */ + rt_kprintf("iwdg2: stop not supported (hardware limitation)\n"); + return -RT_ENOSYS; + + default: + return -RT_ERROR; + } + return RT_EOK; +} + + +/* */ +static const struct rt_watchdog_ops iwdg2_ops = { + .init = iwdg2_init, + .control = iwdg2_control, +}; + +int rt_hw_iwdg2_init(void) +{ + iwdg2_dev.base = IWDG2; + + /* Ĭã128ƵʱԼ4.096 */ + iwdg2_dev.psc_code = 0; /* PSC = 0: DIV128 */ + iwdg2_dev.reload = 4095; /* RELOAD = 0xFFF: ֵ */ + iwdg2_dev.timeout_s = 4.096f; /* (4095+1) * 128/128000 = 4.096s */ + iwdg2_dev.started = RT_FALSE; + iwdg2_dev.interrupt_mode = RT_TRUE; /* Ĭжģʽɸģ */ + + /* ע⣺ + * 1. IWDG2_Handler ļ壬ֱдͬɣ Interrupt_register + * 2. жʹܲڳʼ׶νУΪŹʱʹܣǰжϡ */ + + /* עῴŹ豸 */ + watchdog.ops = &iwdg2_ops; + if (rt_hw_watchdog_register(&watchdog, IWDG2_DEVICE_NAME, RT_DEVICE_FLAG_DEACTIVATE, RT_NULL) != RT_EOK) + { + rt_kprintf("iwdg2: register failed\n"); + return -RT_ERROR; + } + + rt_kprintf("iwdg2: driver initialized (clock=%d Hz)\n", IWDG2_CLK_FREQ_HZ); + rt_kprintf("iwdg2: timeout range: %.6f ~ 65.536 s\n", 0.00003125); + rt_kprintf("iwdg2: default mode: %s, timeout: 4.096 s\n", + iwdg2_dev.interrupt_mode ? "interrupt" : "reset"); + + return RT_EOK; +} + +INIT_BOARD_EXPORT(rt_hw_iwdg2_init); + +#endif /* BSP_USING_IWDG2 */ +#endif /* RT_USING_WDT */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.h new file mode 100644 index 0000000000000000000000000000000000000000..f69b97270b8b23e43284bf921da506fa439e5392 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery Yuan first version + */ + +#ifndef DRV_IWDG2_H__ +#define DRV_IWDG2_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define IWDG2_DEVICE_NAME "iwdg2" + +/** + * @brief Initialize IWDG2 peripheral and register watchdog device. + * + * @return RT_EOK on success, otherwise negative error code. + */ +int rt_hw_iwdg2_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* DRV_IWDG2_H__ */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..cc82a079d8386a243f823eb404bb2fea3e711f93 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.c @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-15 Jeffery Yuan the first version + */ + +#include +#include "drv_soft_i2c.h" + +#ifdef BSP_USING_SOFT_I2C + +//#define DRV_DEBUG +#define LOG_TAG "drv.i2c" +#include + +#if !defined(BSP_USING_SOFT_I2C1) && !defined(BSP_USING_SOFT_I2C2) +#error "Please define at least one BSP_USING_I2Cx" +/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ +#endif + +static const struct ns800_soft_i2c_config soft_i2c_config[] = +{ +#ifdef BSP_USING_SOFT_I2C1 + I2C1_BUS_CONFIG, +#endif +#ifdef BSP_USING_SOFT_I2C2 + I2C2_BUS_CONFIG, +#endif +}; + +static struct ns800_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; + +/* + * This function initializes the i2c pin. + * + * @param ns800 i2c dirver class. + */ +static void ns800_i2c_gpio_init(struct ns800_i2c *i2c) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)i2c->ops.data; + + rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); + rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); + + rt_pin_write(cfg->scl, PIN_HIGH); + rt_pin_write(cfg->sda, PIN_HIGH); +} + +static void ns800_i2c_pin_init(void) +{ + rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ns800_i2c); + + for(rt_size_t i = 0; i < obj_num; i++) + { + ns800_i2c_gpio_init(&i2c_obj[i]); + } +} + +/* + * This function sets the sda pin. + * + * @param ns800 config class. + * @param The sda pin state. + */ +static void ns800_set_sda(void *data, rt_int32_t state) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + if (state) + { + rt_pin_write(cfg->sda, PIN_HIGH); + } + else + { + rt_pin_write(cfg->sda, PIN_LOW); + } +} + +/* + * This function sets the scl pin. + * + * @param ns800 config class. + * @param The scl pin state. + */ +static void ns800_set_scl(void *data, rt_int32_t state) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + if (state) + { + rt_pin_write(cfg->scl, PIN_HIGH); + } + else + { + rt_pin_write(cfg->scl, PIN_LOW); + } +} + +/* + * This function gets the sda pin state. + * + * @param The sda pin state. + */ +static rt_int32_t ns800_get_sda(void *data) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + return rt_pin_read(cfg->sda); +} + +/* + * This function gets the scl pin state. + * + * @param The scl pin state. + */ +static rt_int32_t ns800_get_scl(void *data) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + return rt_pin_read(cfg->scl); +} + +/* + * The time delay function. + * + * @param microseconds. + */ +static void ns800_udelay(rt_uint32_t us) +{ + rt_hw_us_delay(us); +} + +static const struct rt_i2c_bit_ops ns800_bit_ops_default = +{ + .data = RT_NULL, + .pin_init = ns800_i2c_pin_init, + .set_sda = ns800_set_sda, + .set_scl = ns800_set_scl, + .get_sda = ns800_get_sda, + .get_scl = ns800_get_scl, + .udelay = ns800_udelay, + .delay_us = 1, + .timeout = 100, + .i2c_pin_init_flag = RT_FALSE +}; + +/* + * if i2c is locked, this function will unlock it + * + * @param ns800 config class + * + * @return RT_EOK indicates successful unlock. + */ +static rt_err_t ns800_i2c_bus_unlock(const struct ns800_soft_i2c_config *cfg) +{ + rt_int32_t i = 0; + + if (PIN_LOW == rt_pin_read(cfg->sda)) + { + while (i++ < 9) + { + rt_pin_write(cfg->scl, PIN_HIGH); + ns800_udelay(100); + rt_pin_write(cfg->scl, PIN_LOW); + ns800_udelay(100); + } + } + if (PIN_LOW == rt_pin_read(cfg->sda)) + { + return -RT_ERROR; + } + + return RT_EOK; +} + +/* I2C initialization function */ +int rt_soft_i2c_init(void) +{ + rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ns800_i2c); + rt_err_t result; + + for (rt_size_t i = 0; i < obj_num; i++) + { + i2c_obj[i].ops = ns800_bit_ops_default; + i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; + i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; + + result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); + RT_ASSERT(result == RT_EOK); + ns800_i2c_bus_unlock(&soft_i2c_config[i]); + LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", + soft_i2c_config[i].bus_name, + soft_i2c_config[i].scl, + soft_i2c_config[i].sda); + } + + return RT_EOK; +} +INIT_BOARD_EXPORT(rt_soft_i2c_init); + +#endif /* RT_USING_I2C */ diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.h new file mode 100644 index 0000000000000000000000000000000000000000..a0c17e27a2e4e42309e26e5f53da81fd87e636e1 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-15 Jeffery Yuan the first version + */ + +#ifndef __DRV_SOFT_I2C__ +#define __DRV_I2C__ + +#include +#include +#include + +/* ns800 config class */ +struct ns800_soft_i2c_config +{ + rt_uint16_t scl; + rt_uint16_t sda; + const char *bus_name; +}; + +/* ns800 i2c dirver class */ +struct ns800_i2c +{ + struct rt_i2c_bit_ops ops; + struct rt_i2c_bus_device i2c_bus; +}; + +#ifdef BSP_USING_SOFT_I2C1 +#define I2C1_BUS_CONFIG \ + { \ + .scl = BSP_SOFT_I2C1_SCL_PIN, \ + .sda = BSP_SOFT_I2C1_SDA_PIN, \ + .bus_name = "soft_i2c1", \ + } +#endif + +#ifdef BSP_USING_SOFT_I2C2 +#define I2C2_BUS_CONFIG \ + { \ + .scl = BSP_SOFT_I2C2_SCL_PIN, \ + .sda = BSP_SOFT_I2C2_SDA_PIN, \ + .bus_name = "soft_i2c2", \ + } +#endif + +int rt_hw_i2c_init(void); + +#endif diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.c new file mode 100644 index 0000000000000000000000000000000000000000..2c52f40d254e9e8dbdb3c5841a8e0fed3a00f240 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.c @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 User WWDG driver based on chip manual + */ + +#include +#include +#include "board.h" +#include "wwdg.h" +#include "drv_wwdg.h" + + +#ifdef RT_USING_WDT +#ifdef BSP_USING_WWDG + +/* WWDG clock frequency (Hz) = HCLK. Here 200MHz as an example; should be obtained from BSP. */ +#ifndef HCLK_FREQ_HZ +#define HCLK_FREQ_HZ (200000000U) +#endif + +/* Prescaler divider table: divider = 2^WDGTB */ +static const uint8_t wdgtb_div_table[] = { + 1, /* 0: 1 */ + 2, /* 1: 2 */ + 4, /* 2: 4 */ + 8, /* 3: 8 */ + 16, /* 4: 16 */ + 32, /* 5: 32 */ + 64, /* 6: 64 */ + 128 /* 7: 128 */ +}; + +/** + * @brief Calculate the tick period for a given prescaler setting. + * @param wdgtb Prescaler code (0~7) + * @return Tick period in seconds (4096 * prescaler / HCLK) + */ +static float get_tick_period(uint8_t wdgtb) +{ + uint32_t div = wdgtb_div_table[wdgtb]; + return (float)(4096U * div) / HCLK_FREQ_HZ; +} + +/* WWDG device structure */ +struct wwdg_device +{ + WWDG_TypeDef *base; /* Base address of WWDG registers */ + uint8_t wdgtb; /* Prescaler code (0~7) */ + uint8_t reload; /* Counter reload value (0x40~0x7F) */ + uint8_t window; /* Window value (0x40~0x7F) */ + float timeout_s; /* Actual timeout in seconds */ + rt_bool_t started; /* True if watchdog is started */ + rt_bool_t interrupt_mode;/* True = interrupt mode, false = reset mode */ +}; + +static struct wwdg_device wwdg_dev; /* Global WWDG device instance */ +static rt_watchdog_t watchdog; /* RT-Thread watchdog device structure */ + +/** + * @brief Calculate the closest hardware configuration (WDGTB and CR.T) for a desired timeout. + * @param timeout_s Desired timeout in seconds + * @param wdgtb Output: prescaler code + * @param reload Output: counter reload value (CR.T) + * @param actual_s Output: actual timeout achieved + * @return RT_EOK on success, -RT_ERROR on invalid parameter + */ +static rt_err_t wwdg_calc_config(float timeout_s, uint8_t *wdgtb, uint8_t *reload, float *actual_s) +{ + float best_diff = 1e9f; + uint8_t best_wdgtb = 0; + uint8_t best_reload = 0x40; /* Minimum valid reload value */ + float best_actual = 0.0f; + + if (timeout_s <= 0.0f) return -RT_ERROR; + + /* Try all possible prescaler values to find the one giving closest timeout */ + for (uint8_t tb = 0; tb < 8; tb++) + { + float tick = get_tick_period(tb); + if (tick == 0.0f) continue; + + /* + * Timeout formula: Tov = (CR.T - 0x3F) * tick + * So required (CR.T - 0x3F) = timeout_s / tick + * Therefore CR.T = timeout_s / tick + 0x3F + */ + float reload_f = timeout_s / tick + 0x3F; + uint8_t reload_val; + + /* Clip to valid range [0x40, 0x7F] */ + if (reload_f < (float)0x40) + { + reload_val = 0x40; /* Minimum timeout */ + } + else if (reload_f > (float)0x7F) + { + reload_val = 0x7F; /* Maximum timeout */ + } + else + { + reload_val = (uint8_t)(reload_f + 0.5f); /* Round to nearest integer */ + if (reload_val < 0x40) reload_val = 0x40; + if (reload_val > 0x7F) reload_val = 0x7F; + } + + float ov_s = (reload_val - 0x3F) * tick; + float diff = (ov_s > timeout_s) ? (ov_s - timeout_s) : (timeout_s - ov_s); + + /* Keep the best match */ + if (diff < best_diff) + { + best_diff = diff; + best_wdgtb = tb; + best_reload = reload_val; + best_actual = ov_s; + /* If error is less than 100us, stop searching early */ + if (diff < 0.0001f) break; + } + } + + *wdgtb = best_wdgtb; + *reload = best_reload; + *actual_s = best_actual; + return RT_EOK; +} + +/* WWDG interrupt handler */ +void wwdg_isr(void) +{ + rt_kprintf("A"); + rt_interrupt_enter(); + WWDG_clearIntStatus(WWDG); /* Clear interrupt flag */ + while(WWDG_getIntStatus(WWDG) == 1) /* Wait until cleared */ + { + ; + } + WWDG_refreshModule(WWDG, wwdg_dev.window); /* Refresh to prevent reset */ + rt_interrupt_leave(); +} + +/* Apply hardware configuration (prescaler, window, mode) without starting the module */ +static void wwdg_apply_config(void) +{ + uint32_t ewi_flag; + + if (wwdg_dev.interrupt_mode) + { + ewi_flag = WWDG_EARLY_WAKEUP_INT; /* Interrupt mode */ + /* Register ISR and enable interrupt */ + Interrupt_register(WWDG_IRQn, &wwdg_isr); + Interrupt_enable(WWDG_IRQn); + } + else + { + ewi_flag = WWDG_DIRECT_RESET; /* Reset mode (no interrupt) */ + } + + /* + * WWDG_configModule(base, early_wakeup_flag, prescaler, window) + * Configure prescaler, window, and mode (interrupt or reset), but does not start. + */ + WWDG_configModule(wwdg_dev.base, ewi_flag, + (WWDG_Prescaler)wwdg_dev.wdgtb, + wwdg_dev.window); +} + +/* Start the watchdog hardware */ +static void wwdg_start_hw(void) +{ + /* Enable the module and load the initial counter value (set WDGA bit) */ + WWDG_enableModule(wwdg_dev.base, wwdg_dev.reload); + wwdg_dev.started = RT_TRUE; + + rt_kprintf("wwdg: started, timeout = %.6f s, mode = %s\n", + (double)wwdg_dev.timeout_s, + wwdg_dev.interrupt_mode ? "interrupt" : "reset"); +} + +/** + * @brief Initialize the watchdog device (called by RT-Thread watchdog framework). + * @param wdt Pointer to watchdog device + * @return RT_EOK on success + */ +static rt_err_t wwdg_init(rt_watchdog_t *wdt) +{ + /* No need to enable extra clock; WWDG uses HCLK directly */ + rt_kprintf("wwdg: HCLK frequency = %d Hz\n", HCLK_FREQ_HZ); + return RT_EOK; +} + +/** + * @brief Control function for the watchdog device. + * @param wdt Pointer to watchdog device + * @param cmd Command to execute + * @param arg Optional argument + * @return RT_EOK on success, error code otherwise + */ +static rt_err_t wwdg_control(rt_watchdog_t *wdt, int cmd, void *arg) +{ + switch (cmd) + { + case RT_DEVICE_CTRL_WDT_KEEPALIVE: + /* Feed the dog: refresh counter within the window */ + WWDG_refreshModule(wwdg_dev.base, wwdg_dev.reload); + break; + + case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: + { + uint32_t req_ms = *(uint32_t *)arg; /* Requested timeout in ms */ + float req_s = req_ms / 1000.0f; + uint8_t wdgtb, reload; + float actual_s; + + if (wwdg_calc_config(req_s, &wdgtb, &reload, &actual_s) != RT_EOK) + { + rt_kprintf("wwdg: invalid timeout value %d ms\n", req_ms); + return -RT_ERROR; + } + + /* Check hardware limits */ + if (actual_s < 0.00002048f || actual_s > 0.16777216f) + { + rt_kprintf("wwdg: timeout out of range (20.48 us ~ 167.772 ms)\n"); + return -RT_ERROR; + } + + /* Store new configuration */ + wwdg_dev.wdgtb = wdgtb; + wwdg_dev.reload = reload; + wwdg_dev.timeout_s = actual_s; + + rt_kprintf("wwdg: set timeout req=%d ms, actual=%.6f s (WDGTB=%d, CR.T=0x%02X)\n", + req_ms, (double)actual_s, wdgtb, reload); + + /* If watchdog is already started, reconfigure and restart */ + if (wwdg_dev.started) + { + wwdg_apply_config(); + WWDG_enableModule(wwdg_dev.base, wwdg_dev.reload); + } + } + break; + + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: + /* Return current timeout in milliseconds */ + *(uint32_t *)arg = (uint32_t)(wwdg_dev.timeout_s * 1000.0f); + break; + + case RT_DEVICE_CTRL_WDT_START: + if (!wwdg_dev.started) + { + wwdg_apply_config(); /* Apply prescaler, window, mode */ + wwdg_start_hw(); /* Start the watchdog */ + } + else + { + rt_kprintf("wwdg: already started\n"); + } + break; + + case RT_DEVICE_CTRL_WDT_STOP: + /* WWDG cannot be stopped once started (hardware limitation) */ + rt_kprintf("wwdg: stop not supported (hardware limitation)\n"); + return -RT_ENOSYS; + + default: + return -RT_ERROR; + } + return RT_EOK; +} + +/* Watchdog operation function table */ +static const struct rt_watchdog_ops wwdg_ops = { + .init = wwdg_init, + .control = wwdg_control, +}; + +/** + * @brief Initialize the WWDG hardware and register the watchdog device with RT-Thread. + * @return RT_EOK on success, -RT_ERROR on failure + */ +int rt_hw_wwdg_init(void) +{ + wwdg_dev.base = WWDG; /* Assign base address from board definition */ + + /* Default configuration: max prescaler (128), reload 0x7F, window 0x7F -> ~167.772 ms */ + wwdg_dev.wdgtb = 7; + wwdg_dev.reload = 0x7F; + wwdg_dev.window = 0x7F; + wwdg_dev.timeout_s = 0.16777216f; + wwdg_dev.started = RT_FALSE; + wwdg_dev.interrupt_mode = RT_FALSE; /* Default to reset mode (no interrupt) */ + + /* Set operations and register watchdog device */ + watchdog.ops = &wwdg_ops; + if (rt_hw_watchdog_register(&watchdog, WWDG_DEVICE_NAME, RT_DEVICE_FLAG_DEACTIVATE, RT_NULL) != RT_EOK) + { + rt_kprintf("wwdg: register failed\n"); + return -RT_ERROR; + } + + rt_kprintf("wwdg: driver initialized (HCLK=%d Hz)\n", HCLK_FREQ_HZ); + rt_kprintf("wwdg: timeout range: 20.48 us ~ 167.772 ms\n"); + rt_kprintf("wwdg: default mode: reset, timeout: 167.772 ms\n"); + + return RT_EOK; +} + +/* Auto-initialize the driver during board initialization */ +INIT_BOARD_EXPORT(rt_hw_wwdg_init); + +#endif /* BSP_USING_WWDG */ +#endif /* RT_USING_WDT */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.h new file mode 100644 index 0000000000000000000000000000000000000000..10c9f1a0e2e944e69e595749342ca7ec3b3f462d --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery Yuan first version + */ + +#ifndef DRV_WWDG_H__ +#define DRV_WWDG_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* WWDG device name used for registration */ +#define WWDG_DEVICE_NAME "wwdg" + +/** + * @brief Initialize the WWDG (Window Watchdog) hardware and register the device. + * + * This function is called during system initialization (via INIT_BOARD_EXPORT). + * It configures the WWDG peripheral with default settings, registers the + * watchdog device with RT-Thread's watchdog framework, and makes it available + * to applications. + * + * @return RT_EOK on success, negative error code otherwise. + */ +int rt_hw_wwdg_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* DRV_WWDG_H__ */ \ No newline at end of file diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config index 5eb647dc85a767b8251faf3822599d7caad9d765..2a420ce75846f4d75f56d0982dd5ab3aadbd18c7 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config @@ -244,11 +244,15 @@ CONFIG_RT_CANSND_MSG_TIMEOUT=100 CONFIG_RT_CAN_NB_TX_FIFO_SIZE=256 # CONFIG_RT_CAN_MALLOC_NB_TX_BUFFER is not set # CONFIG_RT_USING_CLOCK_TIME is not set -# CONFIG_RT_USING_I2C is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +CONFIG_RT_USING_I2C_BITOPS=y +# CONFIG_RT_I2C_BITOPS_DEBUG is not set +# CONFIG_RT_USING_SOFT_I2C is not set # CONFIG_RT_USING_PHY is not set # CONFIG_RT_USING_PHY_V2 is not set # CONFIG_RT_USING_ADC is not set -# CONFIG_RT_USING_DAC is not set +CONFIG_RT_USING_DAC=y # CONFIG_RT_USING_NULL is not set # CONFIG_RT_USING_ZERO is not set # CONFIG_RT_USING_RANDOM is not set @@ -261,13 +265,14 @@ CONFIG_RT_CAN_NB_TX_FIFO_SIZE=256 # CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_SDIO is not set # CONFIG_RT_USING_SPI is not set -# CONFIG_RT_USING_WDT is not set +CONFIG_RT_USING_WDT=y # CONFIG_RT_USING_AUDIO is not set # CONFIG_RT_USING_SENSOR is not set # CONFIG_RT_USING_TOUCH is not set # CONFIG_RT_USING_LCD is not set # CONFIG_RT_USING_HWCRYPTO is not set # CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_RPMSG is not set # CONFIG_RT_USING_BLK is not set # CONFIG_RT_USING_REGULATOR is not set # CONFIG_RT_USING_POWER_SUPPLY is not set @@ -318,7 +323,10 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # end of Interprocess Communication (IPC) # end of POSIX (Portable Operating System Interface) layer -# CONFIG_RT_USING_CPLUSPLUS is not set +CONFIG_RT_USING_CPLUSPLUS=y +# CONFIG_RT_USING_CPLUSPLUS11 is not set +# CONFIG_RT_USING_CPP_WRAPPER is not set +# CONFIG_RT_USING_CPP_EXCEPTIONS is not set # end of C/C++ and POSIX layer # @@ -556,7 +564,111 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # u8g2: a monochrome graphic library # # CONFIG_PKG_USING_U8G2_OFFICIAL is not set -# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_U8G2_USE_HW_SPI is not set +CONFIG_U8G2_USE_HW_I2C=y +CONFIG_U8G2_I2C_DEVICE_NAME="soft_i2c2" +CONFIG_U8G2_USE_CPP=y +# CONFIG_U8G2_USING_I2C_YL40 is not set +# CONFIG_U8G2_USING_SW_I2C_SSD1306 is not set +CONFIG_U8G2_USING_HW_I2C_SSD1306=y +# CONFIG_U8G2_USING_SW_SPI_SSD1306 is not set +# CONFIG_U8G2_USING_8080_ST7920 is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_FONT_USAGE is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_FPS is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_GRAPHIC_TEST is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_HELLO_WORLD is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_ICON_MENU is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_PRINT_UTF8 is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_SELECTION_LIST is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_U8G2_LOGO is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_UPDATE_AREA is not set +CONFIG_U8G2_USING_FRAME_EXAMPLE_WEATHER=y +# CONFIG_U8G2_USING_PAGE_EXAMPLE_CHINESE is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_CLIP_WINDOW is not set +CONFIG_U8G2_USING_PAGE_EXAMPLE_CLOCK=y +# CONFIG_U8G2_USING_PAGE_EXAMPLE_CONTRAST_TEST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_DEVANAGARI is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_DIRECT_ACCESS is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_DRAW_LOG is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_EXT_UTF8 is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_FLIP_MODE is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_FPS is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_GRAPHIC_TEST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_HELLO_WORLD is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_ICON_MENU is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_JAPANESE is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_KOREAN is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_POWER_SAVE_TEST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_PRINT_HELLO_WORLD is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_SCROLLING_TEXT is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_SELECTION_LIST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_SERIAL is not set +CONFIG_U8G2_USING_PAGE_EXAMPLE_STATE_BUFFER_LOOP=y +# CONFIG_U8G2_USING_PAGE_EXAMPLE_TERMINAL is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_U8G2_LOGO is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_UPDATE_PARTLY is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_WEATHER is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_XBM is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_XOR_TEST is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_16x16_FONT is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_FLIP_MODE is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_GRAPHIC_TEST is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_HELLO_WORLD is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_MESSAGE_BOX is not set +CONFIG_U8G2_USING_U8x8_EXAMPLE_TERMINAL=y +# CONFIG_U8G2_USING_GAME_EXAMPLE_SPACE_TRASH is not set +# CONFIG_U8G2_USING_GAME_EXAMPLE_TREX is not set +CONFIG_PKG_USING_U8G2=y +CONFIG_PKG_U8G2_PATH="/packages/multimedia/u8g2/u8g2" + +# +# U8G2 Examples +# + +# +# full buffer examples (fast, large RAM consumption) +# +# end of full buffer examples (fast, large RAM consumption) + +# +# page buffer examples (slow, small RAM consumption) +# +# end of page buffer examples (slow, small RAM consumption) + +# +# u8x8 text only examples (fonts with fixed size) +# +# end of u8x8 text only examples (fonts with fixed size) + +# +# game examples +# +# end of game examples +# end of U8G2 Examples + +# CONFIG_PKG_USING_U8G2_V100 is not set +# CONFIG_PKG_USING_U8G2_V110 is not set +# CONFIG_PKG_USING_U8G2_V120 is not set +# CONFIG_PKG_USING_U8G2_V200 is not set +# CONFIG_PKG_USING_U8G2_V210 is not set +# CONFIG_PKG_USING_U8G2_V300 is not set +# CONFIG_PKG_USING_U8G2_C_LATEST_VERSION is not set +# CONFIG_PKG_USING_U8G2_CPP_LATEST_VERSION is not set +CONFIG_PKG_USING_U8G2_LATEST_VERSION=y +CONFIG_PKG_U8G2_VER="latest" + +# +# C version: v1.x.x +# + +# +# C++ version: v2.x.x +# + +# +# C/C++ version: v3.x.x +# +CONFIG_PKG_U8G2_VER_NUM=0x99999 # end of u8g2: a monochrome graphic library # CONFIG_PKG_USING_NES_SIMULATOR is not set @@ -1027,7 +1139,28 @@ CONFIG_PKG_NOVOSNS_SERIES_DRIVER_VER="latest" # CONFIG_PKG_USING_MULTI_INFRARED is not set # CONFIG_PKG_USING_AGILE_BUTTON is not set # CONFIG_PKG_USING_AGILE_LED is not set -# CONFIG_PKG_USING_AT24CXX is not set +CONFIG_PKG_USING_AT24CXX=y +CONFIG_PKG_AT24CXX_PATH="/packages/peripherals/at24cxx" +CONFIG_PKG_AT24CXX_FINSH=y + +# +# Select the Type of AT24CXX EEPROM +# +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C01 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C02 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C04 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C08 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C16 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C032 is not set +CONFIG_PKG_AT24CXX_EE_TYPE_AT24C64=y +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C128 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C256 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C512 is not set +CONFIG_PKG_AT24CXX_EE_TYPE=6 +# end of Select the Type of AT24CXX EEPROM + +CONFIG_PKG_USING_AT24CXX_LATEST_VERSION=y +CONFIG_PKG_AT24CXX_VER="latest" # CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set # CONFIG_PKG_USING_PCA9685 is not set # CONFIG_PKG_USING_ILI9341 is not set @@ -1442,6 +1575,10 @@ CONFIG_PKG_NOVOSNS_SERIES_DRIVER_VER="latest" # # On-chip Peripheral Drivers # +CONFIG_BOARD_CLK_CONF=y +CONFIG_SYSCLK_USE_PLL=y +CONFIG_SYSCLK_SOURCE_USE_HXTL=y +CONFIG_PLLCLK_SOURCE_USE_HXTL=y CONFIG_BSP_USING_GPIO=y # CONFIG_BSP_GPIO_PIN_IRQ is not set CONFIG_BSP_USING_UART=y @@ -1450,7 +1587,25 @@ CONFIG_BSP_USING_UART1=y # CONFIG_BSP_USING_UART2 is not set # CONFIG_BSP_USING_UART3 is not set # CONFIG_BSP_USING_UART4 is not set -CONFIG_BSP_USING_ECAP=y -CONFIG_BSP_USING_CAN=y -CONFIG_BSP_USING_CANFD1=y +# CONFIG_BSP_USING_ECAP is not set +# CONFIG_BSP_USING_CAN is not set +CONFIG_BSP_USING_WDG=y +CONFIG_BSP_USING_IWDG1=y +CONFIG_BSP_USING_IWDG2=y +CONFIG_BSP_USING_WWDG=y +CONFIG_BSP_USING_HARD_I2C=y +CONFIG_BSP_USING_HARD_I2C1=y +# CONFIG_BSP_USING_HARD_I2C2 is not set +CONFIG_BSP_USING_SOFT_I2C=y +# CONFIG_BSP_USING_SOFT_I2C1 is not set +CONFIG_BSP_USING_SOFT_I2C2=y + +# +# Notice: PB2(i2c2_sda) --> 34; PB3(i2c_scl) --> 35 +# +CONFIG_BSP_SOFT_I2C2_SCL_PIN=35 +CONFIG_BSP_SOFT_I2C2_SDA_PIN=34 +CONFIG_BSP_USING_DAC=y +CONFIG_BSP_USING_DAC1=y +CONFIG_BSP_USING_DAC3=y # end of On-chip Peripheral Drivers diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/.configs b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.configs new file mode 100644 index 0000000000000000000000000000000000000000..f30ad8e7df6e10e73249c8886c58a343763b9fa1 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.configs @@ -0,0 +1,1491 @@ +CONFIG_SOC_SERIES_NS800RT7=y +CONFIG_SOC_NS800RT7P6XX=y +CONFIG_BOARD_NS800RT7P65X=y + +# +# RT-Thread Kernel +# + +# +# klibc options +# + +# +# rt_vsnprintf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set +# end of rt_vsnprintf options + +# +# rt_vsscanf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSSCANF is not set +# end of rt_vsscanf options + +# +# rt_memset options +# +# CONFIG_RT_KLIBC_USING_USER_MEMSET is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMSET is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMSET is not set +# end of rt_memset options + +# +# rt_memcpy options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMCPY is not set +# end of rt_memcpy options + +# +# rt_memmove options +# +# CONFIG_RT_KLIBC_USING_USER_MEMMOVE is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMMOVE is not set +# end of rt_memmove options + +# +# rt_memcmp options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCMP is not set +# end of rt_memcmp options + +# +# rt_strstr options +# +# CONFIG_RT_KLIBC_USING_USER_STRSTR is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRSTR is not set +# end of rt_strstr options + +# +# rt_strcasecmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCASECMP is not set +# end of rt_strcasecmp options + +# +# rt_strncpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCPY is not set +# end of rt_strncpy options + +# +# rt_strcpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCPY is not set +# end of rt_strcpy options + +# +# rt_strncmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCMP is not set +# end of rt_strncmp options + +# +# rt_strcmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCMP is not set +# end of rt_strcmp options + +# +# rt_strlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRLEN is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRLEN is not set +# end of rt_strlen options + +# +# rt_strnlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRNLEN is not set +# end of rt_strnlen options +# end of klibc options + +CONFIG_RT_NAME_MAX=16 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_NANO is not set +# CONFIG_RT_USING_AMP is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +# CONFIG_RT_USING_HOOKLIST is not set +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +# CONFIG_RT_USING_TIMER_SOFT is not set +# CONFIG_RT_USING_CPU_USAGE_TRACER is not set + +# +# kservice options +# +# CONFIG_RT_USING_TINY_FFS is not set +# end of kservice options + +CONFIG_RT_USING_DEBUG=y +CONFIG_RT_DEBUGING_ASSERT=y +CONFIG_RT_DEBUGING_COLOR=y +CONFIG_RT_DEBUGING_CONTEXT=y +# CONFIG_RT_DEBUGING_AUTO_INIT is not set +# CONFIG_RT_USING_CI_ACTION is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set +# CONFIG_RT_USING_SIGNALS is not set +# end of Inter-Thread communication + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y +# end of Memory Management + +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +# CONFIG_RT_USING_THREADSAFE_PRINTF is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_USING_CONSOLE_OUTPUT_CTL=y +CONFIG_RT_VER_NUM=0x50300 +# CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32 +# end of RT-Thread Kernel + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 +# CONFIG_RT_USING_LEGACY is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +# CONFIG_FINSH_USING_WORD_OPERATION is not set +# CONFIG_FINSH_USING_FUNC_EXT is not set +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +CONFIG_FINSH_USING_OPTION_COMPLETION=y + +# +# DFS: device virtual file system +# +# CONFIG_RT_USING_DFS is not set +# end of DFS: device virtual file system + +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_DEV_BUS is not set +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +# CONFIG_RT_SERIAL_USING_DMA is not set +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_SERIAL_BYPASS is not set +CONFIG_RT_USING_CAN=y +# CONFIG_RT_CAN_USING_HDR is not set +CONFIG_RT_CAN_USING_CANFD=y +CONFIG_RT_CANMSG_BOX_SZ=16 +CONFIG_RT_CANSND_BOX_NUM=1 +CONFIG_RT_CANSND_MSG_TIMEOUT=100 +CONFIG_RT_CAN_NB_TX_FIFO_SIZE=256 +# CONFIG_RT_CAN_MALLOC_NB_TX_BUFFER is not set +# CONFIG_RT_USING_CLOCK_TIME is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +# CONFIG_RT_USING_I2C_BITOPS is not set +# CONFIG_RT_USING_SOFT_I2C is not set +# CONFIG_RT_USING_PHY is not set +# CONFIG_RT_USING_PHY_V2 is not set +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +CONFIG_RT_USING_WDT=y +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_RPMSG is not set +# CONFIG_RT_USING_BLK is not set +# CONFIG_RT_USING_REGULATOR is not set +# CONFIG_RT_USING_POWER_SUPPLY is not set +# CONFIG_RT_USING_VIRTIO is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_CHERRYUSB is not set +# end of Device Drivers + +# +# C/C++ and POSIX layer +# + +# +# ISO-ANSI C layer +# + +# +# Timezone and Daylight Saving Time +# +# CONFIG_RT_LIBC_USING_FULL_TZ_DST is not set +CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y +CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8 +CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0 +CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 +# end of Timezone and Daylight Saving Time +# end of ISO-ANSI C layer + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# end of Interprocess Communication (IPC) +# end of POSIX (Portable Operating System Interface) layer + +# CONFIG_RT_USING_CPLUSPLUS is not set +# end of C/C++ and POSIX layer + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set +# end of Network + +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD is not set +# end of Memory protection + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RESOURCE_ID is not set +# CONFIG_RT_USING_ADT is not set +# CONFIG_RT_USING_RT_LINK is not set +# end of Utilities + +# +# Using USB legacy version +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set +# end of Using USB legacy version + +# CONFIG_RT_USING_FDT is not set +# CONFIG_RT_USING_RUST is not set +# end of RT-Thread Components + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set +# end of RT-Thread Utestcases + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set +# CONFIG_PKG_USING_WIFI_HOST_DRIVER is not set +# CONFIG_PKG_USING_ESP_HOSTED is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set +# end of Marvell WiFi + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# end of Wiced WiFi + +# CONFIG_PKG_USING_RW007 is not set + +# +# CYW43012 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43012 is not set +# end of CYW43012 WiFi + +# +# BL808 WiFi +# +# CONFIG_PKG_USING_WLAN_BL808 is not set +# end of BL808 WiFi + +# +# CYW43439 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43439 is not set +# end of CYW43439 WiFi +# end of Wi-Fi + +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# end of IoT Cloud + +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_BT_CYW43012 is not set +# CONFIG_PKG_USING_CYW43XX is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_RYANMQTT is not set +# CONFIG_PKG_USING_RYANW5500 is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set +# CONFIG_PKG_USING_WOL is not set +# CONFIG_PKG_USING_ZEPHYR_POLLING is not set +# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set +# CONFIG_PKG_USING_LHC_MODBUS is not set +# CONFIG_PKG_USING_QMODBUS is not set +# CONFIG_PKG_USING_PNET is not set +# CONFIG_PKG_USING_OPENER is not set +# CONFIG_PKG_USING_FREEMQTT is not set +# end of IoT - internet of things + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set +# end of security packages + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set +# CONFIG_PKG_USING_RYAN_JSON is not set +# end of JSON: JavaScript Object Notation, a lightweight data-interchange format + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# end of XML: Extensible Markup Language + +# CONFIG_PKG_USING_LUATOS_SOC is not set +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set +# end of language packages + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set +# end of LVGL: powerful and easy-to-use embedded GUI library + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# end of u8g2: a monochrome graphic library + +# CONFIG_PKG_USING_NES_SIMULATOR is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_3GPP_AMRNB is not set +# end of multimedia packages + +# +# tools packages +# +# CONFIG_PKG_USING_VECTOR is not set +# CONFIG_PKG_USING_SORCH is not set +# CONFIG_PKG_USING_DICT is not set +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_MCOREDUMP is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set +# CONFIG_PKG_USING_ZDEBUG is not set +# CONFIG_PKG_USING_RVBACKTRACE is not set +# CONFIG_PKG_USING_HPATCHLITE is not set +# CONFIG_PKG_USING_THREAD_METRIC is not set +# CONFIG_PKG_USING_UORB is not set +# CONFIG_PKG_USING_RT_TUNNEL is not set +# CONFIG_PKG_USING_VIRTUAL_TERMINAL is not set +# end of tools packages + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# end of enhanced kernel services + +# CONFIG_PKG_USING_AUNITY is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set +# end of acceleration: Assembly language or algorithmic acceleration packages + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +CONFIG_PKG_USING_CMSIS_CORE=y +CONFIG_PKG_CMSIS_CORE_PATH="/packages/system/CMSIS/CMSIS-Core" +CONFIG_PKG_USING_CMSIS_CORE_LATEST_VERSION=y +CONFIG_PKG_CMSIS_CORE_VER="latest" +# CONFIG_PKG_USING_CMSIS_NN is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set +# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# end of Micrium: Micrium software products porting for RT-Thread + +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_LITEOS_SDK is not set +# CONFIG_PKG_USING_TZ_DATABASE is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set +# CONFIG_PKG_USING_FILEX is not set +# CONFIG_PKG_USING_LEVELX is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_RPMSG_LITE is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set +# CONFIG_PKG_USING_FLASH_BLOB is not set +# CONFIG_PKG_USING_MLIBC is not set +# CONFIG_PKG_USING_TASK_MSG_BUS is not set +# CONFIG_PKG_USING_UART_FRAMEWORK is not set +# CONFIG_PKG_USING_SFDB is not set +# CONFIG_PKG_USING_RTP is not set +# CONFIG_PKG_USING_REB is not set +# CONFIG_PKG_USING_RMP is not set +# CONFIG_PKG_USING_R_RHEALSTONE is not set +# CONFIG_PKG_USING_HEARTBEAT is not set +# CONFIG_PKG_USING_MICRO_ROS_RTTHREAD_PACKAGE is not set +# CONFIG_PKG_USING_CHERRYECAT is not set +# CONFIG_PKG_USING_EVENT_LOOP is not set +# CONFIG_PKG_USING_THREAD_MANAGER is not set +# end of system packages + +# +# peripheral libraries and drivers +# + +# +# HAL & SDK Drivers +# + +# +# STM32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_STM32F0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F1_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F1_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F2_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F2_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F3_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F3_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F7_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F7_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32G0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32G0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32G4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32G4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32H5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32H7_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H7_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32H7RS_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H7RS_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32U5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32U5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_STM32WL_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32WL_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32WB_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32WB_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32MP1_M4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32MP1_M4_CMSIS_DRIVER is not set +# end of STM32 HAL & SDK Drivers + +# +# Infineon HAL Packages +# +# CONFIG_PKG_USING_INFINEON_CAT1CM0P is not set +# CONFIG_PKG_USING_INFINEON_CMSIS is not set +# CONFIG_PKG_USING_INFINEON_CORE_LIB is not set +# CONFIG_PKG_USING_INFINEON_MTB_HAL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_MTB_PDL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_RETARGET_IO is not set +# CONFIG_PKG_USING_INFINEON_CAPSENSE is not set +# CONFIG_PKG_USING_INFINEON_CSDIDAC is not set +# CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set +# CONFIG_PKG_USING_INFINEON_USBDEV is not set +# end of Infineon HAL Packages + +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_ESP_IDF is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# end of Kendryte SDK + +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_RP2350_SDK is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set +# CONFIG_PKG_USING_MM32 is not set + +# +# WCH HAL & SDK Drivers +# +# CONFIG_PKG_USING_CH32V20x_SDK is not set +# CONFIG_PKG_USING_CH32V307_SDK is not set +# end of WCH HAL & SDK Drivers + +# +# AT32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_AT32A403A_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32A403A_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32A423_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32A423_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F45x_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F45x_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F402_405_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F402_405_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F403A_407_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F403A_407_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F413_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F413_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F415_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F415_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F421_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F421_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F423_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F423_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F425_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F425_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F435_437_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F435_437_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32M412_416_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32M412_416_CMSIS_DRIVER is not set +# end of AT32 HAL & SDK Drivers + +# +# HC32 DDL Drivers +# +# CONFIG_PKG_USING_HC32F3_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_HC32F3_SERIES_DRIVER is not set +# CONFIG_PKG_USING_HC32F4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_HC32F4_SERIES_DRIVER is not set +# end of HC32 DDL Drivers + +# +# NXP HAL & SDK Drivers +# +# CONFIG_PKG_USING_NXP_MCX_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_NXP_MCX_SERIES_DRIVER is not set +# CONFIG_PKG_USING_NXP_LPC_DRIVER is not set +# CONFIG_PKG_USING_NXP_LPC55S_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMX6SX_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMX6UL_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMXRT_DRIVER is not set +# end of NXP HAL & SDK Drivers + +# +# NUVOTON Drivers +# +# CONFIG_PKG_USING_NUVOTON_SERIES_DRIVER is not set +# end of NUVOTON Drivers + +# +# GD32 Drivers +# +# CONFIG_PKG_USING_GD32_ARM_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_GD32_ARM_SERIES_DRIVER is not set +# CONFIG_PKG_USING_GD32_RISCV_SERIES_DRIVER is not set +# CONFIG_PKG_USING_GD32VW55X_WIFI is not set +# end of GD32 Drivers + +# +# HPMicro SDK +# +# CONFIG_PKG_USING_HPM_SDK is not set +# end of HPMicro SDK + +# +# FT32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_FT32F0_STD_DRIVER is not set +# CONFIG_PKG_USING_FT32F0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_FT32F4_STD_DRIVER is not set +# CONFIG_PKG_USING_FT32F4_CMSIS_DRIVER is not set +# end of FT32 HAL & SDK Drivers + +# +# NOVOSNS Drivers +# +CONFIG_PKG_USING_NOVOSNS_SERIES_DRIVER=y +CONFIG_PKG_NOVOSNS_SERIES_DRIVER_PATH="/packages/peripherals/hal-sdk/novosns/novosns-series" +CONFIG_PKG_USING_NOVOSNS_SERIES_DRIVER_LATEST_VERSION=y +CONFIG_PKG_NOVOSNS_SERIES_DRIVER_VER="latest" +# end of NOVOSNS Drivers +# end of HAL & SDK Drivers + +# +# sensors drivers +# +# CONFIG_PKG_USING_LSM6DSM is not set +# CONFIG_PKG_USING_LSM6DSL is not set +# CONFIG_PKG_USING_LPS22HB is not set +# CONFIG_PKG_USING_HTS221 is not set +# CONFIG_PKG_USING_LSM303AGR is not set +# CONFIG_PKG_USING_BME280 is not set +# CONFIG_PKG_USING_BME680 is not set +# CONFIG_PKG_USING_BMA400 is not set +# CONFIG_PKG_USING_BMI160_BMX160 is not set +# CONFIG_PKG_USING_SPL0601 is not set +# CONFIG_PKG_USING_MS5805 is not set +# CONFIG_PKG_USING_DA270 is not set +# CONFIG_PKG_USING_DF220 is not set +# CONFIG_PKG_USING_HSHCAL001 is not set +# CONFIG_PKG_USING_BH1750 is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_TSL4531 is not set +# CONFIG_PKG_USING_DS18B20 is not set +# CONFIG_PKG_USING_DHT11 is not set +# CONFIG_PKG_USING_DHTXX is not set +# CONFIG_PKG_USING_GY271 is not set +# CONFIG_PKG_USING_GP2Y10 is not set +# CONFIG_PKG_USING_SGP30 is not set +# CONFIG_PKG_USING_HDC1000 is not set +# CONFIG_PKG_USING_BMP180 is not set +# CONFIG_PKG_USING_BMP280 is not set +# CONFIG_PKG_USING_SHTC1 is not set +# CONFIG_PKG_USING_BMI088 is not set +# CONFIG_PKG_USING_HMC5883 is not set +# CONFIG_PKG_USING_MAX6675 is not set +# CONFIG_PKG_USING_MAX31855 is not set +# CONFIG_PKG_USING_TMP1075 is not set +# CONFIG_PKG_USING_SR04 is not set +# CONFIG_PKG_USING_CCS811 is not set +# CONFIG_PKG_USING_PMSXX is not set +# CONFIG_PKG_USING_RT3020 is not set +# CONFIG_PKG_USING_MLX90632 is not set +# CONFIG_PKG_USING_MLX90382 is not set +# CONFIG_PKG_USING_MLX90384 is not set +# CONFIG_PKG_USING_MLX90393 is not set +# CONFIG_PKG_USING_MLX90392 is not set +# CONFIG_PKG_USING_MLX90394 is not set +# CONFIG_PKG_USING_MLX90396 is not set +# CONFIG_PKG_USING_MLX90397 is not set +# CONFIG_PKG_USING_MS5611 is not set +# CONFIG_PKG_USING_MAX31865 is not set +# CONFIG_PKG_USING_VL53L0X is not set +# CONFIG_PKG_USING_INA260 is not set +# CONFIG_PKG_USING_MAX30102 is not set +# CONFIG_PKG_USING_INA226 is not set +# CONFIG_PKG_USING_LIS2DH12 is not set +# CONFIG_PKG_USING_HS300X is not set +# CONFIG_PKG_USING_ZMOD4410 is not set +# CONFIG_PKG_USING_ISL29035 is not set +# CONFIG_PKG_USING_MMC3680KJ is not set +# CONFIG_PKG_USING_QMP6989 is not set +# CONFIG_PKG_USING_BALANCE is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_SHT4X is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_STHS34PF80 is not set +# CONFIG_PKG_USING_P3T1755 is not set +# CONFIG_PKG_USING_QMI8658 is not set +# CONFIG_PKG_USING_ICM20948 is not set +# CONFIG_PKG_USING_SCD4X is not set +# end of sensors drivers + +# +# touch drivers +# +# CONFIG_PKG_USING_GT9147 is not set +# CONFIG_PKG_USING_GT1151 is not set +# CONFIG_PKG_USING_GT917S is not set +# CONFIG_PKG_USING_GT911 is not set +# CONFIG_PKG_USING_FT6206 is not set +# CONFIG_PKG_USING_FT5426 is not set +# CONFIG_PKG_USING_FT6236 is not set +# CONFIG_PKG_USING_XPT2046_TOUCH is not set +# CONFIG_PKG_USING_CST816X is not set +# CONFIG_PKG_USING_CST812T is not set +# end of touch drivers + +# CONFIG_PKG_USING_LCD_SPI_DRIVER is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +CONFIG_PKG_USING_AT24CXX=y +CONFIG_PKG_AT24CXX_PATH="/packages/peripherals/at24cxx" +CONFIG_PKG_AT24CXX_FINSH=y + +# +# Select the Type of AT24CXX EEPROM +# +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C01 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C02 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C04 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C08 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C16 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C032 is not set +CONFIG_PKG_AT24CXX_EE_TYPE_AT24C64=y +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C128 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C256 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C512 is not set +CONFIG_PKG_AT24CXX_EE_TYPE=6 +# end of Select the Type of AT24CXX EEPROM + +CONFIG_PKG_USING_AT24CXX_LATEST_VERSION=y +CONFIG_PKG_AT24CXX_VER="latest" +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_ILI9341 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_LRF_NV7LIDAR is not set +# CONFIG_PKG_USING_AIP650 is not set +# CONFIG_PKG_USING_FINGERPRINT is not set +# CONFIG_PKG_USING_BT_ECB02C is not set +# CONFIG_PKG_USING_UAT is not set +# CONFIG_PKG_USING_ST7789 is not set +# CONFIG_PKG_USING_VS1003 is not set +# CONFIG_PKG_USING_X9555 is not set +# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set +# CONFIG_PKG_USING_BT_MX01 is not set +# CONFIG_PKG_USING_RGPOWER is not set +# CONFIG_PKG_USING_BT_MX02 is not set +# CONFIG_PKG_USING_GC9A01 is not set +# CONFIG_PKG_USING_IK485 is not set +# CONFIG_PKG_USING_SERVO is not set +# CONFIG_PKG_USING_SEAN_WS2812B is not set +# CONFIG_PKG_USING_IC74HC165 is not set +# CONFIG_PKG_USING_IST8310 is not set +# CONFIG_PKG_USING_ST7789_SPI is not set +# CONFIG_PKG_USING_CAN_UDS is not set +# CONFIG_PKG_USING_ISOTP_C is not set +# CONFIG_PKG_USING_IKUNLED is not set +# CONFIG_PKG_USING_INS5T8025 is not set +# CONFIG_PKG_USING_IRUART is not set +# CONFIG_PKG_USING_ST7305 is not set +# CONFIG_PKG_USING_TM1668 is not set +# CONFIG_PKG_USING_SPI_TOOLS is not set +# end of peripheral libraries and drivers + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set +# CONFIG_PKG_USING_R_TINYMAIX is not set +# CONFIG_PKG_USING_LLMCHAT is not set +# end of AI packages + +# +# Signal Processing and Control Algorithm Packages +# +# CONFIG_PKG_USING_APID is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_QPID is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_KISSFFT is not set +# end of Signal Processing and Control Algorithm Packages + +# +# miscellaneous packages +# + +# +# project laboratory +# +# end of project laboratory + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set +# end of samples: kernel and components samples + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_MORSE is not set +# end of entertainment: terminal games and other interesting software packages + +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_RALARAM is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LIBCRC is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set +# CONFIG_PKG_USING_CorevMCU_CLI is not set +# CONFIG_PKG_USING_DRMP is not set +# end of miscellaneous packages + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects and Demos +# +# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_SKETCH_LOADER_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_RTDUINO_SENSORFUSION_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set +# end of Projects and Demos + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ITG3200 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MP503 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set +# end of Sensors + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set +# CONFIG_PKG_USING_SEEED_TM1637 is not set +# end of Display + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set +# CONFIG_PKG_USING_ARDUINO_TICKER is not set +# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set +# end of Timing + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set +# CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set +# CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set +# end of Data Processing + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set +# end of Communication + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set +# end of Device Control + +# +# Other +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set +# end of Other + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set +# end of Signal IO + +# +# Uncategorized +# +# end of Arduino libraries +# end of RT-Thread online packages + +# +# On-chip Peripheral Drivers +# +CONFIG_BOARD_CLK_CONF=y +CONFIG_SYSCLK_USE_PLL=y +CONFIG_SYSCLK_SOURCE_USE_HXTL=y +CONFIG_PLLCLK_SOURCE_USE_HXTL=y +CONFIG_BSP_USING_GPIO=y +# CONFIG_BSP_GPIO_PIN_IRQ is not set +CONFIG_BSP_USING_UART=y +CONFIG_BSP_NS800_UART_TX_TIMEOUT=6000 +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_USING_UART4 is not set +# CONFIG_BSP_USING_ECAP is not set +# CONFIG_BSP_USING_CAN is not set +CONFIG_BSP_USING_WDG=y +CONFIG_BSP_USING_IWDG1=y +CONFIG_BSP_USING_IWDG2=y +CONFIG_BSP_USING_WWDG=y +CONFIG_BSP_USING_HARD_I2C=y +CONFIG_BSP_USING_HARD_I2C1=y +CONFIG_BSP_USING_HARD_I2C2=y +# end of On-chip Peripheral Drivers diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c index 62ab0863ff13dcb3c6f70b46bed3bf65fa9ce32f..c4a5630e2ad7d98dea779490e6b52aebf625450b 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c @@ -13,15 +13,32 @@ #include /* defined the LED1 pin: GPIO_68 = PC4 */ -#define LED1_PIN PIN_NUM(GPIO_68) +#define LED1_PIN PIN_NUM(GPIO_68) +#define PIN_KEY0 PIN_NUM(GPIO_31) +/* жϻص ---------------------------------------------------------------------------- */ +static void hdr_callback(void *args) +{ + char *str = args; + rt_kprintf("KEY0 pressed. %s\n", str); +} +//PA12 PF12 PD3 PD10 PF18 PF19 PG30 PG31 int main(void) { rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); - + /* KEY0Ϊ */ + rt_pin_mode(PIN_KEY0, PIN_MODE_INPUT_PULLUP); + + /* жϻص½ģʽصΪַ"--By ZhengNian" */ + rt_pin_attach_irq(PIN_KEY0, PIN_IRQ_MODE_RISING_FALLING, hdr_callback, (void*)"--By Jeffery"); + + /* ʹж */ + rt_pin_irq_enable(PIN_KEY0, PIN_IRQ_ENABLE); + + rt_kprintf("IR1=%08X IR2=%08X IRQn=%08X\n",SYSCON->EXTICR1.WORDVAL,SYSCON->EXTICR2.WORDVAL,NVIC->IP); while (1) { -/* rt_kprintf("\r\n led1_thread_entry running! \r\n"); */ + /*rt_kprintf("\r\n led1_thread_entry running! \r\n");*/ rt_pin_write(LED1_PIN, PIN_HIGH); rt_thread_mdelay(1000); rt_pin_write(LED1_PIN, PIN_LOW); @@ -29,3 +46,134 @@ int main(void) } } + +///* +// * Copyright (c) 2006-2024, RT-Thread Development Team +// * +// * SPDX-License-Identifier: Apache-2.0 +// * +// * Change Logs: +// * Date Author Notes +// * 2024-01-15 RT-Thread first version +// */ + +//#include +//#include +//#include +//#define DBG_TAG "main" +//#define DBG_LVL DBG_LOG +//#include + +//// A0 ------> DAC_OUT1 +//// B1 ------> DAC_OUT3 + +//#define DAC_DEV_NAME "dac3" /* DAC 豸 */ +//#define DAC_DEV_CHANNEL 1 /* DAC ͨ */ +//#define REFER_VOLTAGE 2.5 /* οѹ 2.5V,ݾȳ1002λС*/ +//#define CONVERT_BITS (1 << 12) /* תλΪ12λ */ + + +//// dacʹ dac_set dac1 1 200 +//// һΪڶΪ dac 豸ƣ 3 Ϊ dac ͨ +//// 4 Ϊ dac ֵ +//static int dac_set(int argc, char *argv[]) +//{ +// if(argc!=4) +// { +// rt_kprintf("Usage: dac_set \n"); +// rt_kprintf("Example: dac_set dac1 1 1000\n"); +// return RT_ERROR; +// } +// rt_dac_device_t dac_dev; +// rt_uint32_t value, vol, channel; +// rt_err_t ret = RT_EOK; + +// char dacdevname[RT_NAME_MAX]; + +// rt_strncpy(dacdevname, argv[1], RT_NAME_MAX); +// channel = atoi(argv[2]); // DAC channel +// value = atoi(argv[3]); + +// /* 豸 */ +// dac_dev = (rt_dac_device_t)rt_device_find(dacdevname); +// if (dac_dev == RT_NULL) +// { +// rt_kprintf("dac sample run failed! can't find %s device!\n", dacdevname); +// return RT_ERROR; +// } + +// /* ͨ */ +// ret = rt_dac_enable(dac_dev, channel); + +// /* ֵ */ +// rt_dac_write(dac_dev, channel, value); +// rt_kprintf("the value is :%d \n", value); + +// /* תΪӦѹֵ */ +// vol = value * REFER_VOLTAGE / CONVERT_BITS; +// rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100); + +// /* ʱ鿴Чرͨ */ +//// rt_thread_mdelay(500); + +// /* رͨ */ +//// ret = rt_dac_disable(dac_dev, channel); + +// return ret; +//} + +//static int dac1_vol_sample() +//{ +// rt_dac_device_t dac_dev; +// float value, vol; +// rt_err_t ret = RT_EOK; + +// /* 豸 */ +// dac_dev = (rt_dac_device_t)rt_device_find(DAC_DEV_NAME); +// if (dac_dev == RT_NULL) +// { +// rt_kprintf("dac sample run failed! can't find %s device!\n", DAC_DEV_NAME); +// return RT_ERROR; +// } + +// /* ͨ */ +// ret = rt_dac_enable(dac_dev, DAC_DEV_CHANNEL); + +// /* ֵ */ +// value=4095.0f; +// rt_dac_write(dac_dev, DAC_DEV_CHANNEL, (uint16_t)value); +// rt_kprintf("the value is :%f \n", value); + +// /* תΪӦѹֵ */ +// vol = value * REFER_VOLTAGE / CONVERT_BITS; +// rt_kprintf("the voltage is :%f\n", vol ); + +// /* ʱ鿴Чرͨ */ +// // rt_thread_mdelay(500); + +// /* رͨ */ +// // ret = rt_dac_disable(dac_dev, DAC_DEV_CHANNEL); + +// return ret; +//} + +//int main(void) +//{ +// int count = 1; +// LOG_D("Hello RT-Thread! 2026.5.18"); +// LOG_D("System CLock information"); +// LOG_D("Current tick = %d", rt_tick_get()); +// dac1_vol_sample(); +// while (count++) +// { +// // LOG_D("Hello RT-Thread! %d", rt_tick_get()); +// rt_thread_mdelay(6000); +// } + +// return RT_EOK; +//} + +///* msh б */ +//MSH_CMD_EXPORT(dac_set, set dac voltage. Useage: dac_set adc1 1 200); + + diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.cpp b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..99565e2c5b5ad4e2e07e42e4a65bb2f874a10fa0 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-06 Jiawei.Deng first version + */ + +#include +#include +#include + +/* defined the LED1 pin: GPIO_68 = PC4 */ +#define LED1_PIN PIN_NUM(GPIO_68) + + +int main(void) +{ + rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + char* buffer = new char[1024]; + if(buffer) + { + rt_kprintf("buffer_size=%d\n",sizeof(buffer)); + } + while (1) + { + /*rt_kprintf("\r\n led1_thread_entry running! \r\n");*/ + rt_pin_write(LED1_PIN, PIN_HIGH); + rt_thread_mdelay(1000); + rt_pin_write(LED1_PIN, PIN_LOW); + rt_thread_mdelay(1000); + } +} + diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig b/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig index c4bbdf3080b9755f59eda48f07ae7531513c2d76..df13057dffd2a87a59026e885757acf1c3ed5683 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig @@ -1,5 +1,23 @@ menu "On-chip Peripheral Drivers" + menuconfig BOARD_CLK_CONF + bool "Clock Configuration" + default y + if BOARD_CLK_CONF + config SYSCLK_USE_PLL + bool "Use PLL as system clock source" + default y + config SYSCLK_SOURCE_USE_HXTL + bool "Use High-Speed Crystal Oscillator (HXTL) as system clock source" + default y + depends on SYSCLK_USE_PLL + + config PLLCLK_SOURCE_USE_HXTL + bool "Use High-Speed Crystal Oscillator (HXTL) as PLL clock source" + default y + depends on SYSCLK_USE_PLL + endif + menuconfig BSP_USING_GPIO bool "Enable GPIO" select RT_USING_PIN @@ -102,7 +120,95 @@ menu "On-chip Peripheral Drivers" bool "Enable CANFD1" select RT_CAN_USING_CANFD default n + endif + + menuconfig BSP_USING_WDG + bool "Enable WDG" + select RT_USING_WDT + default n + if BSP_USING_WDG + menuconfig BSP_USING_IWDG1 + bool "Enable IWDG1" + default n + + menuconfig BSP_USING_IWDG2 + bool "Enable IWDG1" + default n + + menuconfig BSP_USING_WWDG + bool "Enable WWDG" + default n + endif + + menuconfig BSP_USING_HARD_I2C + bool "Enable Hard I2C" + default n + select RT_USING_I2C + if BSP_USING_HARD_I2C + menuconfig BSP_USING_HARD_I2C1 + bool "Enable Hard I2C1" + default n + + menuconfig BSP_USING_HARD_I2C2 + bool "Enable Hard I2C2" + default n + endif + + + menuconfig BSP_USING_SOFT_I2C + bool "Enable I2C Bus" + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + default n + + if BSP_USING_SOFT_I2C + config BSP_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + + if BSP_USING_SOFT_I2C1 + comment "Notice: PB10(i2c1_sda) --> 42; PB11 (i2c1_scl)--> 43" + + config BSP_SOFT_I2C1_SCL_PIN + int "i2c1 SCL pin number" + range 0 224 + default 43 + config BSP_SOFT_I2C1_SDA_PIN + int "i2c1 SDA pin number" + range 0 224 + default 42 + endif + config BSP_USING_SOFT_I2C2 + bool "Enable I2C2 Bus (software simulation)" + default n + + if BSP_USING_SOFT_I2C2 + comment "Notice: PB2(i2c2_sda) --> 34; PB3(i2c_scl) --> 35" + config BSP_SOFT_I2C2_SCL_PIN + int "i2c2 SCL pin number" + range 0 224 + default 35 + config BSP_SOFT_I2C2_SDA_PIN + int "i2c2 SDA pin number" + range 0 224 + default 34 + endif + endif + + menuconfig BSP_USING_DAC + bool "Enable DAC" + default n + select RT_USING_DAC + if BSP_USING_DAC + menuconfig BSP_USING_DAC1 + bool "Enable DAC1" + default n + + menuconfig BSP_USING_DAC3 + bool "Enable DAC3" + default n endif endmenu diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvoptx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvoptx new file mode 100644 index 0000000000000000000000000000000000000000..bfb834da0878849e87e0e68bd647d4b3414de0bf --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvoptx @@ -0,0 +1,3113 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp; *.cc; *.cxx + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U775238036 -O110 -S8 -ZTIFSpeedSel50000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1.FLM -FS08000000 -FL080000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FF1NS800RT7xxx_FlashBank2.FLM -FS18080000 -FL180000 -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1 -FS08000000 -FL080000 -FF1NS800RT7xxx_FlashBank2 -FS18080000 -FL180000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + at24cxx + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + packages\at24cxx-latest\at24cxx.c + at24cxx.c + 0 + 0 + + + + + Board + 0 + 0 + 0 + 0 + + 3 + 3 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + + + CPP + 0 + 0 + 0 + 0 + + 4 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\cplusplus\cxx_crt_init.c + cxx_crt_init.c + 0 + 0 + + + 4 + 5 + 8 + 0 + 0 + 0 + ..\..\..\..\components\libc\cplusplus\cxx_crt.cpp + cxx_crt.cpp + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 5 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 5 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 5 + 8 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m7\context_rvds.S + context_rvds.S + 0 + 0 + + + 5 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m7\cpu_cache.c + cpu_cache.c + 0 + 0 + + + 5 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m7\cpuport.c + cpuport.c + 0 + 0 + + + + + Device + 0 + 0 + 0 + 0 + + 6 + 11 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\system_NS800RT7xxx.c + system_NS800RT7xxx.c + 0 + 0 + + + 6 + 12 + 2 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\arm\startup_NS800RT7xxx.s + startup_NS800RT7xxx.s + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 7 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\can\dev_can.c + dev_can.c + 0 + 0 + + + 7 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 7 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\dev_i2c_bit_ops.c + dev_i2c_bit_ops.c + 0 + 0 + + + 7 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\dev_i2c_core.c + dev_i2c_core.c + 0 + 0 + + + 7 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\dev_i2c_dev.c + dev_i2c_dev.c + 0 + 0 + + + 7 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion_comm.c + completion_comm.c + 0 + 0 + + + 7 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion_up.c + completion_up.c + 0 + 0 + + + 7 + 20 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\condvar.c + condvar.c + 0 + 0 + + + 7 + 21 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 7 + 22 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 7 + 23 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 7 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 7 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 7 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\dac.c + dac.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\pin\dev_pin.c + dev_pin.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\dev_serial.c + dev_serial.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\watchdog\dev_watchdog.c + dev_watchdog.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 8 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 8 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 8 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 8 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + HAL_Drivers + 1 + 0 + 0 + 0 + + 9 + 35 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_dac.c + drv_dac.c + 0 + 0 + + + 9 + 36 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 9 + 37 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_hard_i2c.c + drv_hard_i2c.c + 0 + 0 + + + 9 + 38 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_iwdg1.c + drv_iwdg1.c + 0 + 0 + + + 9 + 39 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_iwdg2.c + drv_iwdg2.c + 0 + 0 + + + 9 + 40 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_soft_i2c.c + drv_soft_i2c.c + 0 + 0 + + + 9 + 41 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_uart.c + drv_uart.c + 0 + 0 + + + 9 + 42 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_wwdg.c + drv_wwdg.c + 0 + 0 + + + 9 + 43 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 10 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 10 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 10 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\cpu_up.c + cpu_up.c + 0 + 0 + + + 10 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\defunct.c + defunct.c + 0 + 0 + + + 10 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 10 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 10 + 50 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 10 + 51 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 10 + 52 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 10 + 53 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 10 + 54 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 10 + 55 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler_comm.c + scheduler_comm.c + 0 + 0 + + + 10 + 56 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 10 + 57 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 10 + 58 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Libc + 0 + 0 + 0 + 0 + + 11 + 59 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 11 + 60 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 11 + 61 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 11 + 62 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 11 + 63 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 11 + 64 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 11 + 65 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 11 + 66 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + 11 + 67 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\kerrno.c + kerrno.c + 0 + 0 + + + 11 + 68 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\kstdio.c + kstdio.c + 0 + 0 + + + 11 + 69 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\kstring.c + kstring.c + 0 + 0 + + + 11 + 70 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\rt_vsnprintf_tiny.c + rt_vsnprintf_tiny.c + 0 + 0 + + + 11 + 71 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\rt_vsscanf.c + rt_vsscanf.c + 0 + 0 + + + + + StdDriver + 0 + 0 + 0 + 0 + + 12 + 72 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\adc.c + adc.c + 0 + 0 + + + 12 + 73 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\aeshash.c + aeshash.c + 0 + 0 + + + 12 + 74 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\anass.c + anass.c + 0 + 0 + + + 12 + 75 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\awk.c + awk.c + 0 + 0 + + + 12 + 76 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\bgcrc.c + bgcrc.c + 0 + 0 + + + 12 + 77 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\btim.c + btim.c + 0 + 0 + + + 12 + 78 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\clb.c + clb.c + 0 + 0 + + + 12 + 79 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\cmpss.c + cmpss.c + 0 + 0 + + + 12 + 80 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\crc.c + crc.c + 0 + 0 + + + 12 + 81 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dac.c + Src_dac.c + 0 + 0 + + + 12 + 82 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dcc.c + dcc.c + 0 + 0 + + + 12 + 83 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\debug.c + debug.c + 0 + 0 + + + 12 + 84 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dmamux.c + dmamux.c + 0 + 0 + + + 12 + 85 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\ecap.c + ecap.c + 0 + 0 + + + 12 + 86 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\edma.c + edma.c + 0 + 0 + + + 12 + 87 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_basic.c + emath_basic.c + 0 + 0 + + + 12 + 88 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_filter.c + emath_filter.c + 0 + 0 + + + 12 + 89 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_matrix.c + emath_matrix.c + 0 + 0 + + + 12 + 90 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_transform.c + emath_transform.c + 0 + 0 + + + 12 + 91 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epg.c + epg.c + 0 + 0 + + + 12 + 92 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epwm.c + epwm.c + 0 + 0 + + + 12 + 93 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\eqep.c + eqep.c + 0 + 0 + + + 12 + 94 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\exti.c + exti.c + 0 + 0 + + + 12 + 95 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flash.c + flash.c + 0 + 0 + + + 12 + 96 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flexcan.c + flexcan.c + 0 + 0 + + + 12 + 97 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\fmu.c + fmu.c + 0 + 0 + + + 12 + 98 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\gpio.c + gpio.c + 0 + 0 + + + 12 + 99 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\i2c.c + i2c.c + 0 + 0 + + + 12 + 100 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\interrupt.c + interrupt.c + 0 + 0 + + + 12 + 101 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg1.c + iwdg1.c + 0 + 0 + + + 12 + 102 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg2.c + iwdg2.c + 0 + 0 + + + 12 + 103 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lin.c + lin.c + 0 + 0 + + + 12 + 104 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lptim.c + lptim.c + 0 + 0 + + + 12 + 105 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mcm.c + mcm.c + 0 + 0 + + + 12 + 106 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mu.c + mu.c + 0 + 0 + + + 12 + 107 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pmbus.c + pmbus.c + 0 + 0 + + + 12 + 108 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pwr.c + pwr.c + 0 + 0 + + + 12 + 109 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\qspi.c + qspi.c + 0 + 0 + + + 12 + 110 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\rcc.c + rcc.c + 0 + 0 + + + 12 + 111 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sdfm.c + sdfm.c + 0 + 0 + + + 12 + 112 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sema.c + sema.c + 0 + 0 + + + 12 + 113 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\smpu.c + smpu.c + 0 + 0 + + + 12 + 114 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\spi.c + spi.c + 0 + 0 + + + 12 + 115 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sram.c + sram.c + 0 + 0 + + + 12 + 116 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\stim.c + stim.c + 0 + 0 + + + 12 + 117 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\syscon.c + syscon.c + 0 + 0 + + + 12 + 118 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\tim.c + tim.c + 0 + 0 + + + 12 + 119 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\trng.c + trng.c + 0 + 0 + + + 12 + 120 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\uart.c + uart.c + 0 + 0 + + + 12 + 121 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\upp.c + upp.c + 0 + 0 + + + 12 + 122 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\version.c + version.c + 0 + 0 + + + 12 + 123 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\wwdg.c + wwdg.c + 0 + 0 + + + 12 + 124 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\xbar.c + xbar.c + 0 + 0 + + + + + U8G2 + 0 + 0 + 0 + 0 + + 13 + 125 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_bitmap.c + u8g2_bitmap.c + 0 + 0 + + + 13 + 126 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_box.c + u8g2_box.c + 0 + 0 + + + 13 + 127 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_buffer.c + u8g2_buffer.c + 0 + 0 + + + 13 + 128 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_circle.c + u8g2_circle.c + 0 + 0 + + + 13 + 129 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_cleardisplay.c + u8g2_cleardisplay.c + 0 + 0 + + + 13 + 130 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_d_memory.c + u8g2_d_memory.c + 0 + 0 + + + 13 + 131 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_d_setup.c + u8g2_d_setup.c + 0 + 0 + + + 13 + 132 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_font.c + u8g2_font.c + 0 + 0 + + + 13 + 133 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_fonts.c + u8g2_fonts.c + 0 + 0 + + + 13 + 134 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_hvline.c + u8g2_hvline.c + 0 + 0 + + + 13 + 135 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_input_value.c + u8g2_input_value.c + 0 + 0 + + + 13 + 136 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_intersection.c + u8g2_intersection.c + 0 + 0 + + + 13 + 137 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_kerning.c + u8g2_kerning.c + 0 + 0 + + + 13 + 138 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_line.c + u8g2_line.c + 0 + 0 + + + 13 + 139 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_ll_hvline.c + u8g2_ll_hvline.c + 0 + 0 + + + 13 + 140 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_message.c + u8g2_message.c + 0 + 0 + + + 13 + 141 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_polygon.c + u8g2_polygon.c + 0 + 0 + + + 13 + 142 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_selection_list.c + u8g2_selection_list.c + 0 + 0 + + + 13 + 143 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_setup.c + u8g2_setup.c + 0 + 0 + + + 13 + 144 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8log.c + u8log.c + 0 + 0 + + + 13 + 145 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8log_u8g2.c + u8log_u8g2.c + 0 + 0 + + + 13 + 146 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8log_u8x8.c + u8log_u8x8.c + 0 + 0 + + + 13 + 147 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_8x8.c + u8x8_8x8.c + 0 + 0 + + + 13 + 148 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_byte.c + u8x8_byte.c + 0 + 0 + + + 13 + 149 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_cad.c + u8x8_cad.c + 0 + 0 + + + 13 + 150 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_capture.c + u8x8_capture.c + 0 + 0 + + + 13 + 151 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_a2printer.c + u8x8_d_a2printer.c + 0 + 0 + + + 13 + 152 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_hd44102.c + u8x8_d_hd44102.c + 0 + 0 + + + 13 + 153 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_il3820_296x128.c + u8x8_d_il3820_296x128.c + 0 + 0 + + + 13 + 154 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ist3020.c + u8x8_d_ist3020.c + 0 + 0 + + + 13 + 155 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ist7920.c + u8x8_d_ist7920.c + 0 + 0 + + + 13 + 156 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ks0108.c + u8x8_d_ks0108.c + 0 + 0 + + + 13 + 157 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_lc7981.c + u8x8_d_lc7981.c + 0 + 0 + + + 13 + 158 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ld7032_60x32.c + u8x8_d_ld7032_60x32.c + 0 + 0 + + + 13 + 159 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ls013b7dh03.c + u8x8_d_ls013b7dh03.c + 0 + 0 + + + 13 + 160 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_max7219.c + u8x8_d_max7219.c + 0 + 0 + + + 13 + 161 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_pcd8544_84x48.c + u8x8_d_pcd8544_84x48.c + 0 + 0 + + + 13 + 162 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_pcf8812.c + u8x8_d_pcf8812.c + 0 + 0 + + + 13 + 163 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_pcf8814_hx1230.c + u8x8_d_pcf8814_hx1230.c + 0 + 0 + + + 13 + 164 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_s1d15721.c + u8x8_d_s1d15721.c + 0 + 0 + + + 13 + 165 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_s1d15e06.c + u8x8_d_s1d15e06.c + 0 + 0 + + + 13 + 166 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sbn1661.c + u8x8_d_sbn1661.c + 0 + 0 + + + 13 + 167 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sed1330.c + u8x8_d_sed1330.c + 0 + 0 + + + 13 + 168 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1106_64x32.c + u8x8_d_sh1106_64x32.c + 0 + 0 + + + 13 + 169 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1106_72x40.c + u8x8_d_sh1106_72x40.c + 0 + 0 + + + 13 + 170 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1107.c + u8x8_d_sh1107.c + 0 + 0 + + + 13 + 171 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1108.c + u8x8_d_sh1108.c + 0 + 0 + + + 13 + 172 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1122.c + u8x8_d_sh1122.c + 0 + 0 + + + 13 + 173 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1305.c + u8x8_d_ssd1305.c + 0 + 0 + + + 13 + 174 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x32.c + u8x8_d_ssd1306_128x32.c + 0 + 0 + + + 13 + 175 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x64_noname.c + u8x8_d_ssd1306_128x64_noname.c + 0 + 0 + + + 13 + 176 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_2040x16.c + u8x8_d_ssd1306_2040x16.c + 0 + 0 + + + 13 + 177 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_48x64.c + u8x8_d_ssd1306_48x64.c + 0 + 0 + + + 13 + 178 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x32.c + u8x8_d_ssd1306_64x32.c + 0 + 0 + + + 13 + 179 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x48.c + u8x8_d_ssd1306_64x48.c + 0 + 0 + + + 13 + 180 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_72x40.c + u8x8_d_ssd1306_72x40.c + 0 + 0 + + + 13 + 181 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_96x16.c + u8x8_d_ssd1306_96x16.c + 0 + 0 + + + 13 + 182 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1309.c + u8x8_d_ssd1309.c + 0 + 0 + + + 13 + 183 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1316.c + u8x8_d_ssd1316.c + 0 + 0 + + + 13 + 184 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1317.c + u8x8_d_ssd1317.c + 0 + 0 + + + 13 + 185 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1318.c + u8x8_d_ssd1318.c + 0 + 0 + + + 13 + 186 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1320.c + u8x8_d_ssd1320.c + 0 + 0 + + + 13 + 187 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1322.c + u8x8_d_ssd1322.c + 0 + 0 + + + 13 + 188 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1325.c + u8x8_d_ssd1325.c + 0 + 0 + + + 13 + 189 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1326.c + u8x8_d_ssd1326.c + 0 + 0 + + + 13 + 190 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1327.c + u8x8_d_ssd1327.c + 0 + 0 + + + 13 + 191 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1329.c + u8x8_d_ssd1329.c + 0 + 0 + + + 13 + 192 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1606_172x72.c + u8x8_d_ssd1606_172x72.c + 0 + 0 + + + 13 + 193 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1607_200x200.c + u8x8_d_ssd1607_200x200.c + 0 + 0 + + + 13 + 194 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7511.c + u8x8_d_st7511.c + 0 + 0 + + + 13 + 195 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st75256.c + u8x8_d_st75256.c + 0 + 0 + + + 13 + 196 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7528.c + u8x8_d_st7528.c + 0 + 0 + + + 13 + 197 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st75320.c + u8x8_d_st75320.c + 0 + 0 + + + 13 + 198 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7565.c + u8x8_d_st7565.c + 0 + 0 + + + 13 + 199 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7567.c + u8x8_d_st7567.c + 0 + 0 + + + 13 + 200 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7571.c + u8x8_d_st7571.c + 0 + 0 + + + 13 + 201 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7586s_erc240160.c + u8x8_d_st7586s_erc240160.c + 0 + 0 + + + 13 + 202 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7586s_s028hn118a.c + u8x8_d_st7586s_s028hn118a.c + 0 + 0 + + + 13 + 203 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7586s_ymc240160.c + u8x8_d_st7586s_ymc240160.c + 0 + 0 + + + 13 + 204 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7588.c + u8x8_d_st7588.c + 0 + 0 + + + 13 + 205 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7920.c + u8x8_d_st7920.c + 0 + 0 + + + 13 + 206 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_stdio.c + u8x8_d_stdio.c + 0 + 0 + + + 13 + 207 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_t6963.c + u8x8_d_t6963.c + 0 + 0 + + + 13 + 208 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1601.c + u8x8_d_uc1601.c + 0 + 0 + + + 13 + 209 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1604.c + u8x8_d_uc1604.c + 0 + 0 + + + 13 + 210 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1608.c + u8x8_d_uc1608.c + 0 + 0 + + + 13 + 211 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1610.c + u8x8_d_uc1610.c + 0 + 0 + + + 13 + 212 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1611.c + u8x8_d_uc1611.c + 0 + 0 + + + 13 + 213 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1617.c + u8x8_d_uc1617.c + 0 + 0 + + + 13 + 214 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1638.c + u8x8_d_uc1638.c + 0 + 0 + + + 13 + 215 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1701_dogs102.c + u8x8_d_uc1701_dogs102.c + 0 + 0 + + + 13 + 216 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1701_mini12864.c + u8x8_d_uc1701_mini12864.c + 0 + 0 + + + 13 + 217 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_debounce.c + u8x8_debounce.c + 0 + 0 + + + 13 + 218 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_display.c + u8x8_display.c + 0 + 0 + + + 13 + 219 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_fonts.c + u8x8_fonts.c + 0 + 0 + + + 13 + 220 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_gpio.c + u8x8_gpio.c + 0 + 0 + + + 13 + 221 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_input_value.c + u8x8_input_value.c + 0 + 0 + + + 13 + 222 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_message.c + u8x8_message.c + 0 + 0 + + + 13 + 223 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_selection_list.c + u8x8_selection_list.c + 0 + 0 + + + 13 + 224 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_setup.c + u8x8_setup.c + 0 + 0 + + + 13 + 225 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_string.c + u8x8_string.c + 0 + 0 + + + 13 + 226 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_u16toa.c + u8x8_u16toa.c + 0 + 0 + + + 13 + 227 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_u8toa.c + u8x8_u8toa.c + 0 + 0 + + + 13 + 228 + 1 + 0 + 0 + 0 + packages\u8g2-latest\port\u8g2_port.c + u8g2_port.c + 0 + 0 + + + 13 + 229 + 8 + 0 + 0 + 0 + packages\u8g2-latest\port\Print.cpp + Print.cpp + 0 + 0 + + + 13 + 230 + 8 + 0 + 0 + 0 + packages\u8g2-latest\port\U8g2lib.cpp + U8g2lib.cpp + 0 + 0 + + + 13 + 231 + 8 + 0 + 0 + 0 + packages\u8g2-latest\port\U8x8lib.cpp + U8x8lib.cpp + 0 + 0 + + + 13 + 232 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\ssd1306_12864_hw_i2c_example.cpp + ssd1306_12864_hw_i2c_example.cpp + 0 + 0 + + + 13 + 233 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\full_buffer\Weather.cpp + Weather.cpp + 0 + 0 + + + 13 + 234 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\page_buffer\Clock.cpp + Clock.cpp + 0 + 0 + + + 13 + 235 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\page_buffer\StateBufferLoop.cpp + StateBufferLoop.cpp + 0 + 0 + + + 13 + 236 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\u8x8\Terminal_8x8.cpp + Terminal_8x8.cpp + 0 + 0 + + + +
diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvprojx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvprojx new file mode 100644 index 0000000000000000000000000000000000000000..ddf6323f8366925d39e4901d466bca644d524e19 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvprojx @@ -0,0 +1,3323 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + 6240000::V6.24::ARMCLANG + 6240000::V6.24::ARMCLANG + 1 + + + NS800RT7P65D-DHQFBY2 + Novosense + NOVOSENSE.NS800RT7XXX.0.5.3 + https://www.novosns.com/ + IRAM(0x20000000,0x00020000) IRAM2(0x00000000,0x00020000) IROM(0x08000000,0x00080000) IROM2(0x08080000,0x00080000) XRAM(0x20100000,0x00020000) XRAM2(0x20120000,0x00020000) CPUTYPE("Cortex-M7") FPU3(DFPU) CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1 -FS08000000 -FL080000 -FF1NS800RT7xxx_FlashBank2 -FS18080000 -FL180000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM)) + 0 + + + + + + + + + + + $$Device:NS800RT7P65D-DHQFBY2$CMSIS\SVD\NS800RT7P65x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\ + rt-thread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM7 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM7 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M7" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 0 + 0 + 0 + 1 + 1 + 8 + 1 + 0 + 0 + 0 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x20100000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x8080000 + 0x80000 + + + 0 + 0x20100000 + 0x20000 + + + 0 + 0x20120000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x20000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + 3 + 1 + 1 + 0 + 0 + 0 + + -Wno-tautological-constant-out-of-range-compare + PLLCLK_SOURCE_USE_HXTL, RT_USING_LIBC, RT_USING_ARMLIBC, SYSCLK_USE_PLL, __CLK_TCK=RT_TICK_PER_SECOND, RTT_U8G2, __RTTHREAD__, DUAL_CORE_ENABLE=0, SYSCLK_SOURCE_USE_HXTL, __STDC_LIMIT_MACROS, USE_HAL_DRIVER, NS800RT7P65X + + ..\libraries\HAL_Drivers\drivers;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\include;..\..\..\..\components\drivers\include;..\..\..\..\components\finsh;..\..\..\..\libcpu\arm\cortex-m7;packages\novosns-series-latest\NS800RT7XXX\Device\Inc;..\..\..\..\components\libc\cplusplus;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\components\drivers\smp_call;packages\u8g2-latest\port;..\..\..\..\components\libc\posix\io\epoll;..\..\..\..\components\libc\posix\ipc;..\..\..\..\components\libc\posix\io\eventfd;packages\novosns-series-latest\NS800RT7XXX\StdDriver\Inc\ti;packages\u8g2-latest\src;..\libraries\HAL_Drivers;packages\u8g2-latest;applications;..\..\..\..\components\drivers\include;..\libraries\HAL_Drivers\drivers\config;..\..\..\..\components\libc\compilers\common\extension\fcntl\octal;packages\CMSIS-Core-latest\Include;..\..\..\..\components\libc\compilers\common\include;..\..\..\..\libcpu\arm\common;board;.;packages\at24cxx-latest;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\phy;..\..\..\..\components\drivers\include;packages\novosns-series-latest\NS800RT7XXX\StdDriver\Inc;..\..\..\..\components\net\utest;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\drivers\include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + at24cxx + + + at24cxx.c + 1 + packages\at24cxx-latest\at24cxx.c + + + + + Board + + + board.c + 1 + board\board.c + + + + + CPP + + + cxx_crt_init.c + 1 + ..\..\..\..\components\libc\cplusplus\cxx_crt_init.c + + + cxx_crt.cpp + 8 + ..\..\..\..\components\libc\cplusplus\cxx_crt.cpp + + + + + CPU + + + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c + + + context_rvds.S + 2 + ..\..\..\..\libcpu\arm\cortex-m7\context_rvds.S + + + cpu_cache.c + 1 + ..\..\..\..\libcpu\arm\cortex-m7\cpu_cache.c + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m7\cpuport.c + + + + + Device + + + system_NS800RT7xxx.c + 1 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\system_NS800RT7xxx.c + + + startup_NS800RT7xxx.s + 2 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\arm\startup_NS800RT7xxx.s + + + + + DeviceDrivers + + + dev_can.c + 1 + ..\..\..\..\components\drivers\can\dev_can.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + device.c + 1 + ..\..\..\..\components\drivers\core\device.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_i2c_bit_ops.c + 1 + ..\..\..\..\components\drivers\i2c\dev_i2c_bit_ops.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_i2c_core.c + 1 + ..\..\..\..\components\drivers\i2c\dev_i2c_core.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_i2c_dev.c + 1 + ..\..\..\..\components\drivers\i2c\dev_i2c_dev.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + completion_comm.c + 1 + ..\..\..\..\components\drivers\ipc\completion_comm.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + completion_up.c + 1 + ..\..\..\..\components\drivers\ipc\completion_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + condvar.c + 1 + ..\..\..\..\components\drivers\ipc\condvar.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dac.c + 1 + ..\..\..\..\components\drivers\misc\dac.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_pin.c + 1 + ..\..\..\..\components\drivers\pin\dev_pin.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_serial.c + 1 + ..\..\..\..\components\drivers\serial\dev_serial.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_watchdog.c + 1 + ..\..\..\..\components\drivers\watchdog\dev_watchdog.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + + + Finsh + + + shell.c + 1 + ..\..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\..\components\finsh\msh.c + + + msh_parse.c + 1 + ..\..\..\..\components\finsh\msh_parse.c + + + cmd.c + 1 + ..\..\..\..\components\finsh\cmd.c + + + + + HAL_Drivers + + + drv_dac.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_dac.c + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + drv_hard_i2c.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_hard_i2c.c + + + drv_iwdg1.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_iwdg1.c + + + drv_iwdg2.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_iwdg2.c + + + drv_soft_i2c.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_soft_i2c.c + + + drv_uart.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_uart.c + + + drv_wwdg.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_wwdg.c + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + components.c + 1 + ..\..\..\..\src\components.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + cpu_up.c + 1 + ..\..\..\..\src\cpu_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + defunct.c + 1 + ..\..\..\..\src\defunct.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + object.c + 1 + ..\..\..\..\src\object.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_comm.c + 1 + ..\..\..\..\src\scheduler_comm.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_up.c + 1 + ..\..\..\..\src\scheduler_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + + + Libc + + + syscall_mem.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + + + cctype.c + 1 + ..\..\..\..\components\libc\compilers\common\cctype.c + + + cstdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + + + cstring.c + 1 + ..\..\..\..\components\libc\compilers\common\cstring.c + + + ctime.c + 1 + ..\..\..\..\components\libc\compilers\common\ctime.c + + + cunistd.c + 1 + ..\..\..\..\components\libc\compilers\common\cunistd.c + + + cwchar.c + 1 + ..\..\..\..\components\libc\compilers\common\cwchar.c + + + kerrno.c + 1 + ..\..\..\..\src\klibc\kerrno.c + + + kstdio.c + 1 + ..\..\..\..\src\klibc\kstdio.c + + + kstring.c + 1 + ..\..\..\..\src\klibc\kstring.c + + + rt_vsnprintf_tiny.c + 1 + ..\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + rt_vsscanf.c + 1 + ..\..\..\..\src\klibc\rt_vsscanf.c + + + + + StdDriver + + + adc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\adc.c + + + aeshash.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\aeshash.c + + + anass.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\anass.c + + + awk.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\awk.c + + + bgcrc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\bgcrc.c + + + btim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\btim.c + + + clb.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\clb.c + + + cmpss.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\cmpss.c + + + crc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\crc.c + + + Src_dac.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dac.c + + + dcc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dcc.c + + + debug.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\debug.c + + + dmamux.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dmamux.c + + + ecap.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\ecap.c + + + edma.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\edma.c + + + emath_basic.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_basic.c + + + emath_filter.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_filter.c + + + emath_matrix.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_matrix.c + + + emath_transform.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_transform.c + + + epg.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epg.c + + + epwm.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epwm.c + + + eqep.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\eqep.c + + + exti.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\exti.c + + + flash.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flash.c + + + flexcan.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flexcan.c + + + fmu.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\fmu.c + + + gpio.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\gpio.c + + + i2c.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\i2c.c + + + interrupt.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\interrupt.c + + + iwdg1.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg1.c + + + iwdg2.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg2.c + + + lin.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lin.c + + + lptim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lptim.c + + + mcm.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mcm.c + + + mu.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mu.c + + + pmbus.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pmbus.c + + + pwr.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pwr.c + + + qspi.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\qspi.c + + + rcc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\rcc.c + + + sdfm.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sdfm.c + + + sema.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sema.c + + + smpu.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\smpu.c + + + spi.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\spi.c + + + sram.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sram.c + + + stim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\stim.c + + + syscon.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\syscon.c + + + tim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\tim.c + + + trng.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\trng.c + + + uart.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\uart.c + + + upp.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\upp.c + + + version.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\version.c + + + wwdg.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\wwdg.c + + + xbar.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\xbar.c + + + + + U8G2 + + + u8g2_bitmap.c + 1 + packages\u8g2-latest\src\u8g2_bitmap.c + + + u8g2_box.c + 1 + packages\u8g2-latest\src\u8g2_box.c + + + u8g2_buffer.c + 1 + packages\u8g2-latest\src\u8g2_buffer.c + + + u8g2_circle.c + 1 + packages\u8g2-latest\src\u8g2_circle.c + + + u8g2_cleardisplay.c + 1 + packages\u8g2-latest\src\u8g2_cleardisplay.c + + + u8g2_d_memory.c + 1 + packages\u8g2-latest\src\u8g2_d_memory.c + + + u8g2_d_setup.c + 1 + packages\u8g2-latest\src\u8g2_d_setup.c + + + u8g2_font.c + 1 + packages\u8g2-latest\src\u8g2_font.c + + + u8g2_fonts.c + 1 + packages\u8g2-latest\src\u8g2_fonts.c + + + u8g2_hvline.c + 1 + packages\u8g2-latest\src\u8g2_hvline.c + + + u8g2_input_value.c + 1 + packages\u8g2-latest\src\u8g2_input_value.c + + + u8g2_intersection.c + 1 + packages\u8g2-latest\src\u8g2_intersection.c + + + u8g2_kerning.c + 1 + packages\u8g2-latest\src\u8g2_kerning.c + + + u8g2_line.c + 1 + packages\u8g2-latest\src\u8g2_line.c + + + u8g2_ll_hvline.c + 1 + packages\u8g2-latest\src\u8g2_ll_hvline.c + + + u8g2_message.c + 1 + packages\u8g2-latest\src\u8g2_message.c + + + u8g2_polygon.c + 1 + packages\u8g2-latest\src\u8g2_polygon.c + + + u8g2_selection_list.c + 1 + packages\u8g2-latest\src\u8g2_selection_list.c + + + u8g2_setup.c + 1 + packages\u8g2-latest\src\u8g2_setup.c + + + u8log.c + 1 + packages\u8g2-latest\src\u8log.c + + + u8log_u8g2.c + 1 + packages\u8g2-latest\src\u8log_u8g2.c + + + u8log_u8x8.c + 1 + packages\u8g2-latest\src\u8log_u8x8.c + + + u8x8_8x8.c + 1 + packages\u8g2-latest\src\u8x8_8x8.c + + + u8x8_byte.c + 1 + packages\u8g2-latest\src\u8x8_byte.c + + + u8x8_cad.c + 1 + packages\u8g2-latest\src\u8x8_cad.c + + + u8x8_capture.c + 1 + packages\u8g2-latest\src\u8x8_capture.c + + + u8x8_d_a2printer.c + 1 + packages\u8g2-latest\src\u8x8_d_a2printer.c + + + u8x8_d_hd44102.c + 1 + packages\u8g2-latest\src\u8x8_d_hd44102.c + + + u8x8_d_il3820_296x128.c + 1 + packages\u8g2-latest\src\u8x8_d_il3820_296x128.c + + + u8x8_d_ist3020.c + 1 + packages\u8g2-latest\src\u8x8_d_ist3020.c + + + u8x8_d_ist7920.c + 1 + packages\u8g2-latest\src\u8x8_d_ist7920.c + + + u8x8_d_ks0108.c + 1 + packages\u8g2-latest\src\u8x8_d_ks0108.c + + + u8x8_d_lc7981.c + 1 + packages\u8g2-latest\src\u8x8_d_lc7981.c + + + u8x8_d_ld7032_60x32.c + 1 + packages\u8g2-latest\src\u8x8_d_ld7032_60x32.c + + + u8x8_d_ls013b7dh03.c + 1 + packages\u8g2-latest\src\u8x8_d_ls013b7dh03.c + + + u8x8_d_max7219.c + 1 + packages\u8g2-latest\src\u8x8_d_max7219.c + + + u8x8_d_pcd8544_84x48.c + 1 + packages\u8g2-latest\src\u8x8_d_pcd8544_84x48.c + + + u8x8_d_pcf8812.c + 1 + packages\u8g2-latest\src\u8x8_d_pcf8812.c + + + u8x8_d_pcf8814_hx1230.c + 1 + packages\u8g2-latest\src\u8x8_d_pcf8814_hx1230.c + + + u8x8_d_s1d15721.c + 1 + packages\u8g2-latest\src\u8x8_d_s1d15721.c + + + u8x8_d_s1d15e06.c + 1 + packages\u8g2-latest\src\u8x8_d_s1d15e06.c + + + u8x8_d_sbn1661.c + 1 + packages\u8g2-latest\src\u8x8_d_sbn1661.c + + + u8x8_d_sed1330.c + 1 + packages\u8g2-latest\src\u8x8_d_sed1330.c + + + u8x8_d_sh1106_64x32.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1106_64x32.c + + + u8x8_d_sh1106_72x40.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1106_72x40.c + + + u8x8_d_sh1107.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1107.c + + + u8x8_d_sh1108.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1108.c + + + u8x8_d_sh1122.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1122.c + + + u8x8_d_ssd1305.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1305.c + + + u8x8_d_ssd1306_128x32.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x32.c + + + u8x8_d_ssd1306_128x64_noname.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x64_noname.c + + + u8x8_d_ssd1306_2040x16.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_2040x16.c + + + u8x8_d_ssd1306_48x64.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_48x64.c + + + u8x8_d_ssd1306_64x32.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x32.c + + + u8x8_d_ssd1306_64x48.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x48.c + + + u8x8_d_ssd1306_72x40.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_72x40.c + + + u8x8_d_ssd1306_96x16.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_96x16.c + + + u8x8_d_ssd1309.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1309.c + + + u8x8_d_ssd1316.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1316.c + + + u8x8_d_ssd1317.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1317.c + + + u8x8_d_ssd1318.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1318.c + + + u8x8_d_ssd1320.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1320.c + + + u8x8_d_ssd1322.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1322.c + + + u8x8_d_ssd1325.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1325.c + + + u8x8_d_ssd1326.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1326.c + + + u8x8_d_ssd1327.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1327.c + + + u8x8_d_ssd1329.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1329.c + + + u8x8_d_ssd1606_172x72.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1606_172x72.c + + + u8x8_d_ssd1607_200x200.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1607_200x200.c + + + u8x8_d_st7511.c + 1 + packages\u8g2-latest\src\u8x8_d_st7511.c + + + u8x8_d_st75256.c + 1 + packages\u8g2-latest\src\u8x8_d_st75256.c + + + u8x8_d_st7528.c + 1 + packages\u8g2-latest\src\u8x8_d_st7528.c + + + u8x8_d_st75320.c + 1 + packages\u8g2-latest\src\u8x8_d_st75320.c + + + u8x8_d_st7565.c + 1 + packages\u8g2-latest\src\u8x8_d_st7565.c + + + u8x8_d_st7567.c + 1 + packages\u8g2-latest\src\u8x8_d_st7567.c + + + u8x8_d_st7571.c + 1 + packages\u8g2-latest\src\u8x8_d_st7571.c + + + u8x8_d_st7586s_erc240160.c + 1 + packages\u8g2-latest\src\u8x8_d_st7586s_erc240160.c + + + u8x8_d_st7586s_s028hn118a.c + 1 + packages\u8g2-latest\src\u8x8_d_st7586s_s028hn118a.c + + + u8x8_d_st7586s_ymc240160.c + 1 + packages\u8g2-latest\src\u8x8_d_st7586s_ymc240160.c + + + u8x8_d_st7588.c + 1 + packages\u8g2-latest\src\u8x8_d_st7588.c + + + u8x8_d_st7920.c + 1 + packages\u8g2-latest\src\u8x8_d_st7920.c + + + u8x8_d_stdio.c + 1 + packages\u8g2-latest\src\u8x8_d_stdio.c + + + u8x8_d_t6963.c + 1 + packages\u8g2-latest\src\u8x8_d_t6963.c + + + u8x8_d_uc1601.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1601.c + + + u8x8_d_uc1604.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1604.c + + + u8x8_d_uc1608.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1608.c + + + u8x8_d_uc1610.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1610.c + + + u8x8_d_uc1611.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1611.c + + + u8x8_d_uc1617.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1617.c + + + u8x8_d_uc1638.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1638.c + + + u8x8_d_uc1701_dogs102.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1701_dogs102.c + + + u8x8_d_uc1701_mini12864.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1701_mini12864.c + + + u8x8_debounce.c + 1 + packages\u8g2-latest\src\u8x8_debounce.c + + + u8x8_display.c + 1 + packages\u8g2-latest\src\u8x8_display.c + + + u8x8_fonts.c + 1 + packages\u8g2-latest\src\u8x8_fonts.c + + + u8x8_gpio.c + 1 + packages\u8g2-latest\src\u8x8_gpio.c + + + u8x8_input_value.c + 1 + packages\u8g2-latest\src\u8x8_input_value.c + + + u8x8_message.c + 1 + packages\u8g2-latest\src\u8x8_message.c + + + u8x8_selection_list.c + 1 + packages\u8g2-latest\src\u8x8_selection_list.c + + + u8x8_setup.c + 1 + packages\u8g2-latest\src\u8x8_setup.c + + + u8x8_string.c + 1 + packages\u8g2-latest\src\u8x8_string.c + + + u8x8_u16toa.c + 1 + packages\u8g2-latest\src\u8x8_u16toa.c + + + u8x8_u8toa.c + 1 + packages\u8g2-latest\src\u8x8_u8toa.c + + + u8g2_port.c + 1 + packages\u8g2-latest\port\u8g2_port.c + + + Print.cpp + 8 + packages\u8g2-latest\port\Print.cpp + + + U8g2lib.cpp + 8 + packages\u8g2-latest\port\U8g2lib.cpp + + + U8x8lib.cpp + 8 + packages\u8g2-latest\port\U8x8lib.cpp + + + ssd1306_12864_hw_i2c_example.cpp + 8 + packages\u8g2-latest\examples\ssd1306_12864_hw_i2c_example.cpp + + + Weather.cpp + 8 + packages\u8g2-latest\examples\full_buffer\Weather.cpp + + + Clock.cpp + 8 + packages\u8g2-latest\examples\page_buffer\Clock.cpp + + + StateBufferLoop.cpp + 8 + packages\u8g2-latest\examples\page_buffer\StateBufferLoop.cpp + + + Terminal_8x8.cpp + 8 + packages\u8g2-latest\examples\u8x8\Terminal_8x8.cpp + + + + + + + + + + + + + +
diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h b/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h index 380f2986c76e9d4250b17763411291e6760a8fe8..8a3efc581571e0dd5a4e239d58cb7cd691b83a70 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h @@ -149,6 +149,10 @@ #define RT_CANSND_BOX_NUM 1 #define RT_CANSND_MSG_TIMEOUT 100 #define RT_CAN_NB_TX_FIFO_SIZE 256 +#define RT_USING_I2C +#define RT_USING_I2C_BITOPS +#define RT_USING_DAC +#define RT_USING_WDT #define RT_USING_PIN /* end of Device Drivers */ @@ -175,6 +179,7 @@ /* end of Interprocess Communication (IPC) */ /* end of POSIX (Portable Operating System Interface) layer */ +#define RT_USING_CPLUSPLUS /* end of C/C++ and POSIX layer */ /* Network */ @@ -254,6 +259,43 @@ /* u8g2: a monochrome graphic library */ +#define U8G2_USE_HW_I2C +#define U8G2_I2C_DEVICE_NAME "soft_i2c2" +#define U8G2_USE_CPP +#define U8G2_USING_HW_I2C_SSD1306 +#define U8G2_USING_FRAME_EXAMPLE_WEATHER +#define U8G2_USING_PAGE_EXAMPLE_CLOCK +#define U8G2_USING_PAGE_EXAMPLE_STATE_BUFFER_LOOP +#define U8G2_USING_U8x8_EXAMPLE_TERMINAL +#define PKG_USING_U8G2 + +/* U8G2 Examples */ + +/* full buffer examples (fast, large RAM consumption) */ + +/* end of full buffer examples (fast, large RAM consumption) */ + +/* page buffer examples (slow, small RAM consumption) */ + +/* end of page buffer examples (slow, small RAM consumption) */ + +/* u8x8 text only examples (fonts with fixed size) */ + +/* end of u8x8 text only examples (fonts with fixed size) */ + +/* game examples */ + +/* end of game examples */ +/* end of U8G2 Examples */ +#define PKG_USING_U8G2_LATEST_VERSION + +/* C version: v1.x.x */ + +/* C++ version: v2.x.x */ + +/* C/C++ version: v3.x.x */ + +#define PKG_U8G2_VER_NUM 0x99999 /* end of u8g2: a monochrome graphic library */ /* end of multimedia packages */ @@ -344,6 +386,15 @@ /* touch drivers */ /* end of touch drivers */ +#define PKG_USING_AT24CXX +#define PKG_AT24CXX_FINSH + +/* Select the Type of AT24CXX EEPROM */ + +#define PKG_AT24CXX_EE_TYPE_AT24C64 +#define PKG_AT24CXX_EE_TYPE 6 +/* end of Select the Type of AT24CXX EEPROM */ +#define PKG_USING_AT24CXX_LATEST_VERSION /* end of peripheral libraries and drivers */ /* AI packages */ @@ -417,13 +468,30 @@ /* On-chip Peripheral Drivers */ +#define BOARD_CLK_CONF +#define SYSCLK_USE_PLL +#define SYSCLK_SOURCE_USE_HXTL +#define PLLCLK_SOURCE_USE_HXTL #define BSP_USING_GPIO #define BSP_USING_UART #define BSP_NS800_UART_TX_TIMEOUT 6000 #define BSP_USING_UART1 -#define BSP_USING_ECAP -#define BSP_USING_CAN -#define BSP_USING_CANFD1 +#define BSP_USING_WDG +#define BSP_USING_IWDG1 +#define BSP_USING_IWDG2 +#define BSP_USING_WWDG +#define BSP_USING_HARD_I2C +#define BSP_USING_HARD_I2C1 +#define BSP_USING_SOFT_I2C +#define BSP_USING_SOFT_I2C2 + +/* Notice: PB2(i2c2_sda) --> 34; PB3(i2c_scl) --> 35 */ + +#define BSP_SOFT_I2C2_SCL_PIN 35 +#define BSP_SOFT_I2C2_SDA_PIN 34 +#define BSP_USING_DAC +#define BSP_USING_DAC1 +#define BSP_USING_DAC3 /* end of On-chip Peripheral Drivers */ #endif diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvoptx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvoptx new file mode 100644 index 0000000000000000000000000000000000000000..c822556e688ec2f5167d4707e29f585f56f790bc --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvoptx @@ -0,0 +1,177 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp; *.cc; *.cxx + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U775238036 -O110 -S8 -ZTIFSpeedSel50000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1.FLM -FS08000000 -FL080000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FF1NS800RT7xxx_FlashBank2.FLM -FS18080000 -FL180000 -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1 -FS08000000 -FL080000 -FF1NS800RT7xxx_FlashBank2 -FS18080000 -FL180000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + +
diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx index 9a1baf2a14bcf6c007e6965df5fbafad3e19f59d..5e3cc5da3a38aa9f72eda068981de0e59b011b5c 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx @@ -10,13 +10,14 @@ rt-thread 0x4 ARM-ADS + 6240000::V6.24::ARMCLANG 6220000::V6.22::ARMCLANG 1 NS800RT7P65D-DHQFBY2 Novosense - NOVOSENSE.NS800RT7XXX.0.4.0 + NOVOSENSE.NS800RT7XXX.0.5.3 https://www.novosns.com/ IRAM(0x20000000,0x00020000) IRAM2(0x00000000,0x00020000) IROM(0x08000000,0x00080000) IROM2(0x08080000,0x00080000) XRAM(0x20100000,0x00020000) XRAM2(0x20120000,0x00020000) CPUTYPE("Cortex-M7") FPU3(DFPU) CLOCK(12000000) ELITTLE @@ -52,7 +53,7 @@ rt-thread 1 0 - 0 + 1 1 1 .\build\ @@ -323,7 +324,7 @@ 1 0 0 - 3 + 1 0 0 1 diff --git a/bsp/novosns/ns800/tools/sdk_dist.py b/bsp/novosns/ns800/tools/sdk_dist.py index 0b75bf8cee88db5e27d6a2a2b3bf79b8cf4fce83..7ef49f3a2ba97ecce62a46c008adde4d0beb3109 100644 --- a/bsp/novosns/ns800/tools/sdk_dist.py +++ b/bsp/novosns/ns800/tools/sdk_dist.py @@ -11,7 +11,7 @@ def dist_do_building(BSP_ROOT, dist_dir): from mkdist import bsp_copy_files import rtconfig - print("=> copy novosns bsp library") + print("=> copy stm32 bsp library") library_dir = os.path.join(dist_dir, 'libraries') library_path = os.path.join(os.path.dirname(BSP_ROOT), 'libraries') if rtconfig.BSP_LIBRARY_TYPE is not None: @@ -20,3 +20,4 @@ def dist_do_building(BSP_ROOT, dist_dir): print("=> copy bsp drivers") bsp_copy_files(os.path.join(library_path, 'HAL_Drivers'), os.path.join(library_dir, 'HAL_Drivers')) + shutil.copyfile(os.path.join(library_path, 'Kconfig'), os.path.join(library_dir, 'Kconfig')) diff --git a/src/kservice.c b/src/kservice.c index db321552616f7d97e927e8398c4681298c80871e..08d911e63e4c28524aa7d901d9ea8c7992ba1c97 100644 --- a/src/kservice.c +++ b/src/kservice.c @@ -388,6 +388,7 @@ void rt_kputs(const char *str) * * @return The number of characters actually written to buffer. */ +#include rt_weak int rt_kprintf(const char *fmt, ...) { va_list args; @@ -407,7 +408,7 @@ rt_weak int rt_kprintf(const char *fmt, ...) * large excluding the terminating null byte. If the output string * would be larger than the rt_log_buf, we have to adjust the output * length. */ - length = rt_vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args); + length = vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args); if (length > RT_CONSOLEBUF_SIZE - 1) { length = RT_CONSOLEBUF_SIZE - 1;