I didn't know you could get Ada for AVR

Go To Last Post
48 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A little frightening, actually

 

"We trained hard... but it seemed that every time we were beginning to form up into a team, we would be reorganized. I was to learn later in life that we tend to meet any new situation by reorganizing. And a wonderful method it can be of creating the illusion of progress while producing confusion, inefficiency and demoralization." Petronius Arbiter, approx. 2000 years ago.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Look closely and you wil find that Joerg Wunsch is quite deeply involved.

However the port is no longer maintained so it's only available in fairly old versions of the GCC toolchain.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Torby wrote:
A little frightening, actually
Not.

It's a subset of a complete Ada ecosystem that would exist on a Unix, OS X, or Windows.

  • AVR-Ada - May need some thinking to install but its mailing list looks good. Recent fixes (checked in but not yet packaged) improve the installation.
  • GNAT GPL avr-elf-windows - The 2013 version may be released this summer (note: that did not occur).

Refs.

AVR-Ada, Wiki, Status

[Avr-ada-devel] AvrAda on Windows

Libre

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Sep 8, 2014 - 07:24 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Torby wrote:
A little frightening, actually

I wonder why you say this. Ada is a fine language, for embedded systems in particular. Much better than C or C++.

The most up-to-date version I know of is found at www.adacore.com/libre

I'm waiting anxiously for the ARM Cortex libre release. They've just released a for-pay version, but it hasn't made it to a libre release yet. When that's available I'll never look back.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

kk6gm wrote:
I'm waiting anxiously for the ARM Cortex libre release.
Cortex-M?
A Cortex-A (ARMv7): http://packages.debian.org/wheezy/gnat, architecture armhf.
P.S.
Raspberry Pi (ARMv6): http://archive.raspbian.org/raspbian/pool/main/g/gnat-4.6/

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

gchapman wrote:
kk6gm wrote:
I'm waiting anxiously for the ARM Cortex libre release.
Cortex-M?
A Cortex-A (ARMv7): http://packages.debian.org/wheezy/gnat, architecture armhf.
P.S.
Raspberry Pi (ARMv6): http://archive.raspbian.org/raspbian/pool/main/g/gnat-4.6/

Yes, Cortex M bare board is what I dream of.

Now that you ask the question, I'm not sure if the recent ARM Cortex release includes Cortex M. It would be a terrible omission if it didn't, IMO.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

AdaCore added Cortex-M to GNAT.
Ref.
Is Ada ready for mainstream embedded designs? by Bernard Cole (embedded.com; February 19, 2013); search for 'Cortex-M3'.

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

gchapman wrote:
AdaCore added Cortex-M to GNAT.
Ref.
Is Ada ready for mainstream embedded designs? by Bernard Cole (embedded.com; February 19, 2013); search for 'Cortex-M3'.

Yes, and I'm waiting for the GPL release.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I come from a "pascalish" background, so C seems a little foreign to me. I should check, though, does Ada still use the finger-breaking := assignment of pascal, modula and such languages?

 

"We trained hard... but it seemed that every time we were beginning to form up into a team, we would be reorganized. I was to learn later in life that we tend to meet any new situation by reorganizing. And a wonderful method it can be of creating the illusion of progress while producing confusion, inefficiency and demoralization." Petronius Arbiter, approx. 2000 years ago.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

This:

http://www.adahome.com/Ammo/Cplp...

seems to confirm := rather than =

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Torby wrote:
I come from a "pascalish" background, so C seems a little foreign to me. I should check, though, does Ada still use the finger-breaking := assignment of pascal, modula and such languages?

Yes it does, and just a single = for comparison. But I think the typing aspect of programming is the very, very last thing anybody should worry about.

I've got a personal list of what-I-like-about-Ada points that I made up for some colleagues. I'll try to find it and post it. If it's true that we're about to have bare-board Ada for Cortex M3, including Ravenscar tasking, this is a Big Deal IMO. Even having non-tasking for 8-bit AVR, which is available now, is a big thing. Adding tasking to the AVR offering would be great, but I don't know if that's in the works or not.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yea. I might like that. Ada, that is.

