gnat_arm_elf_13.2.1_db1e9283/arm-eabi/lib/gnat/embedded-nrf52840/gnat/s-bbbopa.ads

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
------------------------------------------------------------------------------
--                                                                          --
--                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
--                                                                          --
--            S Y S T E M . B B . B O A R D _ P A R A M E T E R S           --
--                                                                          --
--                                  S p e c                                 --
--                                                                          --
--                   Copyright (C) 2016-2020, AdaCore                       --
--                                                                          --
-- GNAT is free software;  you can  redistribute it  and/or modify it under --
-- terms of the  GNU General Public License as published  by the Free Soft- --
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
--                                                                          --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception,   --
-- version 3.1, as published by the Free Software Foundation.               --
--                                                                          --
-- You should have received a copy of the GNU General Public License and    --
-- a copy of the GCC Runtime Library Exception along with this program;     --
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
-- <http://www.gnu.org/licenses/>.                                          --
--                                                                          --
-- GNAT was originally developed  by the GNAT team at  New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
--                                                                          --
-- The port of GNARL to bare board targets was initially developed by the   --
-- Real-Time Systems Group at the Technical University of Madrid.           --
--                                                                          --
------------------------------------------------------------------------------

--  This package defines board parameters for the nRF52840-DK board

package System.BB.Board_Parameters is
   pragma No_Elaboration_Code_All;
   pragma Pure;

   --------------------
   -- Hardware clock --
   --------------------

   RTC_Tick_Scaling_Factor : constant := 32; --  32.768 kHz * 32 = 1.048576 MHz
   --  Use a fairly high scaling factor so that Ada.Real_Time.Time_Unit is
   --  at least 1 microsecond. This improves the long-running accuracy of
   --  periodic tasks where the period is not integer divisible by 32.768 kHz.
   --
   --  The maximum permitted scaling factor is 255, otherwise the 24-bit RTC
   --  period (@ 32 kHz) cannot be scaled to the 32-bit range of
   --  Timer_Interval.

   Main_Clock_Frequency : constant := 32_768 * RTC_Tick_Scaling_Factor;
   --  On the nRF52 we use the RTC peripheral as the system tick, instead of
   --  the Cortex-M4 SysTick because the SysTick is powered down when the CPU
   --  enters sleep mode (via the "wfi" instruction). Since we still want to
   --  be able to put the CPU to sleep (to save power) we instead use the
   --  low-power RTC peripheral, which runs at 32.768 kHz.
   --
   --  In this runtime, the minimum allowed frequency is 50_000 Hz so that
   --  Ada.Real_Time.Time_Unit does not exceed 20 us as required by
   --  Ada RM D.8 (30). Since the RTC's actual period is 30.518 us we multiply
   --  the RTC frequency by RTC_Tick_Scaling_Factor so that Time_Unit meets the
   --  requirement in Ada RM D.8 (30).

end System.BB.Board_Parameters;