You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2020/09/09 05:52:41 UTC

[GitHub] [incubator-nuttx] raiden00pl commented on a change in pull request #1726: nRF52: extend systimer support

raiden00pl commented on a change in pull request #1726:
URL: https://github.com/apache/incubator-nuttx/pull/1726#discussion_r485351122



##########
File path: arch/arm/src/nrf52/nrf52_tickless_rtc.c
##########
@@ -0,0 +1,330 @@
+/****************************************************************************
+ * arch/arm/src/nrf52/nrf52_rtc_lowerhalf.h

Review comment:
       ```suggestion
    * arch/arm/src/nrf52/nrf52_tickless_rtc.c
   ```

##########
File path: arch/arm/src/nrf52/nrf52_tickless_rtc.h
##########
@@ -0,0 +1,58 @@
+/****************************************************************************
+ * arch/arm/src/nrf52/nrf52_rtc_lowerhalf.h
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_ARM_SRC_NRF52_NRF52_RTC_LOWERHALF_H
+#define __ARCH_ARM_SRC_NRF52_NRF52_RTC_LOWERHALF_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <nrf52_rtc.h>
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nrf52_rtc_initialize
+ *
+ * Description:
+ *   Bind the configuration timer to a timer lower half instance and
+ *   register the timer drivers at 'devpath'
+ *
+ * Input Parameters:
+ *   devpath - The full path to the timer device.  This should be of the
+ *     form /dev/timer0
+ *   timer - the timer's number.
+ *   timer_drvr - Pointer where to store resulting timer_lowerhalf_s*
+ *
+ * Returned Value:
+ *   Zero (OK) is returned on success; A negated errno value is returned
+ *   to indicate the nature of any failure.
+ *
+ ****************************************************************************/
+
+int nrf52_rtc_initialize(FAR const char *devpath, uint8_t timer,

Review comment:
       It doesn't match the nrf52_tickless_rtc.c file

##########
File path: arch/arm/src/nrf52/nrf52_systick.c
##########
@@ -123,26 +76,14 @@ static int nrf52_timerisr(int irq, uint32_t *regs, void *arg)
 
 void up_timer_initialize(void)
 {
-  uint32_t regval;
-
-  regval  = getreg32(NVIC_SYSTICK_CTRL);
-  regval &= ~NVIC_SYSTICK_CTRL_CLKSOURCE;
-  putreg32(regval, NVIC_SYSTICK_CTRL);
+#if defined(CONFIG_NRF52_SYSTIMER_SYSTICK)
+  /* Use SysTick to drive system timer  */
 
-  /* Configure SysTick to interrupt at the requested rate */
+  up_timer_set_lowerhalf(systick_initialize(true, BOARD_SYSTICK_CLOCK, -1));
+#elif defined(CONFIG_NRF52_SYSTIMER_RTC)
+  /* Use RTC to drive system timer  */
 
-  putreg32(SYSTICK_RELOAD, NVIC_SYSTICK_RELOAD);
-
-  /* Attach the timer interrupt vector */
-
-  irq_attach(NRF52_IRQ_SYSTICK, (xcpt_t)nrf52_timerisr, NULL);
-
-  /* Enable SysTick interrupts */
-
-  putreg32((NVIC_SYSTICK_CTRL_CLKSOURCE | NVIC_SYSTICK_CTRL_TICKINT |
-            NVIC_SYSTICK_CTRL_ENABLE), NVIC_SYSTICK_CTRL);
-
-  /* And enable the timer interrupt */
-
-  up_enable_irq(NRF52_IRQ_SYSTICK);
+  nrf52_rtc_initialize("/dev/systimer", CONFIG_NRF52_SYSTIMER_RTC_INSTANCE,

Review comment:
       There is no such function.

##########
File path: arch/arm/src/nrf52/nrf52_tickless_rtc.h
##########
@@ -0,0 +1,58 @@
+/****************************************************************************
+ * arch/arm/src/nrf52/nrf52_rtc_lowerhalf.h

Review comment:
       ```suggestion
    * arch/arm/src/nrf52/nrf52_tickless_rtc.h
   ```

##########
File path: arch/arm/src/nrf52/nrf52_tickless_rtc.h
##########
@@ -0,0 +1,58 @@
+/****************************************************************************
+ * arch/arm/src/nrf52/nrf52_rtc_lowerhalf.h
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_ARM_SRC_NRF52_NRF52_RTC_LOWERHALF_H

Review comment:
       Does not match the file name.

##########
File path: arch/arm/src/nrf52/nrf52_systick.c
##########
@@ -46,68 +46,21 @@
 #include <nuttx/arch.h>
 #include <arch/board/board.h>
 
-#include "nvic.h"
-#include "clock/clock.h"
-#include "arm_internal.h"
-#include "arm_arch.h"
+#if defined(CONFIG_NRF52_SYSTIMER_SYSTICK)
+#include <nuttx/timers/arch_timer.h>
+#include "systick.h"
+#elif defined(CONFIG_NRF52_SYSTIMER_RTC)
+#include "nrf52_rtc_lowerhalf.h"

Review comment:
       There is no such file.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org