[simulator] 增加RTC配置项(默认开启)

This commit is contained in:
Meco Man 2022-05-16 01:22:35 -04:00 committed by guo
parent e43548f46f
commit 569facb12d
6 changed files with 42 additions and 39 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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:

View File

@ -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 <sys/time.h>
#include <string.h>
#include <rtthread.h>
#include <rtdevice.h>
#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);

View File

@ -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"