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 autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.180.198.137 with SMTP id jc9mr11776856wic.1.1372793724048; Tue, 02 Jul 2013 12:35:24 -0700 (PDT) MIME-Version: 1.0 Path: border1.nntp.dca3.giganews.com!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!mf3no18600008wib.1!news-out.google.com!md6ni37467wic.0!nntp.google.com!feeder1.cambriumusenet.nl!82.197.223.108.MISMATCH!feeder2.cambriumusenet.nl!feed.tweaknews.nl!195.62.100.242.MISMATCH!newsfeed.kamp.net!newsfeed.kamp.net!eternal-september.org!feeder.eternal-september.org!mx05.eternal-september.org!.POSTED!not-for-mail From: Simon Clubley Newsgroups: comp.lang.ada Subject: Re: Help with embedded hardware/software platform selection for ADA Date: Tue, 2 Jul 2013 19:29:52 +0000 (UTC) Organization: A noiseless patient Spider Message-ID: References: <31f9819e-6509-4d67-acea-4d2ba9a96c04@googlegroups.com> <4csim6j63mk4.1c54vo5v7eu8c.dlg@40tude.net> <51d280e7$0$6556$9b4e6d93@newsspool4.arcor-online.net> Injection-Date: Tue, 2 Jul 2013 19:29:52 +0000 (UTC) Injection-Info: mx05.eternal-september.org; posting-host="3a7522c45acd2a6c162b080668fa4020"; logging-data="16528"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19qKE8xA7oWLUSMEMsNL5wm+6qLvUqdEwk=" User-Agent: slrn/0.9.8.1 (VMS/Multinet) Cancel-Lock: sha1:Fu+RIF9fjay8jBrfJEn2f0nkhcQ= X-Original-Bytes: 4915 Xref: number.nntp.dca.giganews.com comp.lang.ada:182232 Date: 2013-07-02T19:29:52+00:00 List-Id: On 2013-07-02, Dmitry A. Kazakov wrote: > On Tue, 2 Jul 2013 16:52:59 +0000 (UTC), Simon Clubley wrote: >> >> It's not just systems programming, but hard realtime programming. >> >> If you are using a "normal" OS, can I assume you don't have a hard >> real-time requirement (at least within the Ada code itself) ? > > Hard realtime is to a great extent a fiction. If your system becomes > fragile upon us jitter there should be something wrong with the > architecture. > [snip] > >> A number of the project areas which interest hobbyists have a realtime >> component to them and a number of those have a hard realtime component. > > Unless you are dealing with burning processes (a bomb? (:-)) you do not > need cycles tighter than 1ms. And jitter is not an issue anyway. > Furthermore, a good AD/DA converter is not quicker than 40us. Which adds > 80us to the loop no matter what. Don't tell me that the GPIO ARM has is > anywhere close to this. So 100us would be the theoretical minimum. > I don't understand why you think the only way to get data into a board is via a A/D converter. Much of the I/O in the hobbyist world and elsewhere is pure digital; even when you connect devices such as gyros and compasses they tend to have a digital interface these days; SPI is a common interface. The problem is that there's the world you occupy when designing something for a safety critical production environment with it's set of requirements and there's the world the hobbyists occupy which has a different set of tradeoffs. If you want to attract hobbyists to Ada, you need to do it in ways they can relate to. One of the things common in the hobbyist world is to use low cost components and to implement functionality in software. In a production environment, you would just buy a more expensive widget and not spend time (which you are paying for) writing software making the cheaper widget do the job of the more expensive widget. I'm a professional commercial programmer by day, but my embedded work is just a hobby and I pay for the cost of the components out of my own pocket. If I can buy a much cheaper widget and spend time writing software to make it more capable then I am probably going to do that. Besides, it's usually a fun project. One example: I needed a low rate (a few hundred bytes/second) full duplex RF interface operating in the 433MHz band for some hobbyist projects. Rather than just buy a expensive full duplex radio, what I did was to buy a couple of cheap half duplex Radiometrix transceiver modules and then build a couple of AVR based circuits around them which turned the half duplex modules into a pseudo full duplex device. (The AVRs synchronise the timeslots between themselves automatically.) The software on those AVRs (written in C, not Ada; sorry :-)) generates about 10,000 interrupts per second generating and sampling the bitstream for the transceivers. So yes, I _do_ need <1ms :-) and I need all of the interrupts to be on time or the packet will be corrupted during transmission or reception. Simon. -- Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP Microsoft: Bringing you 1980s technology to a 21st century world