From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.182.4.98 with SMTP id j2mr32741539obj.41.1433880484186; Tue, 09 Jun 2015 13:08:04 -0700 (PDT) X-Received: by 10.140.21.197 with SMTP id 63mr295235qgl.31.1433880484083; Tue, 09 Jun 2015 13:08:04 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!news.glorb.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!h15no678217igd.0!news-out.google.com!4ni198qgh.1!nntp.google.com!q107no241396qgd.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Tue, 9 Jun 2015 13:08:03 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=105.210.1.171; posting-account=orbgeAkAAADzWCTlruxuX_Ts4lIq8C5J NNTP-Posting-Host: 105.210.1.171 References: User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <7cf60ab3-065e-48c8-b6b1-b3fe01a088f4@googlegroups.com> Subject: Re: STM32F4 GNAT Run Time System - roadmap From: jan.de.kruyf@gmail.com Injection-Date: Tue, 09 Jun 2015 20:08:04 +0000 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Xref: news.eternal-september.org comp.lang.ada:26244 Date: 2015-06-09T13:08:03-07:00 List-Id: On Tuesday, June 9, 2015 at 2:02:25 PM UTC+2, Simon Wright wrote: > Looking for some input on priorities for work. >=20 > * Standard library packages. > * Other MCUs. > * Finalization. > * ? >=20 > Standard library packages > ------------------------- >=20 > An obvious omission is the rest of the Ada.Containers.Bounded* packages: > Doubly_Linked_Lists > Ordered_Maps > Hashed_Sets > Ordered_Sets > Multiway_Trees > Synchronized_Queues > Priority_Queues >=20 > Any other nice-to-haves? (I haven't looked at Annex G, might be > problematic!) >=20 > Other MCUs > ---------- >=20 > STM have just released a significant number of affordable Nucleo > development kits. The NUCLEO-F091RC has 48 MHz Cortex-M0 core, 256-KB > Flash, 32-KB SRAM, which would just-about take my current testbed > program; for the princely sum of UKP7.94 + p&p, 88 in stock in UK for > next day delivery from Farnell[0]. >=20 > The problem with this is that different MCUs require different compiler > options, and building GCC for ARM with multilibs is only supported in > the ARM fork at [1]; so far there are only GCC 4.9-based releases. GCC > 4.9 is a perfectly competent compiler, of course. >=20 > Finalization > ------------ >=20 > It would be very nice to be able to use the generalized container > iterators of Ada 2012 (generalized array iterators are already OK). >=20 > They require finalization: I've implemented finalization and generalized > iteration over Bounded_Vectors in the 'finalization' branch at [2]. >=20 > Unfortunately, adding finalization to a restricted runtime triggers bugs > in GCC. >=20 > I've raised two GCC PRs; "gnatbind generates invalid code when > finalization is enabled in restricted runtime"[3], and "Front-end error > if exception propagation disabled"[4]. >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > [0] http://uk.farnell.com/stm32-mcu-nucleo-board-flexible-prototyping > [1] https://launchpad.net/gcc-arm-embedded > [2] > https://sourceforge.net/p/stm32f4-gnat-rts/code/ci/finalization/tree/ > [3] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D66205 > [4] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D66242 Simon, Thanks for all your hard work :) on the matter of bug 66205: ------- if not Suppress_Standard_Library_On_Target then WBI (" Is_Elaborated : Boolean :=3D False;"); end if; ------- This ties with the behaviour I get on 4.7.4=20 When Standard_Library is not suppressed it wants to load some Handler and i= nitialize a handful of variables. So for mixed language mode with minimal r= untime and a foreign linker I have to suppress the standard library, so 'ad= ainit' purely does the elaboration of the stuff I wrote (be it program or r= untime)=20 As I said: with it, adainit does a few things more. At the moment I am in the middle of a hairy issue in s-memory (getting an a= ddress overlay to work, so I ask for a few pages from the kernel and use it= as a system byte array) But as soon as I have a working compile again, wit= hout errors, some time tomorrow, I will post the relevant code pieces with = and without 'Suppress_Standard_Library_On_Target'. I think your binder give= s out too much code from what I see. the other bug ties in with my observations about exceptions on 4.7.4. Perha= ps in a slightly different way. But I am not following your test case too w= ell, its evening.=20 As far as the road ahead: The things you mentioned are certainly all 'nice to haves' but at the same = time I personally have not missed them yet. Since it is easy enough to roll= your own if and when the need arises. In a big project I would say that th= e priorities are quite different. There you look for lots of reusable softw= are. But then I might be mistaken. I would certainly vote for more cpu's that are usable 'off the shelf' with = either a ravenscar profile or a zfp. But. This has to go together with some kind of a publicity effort, otherwise it = is just a nice hobby but it serves no real purpose.=20 Maybe we need to ask David about his opinion. Besides I like to mention that the big issue with micro controllers is a go= od, solid, workable hardware definition. You have chosen to go the 'cube' l= ibrary route, which is viable of course. and it has the added advantage of = having the hidden fix-ups packaged already. (And there are some, I discover= ed to my horror). Personally I like to work on the bare metal though. However, I miss sorely = some good hardware definition files. For the 407 I made them up as I went, = but it is only a first try. The method needs to be discussed and perhaps im= proved upon. We have all this beautiful type machinery in Ada, so why not u= se it.=20 Again, we need forum discussion and afterwards publicity! Otherwise it is a= ll rather useless. I suppose I have talked enough again for tonight , cheers, j.