diff --git a/bsp/simulator/.config b/bsp/simulator/.config index c021694d72..98f45eb99c 100644 --- a/bsp/simulator/.config +++ b/bsp/simulator/.config @@ -164,7 +164,9 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # 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_RTC=y +# CONFIG_RT_USING_ALARM is not set +# CONFIG_RT_USING_SOFT_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 @@ -705,8 +707,10 @@ CONFIG_NETDEV_IPV6=0 CONFIG_SOC_SIMULATOR=y # -# Onboard Peripheral Drivers +# Peripheral Drivers # CONFIG_RT_USING_DFS_WINSHAREDIR=y +CONFIG_BSP_USING_RTC=y +# CONFIG_BSP_USING_ALARM is not set CONFIG_BSP_USING_SOCKET=y # CONFIG_BSP_USING_LVGL is not set diff --git a/bsp/simulator/Kconfig b/bsp/simulator/Kconfig index 31c1f75628..f30daf163b 100644 --- a/bsp/simulator/Kconfig +++ b/bsp/simulator/Kconfig @@ -24,13 +24,24 @@ config SOC_SIMULATOR select RT_USING_USER_MAIN default y -menu "Onboard Peripheral Drivers" +menu "Peripheral Drivers" config RT_USING_DFS_WINSHAREDIR bool "Enable shared file system between Windows" select RT_USING_POSIX_FS default y + config BSP_USING_RTC + bool "Enable RTC" + select RT_USING_RTC + default y + + config BSP_USING_ALARM + bool "Enable RTC alarm" + select RT_USING_ALARM + depends on BSP_USING_RTC + default n + config BSP_USING_SOCKET bool "Enable BSD Socket" select RT_USING_POSIX_FS diff --git a/bsp/simulator/applications/mnt.c b/bsp/simulator/applications/mnt.c index d7e49b854f..a4a559404e 100644 --- a/bsp/simulator/applications/mnt.c +++ b/bsp/simulator/applications/mnt.c @@ -42,7 +42,7 @@ static int mnt_init(void) else { LOG_W("[sd0] File System on SD ('sd0') initialization failed!"); - LOG_W("[sd0] Try to format and re-mount again..."); + LOG_W("[sd0] Try to format and re-mount..."); if (dfs_mkfs("elm", "sd0") == 0) { if (dfs_mount("sd0", "/sd", "elm", 0, 0) == 0) diff --git a/bsp/simulator/drivers/SConscript b/bsp/simulator/drivers/SConscript index e5d9b6ad08..34f7103810 100644 --- a/bsp/simulator/drivers/SConscript +++ b/bsp/simulator/drivers/SConscript @@ -38,6 +38,8 @@ else: LIBPATH.append(os.path.abspath(os.path.join(cwd, '../SDL2/lib/x86'))) CPPPATH.append(os.path.abspath(os.path.join(cwd, '../SDL2/include'))) +if GetDepend('BSP_USING_RTC') == False: + SrcRemove(src, 'drv_rtc.c') if GetDepend('RT_USING_DFS') == False or GetDepend('RT_USING_DFS_ELMFAT') == False: SrcRemove(src, 'sd_sim.c') if GetDepend('RT_USING_DFS') == False or GetDepend('RT_USING_MTD_NAND') == False: diff --git a/bsp/simulator/drivers/drv_rtc.c b/bsp/simulator/drivers/drv_rtc.c index 8543b4c926..4f6f3a6e37 100644 --- a/bsp/simulator/drivers/drv_rtc.c +++ b/bsp/simulator/drivers/drv_rtc.c @@ -6,19 +6,15 @@ * Change Logs: * Date Author Notes * 2021-04-13 armink the first version + * 2022-05-17 Meco Man improve and beautify */ #include -#include -#include #include -#ifdef RT_USING_RTC - static struct rt_device rtc_dev; -#ifdef RT_USING_ALARM - +#ifdef BSP_USING_ALARM static struct rt_rtc_wkalarm wkalarm; static struct rt_timer alarm_time; @@ -42,15 +38,15 @@ static void soft_rtc_alarm_update(struct rt_rtc_wkalarm *palarm) rt_timer_stop(&alarm_time); } } - -#endif +#endif /* BSP_USING_ALARM */ static void get_rtc_timeval(struct timeval *tv) { struct tm newtime = { 0 }; SYSTEMTIME sys_time; - GetSystemTime(&sys_time); + GetSystemTime(&sys_time); /* get RTC from Windows */ + newtime.tm_year = sys_time.wYear - 1900; newtime.tm_mon = sys_time.wMonth - 1; newtime.tm_mday = sys_time.wDay; @@ -62,9 +58,8 @@ static void get_rtc_timeval(struct timeval *tv) tv->tv_usec = sys_time.wMilliseconds * 1000UL; } -static rt_err_t soft_rtc_control(rt_device_t dev, int cmd, void *args) +static rt_err_t windows_rtc_control(rt_device_t dev, int cmd, void *args) { - __time32_t *t; struct tm newtime; RT_ASSERT(dev != RT_NULL); @@ -83,22 +78,24 @@ static rt_err_t soft_rtc_control(rt_device_t dev, int cmd, void *args) get_rtc_timeval((struct timeval *) args); break; } +#ifdef BSP_USING_ALARM case RT_DEVICE_CTRL_RTC_SET_TIME: { -#ifdef RT_USING_ALARM soft_rtc_alarm_update(&wkalarm); -#endif break; } -#ifdef RT_USING_ALARM case RT_DEVICE_CTRL_RTC_GET_ALARM: + { *((struct rt_rtc_wkalarm *)args) = wkalarm; break; + } case RT_DEVICE_CTRL_RTC_SET_ALARM: + { wkalarm = *((struct rt_rtc_wkalarm *)args); soft_rtc_alarm_update(&wkalarm); break; -#endif + } +#endif /* BSP_USING_ALARM */ default: return -RT_ERROR; } @@ -114,22 +111,16 @@ const static struct rt_device_ops soft_rtc_ops = RT_NULL, RT_NULL, RT_NULL, - soft_rtc_control + windows_rtc_control }; #endif -int rt_win_rtc_init(void) +int rt_windows_rtc_init(void) { - static rt_bool_t init_ok = RT_FALSE; - - if (init_ok) - { - return 0; - } /* make sure only one 'rtc' device */ RT_ASSERT(!rt_device_find("rtc")); -#ifdef RT_USING_ALARM +#ifdef BSP_USING_ALARM rt_timer_init(&alarm_time, "alarm", alarm_timeout, @@ -149,18 +140,11 @@ int rt_win_rtc_init(void) rtc_dev.close = RT_NULL; rtc_dev.read = RT_NULL; rtc_dev.write = RT_NULL; - rtc_dev.control = soft_rtc_control; + rtc_dev.control = windows_rtc_control; #endif - - /* no private */ - rtc_dev.user_data = RT_NULL; + rtc_dev.user_data = RT_NULL; /* no private */ rt_device_register(&rtc_dev, "rtc", RT_DEVICE_FLAG_RDWR); - - init_ok = RT_TRUE; - return 0; } -INIT_BOARD_EXPORT(rt_win_rtc_init); - -#endif /* RT_USING_RTC */ +INIT_BOARD_EXPORT(rt_windows_rtc_init); diff --git a/bsp/simulator/rtconfig.h b/bsp/simulator/rtconfig.h index 23d4fd1866..61324fe133 100755 --- a/bsp/simulator/rtconfig.h +++ b/bsp/simulator/rtconfig.h @@ -98,6 +98,7 @@ #define RT_USING_SERIAL_V1 #define RT_SERIAL_USING_DMA #define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_RTC /* Using USB */ @@ -217,9 +218,10 @@ #define SOC_SIMULATOR -/* Onboard Peripheral Drivers */ +/* Peripheral Drivers */ #define RT_USING_DFS_WINSHAREDIR +#define BSP_USING_RTC #define BSP_USING_SOCKET #include "rtconfig_project.h"