comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: How do I disable elaboration code on this
Date: Sat, 09 Apr 2011 21:35:05 +0200
Date: 2011-04-09T21:35:05+02:00	[thread overview]
Message-ID: <8739lrqkuu.fsf@ludovic-brenta.org> (raw)
In-Reply-To: m2oc4fteq1.fsf@pushface.org

Simon Wright <simon@pushface.org> writes on comp.lang.ada:
> Ludovic Brenta <ludovic@ludovic-brenta.org> writes:
>
>> Simon Wright <simon@pushface.org> writes on comp.lang.ada:
>>> Jeffrey Carter <spam.jrcarter.not@spam.not.acm.org> writes:
>>>
>>>> On 04/09/2011 06:58 AM, Lucretia wrote:
>>>>> The following code will not compile no matter what I do. Basically, I
>>>>> want to write the startup code for Cortex-M3 in Ada with no assembly.
>>>>> So, the ISR code needs to be elaboration free as it's the first bit of
>>>>> code that would run on reset.
>>>>
>>>>>     Vector : constant Vectors :=
>>>>>       (Dummy'Access,
>>>>>        Dummy'Access,
>>>>>        Dummy'Access,
>>>>>        Dummy'Access);
>>>>>     pragma Convention (C, Vector);
>>>>>     for Vector'Address use Addr;
>>>>
>>>> I think what you need here is
>>>>
>>>> Vector : constant Vectors;
>>>> pragma Import (Ada, Vector);
>>>> for Vector'Address use Addr;
>>>>
>>>> since you don't want Vector to be initialized.
>>>>
>>>> Vector will not be initialized because you have pragma Import for it.
>>>>
>>>> Note that you don't need procedure Dummy.
>>>
>>> But the real code will have actual ISR procedures. OP is merely sparing
>>> us the unnecessary detail of the real ISRs.
>>
>> But the vector being in Flash ROM, the Ada code needs not and indeed may
>> not initialize it, so I think Jeffrey's reply is correct.  The pragma
>> Import and the address clause will make the actual vectors (in ROM)
>> visible to the Ada program.
>
> That would be true if the vector was built in a separate C or ASM
> file, but Luke wants to do the whole thing in Ada and then write it to
> Flash. See above: "Basically, I want to write the startup code for
> Cortex-M3 in Ada with no assembly."

The vector can and must be built and burned to Flash separately, by an
Ada program of course :) This Ada program cannot write to Flash, it can
only read the vector previously stored there with no elaboration and no
initialization.  This is very similar to things I did at Barco avionics
a few years ago (I even wrote the driver for writing to the particular
Flash device in pure Ada).

-- 
Ludovic Brenta.



  parent reply	other threads:[~2011-04-09 19:35 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-09 13:58 How do I disable elaboration code on this Lucretia
2011-04-09 16:57 ` Jeffrey Carter
2011-04-09 17:01   ` Simon Wright
2011-04-09 17:44     ` Ludovic Brenta
2011-04-09 19:19       ` Simon Wright
2011-04-09 19:32         ` Jeffrey Carter
2011-04-10  9:06           ` Lucretia
2011-04-10  9:31             ` Simon Wright
2011-04-09 19:35         ` Ludovic Brenta [this message]
2011-04-09 22:05           ` Simon Wright
2011-04-10  5:39             ` Simon Wright
2011-04-10 17:20   ` Lucretia
2011-04-10 20:12     ` Jeffrey Carter
2011-04-10 20:47     ` Georg Bauhaus
2011-04-10 21:19       ` Lucretia
2011-04-11  5:08         ` Lucretia
2011-04-11  6:28           ` Simon Wright
2011-04-11  8:54             ` Lucretia
2011-04-11 10:10               ` Simon Wright
2011-04-11 11:59                 ` Simon Clubley
2011-04-11 18:30                   ` Simon Wright
2011-04-11 19:12                     ` Simon Wright
2011-04-11 19:50                       ` Simon Wright
2011-04-11 21:40                       ` Lucretia
2011-04-11 23:12                         ` Lucretia
2011-04-11 23:16                           ` Lucretia
2011-04-11 23:31                           ` Lucretia
2011-04-12  5:22                             ` Simon Wright
2011-04-12 17:07                             ` Simon Clubley
2011-04-13 16:53                       ` Simon Wright
2011-04-15  8:38                       ` Simon Wright
2011-04-11 23:08                   ` Lucretia
2011-04-12 11:50                     ` Simon Clubley
2011-04-12 16:48                       ` Lucretia
2011-04-11 11:19               ` Georg Bauhaus
2011-04-11 13:50                 ` Simon Wright
2011-04-14 19:19               ` Florian Weimer
2011-04-10 16:34 ` Rolf
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox