This is the readme file for ImageCraft ICCV8 for AVR Compiler. Make sure you subscribe to the icc-avr mailing list for program update announcements. To subscribe, send email to icc-avr-subscribe@yahoogroups.com. [ 8.10.+ UNINSTALL ] The product uses a single entry in the Registry for all its uninstall even if you install multiple versions. If you install all versions in the same directory (e.g. c:\iccv8avr\), this will behave correctly. If you install different versions in other directories, you will need to delete the folder trees to uninstall them. CHANGE LOGS: V8.25.02 - 2016/11/07 IDE - Fix a bug with command specified in "Build Options->General->Execute command after..." being run twice. Bug introduce in 8.25.00 V8.25.01 - 2016/10/05 Compiler Code Compressor - An unrelated bug fix to .org handling accidentally broke the Code Compressor's handling of the interrupt vectors. This was probably introduced around 8.23 release. V8.25.00 - 2016/09/26 IDE V.20160811 - Added Multi-target support. This allows you to have multiple targets sharing the same set of source files in a project. Each target has its own Build Options setting. Please refer to the (updated) Help file for details - Added ATMega328PB/ATMega324PB target Compiler - Fixed a bug with "8-bit optimization", where unsigned char c = ...; unsigned long r = (unsigned long)c << 11; the compiler was incorrectly doing 16-bit left shift instead of 32-bit shift JDB JumpSTart Debugger V1.08.01.09 - Bug fixes and enhancements iFlash-AVR - iFLash-AVR can be invoked as a standalone utility for production file programming Header Files - Added 328PB/324PB etc. header files V8.24.01 - 2016/06/12 Debugger - Minor updates V8.24.00 - 2016/05/26 IDE V.20160518 - Splash screen now includes the words "Atmel AVR" - Debug/Download options are now on its own dialog box under "Project" Compiler - a generic compiler fix applied in 8.23.00 caused the AVR compiler to emit inefficient code for some temporary created variables. Assembler - Added ".CPU AVR_reduced_core" directive to support the reduced core TINY (e.g. ATTiny10) where there are only 16 registers and lds/sts are 16 bits instead of 32 bits. When the directive is specified, the assembler generates code appropriate for these TINYs. JumpStart Debugger 8.01.03 - JDB full revision is now in c:\iccv8avr\IDBE-AVR-Revisions.txt - Fixed a couple bugs with debugger crashing - Fixed a bug with array display in the watch window - Support for new debugger options in project file - Added feature to not flash MCU when debugging. - Fixed dis-assembler error, not setting transfer address for JMP instruction. - CRT code end address was being calculated incorrectly. - Added startup option features. Reset and stop, reset and run, reset and run to main. - Added feature to control timers run/stop state when target stops. Linker - CRC code was not checking the last 2 bytes. CRC is calculated using CRC-16 (ModBus) algorithm V8.23.01 - 2016/03/09 JumpStart Debugger - Fixed array and other display issues iFlash-AVR - Fixed ISP programming problem with CMSIS-DAP pods V8.23.00 - 2016/02/23 CodeBlocks IDE - Now check for updates on http://imagecraft.com - Log files and .ini files are now in %appdata%\ImageCraftCB\ - Added "Build Options->Compiler" alignment options JumpStart Debugger (IDBE_1.01.059) - Fixed issue with entry to debugWIRE mode for CMSIS-DAP pods - Fixed DWEN problem - Added support for the same hotkeys as main IDE - Added support for memory view editing - iFlash-AVR improvements V8.22.00 - 2016/01/18 CodeBlocks IDE - Added Help->"Check for ImageCraft Updates" to check for updates Compiler - 8.21 (?) accidentally ignored data type alignment and aligned all data at even byte boundary - If a 16-bit parameter passed in registers is used in only byte context in C code but word context in inline asm, the compiler incorrectly would not copy the upper incoming register. - Fixed a long existing (rare) bug where if a parameter to a function is used only inside a loop, its lifetime might not be computed correctly and bad code might be generated JumpStart Debugger - IDBE_AVR_1.01.053 - misc. bug fixes - debugWIRE broken by iFlash-AVR updates - Added support for debugging bootloaders. - DebugBar-AVR_2.0.2.2 - misc enhancements - iFlash-AVR_1.0.1.3 - misc bug fixes and enhancements - Updated flash loader to handle bootloader code. - Implemented EEPROM programming for xMega devices. - Added "standalone" operation When started outside of CodeBlocks IDE iFlash-AVR allows the user to browse to open either a CodeBlocks or ICC project file. Libaray - Added time.h functions. The user must initialize the timer state and invoke a periodic update function. See time.h for details - Added 64-bit double FP trig and other functions in math.h (PRO license only) - Added stdlib.h qsort and bsearch functions V8.21.00 - 2015/12/08 CodeBlocks IDE - Fixed issues with paths with spaces introduced by CB V13/10542 integration (8.20.00) JumpStart Debugger (IDBE_AVR_1.01.051) - DebugBar V2 - All views now dock to DebugBar or float on the desktop. (ALPHA) of iFlash-AVR for CMSIS DAP pods. V8.20.01 - 2015/12/03 CodeBlocks IDE (issues introduced with CB V13/10542 integration introduced in 8.20.00) - Fixed path issues when opening existing projects - Fixed problem with "File->New->Project" V8.20.00 - 2015/11/23 CodeBlocks IDE - Upgraded to CB version 13 branch 10542 - Fixed issues with breakpoint handling - Added initial support for Internationalization Linker - Fixed a bug with incorrectly diagnosing anonymous structs as having different type signatures when Cross Module Type Checking is on V8.19.03 - 2015/11/09 JumpStart Debugger - IDBE 1.01.049, DebugBar 1.0.1.8 - Bug fixes and enhancements V8.19.02 - 2015/10/25 Compiler - Fixed a linker speed issue - link time should improve by 25%-75% V8.19.01 - 2015/10/19 Installer was using the registry key "JumpStart C for...", which is inconsistent with the compiler tools usage. Changed back to "ICCV8 for..." JumpStart Debugger (internal ID: IDBE_1.01.047) - Fixed a number of bugs - Changed licensing: limited functionality (2 breakpoints, 2 watchpoints, DebugBar enables CPU, Code and Memory tabs only) if there is no JDB license and outside of the 45 day demo period. V8.19.00 - 2015/09/19 Debugger - Numerous enhancements and some bug fixes Compiler - "#pragma code_abs_address" and "#pragma text:XXX" were broken by inlining optimizations. V8.18.00 - 2015/08/14 - Code Signing Certificate updated - No longer requires VS 2010 runtime (introduced in 8.17.00) that was needed for Atmel JTAGICE3/Atmel-One support. CodeBlocks IDE - Better logic for computing relative path in the Paths dialog box - Allow spaces in installation path - Fixed issue with "Create Makefile" not handling asm files correctly. - New Project->User Template fixes - File->Save As Template fixes - Better support for installing in a path with spaces - Added "ImageCraft Filemask" for the frequently accessed file types. Debugger - Better breakpoint management - fixed issue with JTAGICEMk2 and Dragon fail with illegal emulator command with XMega and PDI Help - Fixed problem with Help Files sometimes not display on certain browsers (Search is broken and has been temporarily disabled) V8.17.01 - 2015/06/29 CodeBlocks IDE - Fixed problem with CB generating different link order for project files JDB JumpSTarter Debugger - Numerous fixes Compiler - The compiler was not handling #pragama ???_abs_address correctly if it is the first item in the source file. A bug introduced in 8.16 Header File stdlib.h - CHANGED itoa/ltoa/utoa/ultoa prototype to be compatible with other compilers: // base can be 2 to 36 char *ltoa(long, char *, int); char *itoa(int, char *, int); char *ultoa(unsigned long, char *, int); char *utoa(unsigned, char *, int); (We wrote these functions BEFORE they were popular with other compilers and hence the prototypes were different) You might enable the old form prototype by defining the macro OLD_STYLE_ITOA in the Project->Build Options->Compiler macro define box. Added a new "#pragma prototype_changed.." to warn of this situation. V8.17.00 - 2015/05/13 JDB-AVR Debugger - Added support for JTAGICE3/Atmel-ICE. JDB now supports all major Atmel debug pods. NOTE: the filtered driver is only needed if you are using the AVR Dragon or the JTAGMkII, but NOT the JTAGICE or Atmel-ICE Compiler - IO instructions were incorrectly used for expressions such as unsigned char c = *(__flash unsigned char *)0x20; V8.16.02 - 2015/04/03 CodeBlocks IDE - Added the feature to save a project including the source files to a zip file (File->Save Project To Archive) - Started infrastructure for Internationalization support JDB-AVR Debugger - Beta release for debugWIRE support. Note: After disabling the DWEN fuse one MUST power-cycle the Dragon. V8.16.01 - 2015/03/20 Compiler - Fixed a crash with using "???_abs_address" introduced in 8.16.00 Header Files - Fixed ANSI C warning on "too many fields" in some XMega header files V8.16.00 - 2015/03/05 Changed installer / icons / splash pages / etc. to rebrand as "JumpStarter C for AVR" CodeBlocks IDE - Added Autoversioning plugin. To use "Project->AutoVersioning", then accept to autoversion the project. Click Help button for help. - "ImageCraft->Create Makefile" was not handling asm .s files correctly. - Added M44PB, M88PB, and M168PB JDB-AVR Debugger - Fixed an issue where "reset target" sometimes did not work correctly. - Fixed problems with project in a directory with spaces in the name. Compiler - Enabled C++ typedef redefinition - Enabled interspersed declarations and statements, and for loop variable declaration, two C99/C++ features - (BETA) Enabled "C with Classes", subset of C++ features that allow member functions within struct definition. - Fixed an issue where structure variables declared inside #pragma were sometimes allocated in incorrect location: #pragma data:eee struct x x1, x2; #pragma data:data x2 was incorrectly placed in BSS Library - 64-bit double support routines did not save/restore volatile registers and could return incorrect results if 64-bit double were used in complex situation. - Added %h (short) and %hh (byte) modifiers to printf Header Files - Fixed issues with M168PB header file Examples - Added ChanFS examples for M328 V8.15.01 - 2015/01/30 [ Fixed Licensing Engine errors ] V8.15.00 - 2015/01/21 [ Tweaked Licensing Engine options to eliminate potential incompatibility with anti-virus software ] (Installer) - Disabled file compression to possibly eliminate file corruption issues. IDE - Added support for LogicISP bootload downloader - Fixed an issue where the workspace project might be deleted when ImageCraft->In System Programmer dialog is invoked. - Build Options tabs are now "sticky" - Better informationals when invoking File->New Project AppBuilder - Fixed typos in TIMER0/UART0 of M328 M328p CPU files JDB-AVR - Fixed issues with IO registers not in contiguous locations - Fixed issues with XMega128 - Fixed other issues Compiler - (BETA) Added __inline keyword support. Header Files - Added support for the M48/88/168PB series C header files. V8.14.03 - 2014/12/29 Fixed some dongle licensing issues with respect to JDB debugger V8.14.02 - 2014/12/18 JDB-AVR - Added support for debugging ATXmega devices using JTAG and PDI interfaces, select through "Project->Build Options->Debug/Program Interface" - Fixed issues with ATmega128A debug - Fixed issue with for statement handling - Changed to use hardware breakpoints, and when exhausted, use software breakpoints. Note: some AVR, e.g. ATmega128A, does not support software breakpoints. When that happens, JDB will warn you and you must disable some breakpoints before you can enable new ones. - Fixed some issues with error reporting V8.14.01 - 2014/12/08 JDB-AVR - Fixed a number of debugger related issues. You must upgrade to this if you are using JDB. - Fixed licensing issue with debugger Examples - Added examples.avr.xmega\ for ATxmega examples workspace V8.14.00 - 2014/11/05 IDE - Added JumpStart Debugger (JDB). See Help file for full installation instructions. Quick Start: 1. Do NOT plug in your debug pod. 2. If you do not have AStudio 6.2 installed already, install the Atmel USB drivers: c:\iccv8avr\Atmel Files\AtmelUSBInstaller...exe 3. Plug in the debug pod. 4. Install the filter driver: c:\iccv8avr\libusb-Win32\bin\inf-wizard.exe Help file has full instructions. Compiler - Assigning a "char" or "unsigned" char to a 64-bit double (PRO only) caused the compiler to assert. - debug info for function with call-jump optimization (e.g. a function that ends with a call to another function is sometimes optimized to use the "jmp" instruction if certain signatures match) was incorrect. Header Files - new ioiccavr.h and xm header files. For XMega, there is now only one alternative #define that you might want to use (but in most cases, do not use this!!): #define __use_ansi_unions_in_ior_structs #include The default is the preferred method of using anonymous struct/union as used by Atmel example codes. Use the above code fragment ONLY IF you want to access the struct/union field members using "old style" format. See C:\iccv8avr\include\__ioxm...v.h.info.txt for details. Libraries - fpmule was not saving/restoring R0/R1, causing random failure if an ISR handler uses floating point multiply V8.13.01 - 2014/07/14 [ Upgraded to the latest protection engine for Win8 compatibility ] IDE - Added entries for ATXMega128A1U and ATXMega64A1U to the device list. - Fixed data memory start addresses for ATTiny441 and ATTiny841 Compiler - Fixed a rare assertion with ?: and 8-bit byte optimization. V8.13.00 - 2014/04/09 IDE - Added File->"Import V7-project" to convert V7 project to V8 project. After specifying a V7 project .prj name, it asks you for the location to place the V8 project files. Then all the source files are copied in the same relation as the V7 project. For example, if the project sources are in the V7 project directory, then they will be copied to the V8 project directory. - Automatically close the map and list files when you do a build that renders the files out of date. - Fixed "Save Project As Template..." - Selecting XMega384 and bootloader did not select the correct startup file crtxm384a.o - "Project->Build Options->Paths" now use relative paths (relative to the project dir) if possible. - Added ATtiny441 and ATtiny841 to the device list. - Changing project title using Project->Properties was not working correctly. Compiler - When compiling for 8K or smaller AVR, interrupt handlers that call other functions will now call the library functions "push_lset" and "pop_lset" to save and restore the volatile registers. This saves code space for these smaller AVRs. Header files - Fixed misspelled DMA address register names for some xmegas. V8.12.02 - 2014/02/18 Linker - Fixed an issue with debugging with AVR Studio 6 and the cursor did not stop at the first executable line properly. Note that there is still a slight off-by-one with AVR Studio 4.x sometimes. V8.12.01-A 2014/01/27 Fixed the problem with the libraries in 8.12.01 where if both printf and cprintf are used then the linker failed with a "multiply defined __padding" error. Note: the compiler/IDE version # display remains at 8.12.01 V8.12.01 - 2014/01/23 C Preprocessor - Added #pragma once specifies that this file should only be processed once by the C preprocessor, even if it is #include multiple times. CodeBlocks IDE - Added entries for the Tiny 841 and Tiny 441 - Fixed SRAM sizes for Mega16HVB and Mega32HVB Compiler - added byte optimizations to << and >> Header Files - Added preliminary header files for T841 and T441 - Fixed probalems with asm header files for mega64 and T167 V8.12.00 - 2013/10/31 Help File - Changed to use Adobe Technical Communications 4 and made various content improvements. CodeBlocks IDE - Added XM?E5 devices - Fixed a bug with File->SaveAs... - Added File->SaveProjectAs... - Fixed defects with makefile generation (ImageCraft->Create Makefile) - Corrected not using the correct AppBuilder device ID problem when invoking the AppBuilder Header Files - Added XM?E5.h Compiler - Changed compiler so that it would not remove volatile read, e.g. extern volatile unsigned int i; ... i; // used to be elided - Fixed incorrect references to .i in the debug data under some circumstances - Fixed a rare bug where the compiler did not preserve both bytes of a preserved register pair. e.g. void foo(unsigned u) { unsigned char uc; *(&uc) = u; // force uc to stack - Fixed some rare bugs with byte optimizations - Fixed some debugging issues with AS6 Assembler - Added LAC, LAS, LAT and XCH opcodes Linker - CRC was generated incorrectly if Code Compression is enabled. V8.11.03 - 2013/08/02 IDE - Added checkbox under Build Options->Target [] Full ftoa/dtoa When checked, the "full" version of ftoa or dtoa (depending on whether 64 bits FP is enabled) will be linked in. This runs slightly slower but supports full range of the float numbers. AppBuilder - Fixed UART problems with M328 and M328P Compiler - Fixed a rare bug with assertion for converting a byte into a pointer. Libraries - Eliminated multiply defined '__padding' error under some circumstances. V8.11.02 - 2013/07/29 Compiler - Compiler was emitting wrong line # info in the COFF file for debugging with AVR Studio (introduced in 8.11.01) V8.11.01 - 2013/07/15 Compiler - 8.11.00 was emitting incorrect structure size in the debug data. Fixed. - Eliminated unnecessary line number entries in debug data, - Fixed a rare bug with mixed mode arithmetic optimization. Libraries - Fixed a bug in the 16x16=32 source routine where a "CALL" instruction was used, rendering it incompatible with AVR smaller than 8K. V8.11.00 - 2013/07/05 Added "Device" name to the .mp map file. If you are working on an existing project, you must invoke the Build Options and then click OK for this new feature to appear in the map file. Added full printf support for 64-bit FP (PRO only). To use, simply enable Project->BuildOptions->Compiler->Enable 64-bit Double Project->BulldOptions->Target->PRINTF / float and the correct library (libdp????.a) will be used. Added full versions of the ftoa/dtoa. The default is the fast and smaller versions. The fast versions cannot handle certain values outside of a range. See comments in stdlib.h or Help file for details. This affects printf %f/%g/%e To use, add ftoa-full-??? or dtoa-full-??? to Project->BuildOptions->Target->"Extra Libraries" box We will add a GUI checkbox later. ??? must match the library suffix, e.g. "atmega" "avr" etc. of the other libraries used. AppBuilder - Added UART to M328p. Duplicated M328p to M328 Compiler - If you make a call of the form function(int_expr, double_expr); the double_expr should pass 2 bytes in R18/R19 and the rest on stack. This was not done correctly before. Driver - If -Wf-dfp (64-bit FP) is specified, the driver automatically adds -D_64_BIT_FP to the command line Library - Added new double version of printf - Added new routine "char *dtoa(double, int *stat)" for simple conversion of a double value. Companion to ftoa. The prototype is in stdlib.h and it returns a static buffer (shared with ftoa). - Removed libdp.a, the functionality has been folded into the normal libraries - Removed d2a(), the stopgap double to string conversion function. Linker - Added FW:<#>. Same as -F<#> to fill unused ROM space, but also emit the full flash image from 0 to end of flash (instead of to the last actual byte) To use with the CB IDE, Project->BuildOptions->Target, under the AdvancedOptions box, add -FW:# The "Fill Unused ROM Byte" box should be left empty. V8.10.03 - April 10, 2013 IDE - -xcall was not generated for XMega196 Compiler - Fixed a rare problem with register history and use-def calculation causing incorrect removal of temporary registers. Compiler Tools - Fixed some issues with .lst file generation when output directory is specified. Linker/Code Compressor - Code Compressor was not relocating indirect function calls correctly for bootloader apps. Bug introduced in 8.10.00 - re-added the "end of record" line to the .eep EEPROM hex file. Dongle Driver - V2 of dongle driver V8.10.02 - Mar 18, 2013 IDE - Moved ICC specific Tools under "ImageCraft" menu. - Fixed XMEGA -e: switch to account for the extra bootloader space - Added entries for XMega B/C devices - Fixed spaces in file name issues with Create Makefile, and Map File Summary. AppBuilder - Added 18.432MHz and 20.0 MHz to the clock dropdown. Compiler - Re-enabled asm debugging of asm source files when the option is selected. - Debugging projects with spaces was broken (8.05?) under some unusual coding situations Map File Summary Tools - Eliminated makefile dependency Header Files - _xmbits.h fixes V8.10.01 - 02/19/2013 Fixed phantom warning about "Compiler path not found" in 8.10.00 V8.10.00 - 01/26/2013 (See manual for complete documentation) Production ELF file support - In the C source code, you may now declare #pragma avr_fuse(byte1, byte2, ...) #pragma avr_lockbits(byte1, byte2, ...) #pragma avr_signature(byte1, byte2, ...) #pragma data:user_signatures // same syntax as #pragma data:eeprom - a new tool, icc2avr-elf, which is automatically called by the driver iccavr collects all the .bin files and generates an .elf file. Linker / Library - Added crc support. To use CB IDE: Project->BuildOptions->Target, in the "Other Options," enter -crc:0x???? where 0x???? is the BYTE address in flash that is not used. 4 bytes will be stored at that address in this format: In your code: #include ... // 0x???? is the same address you use in the -crc switch __flash unsigned short *p = (__flash unsigned short *)0x????; unsigned short crc16; crc16 = calc_crc16((__flash unsigned char *)0, p[0]); if (crc16 != p[1]) // CRC mismatched Compiler - inline asm with variable references was broken in the 8.03 release Header Files - updated some XMega files V8.05.04 - Oct 22nd, 2012 Examples - Added "xmega eeprom demo" IDE - Added new xm devices to Device list - Fixed incorrect data address for ATTiny167 Application Builder - Fixed a number of errors == CB was not calling abAVR.dll with the correct device ID == reorganized the device list more sensibly == fixed Timer2 prescalers == fixed missing PORTJ/K/L on Mega640/Mega1280 == fixed TIMSK1 [and TIMSK2] not set correctly on m164p, m165, m324, m325p, m3250, m250p, m328p, m329, m329p, m3290, m3290p, T24 == Set TCNT0/TCNT2 to zero for all "non-normal" timer modes == fixed Timer0 setup for M48/M88/M168 == fixed all known issues with respect to PCMSKx T24/T44/T84 T25/T45/T85 T261/T461/T861 M164P/M324P/M644P M165/M169 M325/M329/M329P/M645/M649 M3250/M6450 M168/M48/M88 M640/1280/1281/2560/2561 M644 M325P/M3250P/M3290/M3290P/M6490 M406 M48PA/M88PA/M168PA/M328P Compiler - Fixed codegen error with unsigned_long_func() > 4000000000L where the constant is an overflowed long. Compiler incorrectly generated signed branch (error was introduced in 8.05) Header Files Changes by 2012-10-16 - new: header files for mega164_644A/PA and mega1284 - new: header files for mega48_168A/PA and mega328 Changes by 2012-10-15 - new: header files for tiny828 - new: added device signatures to iccioavr.h Changes by 2012-10-09 - new: added enhanced DAC calibration for xmegaA3/4U devices Changes by 2012-09-21 - new: added flash/eeprom page sizes to _xmmemories.h - new: prepared _xmmemories.h for new devices (xmegaB/C/D) Changes by 2012-09-08 - new: header files for mega3290A/PA Changes by 2012-07-21 - fix: in _xmAbits(.enum).h PR_AES_bm was missing V8.05.03 - IDE - added Tools->Create Makefile Linker - earlier 8.05.xx caused some bootloader build not to operate correctly by locating the bootloader vectors in incorrect addresses. (Specifically, using -b on an absolute area did not correctly offset the absolute area) - Addresses for static variables inside a function were incorrect in the debug file (8.04.03 fix was insufficient for all cases) - The map file omitted entries for static variables inside a function Minor bug fixes and new header files V8.05.02 - April 13, 2012 Due to a build procedure error, the new compiler with the mixed mode arithmetic optimizer was not put into 8.05.00/8.05.01. 8.05.02 now has the correct new compiler. Improved the speed of the compiler and linker Installer - New Win7 aware installer. AppBuilder - Changed the include lines to use ioiccavr.h and avrdef.h instead of the deprecated header files. Compiler - Rewrote 8 bit optimizations. It should be more robust and more effective than previous implementations. On the STD/ADV, it should be 1-3% better than before in general. On the PRO version, more code size reduction may be possible with mixed 32-bit and 16/8 bit expressions. "8 bit optimization" checkbox on the IDE has been removed as the optimization is enabled permanently. V8.05.01 - Fixed a problem with tools installed in a path with spaces V8.05.00 - March 26th, 2012 [ NOTE: the location of the CB config file has changed from (pre-Vista) c:\Document and Settings\\Application Data\default.conf (Vista/win7)c:\users\\AppData\Roaming\ImageCraftCB\default.conf to c:\iccv8avr\bin\ImageCraftCB\default.conf. If there are any CB config settings that you wish to save, please copy the file over to the new directory. CodeBlocks IDE - Upgraded to 10.5 CodeBlocks release - Cleaned up some look and feel issues - Full support for file, path and project with spaces in names. - Removed "8 Bit Optimization" as it is no longer needed (see Compiler section below). - Under older versions of V8, if you install multiple V8 compilers in different directories, the IDE may invoke the incorrect compilers. Now fixed. Compiler - Full support for file, path and project with spaces in names. - Rewrote 8 bit optimizations. It should be more robust and more effective than previous implementations. On the STD/ADV, it should be up to 1% better than before in general. On the PRO version, more code size reduction may be possible with mixed 32-bit and 16/8 bit expressions. "8 bit optimization" checkbox on the IDE has been removed as the optimization is enabled permanently. Library - ftoa and the associated printf %e/%f/%g now support the full range of floating point values. - printf/etc. are now reentrant (scanf/etc. remain non-reentrant) - Fixed printf bugs regarding 0 and space fill. V8.04.03 - Dec 6th, 2011 [Digitially "signed" codeblocks.exe to hopefully prevent false anti-virus tagging.] Compiler - MISRA checks were not enabled for ADV/PRO users - [PRO Only] Disabled incorrect MIO code hoisting. Will be fixed later. Linker - debug addresses for function static variables were incorrect Code Compressor - Fixed a latent bug with 8K device where sometimes the code compressor asserted with an error. - Fixed a latent bug where a JMP instruction "close to" the end of the text area generated incorrect code. For example, this might show up as jumping to the bootloader reset Header Files - updated header files V8.04.02 - Nov 9th, 2011 [ 8.04.01 USERS MUST UPDATE TO THIS RELEASE ] IDE - Better behavior when an .mp, .lst or other read-only file is opened and an external program changes them. - Fixed a bug where the project build option dialog box is rendered inaccessible if you move from a dual screen configuration to a single monitor. Code Compressor - 8.04.01 may put function symbols incorrectly at the start of the text area instead where they should be - Fixed a bug with interrupt vectors jumping to routines > 128K bytes (mega256x or higher only) V8.04.01 - Sept 27th, 2011 Minor enhancements/fixes, plus enabling of Maintenance process IDE - Installing the compiler/IDE in a path with spaces was broken Header file - Added stdint.h V8.04.00 - Aug 12th, 2011 IDE - Invocation to Map File Summary was broken - STK500 ISP interface to M128 was broken Code Compressor / Linker - Added code compression for M256+ / XM128+ (i.e. devices with more than 128K byte flash). PRO version only. - Cross Module Type Checking (PRO only) now considers two anonymous struct (i.e. struct without TAG name) to always be equal. Dongle Support - Minor tweaks V8.03.01 - July 19th, 2011 - Added MISRA information to help file. Compiler - Fixed a minor MISRA issue Header File - va_arg in stdarg.h was accidentally broken in 8.03.00 V8.03.00 - July 8th, 2011 Enabled USB dongle support. Revamped License Manager to support the dongle options. IDE - (NOTE) You can manually control code folding by using //{ //} pair. - Added "Cross Module Type Checking" checkbox to "Project->Build Options->Compiler" Activated only for PRO license but the default is ON. C Preprocessor - Added support for #region/#endregion - basically ignoring them. These directives cannot overlap other control directives such as #if/#endif etc. Compiler - Fixed a rare bug with compiler crashing: unsigned char some_func() { .... return something.bit.field; } Compiler / Linker - Added cross module type checking warning (PRO only) for both function and global variables. The linker flag is -cross_module_type_checking, e.g. iccavr -o outfile -cross_module_type_checking ... - You can now disable individual MISRA check warning by putting the warning # in the file c:\iccv8avr\misra.nowarns.txt. The warning numbers can be separated by spaces, tabs, commas or newlines. Any characters after a semicolon will be ignored until the next line. V8.02.05 - May 17th, 2011 IDE - Added device entries for Tiny2313A, M16HVB and M32HVB Header Files - Fixed all MISRA incompatibility with the system header files V8.02.04 - May 12th, 2011 IDE - CB was not generating the -MExtended flag for the XM192 devices and hence ijmp was used incorrectly instead of eijmp Compiler - MISRA changes accidentally disabled some of the bit operation optimizations - more MISRA check tweaks V8.02.03 - March 25th, 2011 Compiler - MISRA check changes V8.02.02 - Feb 18th, 2011 ASM - Some experimental build of the asm crept in 8.02.01 and causes some random errors with long file name and .define of registers. Reverted to the baseline assembler V8.02.01 - Feb 2nd, 2011 IDE - fixed incorrect version display - added device entry for ATMega128RFA1 Compiler - fixed a bitfield compiler assertion fail error introduced in 8.02 MISRA checks Header Files - added iom128rfa1v.h for ATMega128RFA1 V8.02 - Jan 5th 2011 Compiler - Enabled MISRA/Lint checks (ADV and PRO licenses only) - Added anonymous union/struct support, thus allowing Atmel XMega sample code for the IO registers to work without changes. This is enabled only if the Project->Build Options->Compiler->Extension Flag is enabled. Header Files - Atmel compatble XMega header files that use anonymous union/struct. V8.01.07 - Nov 30th 2010 CodeBlocks IDE - "Custom" device setting was not memorizing all of the target attributes Header Files - 8.01.06 was missing some AVR header files: avrdef.h, macros.h, eeprom.h and spi.h V8.01.06 - Nov 4th 2010 CodeBlocks IDE - Changed how the IDE handles compiler generated files (.lst, .mak etc.) Header Files - Latest release with bug fixes V8.01.05 - July 22nd 2010 - Digitally signed all compiler .exe with ImageCraft certificate Linker - Code compression was accidentally disabled in 8.01.04 V8.01.04 - July 5th 2010 Compiled all executables (except C::B) under VS2008 using static link libraries to avoid DLL dependency. CodeBlocks IDE - fixed bugs relating to project path with spaces - changes to Compiler option tab to support (future) optimizations Compiler - fixed a source merge issue where local variable lifetime may be computed incorrectly and thus caused variables to be allocated incorrectly. Linker - (PRO only) enabled BETA feature of dead code elimination. V8.01.03 - June 15th 2010 CodeBlocks IDE - fixed and optimized interface to STK500.exe - fixed a number of bugs relating to the compiler interface and map file summary Updated AVR header files Linker - fixed a temporary file error under Vista V8.01.02 - June 3rd 2010 Fixed Help files not installed correctly problem CodeBlocks IDE - fixed interface to STK500.exe - updated MapFileSummary program - updated examples.avr V8.01.01 - May 17th, 2020 CodeBlocks IDE - 8.01 C::B introduced some slowness when you have a workspace with a lot of projects, fixed. - miscellaneous bug fixes and optimizations. V8.01 - May 6th, 2010 Fixed a bunch of CodeBlocks bugs, including: - project with spaces in path now generates correct debug files. - map file summary now works correctly. Fixed some minor linker issues. V8.00.01 - April 20th, 2010 A build problem caused ilinkavr.exe not to run on some XP machines. V8.00 - April 19th, 2010 First V8 product release.