[En-Nut-Discussion] Nut/OS for AT90CAN128 processor

Henrik Maier henrik at focus-sw.com
Mon Feb 7 09:15:08 CET 2005


Hello Nut/OS developers,

Nut/OS runs now on a AT90CAN128 processor. The port was more difficult 
than I thought as Atmel changed the complete SFR structure and interrupt 
vector order for the AT90CAN128. The fact that the avr-libc EEPROM 
routines lock-up for the AT90CAN128 didn't make it easier.

Before publishing the port and the changes, I like to discuss and 
request for comments on some changes which are required for the new CPU.

Due to the Atmega103 history of the code base, the source contains a lot 
of sections like the following example:

#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega103__)
extern NUTDEVICE devDebug0;
#ifdef __AVR_ATmega128__
extern NUTDEVICE devDebug1;
#endif

In order to support new MCUs like AT90CAN128, ATMEGA64, and in the 
future ATMEGA256, I suggest to use a more generic check like
"#if defined(__AVR__)" instead of "#if defined(__AVR_ATmega128__) || 
defined(__AVR_ATmega103__)" AND "#if !defined(__AVR_ATmega103__)" 
instead of "#ifdef __AVR_ATmega128__".

Rationale is that ATMEGA103 is a legacy device which is still
supported, however there are quite a few AVR devices which are more
compatible to the ATMEGA128 and it is easier to support them by
checking for a non-ATMEGA103 device.

As most of these ifdefs deal with checking for the presence of the 
second UART, one could also check against UDR1 to check if a second UART 
is available for the device. Same issue with the ifdefs to compile the 
additional interrupts for the ATMEGA128. One could check for the 
presence of the SIG_... (e.g. SIG_EEPROM_READY) definition to compile 
them in instead of the MCU definition.

I personally prefer the latter concept as it is more MCU independent and 
  so hopefully more future proof.


Any ideas suggestions are welcome.

Henrik

-- 
FOCUS Software Engineering Pty Ltd
Brisbane, Australia - Web: www.focus-sw.com
Phone: +61-402 970 933 - Fax: +61-7-3009 0399




More information about the En-Nut-Discussion mailing list