From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!cleanfeed2-b.proxad.net!nnrp1-1.free.fr!not-for-mail Newsgroups: comp.lang.ada References: <5ff9779d$0$24281$426a74cc@news.free.fr> From: DrPi <314@drpi.fr> Subject: Re: Record initialisation question Date: Sun, 10 Jan 2021 17:53:49 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Message-ID: <5ffb311f$0$16185$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 10 Jan 2021 17:53:51 CET NNTP-Posting-Host: 82.65.30.55 X-Trace: 1610297631 news-3.free.fr 16185 82.65.30.55:50925 X-Complaints-To: abuse@proxad.net Xref: reader02.eternal-september.org comp.lang.ada:61092 List-Id: Le 09/01/2021 à 16:44, Niklas Holsti a écrit : > On 2021-01-09 11:30, DrPi wrote: >> Hi, >> >> I'm working on a µP BSP. The boot sequence of this µP requires byte >> structures located in FLASH memory. >> For example : >> >>     type t_Dcd_Header is record >>        Tag     : Unsigned_8  := 16#D2#; >>        Length  : Unsigned_16 := 4;      -- Length in byte of the DCD >> structure (this header included) > > > (As the default value (4) does not include the rest of the DCD > structure, the comment is rather misleading. Best to remove the default > value, I think.) Maybe, I'm sure sure. Value of 4 means only the header is present. > > >>        Version : Unsigned_8  := 16#41#; >>     end record >>       with Object_Size => 32, >>            Bit_Order => System.Low_Order_First; >> >>     for t_Dcd_Header use record >>        Tag     at 0 range  0 .. 7; >>        Length  at 0 range  8 .. 23; >>        Version at 0 range 24 .. 31; >>     end record; >> >> The t_Dcd_Header is part of t_Dcd record. >> The Length field of t_Dcd_Header must contain the length of t_Dcd. >> >>     Dcd : constant t_Dcd := >>      ( Dcd_Header => ( Length => ???, -- Length of Dcd >>                        others => <>), >>        ... >>      ); >> >> Is there a way to automatically set Length ? > > > If the Length should apply to the whole t_Dcd object, it is hard to > answer without knowing how the rest of the t_Dcd type is defined. Does > it have a fixed size, or are there some components of variable size? > The DCD is fully specified. > >> Dcd goes in a dedicated .txt section. > > > Do you expect the compiler/linker to generate the full value of the Dcd > object into the program image at compilation and link time? That's it. > Have you > ensured that the construction of the Dcd object requires no elaboration > code? Most Flash memories cannot be written in the same way as RAM, so > even if that .txt section is not write-protected, normal RAM-oriented > elaboration code would not be able to write into Flash. I'm aware of this (I'm an electronics guy). I'll add a "pragma No_Elaboration_Code_All;" when I'm ready.