From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: STM32F4 Discovery, communication and libraries
Date: Mon, 01 Sep 2014 23:15:44 +0300
Date: 2014-09-01T23:15:44+03:00 [thread overview]
Message-ID: <c6k2fbF8gr0U1@mid.individual.net> (raw)
In-Reply-To: <6db74417-a977-4d10-a792-18a94a14c68f@googlegroups.com>
On 14-08-31 01:00 , Roy Emmerich wrote:
> On Friday, 29 August 2014 21:41:18 UTC+2, Niklas Holsti wrote:
>> On 14-08-29 19:47 , Roy Emmerich wrote:
...
>>> This device will effectively aggregate the data from all of these
>>> devices into one, unified format and send control signals to the
>>> generator/inverters.
>>
>> What is the highest control frequency, or shortest deadline or
>> response time, required of the SW?
>
> Okay, some new terminology for me here. For this particular
> application the response time doesn't have to be very fast (a few
> seconds).
Then you can probably ignore all interrupt-handling and just poll for
I/O completion -- if that is much simpler to do.
> ... As this kind of control is
> a lot more dynamic, a much faster response time would be required (20
> ms thumb suck value, considering one 50 Hz period is 20 ms long).
That might or might not require interrupt-handling -- depends on your
overall design.
>>> ... making it important for it to be a low power device (e.g.
>>> much less than say a beaglebone black embedded Linux board), able
>>> to run on a battery for at least 3 days, preferably much more
>>
>> You may have to modify the Board Support Package and/or the kernel
>> to let the processor sleep between clock interrupts. I don't know
>> if the AdaCore ARM BSP has that ability off-the-shelf.
>
> Is there an AdaCore ARM BSP yet? I thought this is what Mike Silva
> was referring to when he said:
>
> "I know that AdaCore is working on comms libraries for the ARM Cortex
> M parts, but I don't know anything about the projected
> availability."
>
> assuming this would include stuff such as I2C, SPI, UART, etc. which
> is normally also part of the BSP?
In my experience (space domain), the BSP (at least when it comes from a
compiler vendor) usually includes only the functions needed to make the
compiler's run-time system work. For Ada/Ravenscar, this means mainly
that task switching and protected objects work as expected (including
POs used as interrupt handlers) and that some timer or clock HW is
configured to drive Ada.Real_Time and the "delay until" statements. I/O
drivers are not (in my domain) typically included in the BSP -- well,
perhaps the BSP contains a simple serial-port driver to make some
emasculated form of Ada.Text_IO work. I/O drivers typically come separately.
For ground-based embedded systems, I have seen that some compiler or
chip vendors package I/O drivers with their BSPs. Perhaps Mike Silva is
talking about some AdaCore activity in that direction.
> Speaking of which...in order to feel like I'm making progress and Ada
> is going to work for me, I really need to get connecting to my
> peripherals. The only way I can see it happening within the next week
> is to call the STM C drivers supplied with their BSP. Does this make
> sense?
Very much so, at least if the C drivers are designed as a passive
library which does not rely on any specific kernel.
>>> It must keep accurate time (syncing once a day via GPS)
Must the SW actions be accurately synchronized with GPS -- for example,
sample something exactly at the GPS pulse-per-second pulse -- or is it
enough that the SW can accurately label each action/sample with the GPS
time when the sample was taken?
>>> and
>>> (periodically/in emergency) make the data available remotely
>>> (via GPRS).
>>
>> Time in a Ravenscar system is provided by the predefined package
>> Ada.Real_Time. It is good for relative timing in seconds and ticks,
>> but does not provide calendar date and time. Probably you will have
>> to write your own Calendar-like package which is synchronised with
>> GPS. Not a very big job.
>
> Maybe not if you know what you're doing ;)
>
> This is where it gets a bit vague for me. The STM32F4 has an on-board
> RTC with full calendar functionality.
Nice.
> My thinking is at start up and
> then once a day to enter a "clock_sync" state, fire up the GPS
> receiver, somehow sync the processor's RTC and then continue with
> normal operation.
By "processor's RTC", you mean the one with full calendar functionality?
Sounds like a good plan, if that RTC device allows such synchronisation.
I would not try to sync or adjust whatever HW is driving Ada.Real_Time,
but would let that run in its own time. If necessary, I would adjust the
period of the cyclic tasks to keep them in phase with the GPS and/or the
RTC. That is, if a 1 Hz task finds that it is falling behind -- doing
fewer cycles than there are GPS/RTC 1-second ticks -- it would do a few
"delay untils" with a smaller period than 1 s until it has caught up.
> If I need the absolute date/time I can just get it
> from the RTC, so I don't know why I would want to use the
> Ada.Calendar functionality in the first place. Could you shed some
> light on this?
I agree, you don't need Ada.Calendar if you have a calendar-capable RTC
and do not need to do date/time calculations such as finding the
calendar date of "now + 100_000 seconds".
From what I understand of your application, I think you should be fine
with Ada.Real_Time and the RTC.
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2014-09-01 20:15 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-26 22:38 STM32F4 Discovery, communication and libraries roy.emmerich
2014-08-27 2:40 ` Luke A. Guest
2014-08-27 12:35 ` Roy Emmerich
2014-08-27 7:41 ` Dmitry A. Kazakov
2014-08-27 13:35 ` Roy Emmerich
2014-08-27 16:00 ` Dmitry A. Kazakov
2014-08-27 13:08 ` Dennis Lee Bieber
2014-08-27 15:44 ` Roy Emmerich
2014-08-28 1:37 ` Dennis Lee Bieber
2014-08-27 16:03 ` Roy Emmerich
2014-08-28 1:48 ` Dennis Lee Bieber
2014-08-28 10:12 ` Roy Emmerich
2014-08-28 13:00 ` Dmitry A. Kazakov
2014-08-28 16:28 ` Mike Silva
2014-08-28 17:03 ` Roy Emmerich
2014-08-28 20:09 ` Dmitry A. Kazakov
2014-08-28 20:34 ` embeddedrelatedmike
2014-08-29 7:34 ` Dmitry A. Kazakov
2014-08-29 15:59 ` Niklas Holsti
2014-08-29 16:59 ` [OT] Ravenscar (the place, not profile), was: " Simon Clubley
2014-08-29 17:18 ` Niklas Holsti
2014-08-29 17:31 ` Simon Clubley
2014-08-30 14:55 ` Dennis Lee Bieber
2014-08-29 17:59 ` Jeffrey Carter
2014-08-29 23:30 ` Randy Brukardt
2014-08-30 11:25 ` Simon Clubley
2014-08-31 11:09 ` Phil Thornley
2014-08-30 12:36 ` Peter Chapin
2014-08-31 18:37 ` Dirk Craeynest
2014-08-31 19:38 ` Simon Clubley
2014-08-29 17:24 ` Mike Silva
2014-08-29 23:35 ` Randy Brukardt
2014-08-29 13:06 ` Dennis Lee Bieber
2014-08-29 16:52 ` Niklas Holsti
2014-08-31 0:49 ` Shark8
2014-08-28 21:17 ` Niklas Holsti
2014-08-29 0:07 ` Roy Emmerich
2014-08-29 17:58 ` Niklas Holsti
2014-08-29 7:41 ` Dmitry A. Kazakov
2014-08-29 16:31 ` Niklas Holsti
2014-08-29 16:47 ` Roy Emmerich
2014-08-29 19:41 ` Niklas Holsti
2014-08-30 22:00 ` Roy Emmerich
2014-08-31 10:08 ` Simon Wright
2014-09-01 20:15 ` Niklas Holsti [this message]
2014-09-01 21:11 ` Jeffrey Carter
2014-08-31 4:54 ` gvdschoot
2014-09-09 19:17 ` Roy Emmerich
2014-09-09 20:20 ` Mike Silva
[not found] ` <a54dcc42-d4e2-4d53-b381-2bb7a0eef1ee@googlegroups.com>
2014-09-10 1:41 ` Dennis Lee Bieber
2014-09-10 8:52 ` Roy Emmerich
2014-09-10 13:05 ` Dennis Lee Bieber
2014-09-10 17:16 ` Simon Wright
[not found] ` <a2e59fce-751c-46a0-90f3-80430c627732@googlegroups.com>
2014-09-10 7:22 ` Dmitry A. Kazakov
2014-09-10 9:35 ` Roy Emmerich
2014-09-10 14:11 ` Stephen Leake
2014-09-10 17:46 ` Jeffrey Carter
2014-09-10 18:37 ` Dmitry A. Kazakov
2014-09-11 9:53 ` Stephen Leake
2014-09-11 17:19 ` Jeffrey Carter
2014-09-10 20:58 ` Brian Drummond
2014-09-10 23:40 ` Dennis Lee Bieber
2014-08-29 16:58 ` Niklas Holsti
2014-08-31 7:02 ` Dmitry A. Kazakov
2014-08-31 15:44 ` Brad Moore
2014-08-31 16:15 ` Dmitry A. Kazakov
2014-09-01 16:15 ` Brad Moore
2014-09-01 16:42 ` Dmitry A. Kazakov
2014-08-31 18:41 ` Niklas Holsti
2014-09-01 16:42 ` Dmitry A. Kazakov
2014-09-01 17:21 ` G.B.
2014-09-02 8:21 ` Dmitry A. Kazakov
2014-09-02 13:04 ` G.B.
2014-09-02 14:18 ` Dmitry A. Kazakov
2014-09-02 16:44 ` Jeffrey Carter
2014-09-02 19:02 ` Niklas Holsti
2014-09-02 23:19 ` Randy Brukardt
2014-09-03 1:40 ` gdotone
2014-09-04 9:26 ` Roy Emmerich
2014-09-04 17:58 ` Niklas Holsti
2014-09-05 11:47 ` Simon Clubley
2014-09-09 19:04 ` Roy Emmerich
2014-09-01 18:39 ` Niklas Holsti
2014-09-02 8:19 ` Dmitry A. Kazakov
2014-08-28 13:10 ` Dennis Lee Bieber
2014-08-29 2:52 ` Dennis Lee Bieber
2014-09-20 20:50 ` David Thompson
2014-08-27 16:17 ` Mike Silva
2014-08-27 16:36 ` Roy Emmerich
2014-08-27 16:58 ` Simon Clubley
2014-08-29 19:36 ` johnscpg
2014-08-30 15:06 ` Stephen Leake
2014-09-02 21:40 ` rrr.eee.27
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox