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.szaf.org!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Record initialisation question Date: Sat, 9 Jan 2021 17:44:24 +0200 Organization: Tidorum Ltd Message-ID: References: <5ff9779d$0$24281$426a74cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net 1TlAlyle9g2AJJ8Ju+zOwAzQY9TAhmUIGv/7qW0QkFypZTD+Mb Cancel-Lock: sha1:rwH5dU4D3I+ObSjvN7T/nXbuYRY= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 In-Reply-To: <5ff9779d$0$24281$426a74cc@news.free.fr> Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:61079 List-Id: 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.) >       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? > 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? 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.