summaryrefslogtreecommitdiff
path: root/nuttx/sched/clock_initialize.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/sched/clock_initialize.c')
-rw-r--r--nuttx/sched/clock_initialize.c45
1 files changed, 28 insertions, 17 deletions
diff --git a/nuttx/sched/clock_initialize.c b/nuttx/sched/clock_initialize.c
index 91220c19e..8919b6005 100644
--- a/nuttx/sched/clock_initialize.c
+++ b/nuttx/sched/clock_initialize.c
@@ -60,9 +60,13 @@
#define SEC_PER_HOUR ((time_t)60 * SEC_PER_MIN)
#define SEC_PER_DAY ((time_t)24 * SEC_PER_HOUR)
-/* Defined just so the UTC counter and system counter/timer look similar */
+/* Macro to increment the system timer -- or not */
-#define incr_systimer() g_system_timer++
+#ifndef CONFIG_SYSTEM_UTC
+# define incr_systimer() g_system_timer++
+#else
+# define incr_systimer()
+#endif
/****************************************************************************
* Private Type Declarations
@@ -80,14 +84,13 @@
* Public Variables
****************************************************************************/
-volatile clock_t g_system_timer = 0;
-
#if CONFIG_SYSTEM_UTC
volatile time_t g_system_utc = 0;
-#endif
-
+#else
+volatile clock_t g_system_timer = 0;
struct timespec g_basetime = {0,0};
uint32_t g_tickbias = 0;
+#endif
/**************************************************************************
* Private Variables
@@ -99,11 +102,11 @@ uint32_t g_tickbias = 0;
#if CONFIG_SYSTEM_UTC
#if TICK_PER_SEC > 32767
-static uint32_t g_tickcount = 0;
+volatile uint32_t g_tickcount = 0;
#elif TICK_PER_SEC > 255
-static uint16_t g_tickcount = 0;
+volatile uint16_t g_tickcount = 0;
#else
-static uint8_t g_tickcount = 0;
+volatile uint8_t g_tickcount = 0;
#endif
#endif /* CONFIG_SYSTEM_UTC */
@@ -153,32 +156,39 @@ static inline void incr_utc(void)
void clock_initialize(void)
{
+#ifndef CONFIG_SYSTEM_UTC
time_t jdn = 0;
+#endif
/* Initialize the real time close (this should be un-nesssary except on a
* restart).
*/
- g_system_timer = 0;
#ifdef CONFIG_SYSTEM_UTC
g_system_utc = 0;
+#else
+ g_system_timer = 0;
#endif
- /* Do we have hardware periodic timer support? */
+ /* Do we have hardware RTC support? */
#ifdef CONFIG_RTC
+
+#ifndef CONFIG_SYSTEM_UTC
+# error In order to support hardware RTC system must have set the CONFIG_SYSTEM_UTC=y
+#endif
+
up_rtcinitialize();
+#endif
+
+#ifndef CONFIG_SYSTEM_UTC
/* Get the EPOCH-relative julian date from the calendar year,
* month, and date
*/
- if (g_rtc_enabled==false)
-#endif
- {
- jdn = clock_calendar2utc(CONFIG_START_YEAR, CONFIG_START_MONTH,
- CONFIG_START_DAY);
- }
+ jdn = clock_calendar2utc(CONFIG_START_YEAR, CONFIG_START_MONTH,
+ CONFIG_START_DAY);
/* Set the base time as seconds into this julian day. */
@@ -188,6 +198,7 @@ void clock_initialize(void)
/* These is no time bias from this time. */
g_tickbias = 0;
+#endif
}
/****************************************************************************