Actually, simple tasking isn't that hard. A "task" is simply a stack. To start a task, allocate some memory for the stack, put on the new stack the address you want to start, save the stack pointer for the running task, set the stack pointer of the new task and do a return. To change tasks, push the program counter, save the stack pointer, restore another stack pointer and do a return. The other tasking functions aren't at all hard to code either. I used to do that in Modula II for CP/M and DOS.

 

"We trained hard... but it seemed that every time we were beginning to form up into a team, we would be reorganized. I was to learn later in life that we tend to meet any new situation by reorganizing. And a wonderful method it can be of creating the illusion of progress while producing confusion, inefficiency and demoralization." Petronius Arbiter, approx. 2000 years ago.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A personal, informal list of things I like about Ada, from a career C and C++ programmer

1) Strong typing
a. Everything is NOT just an int of N-bits (a “bucket of bits”). Typing conveys important additional information about the intent and meaning of the data and allows the compiler to easily detect inconsistencies in code or data.

2) Scalar type ranges
a. Again, everything is not just a bucket of bits, but has a valid range reflecting the actual real-world data being represented. Instead of thinking in terms of bit size (“Do I want 0 to 255, or 0 to 65535?”) one can actually model the problem data, e.g. degrees are -180 to 180, temperature is -10 to 150, encoder counts are -3_000_000_000 to 3_000_000_000. The compiler deals with choosing the underlying machine data size.

3) Full control over scope and visibility of all data and program objects
a. Exellent control over scope and visibility allows full programmer control over the allowable paths for data and functions. Goes a long way towards eliminating the “spider web” coding effect.

4) Local data and subprograms allowed almost anywhere
a. Similar to #3, allows fine control over data and function scope and visibility. Not only local variables be even local functions can be declared and nested as necessary to break up and clarify any complex section of code, while restricting visibility of those data & functions to the minimum necessary.

5) Fixed point data types (including decimal)
a. Another tool to allow more accurate and natural modeling of problem data. Instead of requiring user-program scaling of integer values as necessary, the scaling is all handled in the language, freeing up the programmer from that complexity and source of errors.

6) Modular types on any bound (not just powers of 2)
a. Nice for any kind of wrap-around counter. For example, one could have a circular buffer of 50 elements, and declare a modular index type 0..49, and an increment from 49 will automatically roll over to 0 (and a decrement from 0 will roll over to 49), exactly as you want a circular buffer index to work.

7) Subprogram overloading on both parameters and return types
a. Very useful in performing the same or equivalent manipulations on different types of data. A form of (compile-time) polymorphism. Strong typing also allows overloading on return type, which C++ does not allow due to its implicit type conversions, but which is a natural and useful extension of overloading on parameter types.

8 ) Named parameters
a. Very useful in making the intent of a function call more clear. Prevents e.g. the common mistake of confusing x,y (as in goto(x,y)) with row, col (as in goto(row,col)). Note that row, col is equivalent to y,x not x,y. Named parameters allow explicit parameter association e.g. goto(col=>x, row=>y).

9) Default parameters
a. Any or all parameters can have defaults, and any or all defaulted parameters can be overridden in any function call. Allows full control over defaults and selective overriding of defaults.

10) Records with discriminants
a. The right way to do structures and/or unions with full type safety.

11) Representation clauses
a. Allows precise specification of the bit layout of data elements, to match existing hardware and/or protocols.

12) Array indexing over any discrete type and range
a. This is a great feature. No longer are arrays limited to being indexed from 0 to N-1. Arrays can be indexed over any discrete type and range, e.g. a Bearing type could be declared from -180.0 to 180.0 (-180 degrees to +180 degrees, in 1/10 degree steps) and an array can be indexed directly by that type. Consider how much simpler and less error-prone it is to write val := Array(-145.3); vs e.g. val = Array[1800-1453] (this being one way that -145.3 might be represented as a 0-based integer index).

13) Array slices
a. Makes movement of arbitrary array segments (“slices”) easy to do and understand, without using low-level and type-unsafe memory manipulations, or looping.

14) Renaming
a. Allows localized renaming of complex identifiers to something short and simple, e.g. Velocity renames Some_Object.Controller_Arm.Params.Velocity. Greatly increases code clarity.

15) Object oriented as well as procedural programming
a. All the benefits of object-oriented programming, while at the same time retaining all the benefits of procedural programming.

16) Generics (templates)
a. Another form of static (compile-time) polymorphism, allowing fully type-safe code to be written once that can operate on a variety of different data types.

17) Concurrency (tasks and protected objects, including Ravenscar profile for efficient and safety-critical multi-tasking)
a. One of my favorites. Allows multi-tasking (including for multi-core architectures) and thread-safe data sharing by using high-level language features, rather than requiring low-level and environment-specific objects such as semaphores, mutexes, mailboxes, etc. Vastly improves the quality and clarity of the code, as well as the development time.

18 ) Strong Realtime support
a. In addition to the built-in concurrency support mentioned, the language also directly incorporates the notions of time and durations to as great a resolution as the hardware supports (e.g. 100ns). Instead of dealing in timer ticks and OS-based, time-related function calls, programs can deal directly in time intervals and delays.

19) Strong Embedded support
a. Efficient code generation (at least as good as C or C++), excellent ability to program down to the bit level (e.g. representation clauses), and the strong realtime support mentioned, combine to produce excellent embedded systems support.

20) Packages help manage large software projects
a. By breaking up large projects into self-contained packages, library packages and child packages, all with well-defined interfaces and visibility, the management of complex data and control flows is enhanced and made more containable.

21) Promotes a professional, anti-hacker mentality
By being “unforgiving” the language promotes the valuable discipline of specifying and writing code more exactly, without the temptations of slipping into bit-twiddling or other programming habits that subvert (and often break) the data or code models. When proper programming discipline is not enforced by the language then it must be voluntary, and in those cases discipline can and inevitably will slip, but when the language enforces much of that discipline then there are no easy ways to avoid it, and the resulting code is higher in quality and faster to develop.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have a number of programming languages under my belt, including the first decent language I learned (Pascal), the first OO language I learned (Simula, although the term OO wasn't invented or at least spread at that time), C and C++. Ada is not in my CV, but your list made me very curious!

Thank you for a very tickling post!

As of January 15, 2018, Site fix-up work has begun! Now do your part and report any bugs or deficiencies here

No guarantees, but if we don't report problems they won't get much of  a chance to be fixed! Details/discussions at link given just above.

 

"Some questions have no answers."[C Baird] "There comes a point where the spoon-feeding has to stop and the independent thinking has to start." [C Lawson] "There are always ways to disagree, without being disagreeable."[E Weddington] "Words represent concepts. Use the wrong words, communicate the wrong concept." [J Morin] "Persistence only goes so far if you set yourself up for failure." [Kartman]

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Here's one short but interesting article on Ada. Especially revealing, IMO, is the comment that writing the software in Ada felt something like actually building the machine out of the various parts. That struck a strong chord with my own past experiences.

http://www.adacore.com/adaanswer...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

OK, Ada is great. But why is it so low down in the tiobe index?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

ezharkov wrote:
OK, Ada is great. But why is it so low down in the tiobe index?

That indeed is the question.

Some of it is due to the earliest compilers from 30 years ago being very big and very slow and very expensive.

Some of it is due to historical lack of compilers for many platforms, especially embedded ones.

Some of it is due to the original mandate that Ada be used in all new military development, and the backlash that caused.

Some of it, IMNSHO, is due to a hacker mentality widespread in our industry that would rather use poor tools that are not "constricting" than use better tools that enforce more discipline on programmers than they are comfortable with.

Here's another article, this one about switching from C to Ada in a real-time software class.
http://www.crosstalkonline.org/s...
(page 22)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

It's a "large" language.
Took me about three months to go (deep) through Cohen's Ada as a second language (Google); whereas, I'd estimate one would only need about one month to do likewise for C.

C was quickly on a PC; Ada via GNAT took awhile.
C compilers are ubiquitous; Ada compilers were not (If you build it, they [sic] will come) (1).
IIRC, GNAT's run-time (complete) primary target is POSIX; so it's easier to port GNAT to an OS or some (or few) RTOSs.

(1) Field of Dreams (Wikiquote).

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

kk6gm wrote:
Some of it is due to historical lack of compilers for many platforms, especially embedded ones.
Depends on one's definition of embedded; for microcontrollers, yes.
IIRC, a Boeing aircraft's ABS was Ada on an 8086.
btw, A new Embedded Ada book by Jack Ganssle (embedded.com; April 9, 2013) (I don't have it yet).

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

17) Concurrency (tasks and protected objects, including Ravenscar profile for efficient and safety-critical multi-tasking)
a. One of my favorites. Allows multi-tasking (including for multi-core architectures) and thread-safe data sharing by using high-level language features, rather than requiring low-level and environment-specific objects such as semaphores, mutexes, mailboxes, etc. Vastly improves the quality and clarity of the code, as well as the development time.

18 ) Strong Realtime support
a. In addition to the built-in concurrency support mentioned, the language also directly incorporates the notions of time and durations to as great a resolution as the hardware supports (e.g. 100ns). Instead of dealing in timer ticks and OS-based, time-related function calls, programs can deal directly in time intervals and delays.


As a soon to be M.Sc in Cybernetics (google it), I really have to chime in on this one. I've had a couple of Ada courses together with the new Go language, and Ada struck me as one of the most... useful specifics in languages that I've stumbled across. Especially the Ravenscar Profile of the tasking system makes hard real time almost a non-brainer...

Just waiting for a Ravenscar compliant Ada runtime on the AVR :P

:: Morten

 

(yes, I work for Atmel, yes, I do this in my spare time, now stop sending PMs)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Another Ada on AVR compiler though it's still a work-in-progress (simulated AVR, etc.):
RTEMS, Wiki, AVRTest

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

meolsen wrote:
Just waiting for a Ravenscar compliant Ada runtime on the AVR
Is this close enough?
GNAT for AVR32 UC3, Wiki

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

gchapman wrote:
meolsen wrote:
Just waiting for a Ravenscar compliant Ada runtime on the AVR
Is this close enough?
GNAT for AVR32 UC3, Wiki

Wow, Kristoffer has been busy :P (he was the one who first introduced me to Ada)

:: Morten

 

(yes, I work for Atmel, yes, I do this in my spare time, now stop sending PMs)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Great to learn of Ada for the embedded world, and to be reminded about Ada in general. It was (gosh) over 20 years ago (1989?... yeesh) that I was first introduced to Ada in a second year university level course. The notions of strong typing, not only of data but of functions, and of the generic/instantiated model to code writing were powerful departures from my prior programming experience, which was limited to imperative or procedural languages like COBOL, Fortran, and Pascal, and before that, BASIC and Assembler.

I look forward to taking Ada for a drive in the embedded world.

JJ

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"Wisdom is always wont to arrive late, and to be a little approximate on first possession."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

IMO:
C, not C++, is really a portable assembly language. That's how it began, when K&R defined C with the PDP-8 or PDP-11 assembler and architecture in mind (like the pre- and post increment/decrement in C exploited the PDP's ability to do that in hardware.

I learned Pascal long ago. When I began with K&R C, I wanted it to be Pascal-like. Strongly typed, etc. One day, the light bulb came on: Hey! C is more like macros on top of asm. Then, I immediately got it. And C with pointers and pointers to pointers made sense.

Not defending C, but it is, IMO, the best for small memory embedded. Bounds checking of scalar's ranges or array indexes, at run time are too wasteful in a price or timing sensitive micro. Now with cheap 32 bit Cortex processors with 512K or more - my argument begins to fail.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

stevech wrote:
IMO:
C, not C++, is really a portable assembly language. That's how it began, when K&R defined C with the PDP-8 or PDP-11 assembler and architecture in mind (like the pre- and post increment/decrement in C exploited the PDP's ability to do that in hardware.

I learned Pascal long ago. When I began with K&R C, I wanted it to be Pascal-like. Strongly typed, etc. One day, the light bulb came on: Hey! C is more like macros on top of asm. Then, I immediately got it. And C with pointers and pointers to pointers made sense.

Not defending C, but it is, IMO, the best for small memory embedded. Bounds checking of scalar's ranges or array indexes, at run time are too wasteful in a price or timing sensitive micro. Now with cheap 32 bit Cortex processors with 512K or more - my argument begins to fail.


I agree that C is a good match for small embedded devices, and its disadvantages tend to be containable with those systems. Many (but by no means all) of Ada's advantages become more important as system size increases. But Ada also makes many useful checks at compile time (no runtime penalty at all), and runtime checks can be turned off either locally or globally, so you can dial in the amount of checking vs runtime efficiency you want.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

kk6gm wrote:
gchapman wrote:
AdaCore added Cortex-M to GNAT.
Ref.
Is Ada ready for mainstream embedded designs? by Bernard Cole (embedded.com; February 19, 2013); search for 'Cortex-M3'.

Yes, and I'm waiting for the GPL release.
That's still not available from AdaCore; maybe this summer.
Ought to be able to take GCC 4.8 and build a cross-compiler for ARM Cortex-M EABI (bare board) and likely also a Ravenscar profile for a run-time.
The newest commercial version was released:
AdaCore releases GNAT Pro 7.2 with more ARM support by Bernard Cole (embedded.com; March 06, 2014)
Key words: distributed build, Ada 2012, C++, ARM, bare board, Linux, Android, VxWorks, LynxOS, Eclipse.

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

AVR-Ada is ready for use from Windows; for Linux it comes in source code form.

An AVR-Ada operator has built it for Fedora Linux.

http://fedora.ada-language.com

Tero's Arduino Blog, Using Arduino with Ada

"Building AVR-Ada and related tools (avr-binutils, avr-gcc, avr-libc) on Debian."

http://build.ada-language.com/job/AVR-Ada_Debian_7

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Sep 8, 2014 - 07:40 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
AVR-Ada is ready for use from Windows

Do you know of any Eclipse based attempts of avr-ada or any-ada?
I already use Eclipse for some architectures but that is C/C++.
I know Ada95 (GNAT) and would like to give avr-ada an IDE try.
ATMega128+32kB SRAM should do.
Specifically:
- does the avr-ada compiler generate debugging information?
- anyone tried to configure avr-gdb to work with Ada source? (nNot sure if that is different from C/C++).
- Eclipse CDT (obviously) does not natively support Ada. I have found the Eclipse Ada plug-in, I didn't try that yet and I am not sure it works as a standalone plug-in (without their whole environment). All I need is basic tools like syntax highlighting, error parsers and alike. Any known alternatives?

In general: any hints on avr + ada + gdb + eclipse?
mcrzp

No RSTDISBL, no fun!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brutte wrote:
Do you know of any Eclipse based attempts of avr-ada or any-ada?
The only one I'm aware of is for the commercial and GPL Ada tool set from AdaCore.
Brutte wrote:
I know Ada95 (GNAT) and would like to give avr-ada an IDE try.
AVR-Ada is only the compiler and such.
AVR-Ada should be able to be invoked from GPS (an Ada-aware IDE; see AdaCore for commercial and AdaCore's Libre for GPL).
Brutte wrote:
- anyone tried to configure avr-gdb to work with Ada source?
K.7 Using Gdb With Atmel mkII Probe (AdaCore, GNAT Pro User's Guide Supplement for Cross Platforms: AVR Topics)
OOTB it's for mega2560.
AdaCore GPL Ada is based on GCC 4.5.
AVR-Ada is from GCC 4.7 (XMEGA, etc) and supports more AVRs.
Brutte wrote:
I have found the Eclipse Ada plug-in, ...
Is that different than AdaCore's Eclipse plug-in?
GNATbench – Ada Plug-in for Eclipse (AdaCore, Libre)
Brutte wrote:
In general: any hints on avr + ada + gdb + eclipse?
If willing, replace Eclipse with GPS (GNAT Programming Studio).
Don't know if GDB is available with AVR-Ada.
http://libre.adacore.com/tools/
[Avr-ada-devel] How do I turn on debug in AVR-Ada

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brutte wrote:
ATMega128+32kB SRAM should do.
Would a mega2560 or the larger Teensy work?

http://arduino.ada-language.com/tag/mega2560.html

http://arduino.ada-language.com/tag/teensy.html

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Sep 8, 2014 - 07:45 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brutte wrote:
In general: any hints on avr + ada + gdb + eclipse?
For AVR + Ada and GPS (GNAT Programming Studio) instead of Eclipse there's
Integrating 8-bit AVR Micro-Controllers in Ada by Pablo Vieira Rego (Embraer S.A.) (adademia.edu, Ada User Journal, December 2012)
"Keywords: 8-bit AVR micro-controller, GNAT AVR, Ada, ZFP."
ZFP = Zero Footprint Profile
More keywords: ATmega328P, Arduino
Pablo describes how to:
1. Add mega328P to the only AVR in AdaCore Libre GNAT (mega2560).
2. Create a GPS project file.
3. Integrate AVRDUDE into GPS (ELF to hex, burn).
4. Create an application.

AVR-Ada and 128kB AVR:
The only ready one is AT90USB1286 (Teensy++ 2.0) and that's in the repository.
If it's required to use a mega128 board then could examine the changes for Teensy++ 2.0 (likely similar).
IIRC there's no USB support in AVR-Ada; shouldn't be a problem because there's package Interfaces.C.

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok, thanks for the comprehensive reference.
"Integrating 8-bit AVR Micro-Controllers in Ada" by Pablo Vieira Rego
[rant]Downloading that pdf with my EDGE connection was the most frustrating activity, ever!
Bloated javascript, endless questionnaire, I am Jane, 13 yo, my favorite color is pink .... no, I prefer cats.
academia.edu you %^&# are officially on my black list.[/rant]

I am so tired with that download that I am not able to study that right now. I have included that 80kB pdf here for download to save you the frustration.
2v5gf

Attachment(s): 

No RSTDISBL, no fun!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

kk6gm wrote:
Yes, and I'm waiting for the GPL release.
Ada on ARM Cortex

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Sep 8, 2014 - 07:49 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Not much about Arduino Mega 2560 in Tero's Arduino Blog, Using Arduino with Ada.
Another Arduino (Mega 2560 also) Ada operator placed their creation in Adaino (GitHub); last update was 4 months ago.

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

gchapman wrote:
AVR-Ada is from GCC 4.7 (XMEGA, etc) and supports more AVRs.
AVR-Ada is in-progress to AVR GCC 4.9.

Building an Ada Toolchain for AVR (Arduino) on Ubuntu 14.04 LTS x64 by Matthew Scheffel.

AVR-Ada / Mailing Lists, 2014-Sep contains a proposed solution to Matthew's problem.

"Dare to be naïve." - Buckminster Fuller

Last Edited: Thu. Sep 11, 2014 - 10:15 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

Isn't the mega2560 one that requires paging the program memory with a page-select (128KB page as I recall, with 16 bit word address instruction address register).

And that leads to compilers with near/far and all that rot (not needed with ARM M0/M3)

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Flash data-wise there's the __memx qualifer (24 bits).

Flash program-wise, GCC uses trampolines; IAR EWAVR has a memory model that linearizes this and the __farfunc attribute.

Named Address Spaces (GCC, 6.16.1 AVR Named Address Spaces)

Product news (IAR EWAVR, maybe version 5.20)

stevech wrote:
(not needed with ARM M0/M3)
Yes and now a GCC-based Ada compiler for Cortex-M and Cortex-R.

"Dare to be naïve." - Buckminster Fuller

Last Edited: Fri. Sep 12, 2014 - 06:50 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There's a patch to get AVR-Ada to GCC 4.9.2 :

SourceForge

AVR-Ada

beta

Ada cross compiler and libraries for AVR µCs

Brought to you by: rolf_ebert

[Avr-ada-devel] patches for gcc 4.9.2 updated

From: Rolf Ebert GCC <(e-mail address redacted)...> - 2014-11-24 17:43:39

http://sourceforge.net/p/avr-ada/mailman/message/33075516/

With some effort, AVR-Ada on a tiny85 :  http://sourceforge.net/p/avr-ada/mailman/message/32991477/

"Dare to be naïve." - Buckminster Fuller

Last Edited: Wed. Dec 31, 2014 - 07:08 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A very short mention about Ada on AVR :

YouTube

Embedded World 2016 Video: AdaCore explains Ada's shrinking footprints

Embedded Computing

Feb 25, 2016

https://www.youtube.com/watch?v=snlLuI3NmcA&feature=youtu.be&t=1m36s

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

GNAT Pro for bare boards

https://youtu.be/IgL-yldnUF8?t=20m13s

Bare board targets

https://youtu.be/IgL-yldnUF8?t=21m21s

...

  • Baselined AVR & Lego Mindstorms NXT

News for bare boards

https://youtu.be/IgL-yldnUF8?t=22m5s (about 2.5m)

via

AdaCore Tech Days 2015

https://www.youtube.com/playlist?list=PLkoa8uxigENnhoRzRAs6hu4njasX2DNa-

and

AdaCore blog

Embedded Product Line Updates

by AdaCore Admin

Mar 02, 2016

http://blog.adacore.com/embedded-product-line-update

...

Pat Roger’s “Embedded Product Line Update” video is now live on our YouTube channel! So, check out the latest updates about the extent of the language support that is offered.

...

 


https://www.adacore.com/gnatpro/embedded/avr

 

Edits : GNAT Pro AVR, blog data

 

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Apr 24, 2017 - 03:57 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

Has anyone ever seen a post on Freaks about someone actually using Ada? 

 

Seems like someone is putting a load of effort into something that is almost entirely pointless? 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

clawson wrote:
Has anyone ever seen a post on Freaks about someone actually using Ada?
https://www.avrfreaks.net/forum/ada-arm-cortex#comment-1256146

clawson wrote:
Seems like someone is putting a load of effort into something that is almost entirely pointless?
I tilt at windmills wink

http://idioms.thefreedictionary.com/tilt+at+windmills

 


http://www.microchip.com/wwwproducts/en/atmegas128

http://www.atmel.com/about/contact/sales/default.aspx?contactType=Third%20Party%20Support%20-%20AVR# (Expertise pull-down menu, Compilers)

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

clawson wrote:

Has anyone ever seen a post on Freaks about someone actually using Ada? 

 

Seems like someone is putting a load of effort into something that is almost entirely pointless? 

Almost, I'd say Ada on 8-bit AVR's is going to be an exercise in frustration, but Ada on larger ARM parts is likely realistic, and you have to admire the effort.

 

I saw a recent Freescale NXP Nexperia part that has 1MByte RAM and 2MBytes of FLASH for example.... , not especially cheap, but someone running Ada is not likely to be price bothered  ;)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Who-me wrote:
Almost, I'd say Ada on 8-bit AVR's is going to be an exercise in frustration, ...
Start with an Arduino :

Tero's Arduino blog

http://arduino.ada-language.com/

Using Arduino with Ada

An annoyance is AVR-Ada is ZFP (Zero Footprint Profile) which one result is no fixed point math that's been in Ada from get go (Ada83); fixed point math is in recent AVR GCC C.

A work-around may be Ada's Interfaces.C package to get to AVR GCC C.

Per Pat Rogers' video, recent GNAT Pro AVR ZFP can be extended to add the fixed point math run-time library.

Who-me wrote:
... but Ada on larger ARM parts is likely realistic, ...
Yes and the run-time is more complete with some Microchip MCU in SAM4S and SAM G55.

 


https://sourceforge.net/projects/avr-ada/ (AVR-Ada)

http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-B-3.html#I7432 (B.3 Interfacing with C and C++)

via

http://www.adaic.org/ada-resources/standards/ada12/

 

https://github.com/AdaCore/embedded-runtimes/tree/master/ravenscar-sam4sxplainedpro

https://github.com/AdaCore/embedded-runtimes/tree/master/ravenscar-samg55xplainedpro

via https://github.com/AdaCore/embedded-runtimes

 

http://www.microchip.com/developmenttools/productdetails.aspx?partno=atsam4s-xstk

http://www.microchip.com/developmenttools/productdetails.aspx?partno=atsamg55-xpro

 

Edit : typo

 

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Apr 24, 2017 - 03:48 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A book from one's masters thesis about AVR-Ada on a mega328-P (breadboard) for a Heart Rate Monitor (HRM)

Amazon UK

Real-Time Critical Systems: HRM Prototype & Ada Integration Kindle Edition

by Jordan Mauro-Buhagiar  (Author)

https://www.amazon.co.uk/Real-Time-Critical-Systems-Prototype-Integration-ebook/dp/B07986YGNM/

via

[Avr-ada-devel] AVR-ADA Tutorial Now Available

https://sourceforge.net/p/avr-ada/mailman/message/36205971/

The Kindle edition has the most information for 'Look inside'.

 

Edit: message title

 

"Dare to be naïve." - Buckminster Fuller

Last Edited: Thu. Feb 8, 2018 - 03:13 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

bit fields work for embedded apps in ada (unlike C/C++)