- Windows binary release of the V-1.1.0 compiler and library.
Syntax sugar as one can now directly access (i.e. read and write) registers and IO ports as variables and you still get optimal code. Every register and IO port is declared as a 8 (or 16) bit wide modular integer and an overlapping array of 8 (or 16) booleans. That permits code like:
OC1A_DDR (OC1A_Pin) := DD_Output; -- set pin5 as output
OC1A_Port (OC1A_Pin) := False; -- clear pin5
: which compiles down to only two assembler instructions.
sbi 49-32,5 ; ,,
cbi 50-32,5 ; ,,
- support libraries for Maxim-Dallas' One-Wire sensors, Sensirion temperature/humidity sensors and a standard LCD
- The device description Ada specs are now based on Atmel's XML part description files of AVR Studio 4.15 beta (build 619)
- The patches for building the cross compiler require gcc 4.3.2.
- Extensive package hierarchy in and below AVR.Real_Time with two alternative implementations for the Time type. The first alternative uses 6 bytes, one for year, month, day, hour, minute and second. No subsecond values available. It requires an external 32kHz quartz as in the AVR Butterfly. The second alternative uses 8 bytes and and can count milliseconds. It has not been intensively tested.
- Experimental implementation of standard Ada delay.
- Binaries based on gcc-4.2.2, avr-libc-1.4.6 and binutils-2.17.50
- The part description Ada specs are now based on Atmel's XML part description files of AVR Studio 4.13 build 524.
- First package (bounded priority queues) in AVR.Containers8
- Improved some routines in AVR.Int_Img (smaller code size).
- Preliminary implementations in AVR.Int_Val for converting string images to values.
- The linker (avr-ld) now generates correct code for avr5 (16k-128K flash memory) targets when called with the --relax switch (default).
- Building static libraries with avr-gnatmake no longer requirers a host 'gcc' in the search path.
- Limited support for new devices: atmega2560 atmega2561 (beta)
- mk_ada_app.sh is now working directory independent, and part of the binary packages (i386-Linux, Windows).
- The Linux/Windows binaries are based on gcc-4.1.1, avr-libc-1.4.4 and binutils-2.17.50 and where configured for Ada, C and C++.
- avr-mem.sh now recognizes all supported devices.
- The part description Ada specs are now based on Atmel's XML part description files of AVR Studio 4.12 build 473 SP 2 + Atmega644p.
- Limited support for new devices: at90can32 at90can64 at90pwm2 at90pwm3 at90usb1287 atmega1280 atmega1281 atmega164p atmega165 atmega165p atmega169p atmega324p atmega325 atmega3250 atmega329 atmega3290 atmega406 atmega640 atmega644 atmega644p atmega645 atmega6450 atmega649 atmega6490 attiny24 attiny25 attiny261 attiny44 attiny45 attiny461 attiny84 attiny85 attiny861
- We build part specific runtime systems (RTS) now. Old Makefiles have to be adjusted!
- The AVR-lib has new packages: Watchdog, Sleep, Int_Img. (Note that not all packages have been ported to all devices).
- Updated scripts to build AVR-Ada with gcc-3.4.6 and gcc-4.1.0 are now located in tools/build/.
- New script (wizard) to generate a ready-to-compile project directory with all necessary files (tools/mk_ada_app/).
- New examples (largedemo, debounce) are located in apps/.
- New bug fixes and workarounds for gcc-3.4 and gcc-4.1 are located in patches/.
- The part description spec files are completely new. The Ada specs are now generated directly from Atmel's XML part description files of AVR Studio 4.11 build 406 SP 2. In previous versions they were derived from the C header files of avr-libc.
We changed the syntax for accessing single bits from bit numbering to masks in AVR.IO. Simple names in the part description specs now contain bit masks, the pin number is still available with the name xxx_Bit. E.g.:
-- Port D Data Register bit 3
PORTD3_Bit : constant Bit_Number := 3;
PORTD3 : constant Byte := 16#08#;
The previous Set_IO routines in AVR.IO were renamed to simply Put omitting the _IO, the Get_IO have become Get. That is more in the style of other Ada IO packages like Text_IO.
- New packages for string handling and accessing constants in program space. They are actually a stripped down version of Ada.Strings.Bounded.
- We build part specific libraries now. That means that we can provide specific functionality adapted to a given part. It is currently used for the UART and EEPROM access only, though.
- The example programs for accessing a 1-wire devices and an LCD are not part of the distributions anymore. They are only available via CVS. There is also starting support for the atmega169 based AVR Butterfly in the CVS repository (UART, LCD, and dataflash).
- We modified the compiler patches to fit cleanly to gcc-3.4.3. They probably also fit in previous gcc-3.4.x releases; I never tried.
- The "freestanding" patch is now considerably shorter since part of what it does (avoid some code in the binder file) is now provided directly in gcc. The corresponding binder options was previously called "standalone", but that expression is used elsewhere in GNAT.
- You can now use "Library Projects" with AVR-Ada. I.e. you can have gpr files with "Library_Name", etc. The only permitted value for "Library_Kind" is "static". This feature is used for the Avr library.