📄 readme.txt
字号:
ICCAVR Readme file
Make sure you subscribe to the icc-avr mailing list for program
update announcements. Refer to http://www.dragonsgate.net/mailman/listinfo
for details.
AVR Starter Kit users should read the file \icc\readme_avrkit.doc
Outstanding Bug List (we are working on resolving it):
- if you use the ++ pre increment operator on a volatile var in an
expression context, the wrong value is used, e.g.
volatile int i;
...
if (++i == ...
CHANGE LOGS
08/04/2004 - V6.31A
Library
- Changed printfs to use utoa/ultoa for %x/X,%u and %o
- FP Mul using the HW multiply instructions are incorrect under some
conditions
- EEPROMWrite functions were compiled incorrectly for M169,M48,M88, and
M168
07/12/2004 - V6.31
IDE
- ISP using STK500 was broken for M128
- Add support for M165
- The IDE now passes the following defines for the appropriate devices:
ATtiny13, ATtiny2313, ATtiny26, ATMega48, ATMega8, ATMega8515,
ATMega8535, ATMega88, ATMega16, ATMega161, ATMega162, ATMega163,
ATMega165, ATMega168, ATMega169, ATMega32, ATMega323, ATMega64,
ATMega103, ATMega128, AT90S2313, AT90S2323, AT90S2333, AT90S2343,
AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8534, AT90S8535,
AT94K05, AT94K10, AT94K40, AT86RF401, AT43USB320, AT43USB355
Basically, the names of the device drop down list under
Project->Options->Target. For example, you may use
#if defined(ATMega169)
...
- If you exit the IDE with no opened project, when the IDE is invoked
next time, it will not open the old project
- The IDE's title now includes the Project name, this will make it
easier to identify when IDE minimized icons when there are multiple
IDEs running
- M169 entry did not have the "Extended IO" box set, so the stack was set
in a lower address than it should and some SRAM was wasted.
Header Files
- Fixed some typos in iom48v.h iom88v.h and iom168v.h
- Added iom165v.h
Compiler
- If the "Strings in Flash" is specified, it accidently was forcing the
switch handling to almost always generate a jump table, even if a
"if-then-else" search would be preferrable. Sometimes this would create
very large and sparse jump table, taking up valubale flash space.
Linker/Code Compressor
- Revamped handling of M128 and Code Compressor. Should eliminate all
known problems when the uncompressed code exceeds 128K bytes.
Library
- EEPROM functions for the M169/M48/M88/M168 now use their own versions
because their IO locations are different. This is transparent if you
use the included eeprom.h header file and libraries
- Previously, the EEPROM write byte function returns immediately after
setting up the write procedure but the function waits when it is called
for any prior writes to finish. Change the behavior so that the funtion
waits for the write to complete before returning.
- Added ultoa and utoa. Now itoa and ltoa accept signed arguments. The
functions now accept base from 2 to 36.
- Once again thanks to Johannes A., 3 new "const" functions are added:
cmemchr, cmemcmp, and cmemcpy. They will be added to the Help file very
soon.
05/11/2004 - V6.30D
IDE
- Fixed entry for AT43USB320
- AppBuilder updates, including for the newer megas that UBRRH and UCSRC
share the same IO address
- Project file now stores the name of the Device, meaning that it is less
likely (after this release) to get "Device List Changed" message.
- Added support for %P (project name in the output directory) and
%o (output directory name) in Project->Options->Compiler->"Execute
Command After Successful Build" edit box
Compiler
- Added support for "#pragma lit:<name>" for placing data such as
const <datatype> <var_name...>
into a specific named area instead of the default "lit" area. Use
"#pragma lit:lit" to switch back to the default area.
Header File
- Added iocan128v.h
Linker (Code Compressor)
- Disabled JMP->RJMP optimization if the target is out of range
- Changed ERROR to WARNING for any out of text area (R)CALL/JMP in case
if the instruction is intended to target another area such as the
bootloader
- Allows JMP to any target if it is surrounded by the .nocc_start and
.nocc_end asm pseudo-ops
4/12/2004 - V6.30C
[ NEW method to disable/enable Code Compressor
asm(".nocc_start");
...
asm(".nocc_end");
This is better than the previous method since no instruction bytes
is wasted and you may have RETURN in between. The macros in macros.h
COMPRESS_DISABLE and COMPRESS_REENABLE has been replaced and redefined
by NOCC_START() and NOCC_END() macros
If you are using the old scheme in your asm code, you should change it
to use the new directives ASAP as the old style will be deprecated!!
]
IDE
- Added AppBuilder updates and support for M8535, T13, T2313, M64,
M48, M88 and M168. AppBuilder now supports all devices on the Device
List.
- The starting addresses for M8535 and M8515 were incorrect, conflicting
with the interrupt vectors.
- Added ISP support for T13, T2313, M48, M88 and M168. ISP now supports
all devices on the Device list.
Compiler
- fixed a long standing limitation in that an "if condition" that is
translated into a SBRx or SBIx instruction was always using a RJMP
instruction to try to reach the end of the block. This generates an
error if the body of the conditional exceeds 4K word.
- the fragment
int *p;
char c = (char)*p++;
when compiling for AVR Enhanced Core was generating an assertion
- Register History was not invalidating global/static vars cached in
registers when there is a pointer write.
- Peephole optimization for
MOV Rt,Ry
CP Rt,Rx
==>
CP Ry,Rx
was not considering the possibility that Rx can also be the same as Rt
Linker/Code Compressor
- interrupt vectors for bootloader were not handled correctly
Library
- the string functions were incorrectly using signed comparison instead
of unsigned comparisons.
02/05/2004 - V6.30B
IDE
- AppBuilder fixes for M169 LCD
- Scroll mouse now works correctly under all OS and mouse brands
Compiler
- Fixed a bug where the compiler was not copying stacked arguments to
registers if the function is a MONITOR function (normal functions are
fine).
- The debug line information was accidentally foobar'ed for the body
of for loops. This affected listing file and the debug information
- "if (m > a[i])" was generating the incorrect unsigned branch if both
"m" and "a[i]" are signed char types.
Library
- Fixed bug in cstrncmp (thanks JA)
Utilities
- Include ICCAVRMapFileSummy.exe (thanks JA)
01/17/2004 - V6.30A
IDE
- Added device support for ATMega48, M88, and M168. No support for ISP
and AppBuilder yet.
- Changed STK500 ISP Lock/Fuse Bits write to encode the bit values in
HEX as required by the stk500.exe program
Header Files
- Added iom48v.h, iom88v.h, and iom168v.h (once again thanks to JA)
12/15/2003 - V6.30
- now a single distribution can also work as the network dongle version
IDE
- Added IDE support for Tiny13, Tiny2313, no support for ISP and
AppBuilder for them yet (will be done ASAP). Added support for
AT86RF401, AT43USB355, and AT43USB320A.
- Added AppBuilder support for M169 and M8515. To Be Done: tiny13,
tiny2313, M8535, and M64. Miscellaneous AppBuilder bug fixes.
- Reverted to use STK500.exe instead of builtin ISP support
Compiler
- lcc 4.2 source tree merge. This *MAY* fix the bug with source files
residing in remote NT network drives causing spurious
"illegal charcaters \0" error.
- Fixed a rare register history bug where the "stz" was not invalidating
Y+d references even though Z and Y are aliased.
- Fixed a register history bug where Z+d offset propagation optimization
was not correctly marking Z has been updated.
Assembler
- Fixed a buffer overflow bug (line > 1024 chars, mainly from C comment
lines) causing all sorts of spurious error msgs
Linker
- Make Code Compressor compatible with any JMP/CALLs that are outside
of the text area
- Code Compressor no longer eliminates NOPs (timing loop etc.)
Header Files
- Added iot13v.h and iot2313v.h, aiot13.s and aiot2313.s
Library
- Added cstrncpy
- Thanks to JA, all string functions except for strtok are now written
in assembly!
- printf was not supporting field width for %c (large and FP printf only)
- Added EEPROMread_M169, EEPROMwrite_M169, EEPROMReadBytes_M169, and
EEPROMWriteBytes_M169 since the M169's EE?? IO register locations are
different from other AVRs. You do NOT have to do anything, if you use
the IDE and "#include <eeprom.h>". The correct functions will be called
when you use EEPROMread, EEPROMwrite, EEPROMReadBytes and
EEPROMWriteBytes.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -