From 47ced5be442e3df6803017cf2f8de1be4b9695ae Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Wed, 21 Aug 2019 22:26:25 +0800 Subject: [PATCH 01/20] =?UTF-8?q?[bsp][gd32vf103v-eval]Add=20scons=20compi?= =?UTF-8?q?lation=20support.|=E6=B7=BB=E5=8A=A0=20scons=20=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/gd32vf103v-eval/.config | 41 ++++--------------- bsp/gd32vf103v-eval/board/board.c | 6 +++ bsp/gd32vf103v-eval/libraries/SConscript | 26 ++++++++++++ .../libraries/n22/env_Eclipse/handlers.c | 6 +-- bsp/gd32vf103v-eval/rtconfig.h | 8 +--- 5 files changed, 46 insertions(+), 41 deletions(-) create mode 100644 bsp/gd32vf103v-eval/libraries/SConscript diff --git a/bsp/gd32vf103v-eval/.config b/bsp/gd32vf103v-eval/.config index b50d522493..d05203a790 100644 --- a/bsp/gd32vf103v-eval/.config +++ b/bsp/gd32vf103v-eval/.config @@ -99,7 +99,7 @@ CONFIG_FINSH_CMD_SIZE=80 # CONFIG_FINSH_USING_AUTH is not set CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_USING_MSH_DEFAULT=y -# CONFIG_FINSH_USING_MSH_ONLY is not set +CONFIG_FINSH_USING_MSH_ONLY=y CONFIG_FINSH_ARG_MAX=10 # @@ -134,6 +134,8 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_RT_USING_SENSOR is not set # CONFIG_RT_USING_TOUCH is not set # CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set # CONFIG_RT_USING_WIFI is not set # @@ -145,7 +147,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # # POSIX layer and C standard library # -# CONFIG_RT_USING_LIBC is not set +CONFIG_RT_USING_LIBC=y # CONFIG_RT_USING_PTHREADS is not set # @@ -240,6 +242,9 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # 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_ONNX_PARSER is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set # # security packages @@ -329,6 +334,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_PKG_USING_MINILZO is not set # CONFIG_PKG_USING_QUICKLZ 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_DSTR is not set @@ -347,36 +353,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_PKG_USING_VI is not set # CONFIG_PKG_USING_NNOM is not set # CONFIG_PKG_USING_LIBANN is not set - -# -# Privated Packages of RealThread -# -# CONFIG_PKG_USING_CODEC is not set -# CONFIG_PKG_USING_PLAYER is not set -# CONFIG_PKG_USING_MPLAYER is not set -# CONFIG_PKG_USING_PERSIMMON_SRC is not set -# CONFIG_PKG_USING_JS_PERSIMMON is not set -# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set - -# -# Network Utilities -# -# CONFIG_PKG_USING_WICED is not set -# CONFIG_PKG_USING_CLOUDSDK is not set -# CONFIG_PKG_USING_COREMARK is not set -# CONFIG_PKG_USING_POWER_MANAGER is not set -# CONFIG_PKG_USING_RT_OTA is not set -# CONFIG_PKG_USING_RDBD_SRC is not set -# CONFIG_PKG_USING_RTINSIGHT is not set -# CONFIG_PKG_USING_SMARTCONFIG is not set -# CONFIG_PKG_USING_RTX is not set -# CONFIG_RT_USING_TESTCASE is not set -# CONFIG_PKG_USING_NGHTTP2 is not set -# CONFIG_PKG_USING_AVS is not set -# CONFIG_PKG_USING_JOYLINK is not set -# CONFIG_PKG_USING_STS is not set -# CONFIG_PKG_USING_DLMS is not set -# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set +# CONFIG_PKG_USING_ELAPACK is not set # # Hardware Drivers Config diff --git a/bsp/gd32vf103v-eval/board/board.c b/bsp/gd32vf103v-eval/board/board.c index 6e666c281c..5ddcccafa5 100644 --- a/bsp/gd32vf103v-eval/board/board.c +++ b/bsp/gd32vf103v-eval/board/board.c @@ -41,6 +41,12 @@ void eclic_mtip_handler(void) { rt_interrupt_leave(); } +/* fixed misaligned bug for qemu */ +void *__wrap_memset(void *s, int c, size_t n) +{ + return rt_memset(s, c, n); +} + void rt_hw_board_init(void) { systick_config(TMR_FREQ / RT_TICK_PER_SECOND); diff --git a/bsp/gd32vf103v-eval/libraries/SConscript b/bsp/gd32vf103v-eval/libraries/SConscript new file mode 100644 index 0000000000..e7a4f5c3eb --- /dev/null +++ b/bsp/gd32vf103v-eval/libraries/SConscript @@ -0,0 +1,26 @@ +# RT-Thread building script for component + +Import('rtconfig') +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() + +src = Glob('GD32VF103_standard_peripheral/Source/*.c') +src += Glob('n22/env_Eclipse/*.c') +src += Glob('n22/stubs/*.c') +src += ['GD32VF103_standard_peripheral/system_gd32vf103.c', + 'n22/drivers/n22_func.c', + 'n22/env_Eclipse/start.S', + 'n22/env_Eclipse/entry.S'] + +CPPPATH = [ cwd + '/GD32VF103_standard_peripheral/Include', + cwd + '/GD32VF103_standard_peripheral', + cwd + '/n22/drivers', + cwd + '/n22/stubs'] + +CPPDEFINES = [] + +group = DefineGroup('Libraries', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) + +Return('group') diff --git a/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c b/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c index 10ff5a7949..a99b1e0182 100644 --- a/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c +++ b/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c @@ -15,9 +15,9 @@ __attribute__((weak)) uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp) { handle_nmi(); } write(1, "trap\n", 5); - printf("In trap handler, the mcause is %d\n", mcause); - printf("In trap handler, the mepc is 0x%x\n", read_csr(mepc)); - printf("In trap handler, the mtval is 0x%x\n", read_csr(mbadaddr)); + // printf("In trap handler, the mcause is %d\n", mcause); + // printf("In trap handler, the mepc is 0x%x\n", read_csr(mepc)); + // printf("In trap handler, the mtval is 0x%x\n", read_csr(mbadaddr)); _exit(mcause); return 0; } diff --git a/bsp/gd32vf103v-eval/rtconfig.h b/bsp/gd32vf103v-eval/rtconfig.h index 5d87992597..b6fea0cb1f 100644 --- a/bsp/gd32vf103v-eval/rtconfig.h +++ b/bsp/gd32vf103v-eval/rtconfig.h @@ -66,6 +66,7 @@ #define FINSH_CMD_SIZE 80 #define FINSH_USING_MSH #define FINSH_USING_MSH_DEFAULT +#define FINSH_USING_MSH_ONLY #define FINSH_ARG_MAX 10 /* Device virtual file system */ @@ -83,6 +84,7 @@ /* POSIX layer and C standard library */ +#define RT_USING_LIBC /* Network */ @@ -144,12 +146,6 @@ /* samples: kernel and components samples */ -/* Privated Packages of RealThread */ - - -/* Network Utilities */ - - /* Hardware Drivers Config */ #define SOC_GD32VF103V From aba81f65f444b0a2f7d8454830f33deb69a0ee32 Mon Sep 17 00:00:00 2001 From: Willian Chan Date: Fri, 23 Aug 2019 11:39:07 +0800 Subject: [PATCH 02/20] [bsp][stm32][stm32f103-dofly-M3S]Add spi sdcard port code Signed-off-by: Willian Chan --- bsp/stm32/stm32f103-dofly-M3S/board/Kconfig | 11 ++++++++++- bsp/stm32/stm32f103-dofly-M3S/board/SConscript | 5 ++++- .../board/ports/drv_sdcard.c | 17 ++++++++++++++--- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig index 8ea2fa2093..282a6fda5f 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig +++ b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig @@ -7,7 +7,7 @@ config SOC_STM32F103ZE menu "Onboard Peripheral Drivers" - config BSP_USING_SDCARD + config BSP_USING_SDIO_SDCARD bool "Enable SDCARD (sdio)" select BSP_USING_SDIO select RT_USING_DFS @@ -15,6 +15,15 @@ menu "Onboard Peripheral Drivers" select RT_USING_PIN default n + config BSP_USING_SPI_SDCARD + bool "Enable SDCARD (spi2)" + select BSP_USING_SPI + select BSP_USING_SPI2 + select RT_USING_SPI_MSD + select RT_USING_DFS + select RT_USING_DFS_ELMFAT + default n + config BSP_USING_SPI_FLASH bool "Enable SPI FLASH (W25Q64 spi2)" select BSP_USING_SPI diff --git a/bsp/stm32/stm32f103-dofly-M3S/board/SConscript b/bsp/stm32/stm32f103-dofly-M3S/board/SConscript index c1cc4eef45..cd34843ab6 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/board/SConscript +++ b/bsp/stm32/stm32f103-dofly-M3S/board/SConscript @@ -12,7 +12,10 @@ board.c CubeMX_Config/Src/stm32f1xx_hal_msp.c ''') -if GetDepend(['BSP_USING_SDCARD']): +if GetDepend(['BSP_USING_SDIO_SDCARD']): + src += Glob('ports/drv_sdcard.c') + +if GetDepend(['BSP_USING_SPI_SDCARD']): src += Glob('ports/drv_sdcard.c') if GetDepend(['BSP_USING_SPI_FLASH']): diff --git a/bsp/stm32/stm32f103-dofly-M3S/board/ports/drv_sdcard.c b/bsp/stm32/stm32f103-dofly-M3S/board/ports/drv_sdcard.c index ef539c46e4..5ffa50ba1d 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/board/ports/drv_sdcard.c +++ b/bsp/stm32/stm32f103-dofly-M3S/board/ports/drv_sdcard.c @@ -6,12 +6,12 @@ * Change Logs: * Date Author Notes * 2018-12-13 balanceTWK add sdcard port file + * 2019-08-23 WillianChan add spi sdcard port code */ #include -#ifdef BSP_USING_SDCARD - +#if defined BSP_USING_SDIO_SDCARD || defined BSP_USING_SPI_SDCARD #include #include #include @@ -58,5 +58,16 @@ int stm32_sdcard_mount(void) return RT_EOK; } INIT_APP_EXPORT(stm32_sdcard_mount); +#endif /* BSP_USING_SDIO_SDCARD || BSP_USING_SPI_SDCARD */ -#endif /* BSP_USING_SDCARD */ +#ifdef BSP_USING_SPI_SDCARD +#include "drv_spi.h" +#include "spi_msd.h" +static int rt_hw_spi2_tfcard(void) +{ + __HAL_RCC_GPIOC_CLK_ENABLE(); + rt_hw_spi_device_attach("spi2", "spi20", GPIOD, GPIO_PIN_2); + return msd_init("sd0", "spi20"); +} +INIT_DEVICE_EXPORT(rt_hw_spi2_tfcard); +#endif /* BSP_USING_SPI_SDCARD */ From 086d26e0b478e2f98bfc5c0fa7b6e1a5de588f49 Mon Sep 17 00:00:00 2001 From: tangweikang Date: Fri, 23 Aug 2019 14:36:12 +0800 Subject: [PATCH 03/20] [components][drivers][encoder] update --- components/drivers/misc/encoder.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/components/drivers/misc/encoder.c b/components/drivers/misc/encoder.c index e9e1da0f40..d7fd845599 100644 --- a/components/drivers/misc/encoder.c +++ b/components/drivers/misc/encoder.c @@ -13,47 +13,47 @@ static rt_err_t rt_encoder_init(struct rt_device *dev) { + rt_err_t ret; struct rt_encoder_device *encoder; + ret = RT_EOK; encoder = (struct rt_encoder_device *)dev; if (encoder->ops->init) { - return encoder->ops->init(encoder); - } - else - { - return -RT_ENOSYS; + ret = encoder->ops->init(encoder); } + + return ret; } static rt_err_t rt_encoder_open(struct rt_device *dev, rt_uint16_t oflag) { + rt_err_t ret; struct rt_encoder_device *encoder; + ret = RT_EOK; encoder = (struct rt_encoder_device *)dev; if (encoder->ops->control) { - return encoder->ops->control(encoder, ENCODER_CMD_ENABLE, RT_NULL); - } - else - { - return -RT_ENOSYS; + ret = encoder->ops->control(encoder, ENCODER_CMD_ENABLE, RT_NULL); } + + return ret; } static rt_err_t rt_encoder_close(struct rt_device *dev) { + rt_err_t ret; struct rt_encoder_device *encoder; + ret = RT_EOK; encoder = (struct rt_encoder_device *)dev; if (encoder->ops->control) { - return encoder->ops->control(encoder, ENCODER_CMD_DISABLE, RT_NULL); - } - else - { - return -RT_ENOSYS; + ret = encoder->ops->control(encoder, ENCODER_CMD_DISABLE, RT_NULL); } + + return ret; } static rt_size_t rt_encoder_read(struct rt_device *dev, rt_off_t pos, void *buffer, rt_size_t size) @@ -113,6 +113,7 @@ rt_err_t rt_device_encoder_register(struct rt_encoder_device *encoder, const cha RT_ASSERT(encoder != RT_NULL); RT_ASSERT(encoder->ops != RT_NULL); + RT_ASSERT(encoder->ops->get_count != RT_NULL); device = &(encoder->parent); From 363c9b1460cef3b6fedda34211e6651ac032196f Mon Sep 17 00:00:00 2001 From: tyustli <1225613647@qq.com> Date: Fri, 23 Aug 2019 20:32:15 +0800 Subject: [PATCH 04/20] [bsp] [stm32] fix drv_can.c and can.c bug --- bsp/stm32/libraries/HAL_Drivers/drv_can.c | 4 ++++ components/drivers/can/can.c | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_can.c b/bsp/stm32/libraries/HAL_Drivers/drv_can.c index d0221b9623..9c91ab0b48 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_can.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_can.c @@ -515,7 +515,11 @@ static int _can_recvmsg(struct rt_can_device *can, void *buf, rt_uint32_t fifo) /* get len */ pmsg->len = rxheader.DLC; /* get hdr */ +#ifdef BSP_USING_CAN2 pmsg->hdr = rxheader.FilterMatchIndex; +#else + pmsg->hdr = (rxheader.FilterMatchIndex + 1) >> 1; +#endif return RT_EOK; } diff --git a/components/drivers/can/can.c b/components/drivers/can/can.c index 48604993b9..3d60dbaa55 100644 --- a/components/drivers/can/can.c +++ b/components/drivers/can/can.c @@ -853,7 +853,10 @@ void rt_hw_can_isr(struct rt_can_device *can, int event) level = rt_hw_interrupt_disable(); rx_length = can->hdr[hdr].msgs * sizeof(struct rt_can_msg); rt_hw_interrupt_enable(level); - can->hdr[hdr].filter.ind(&can->parent, can->hdr[hdr].filter.args, hdr, rx_length); + if (rx_length) + { + can->hdr[hdr].filter.ind(&can->parent, can->hdr[hdr].filter.args, hdr, rx_length); + } } else #endif @@ -867,7 +870,10 @@ void rt_hw_can_isr(struct rt_can_device *can, int event) rx_length = rt_list_len(&rx_fifo->uselist)* sizeof(struct rt_can_msg); rt_hw_interrupt_enable(level); - can->parent.rx_indicate(&can->parent, rx_length); + if (rx_length) + { + can->parent.rx_indicate(&can->parent, rx_length); + } } } break; From b1efdefebb5586aa25a9fc475661af0055238106 Mon Sep 17 00:00:00 2001 From: MurphyZhao Date: Fri, 23 Aug 2019 23:25:58 +0800 Subject: [PATCH 05/20] =?UTF-8?q?[tools][fix]=20=E4=BF=AE=E6=94=B9=20iar.p?= =?UTF-8?q?y=20=E4=B8=AD=20iar=20=E7=89=88=E6=9C=AC=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E5=90=8E=E7=9A=84=E5=A4=84=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E7=9B=AE=E7=9A=84=E6=98=AF=E5=9C=A8=E5=87=BA=E9=94=99=E5=90=8E?= =?UTF-8?q?=E7=BB=88=E6=AD=A2=20scons=20=E7=A8=8B=E5=BA=8F=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E5=8F=91=E7=8E=B0=E5=B9=B6=E4=BF=AE=E6=94=B9=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=9B=E5=B9=B6=E5=9C=A8=E6=88=90=E5=8A=9F=E5=90=8E?= =?UTF-8?q?=E6=89=93=E5=8D=B0=20iar=20=E7=89=88=E6=9C=AC=EF=BC=8C=E4=BE=BF?= =?UTF-8?q?=E4=BA=8E=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MurphyZhao --- tools/iar.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/iar.py b/tools/iar.py index 18a3cb8328..23cb8e11ac 100644 --- a/tools/iar.py +++ b/tools/iar.py @@ -194,10 +194,12 @@ def IARVersion(): cmd = os.path.join(path, 'iccarm.exe') else: print('Error: get IAR version failed. Please update the IAR installation path in rtconfig.py!') - return "0.0" + exit(-1) child = subprocess.Popen([cmd, '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) stdout, stderr = child.communicate() # example stdout: IAR ANSI C/C++ Compiler V8.20.1.14183/W32 for ARM - return re.search('[\d\.]+', stdout).group(0) + iar_version = re.search('[\d\.]+', stdout).group(0) + print("IAR version: %s" % iar_version) + return iar_version From f39b44ce80a59f31c3abd7bed312768af0797000 Mon Sep 17 00:00:00 2001 From: chenyong <1521761801@qq.com> Date: Sat, 24 Aug 2019 16:37:26 +0800 Subject: [PATCH 06/20] [network][netdev] Improve the ping command error log prompt Signed-off-by: chenyong <1521761801@qq.com> --- components/net/netdev/src/netdev.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index bc2c55f727..ebdcbed36f 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -355,7 +355,7 @@ void netdev_set_default(struct netdev *netdev) /* set default network interface device in the current network stack */ netdev->ops->set_default(netdev); } - LOG_D("Setting default network interface device name(%s) successfully.", netdev->name); + LOG_D("Setting default network interface device name(%s) successfully.", netdev->name); } } @@ -1037,16 +1037,30 @@ int netdev_cmd_ping(char* target_name, rt_uint32_t times, rt_size_t size) { /* using first internet up status network interface device */ netdev = netdev_get_first_by_flags(NETDEV_FLAG_LINK_UP); - if (netdev == RT_NULL || NETDEV_PING_IS_COMMONICABLE(netdev) == 0) + if (netdev == RT_NULL) { - rt_kprintf("ping: network interface device get error.\n"); + rt_kprintf("ping: not found available network interface device.\n"); + return -RT_ERROR; + } + else if (netdev->ops == RT_NULL || netdev->ops->ping == RT_NULL) + { + rt_kprintf("ping: network interface device(%s) not support ping feature.\n", netdev->name); + return -RT_ERROR; + } + else if (!netdev_is_up(netdev) || !netdev_is_link_up(netdev)) + { + rt_kprintf("ping: network interface device(%s) status error.\n", netdev->name); return -RT_ERROR; } } for (index = 0; index < times; index++) { + int delay_tick = 0; + rt_tick_t start_tick = 0; + rt_memset(&ping_resp, 0x00, sizeof(struct netdev_ping_resp)); + start_tick = rt_tick_get(); ret = netdev->ops->ping(netdev, (const char *)target_name, size, NETDEV_PING_RECV_TIMEO, &ping_resp); if (ret == -RT_ETIMEOUT) { @@ -1073,7 +1087,9 @@ int netdev_cmd_ping(char* target_name, rt_uint32_t times, rt_size_t size) } } - rt_thread_mdelay(NETDEV_PING_DELAY); + /* if the response time is more than NETDEV_PING_DELAY, no nead to delay */ + delay_tick = ((rt_tick_get() - start_tick) > NETDEV_PING_DELAY) || (index == times) ? 0 : NETDEV_PING_DELAY; + rt_thread_delay(delay_tick); } return RT_EOK; From a101327d24f9deed087e8c1421ca50b9f45e4203 Mon Sep 17 00:00:00 2001 From: xuzhuoyi Date: Sat, 24 Aug 2019 18:42:54 +0800 Subject: [PATCH 07/20] [bsp][tms320f28379d] Fix an issue that interrupts are disabled in the thread --- bsp/tms320f28379d/applications/startup.c | 2 -- bsp/tms320f28379d/drivers/drv_sci.c | 1 - libcpu/ti-dsp/c28x/cpuport.c | 2 +- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/bsp/tms320f28379d/applications/startup.c b/bsp/tms320f28379d/applications/startup.c index 523a45b3b7..301e63a00a 100644 --- a/bsp/tms320f28379d/applications/startup.c +++ b/bsp/tms320f28379d/applications/startup.c @@ -47,8 +47,6 @@ void rtthread_startup(void) /* init board */ rt_hw_board_init(); - rt_hw_interrupt_disable(); - /* show version */ rt_show_version(); diff --git a/bsp/tms320f28379d/drivers/drv_sci.c b/bsp/tms320f28379d/drivers/drv_sci.c index 0920d382f5..b9f23acc48 100644 --- a/bsp/tms320f28379d/drivers/drv_sci.c +++ b/bsp/tms320f28379d/drivers/drv_sci.c @@ -223,7 +223,6 @@ int rt_hw_sci_init(void) PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block PieCtrlRegs.PIEIER9.bit.INTx1 = 1; // PIE Group 9, INT1 IER |= 0x100; // Enable CPU INT - EINT; struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; rt_err_t result = 0; diff --git a/libcpu/ti-dsp/c28x/cpuport.c b/libcpu/ti-dsp/c28x/cpuport.c index e34556c524..3f88606c65 100644 --- a/libcpu/ti-dsp/c28x/cpuport.c +++ b/libcpu/ti-dsp/c28x/cpuport.c @@ -78,7 +78,7 @@ rt_uint8_t *rt_hw_stack_init(void *tentry, stack_frame->exception_stack_frame.acc = 0x33332222; stack_frame->exception_stack_frame.ar1_ar0 = 0x00001111 & (unsigned long)parameter; /* ar0 : argument */ stack_frame->exception_stack_frame.p = 0x55554444; /* p */ - stack_frame->exception_stack_frame.dp_st1 = (0x00000000) | rt_hw_get_st1(); /* dp_st1 */ + stack_frame->exception_stack_frame.dp_st1 = (0x00000000) | rt_hw_get_st1() & 0xFFFFFFFE; /* dp_st1 */ stack_frame->exception_stack_frame.dbgstat_ier = 0; /* dbgstat_ier */ stack_frame->exception_stack_frame.return_address = (unsigned long)tentry; /* return_address */ stack_frame->rpc = (unsigned long)texit; From de2e82bc46a848d9b011c52865119d7646e4484a Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Sun, 25 Aug 2019 12:13:23 +0800 Subject: [PATCH 08/20] =?UTF-8?q?*=20[bsp][gd32vf103v-eval]=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c b/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c index a99b1e0182..ed2ed78c98 100644 --- a/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c +++ b/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c @@ -15,9 +15,6 @@ __attribute__((weak)) uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp) { handle_nmi(); } write(1, "trap\n", 5); - // printf("In trap handler, the mcause is %d\n", mcause); - // printf("In trap handler, the mepc is 0x%x\n", read_csr(mepc)); - // printf("In trap handler, the mtval is 0x%x\n", read_csr(mbadaddr)); _exit(mcause); return 0; } From 108b85f2af23e1a8affa9d554d1977fd73b00578 Mon Sep 17 00:00:00 2001 From: chenyong <1521761801@qq.com> Date: Sat, 24 Aug 2019 18:26:58 +0800 Subject: [PATCH 09/20] =?UTF-8?q?[network][at]=20Fix=20the=20end=20sign=20?= =?UTF-8?q?"\r\n"=20conversion=20error=EF=BC=8Cand=20at=5Fserver=5Fsend?= =?UTF-8?q?=E3=80=81at=5Fserver=5Frecv=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chenyong <1521761801@qq.com> --- components/net/at/include/at.h | 4 +- components/net/at/src/at_cli.c | 10 +++- components/net/at/src/at_server.c | 99 +++++++++++++++++++++++++++++-- 3 files changed, 104 insertions(+), 9 deletions(-) diff --git a/components/net/at/include/at.h b/components/net/at/include/at.h index dc2abef353..a7a6aeca7a 100644 --- a/components/net/at/include/at.h +++ b/components/net/at/include/at.h @@ -96,7 +96,7 @@ struct at_server rt_device_t device; at_status_t status; - char (*get_char)(void); + rt_err_t (*get_char)(struct at_server *server, char *ch, rt_int32_t timeout); rt_bool_t echo_mode; char recv_buffer[AT_SERVER_RECV_BUFF_LEN]; @@ -194,6 +194,8 @@ int at_server_init(void); void at_server_printf(const char *format, ...); void at_server_printfln(const char *format, ...); void at_server_print_result(at_result_t result); +rt_size_t at_server_send(at_server_t server, const char *buf, rt_size_t size); +rt_size_t at_server_recv(at_server_t server, char *buf, rt_size_t size, rt_int32_t timeout); /* AT server request arguments parse */ int at_req_parse_args(const char *req_args, const char *req_expr, ...); diff --git a/components/net/at/src/at_cli.c b/components/net/at/src/at_cli.c index 80af613fa6..e39a913357 100644 --- a/components/net/at/src/at_cli.c +++ b/components/net/at/src/at_cli.c @@ -100,6 +100,12 @@ void at_cli_deinit(void) } #ifdef AT_USING_SERVER +static rt_err_t at_server_console_getchar(struct at_server *server, char *ch, rt_int32_t timeout) +{ + *ch = console_getchar(); + return RT_EOK; +} + static void server_cli_parser(void) { extern at_server_t at_get_server(void); @@ -107,7 +113,7 @@ static void server_cli_parser(void) at_server_t server = at_get_server(); rt_base_t int_lvl; static rt_device_t device_bak; - static char (*getchar_bak)(void); + static rt_err_t (*getchar_bak)(struct at_server *server, char *ch, rt_int32_t timeout); static char endmark_back[AT_END_MARK_LEN]; /* backup server device and getchar function */ @@ -122,7 +128,7 @@ static void server_cli_parser(void) /* setup server device as console device */ server->device = rt_console_get_device(); - server->get_char = console_getchar; + server->get_char = at_server_console_getchar; memset(server->end_mark, 0x00, AT_END_MARK_LEN); server->end_mark[0] = '\r'; diff --git a/components/net/at/src/at_server.c b/components/net/at/src/at_server.c index 31f1bec96f..81d00951f5 100644 --- a/components/net/at/src/at_server.c +++ b/components/net/at/src/at_server.c @@ -167,6 +167,79 @@ void rt_at_server_print_all_cmd(void) } } +/** + * Send data to AT Client by uart device. + * + * @param server current AT server object + * @param buf send data buffer + * @param size send fixed data size + * + * @return >0: send data size + * =0: send failed + */ +rt_size_t at_server_send(at_server_t server, const char *buf, rt_size_t size) +{ + RT_ASSERT(buf); + + if (server == RT_NULL) + { + LOG_E("input AT Server object is NULL, please create or get AT Server object!"); + return 0; + } + + return rt_device_write(server->device, 0, buf, size); +} + +/** + * AT Server receive fixed-length data. + * + * @param client current AT Server object + * @param buf receive data buffer + * @param size receive fixed data size + * @param timeout receive data timeout (ms) + * + * @note this function can only be used in execution function of AT commands + * + * @return >0: receive data size + * =0: receive failed + */ +rt_size_t at_server_recv(at_server_t server, char *buf, rt_size_t size, rt_int32_t timeout) +{ + rt_size_t read_idx = 0; + rt_err_t result = RT_EOK; + char ch = 0; + + RT_ASSERT(buf); + + if (server == RT_NULL) + { + LOG_E("input AT Server object is NULL, please create or get AT Server object!"); + return 0; + } + + while (1) + { + if (read_idx < size) + { + /* check get data value */ + result = server->get_char(server, &ch, timeout); + if (result != RT_EOK) + { + LOG_E("AT Server receive failed, uart device get data error."); + return 0; + } + + buf[read_idx++] = ch; + } + else + { + break; + } + } + + return read_idx; +} + at_server_t at_get_server(void) { RT_ASSERT(at_server_local); @@ -339,17 +412,21 @@ static rt_err_t at_cmd_get_name(const char *cmd_buffer, char *cmd_name) return -RT_ERROR; } -static char at_server_gerchar(void) +static rt_err_t at_server_gerchar(at_server_t server, char *ch, rt_int32_t timeout) { - char ch; + rt_err_t result = RT_EOK; - while (rt_device_read(at_server_local->device, 0, &ch, 1) == 0) + while (rt_device_read(at_server_local->device, 0, ch, 1) == 0) { rt_sem_control(at_server_local->rx_notice, RT_IPC_CMD_RESET, RT_NULL); - rt_sem_take(at_server_local->rx_notice, RT_WAITING_FOREVER); + result = rt_sem_take(at_server_local->rx_notice, rt_tick_from_millisecond(timeout)); + if (result != RT_EOK) + { + return result; + } } - return ch; + return result; } static void server_parser(at_server_t server) @@ -365,14 +442,24 @@ static void server_parser(at_server_t server) RT_ASSERT(server); RT_ASSERT(server->status != AT_STATUS_UNINITIALIZED); - while (ESC_KEY != (ch = server->get_char())) + while (1) { + server->get_char(server, &ch, RT_WAITING_FOREVER); + if (ESC_KEY == ch) + { + break; + } + if (server->echo_mode) { if (ch == AT_CMD_CR || (ch == AT_CMD_LF && last_ch != AT_CMD_CR)) { at_server_printf("%c%c", AT_CMD_CR, AT_CMD_LF); } + else if (ch == AT_CMD_LF) + { + // skip the end sign check + } else if (ch == BACKSPACE_KEY || ch == DELECT_KEY) { if (server->cur_recv_len) From 9b9175dca6ced17494338bf0e0dbd02d12cb0f5f Mon Sep 17 00:00:00 2001 From: MurphyZhao Date: Mon, 26 Aug 2019 17:49:46 +0800 Subject: [PATCH 10/20] =?UTF-8?q?[tools][update]=20=E4=BD=BF=E7=94=A8=20'-?= =?UTF-8?q?-verbose'=20=E6=8E=A7=E5=88=B6=20iar=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MurphyZhao --- tools/iar.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/iar.py b/tools/iar.py index 23cb8e11ac..a0028128e3 100644 --- a/tools/iar.py +++ b/tools/iar.py @@ -27,6 +27,8 @@ import sys import string import utils +from SCons.Script import * + import xml.etree.ElementTree as etree from xml.etree.ElementTree import SubElement from utils import _make_path_relative @@ -201,5 +203,6 @@ def IARVersion(): # example stdout: IAR ANSI C/C++ Compiler V8.20.1.14183/W32 for ARM iar_version = re.search('[\d\.]+', stdout).group(0) - print("IAR version: %s" % iar_version) + if GetOption('verbose'): + print("IAR version: %s" % iar_version) return iar_version From fd39d5c92ae8b8c9cfb5c5a0da8081504d12fdd4 Mon Sep 17 00:00:00 2001 From: armink Date: Tue, 27 Aug 2019 10:51:51 +0800 Subject: [PATCH 11/20] [bsp/stm32/stm32f411-st-nucleo] add eclipse support. --- bsp/stm32/stm32f411-st-nucleo/.cproject | 158 ++++++++++++++++++ bsp/stm32/stm32f411-st-nucleo/.project | 69 ++++++++ .../.settings/language.settings.xml | 14 ++ .../.settings/org.eclipse.core.runtime.prefs | 3 + .../stm32f411-st-nucleo/makefile.targets | 4 + 5 files changed, 248 insertions(+) create mode 100644 bsp/stm32/stm32f411-st-nucleo/.cproject create mode 100644 bsp/stm32/stm32f411-st-nucleo/.project create mode 100644 bsp/stm32/stm32f411-st-nucleo/.settings/language.settings.xml create mode 100644 bsp/stm32/stm32f411-st-nucleo/.settings/org.eclipse.core.runtime.prefs create mode 100644 bsp/stm32/stm32f411-st-nucleo/makefile.targets diff --git a/bsp/stm32/stm32f411-st-nucleo/.cproject b/bsp/stm32/stm32f411-st-nucleo/.cproject new file mode 100644 index 0000000000..2dee3ff09e --- /dev/null +++ b/bsp/stm32/stm32f411-st-nucleo/.cproject @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/stm32/stm32f411-st-nucleo/.project b/bsp/stm32/stm32f411-st-nucleo/.project new file mode 100644 index 0000000000..4fce1e5d64 --- /dev/null +++ b/bsp/stm32/stm32f411-st-nucleo/.project @@ -0,0 +1,69 @@ + + + stm32f411-st-nucleo + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.rt-thread.studio.rttnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + rt-thread + 2 + virtual:/virtual + + + rt-thread/bsp + 2 + virtual:/virtual + + + rt-thread/components + 2 + $%7BPARENT-3-PROJECT_LOC%7D/components + + + rt-thread/include + 2 + $%7BPARENT-3-PROJECT_LOC%7D/include + + + rt-thread/libcpu + 2 + $%7BPARENT-3-PROJECT_LOC%7D/libcpu + + + rt-thread/src + 2 + $%7BPARENT-3-PROJECT_LOC%7D/src + + + rt-thread/bsp/stm32 + 2 + virtual:/virtual + + + rt-thread/bsp/stm32/libraries + 2 + $%7BPARENT-1-PROJECT_LOC%7D/libraries + + + diff --git a/bsp/stm32/stm32f411-st-nucleo/.settings/language.settings.xml b/bsp/stm32/stm32f411-st-nucleo/.settings/language.settings.xml new file mode 100644 index 0000000000..5d47297634 --- /dev/null +++ b/bsp/stm32/stm32f411-st-nucleo/.settings/language.settings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bsp/stm32/stm32f411-st-nucleo/.settings/org.eclipse.core.runtime.prefs b/bsp/stm32/stm32f411-st-nucleo/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 0000000000..b36aae6fb2 --- /dev/null +++ b/bsp/stm32/stm32f411-st-nucleo/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,3 @@ +content-types/enabled=true +content-types/org.eclipse.cdt.core.asmSource/file-extensions=s +eclipse.preferences.version=1 diff --git a/bsp/stm32/stm32f411-st-nucleo/makefile.targets b/bsp/stm32/stm32f411-st-nucleo/makefile.targets new file mode 100644 index 0000000000..a00129bd90 --- /dev/null +++ b/bsp/stm32/stm32f411-st-nucleo/makefile.targets @@ -0,0 +1,4 @@ +clean2: + -$(RM) $(CC_DEPS)$(C++_DEPS)$(C_UPPER_DEPS)$(CXX_DEPS)$(SECONDARY_FLASH)$(SECONDARY_SIZE)$(ASM_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(CPP_DEPS) + -$(RM) $(OBJS) *.elf + -@echo ' ' \ No newline at end of file From 8369472fdbf51123c68d1990625ba65b3ff6bf4f Mon Sep 17 00:00:00 2001 From: armink Date: Tue, 27 Aug 2019 11:01:22 +0800 Subject: [PATCH 12/20] [bsp/stm32/stm32f103-yf-ufun] Add eclipse project. --- bsp/stm32/stm32f103-dofly-M3S/.cproject | 1 + bsp/stm32/stm32f103-yf-ufun/.cproject | 156 ++++++++++++++++++ bsp/stm32/stm32f103-yf-ufun/.project | 69 ++++++++ .../.settings/language.settings.xml | 14 ++ .../.settings/org.eclipse.core.runtime.prefs | 3 + bsp/stm32/stm32f103-yf-ufun/makefile.targets | 4 + 6 files changed, 247 insertions(+) create mode 100644 bsp/stm32/stm32f103-yf-ufun/.cproject create mode 100644 bsp/stm32/stm32f103-yf-ufun/.project create mode 100644 bsp/stm32/stm32f103-yf-ufun/.settings/language.settings.xml create mode 100644 bsp/stm32/stm32f103-yf-ufun/.settings/org.eclipse.core.runtime.prefs create mode 100644 bsp/stm32/stm32f103-yf-ufun/makefile.targets diff --git a/bsp/stm32/stm32f103-dofly-M3S/.cproject b/bsp/stm32/stm32f103-dofly-M3S/.cproject index 87ab6e1e3d..0a7b7602a0 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/.cproject +++ b/bsp/stm32/stm32f103-dofly-M3S/.cproject @@ -79,6 +79,7 @@