It's Working and I'm Going to the Sushi Bar :)
2007-03-08 by AVR Development
I've been very busy but with an hour here and an hour there I got it working. There were a few headaches but surprisingly there was very little drinking involved. I have the Micrium uC/OS-II Real-Time Operating System compiled under the ImageCraft Compiler (ICCV7) for the AVR ATmega1281 using the Micrium ATmega256 port. There are now three LEDs happily flashing from three independent tasks. Everything went very smoothly for the most part except for a problem in the software port file os_cpu_c.c which was due to a compiler upgrade. The newer compiler apparently uses 22-bit function address calls rather than 16-bit as in earlier versions (at some point) of the ICC AVR compiler. From what I can gather, function calls are done indirectly as a 16-bit pointer into a table of 22-bit function addresses located in flash. The table entries are now three bytes instead of two. In any case, I found the OSTaskStkInit() task was adding an extra byte to each created task's software stack. I debugged it in AVR Studio 4.13 (Yes, Build 528 is here so go download it) and found exactly where the errant byte was being injected in. Thought I would let you guys know. Any comments? I'm going to the sushi bar :) Barry @ JL Productions [Non-text portions of this message have been removed]