ZDS II - Crimzon(TM) Emulator 4.9.3 (Build 06081404) ============================================================================== Thank you for purchasing ZiLOG's Crimzon(TM) Emulator kit for the Crimzon(TM) product line. The following features are provided in this release: - ZDS II Integrated Development Environment (ZDS IDE) - Crimzon(TM) language tools including compiler, assembler, linker/locator, and librarian - Instruction Set Simulator and disassembler - Crimzon(TM) OTP Device Programmer - Technical Documentation provided on the CD-ROM Note: The technical documentation supplied on this CD-ROM is available in PDF format. This format requires that Acrobat Reader be installed on the host machine. Acrobat Reader is available on this CD-ROM and is available free on the Adobe website at www.adobe.com. In the event of a component problem, please complete the Problem Report Form and submit it with your request. The form is located on the CD and in the installation directory of your hard drive. Our staff will use the information to diagnose or log the problem. Please note the driver name for the emulator has changed and all old projects must be open up and the emulator driver must be reselected even though the correct name is shown. (CR#3476) Contact Information -------------------------------------------------------------------------- ZiLOG Inc. Web Site: http://www.zilog.com Technical Support Channel: http://support.zilog.com Table of Contents -------------------------------------------------------------------------- - Changes from Previous Release - Compatibility - System Requirements - Applications and Other OS issues - Migration Pointers - Precautions and Limitations - Closed Change Requests - Open Change Requests CHANGES FROM PREVIOUS RELEASE ============================================================================== (to 4.9.3) - Corrected support for the ZLR64400 Series ROM devices. (to 4.9.2) - Added ability to place a variable at a given address in C code. (to 4.9.1) - Added support for the ZLR64400 Series ROM devices - Includes the Crimzon(TM) Emulator firmware version 2.1 upgrade (see Closed Change Request 7102). Refer to the upgrade information file for upgrade instructions found in the '\bin\firmware\CrimzonEmulator\' folder. (to 4.9.0) - Added support for the ZLP12840 Series OTP devices - Added support for the ZLR32300 Series ROM devices - Added support for the ZLR16300 Series ROM devices - Only supports the ZLP128ICE01ZEM Emulator - Added support for USB - Added new target manger, refer to the online help for more information - The project, linker, and librarian command file extensions were changed to *.zdsproj, *.linkcmd and *.libcmd respectively. - Added support for Standard and Assembly-only project types - New document: detailed compiler ANSI compliance document - Added an option to generate printfs inline, which will reduce total code size in many applications. See the ZDS II User Manual - Enhanced the command processor language. - The Project Settings Target tab was removed. The Object Sizes section was moved to the C compiler tab and the Memory information was moved to the Linker tab in the Address spaces category. - Added a checksum calculator to the tools menu. - Added view/edit memory feature in the OTP dialog. - Added checksum after OTP read or verify - Trace timestamp base units changed to CPU cycles. - Added assembler and compiler support for the new memory spaces provided in the ZLP12840 including runtime library extensions. - Several change Requests have been addressed. Refer to the Closed Change Requests section. COMPATIBILITY ============================================================================== Devices -------------------------------------------------------------------------- ZLP12840 Series: ZLP12840XXX32, ZLP12840XXX64, ZLP12840XXX96, ZLP12840XXX28* ZLP32300 Series: ZLP32300XXX04, ZLP32300XXX08, ZLP32300XXX16, ZLP32300XXX32 ZLR64400 Series: ZLR64400XXX32, ZLR64400XXX64 ZLR32300 Series: ZLR32300X4804, ZLR32300X4808, ZLR32300X4816, ZLR32300XXX24, ZLR32300XXX32 ZLR16300 Series: ZLR16300XXX01, ZLR16300XXX02, ZLR16300XXX04, ZLR16300XXX08, ZLR16300XXX16 *128K device Please refer to the Project>Settings>General>CPU selection for the latest supported devices. In-Circuit Debuggers/Programmers -------------------------------------------------------------------------- Crimzon(TM) Emulator (ZLP128ICE01ZEM), Simulator Support for the ZLP323ICE01ZEM no longer provided (Please refer to the Project>Settings>Debugger Tab for the latest updates.) SYSTEM REQUIREMENTS ============================================================================== Supported Operating Systems -------------------------------------------------------------------------- Windows XP Professional, Windows 2000 SP4, Windows 98 SE, Windows NT 4.0 SP6 Recommended Host System Configuration -------------------------------------------------------------------------- Windows XP Professional Pentium III 500MHz processor or higher 128 MB RAM or more 100 MB hard disk space (includes Application and Documentation) Super VGA Video Adapter CD-ROM for installation USB High-Speed port (when using Crimzon(TM) Emulator in USB mode) RS232 communication port with hardware flow control Internet browser (Internet Explorer or Netscape) Minimum Host System Configuration -------------------------------------------------------------------------- Windows 98 SE or Windows NT 4.0 SP6 Pentium II 233MHz processor 96 MB RAM 25 MB hard disk space (only includes Application) Super VGA Video Adapter CD-ROM for installation Ethernet 10Base-T compatible connection RS232 communication port with hardware flow control Internet browser (Internet Explorer or Netscape) Crimzon(TM) Emulator -------------------------------------------------------------------------- Emulation Image 51.51 Communication Firmware 2.1 (2.0 may be used for ZLP12840 emulation only) RS232 Communication port (for configuration and firmware upgrade) Hi-Speed USB (fully compatible with original USB) Ethernet 10Base-T compatible connection USB DRIVER INSTALLATION INSTRUCTIONS ============================================================================== The USB driver may be found on the CD-ROM or in the ZDS II installation directory. USB Driver, Version 1.0.0 or later Windows XP -------------------------------------------------------------------------- 1. Connect the Crimzon(TM) Emulator to the Host PC (The Found New Hardware Wizard should activate automatically after connecting the hardware for the first time; Select "No, not at this time" if asked to connect to Windows Update) 2. Select "Install from a list or specific location (Advanced)" and click Next (If the Windows Logo testing dialog appears, select Continue Anyway) 3. Select "Search for the best driver in these locations." and "Include this location in search:" then Locate the following directory and Click Next: \device drivers\USB 4. Click Next after the appropriate driver information has been found 5. Click Finish to complete the installation Windows 2000 -------------------------------------------------------------------------- 1. Connect the Crimzon(TM) Emulator to the Host PC (The Found New Hardware Wizard should activate automatically after connecting the hardware for the first time) 2. Click Next in the Found New Hardware Wizard after it has been activated 3. Select "Search for a suitable driver for my device (Recommended)" and click Next 4. Select "Specify a location" and click Next 5. Locate the following directory and Click OK: \device drivers\USB 6. Click Next after the appropriate driver information has been found 7. Click Finish after the Wizard finishes the installation Windows 98SE -------------------------------------------------------------------------- 1. Connect the Crimzon(TM) Emulator to the Host PC (The Add New Hardware Wizard should activate automatically after connecting the hardware for the first time) 2. Click Next in the Add New Hardware Wizard after it has been activated 3. Select "Search for the best driver for your device (Recommended)" and click Next 4. Select "Specify a location:" locate the following directory and Click Next: \device drivers\USB 5. Click Next after the appropriate driver information has been found 6. Click Finish after the Wizard finishes the installation APPLICATION AND OTHER OS ISSUES ============================================================================== 1. Apply the latest Windows updates to the host system when appropriate. 2. ZDS II will terminate an active target connection when the host goes into Stand by or Hibernate. MIGRATION POINTERS ============================================================================== 1. If the user is utilizing a custom link file and wishes to change to a different processor or processor family the linker file must be updated manually. 2. C function calls have now been optimized for size. If C source files are used, the user must now select the "Include C Run-Time Libraries" option located in the linker tab or include the 'lib\frame.obj' file in the Object/library modules field. Including the frame object alone does not allow the linker to reference other library functions. 3. The project, linker and librarian command file extensions were changed to *.zdsproj, *.linkcmd and *.libcmd respectively. 4. When opening a project file from a previous version of ZDS, a conversion utility will be launched. Use the conversion utility to create the new project file used by this version of ZDS. After the conversion is complete, configure the new projects debugger/target. Refer to the FAQs for more information about creating your own target. If the 'Use C runtime' options is set in the project being converted, the converted project will be of the Assemply-only type. Note that the old project file will not be modified in case the previous version of ZDS is needed. 5. When using the new "Generate Printfs Inline" option on the Project > Settings > C > Code Generation page, the total code size of your application will almost certainly decrease as discussed in the ZDS II User Manual, if you call printf() or sprintf() in your code. This is because the library functions linked to your application will be much smaller than if this option (available for the first time in release 4.9.0) is turned off. However, the modules in your code that call printf() or sprintf() will each be slightly larger due to the added inline code that is generated in each module. These small increases are more than made up by the decrease in the library functions. PRECAUTIONS AND LIMITATIONS ============================================================================== Debugger & Programmer -------------------------------------------------------------------------- 1. The USB connection overrides the Ethernet connection on the Emulator. To use Ethernet, ensure that the USB cable is not connected. 2. The OTP programmer is not accessible while the emulator is running in debug mode. 3. Editing and building code while in Debug mode requires that the current debug session end. Restart the debugger, after completing the build, to debug the new code. 4. If the external target clock is removed while it is selected, the external clock must be reapplied or the emulator must be reset before communication can be established. 5. The timers are stopped while the emulator is not running. 6. The simulator is an instruction set simulator without special function register support for performing input/output operations. Therefore the SFR and their related debug windows may not contain accurate or any register information. 7. When plugged into a target, the internal clock is only reliable at 3.3 volts. In addition the target crystal must also be removed. 8. The target processor is not accessible while in STOP or HALT mode, so extra care must be taken when debugging a program that uses STOP or HALT instructions. Please review the "Debugging User Notices and Tips" section in the FAQ for more information. 9. When breaking on an event system trigger, the cycle that causes the trigger is not executed and does not appear in trace. In other words the execution will stop one cycle prior to the trigger cycle. 10. While a STOP or HALT is being stepped, the emulator will run in STOP or HALT mode until the proper recovery method is applied. The ZDS II debugger will indicate that the target is not running if the debug session is continued after the "Target in STOP or HALT mode..." notification. Please review the "Debugging User Notices and Tips" section in the FAQ for more information. 11. The ICEBOX watch-dog timeout period is shorter than specified. The watch-dog timeout (Twdt) period measurements are: WDT Tap| Spec. | ICEBOX WDTMR | Twdt | Twdt [1:0] | (mS) | (mS) ======================= 00 | 5 | 7.2 01 | 10 | 12.5 10 | 20 | 21.5 11 | 80 | 79.5 12. The emulator does not drive the RESET* pin low out to the target during an stop-mode recovery or power-on reset. This is different than the actual chip specification. 13. The behavior of the comparators on the ICE differ from the actual Crimzon(TM) devices. The reason for this is that the ICE uses a discrete LM339 comparator to emulate the Crimzon(TM) device's analog comparator function. The LM339 has a different frequency response characteristic from the Crimzon(TM) device. 14. The emulator is ready for communication after the two front panel LEDs have turned off. This may take 15 seconds. 15. The interrupt controller will not capture requests while the emulator is not running. This may cause the interrupt controller to miss GPIO and UART interrupts while stepping through a program. 16. This ZDS version requires Crimzon(TM) Emulator firmware version 2.1 for ZLx32300 and ZLR16300 device emulation. ZDS will not connect to the emulator if firmware version 2.1 is not correctly installed. 17. When upgrading, create a new target file or modify a distributed target file from the project settings debugger tab instead of copying and pasting a target file from an earlier version. 18. Attempting to program a ROM part with OTP Prgramming feature of the Crimzon(TM) Emulator (ZLP128ICE01ZEM) will damage the emulator hardware. Compiler, Assembler, Linker/Locator, & Librarian -------------------------------------------------------------------------- 1. There is a silicon erratum in the initial version of the ZLP12840 silicon (see the ZiLOG document, "Product Update: Errata for ZLP12840", document UP007301, issue #1: Changing the register pointer causes corruption in locations FC, FD, FE, and FF of banks 1, 2, and 3). This erratum affects the usage of the compiler. When using silicon affected by this erratum, if you have a project that uses both assembly and C code you must never change the value of the RP register; the value set up in the startup module must never be modified for the duration of your application. Failure to adhere to this restriction will result in data corruption. This means that all accesses to RAM outside of RDATA, such as to access the peripheral control registers located in Banks D and F, must be made by using the LDX instruction, rather than by changing the RP to point to those banks and then using the shorter LD instruction. 2. There is another silicon erratum in the initial version of the ZLP12840 silicon (see the ZiLOG document, "Product Update: Errata for ZLP12840", document UP007301, issue #2: Location 04 in bank 0 of the RAM is not accessible using the LDX or LDXI instructions). This erratum affects the usage of the assembler. When using silicon affected by this erratum, the 12-bit address $004 must never be accessed using the LDX or LDXI instructions. Doing so will result in data corruption. Usage of the compiler is not affected by this erratum. 3. Due to CR 6448, reads from EROM may not be interrupt-safe. This problem could arise in either C or assembly code, but is a particular issue in C because the C compiler assumes that the PMPR register is always 0 (i.e. pointed at ROM rather than EROM), except when it briefly modifies it to make an EROM access before restoring the value 0. The trouble occurs because these EROM accesses are not done atomically, so an interrupt that occurs during this period will violate the compiler's assumption that PMPR = 0. Users programming in assembly code may have a different use model for PMPR and will need to take their own steps to ensure interrupt safety in the context of their own design. In C code, the problem will arise if interrupt handlers written in C use the interrupt keyword and also perform reads from ROM space. The manifestation would be that the handler would incorrectly read from EROM space instead. As a workaround, any interrupt handlers with these characteristics should add the following code at the beginning of the handler: #if defined(_ZLP12840) && (__ZDATE__ < 20060000) asm("PUSH %F0"); asm("SPMP #0"); #endif and the following code at the end of the handler: #if defined(_ZLP12840) && (__ZDATE__ < 20060000) asm("POP %F0"); #endif This issue will be fixed in the next release. IDE -------------------------------------------------------------------------- 1. It is recommended to disable anti-virus software while using ZDS II. The scan all files feature makes ZDS II operate extremely slowly. 2. In the Settings > Linker > Input page, if 'Standard' is not selected as the Startup Module, the necessary linker directives are not included in the generated link control file. If you use the 'Included in project' or 'Custom' Startup Module settings AND use the startup source or object provided with the tools (startups.asm or startups.obj), the build results in linker errors/warnings similar to the following example: Linking... WARNING (724) --> Symbol: "__stack" is not defined. WARNING (724) --> Symbol: "__copy_code_to_ram" is not defined. WARNING (724) --> Symbol: "__low_romdata" is not defined. WARNING (724) --> Symbol: "__len_data" is not defined. WARNING (724) --> Symbol: "__low_data" is not defined. WARNING (724) --> Symbol: "__len_bss" is not defined. WARNING (724) --> Symbol: "__low_code" is not defined. WARNING (724) --> Symbol: "__low_bss" is not defined. WARNING (724) --> Symbol: "__len_code" is not defined. WARNING (724) --> Symbol: "__low_romcode" is not defined. To work around this issue, you must add the standard linker directives to the generated link control file via 'Add Directives' on the same settings page. To get the correct directives, set up the project to use the standard startup module and then perform a build. Open the generated link control file (.lnk) and copy everything from 'ORDER FAR_DATA,TEXT' to the second blank line into the Add Directives dialog. The link control file will be generated whether or not the build is successful. Reset your project settings and your build should work. 3. The Motorola S-record format is not supported. Utilities exist to convert files to the S-Record format from one or more of the formats supported by ZDS II. These may be acquired via the Internet using an Internet search site such as Yahoo or Google. CLOSED CHANGE REQUESTS ============================================================================== IDE -------------------------------------------------------------------------- (Fixed in 4.9.0) CR 6097 Option bits not verified after programming CR 4263 ZLP323ICE01ZEM fails OTP programming/RAM CHECKSUM/OTP CHECKSUM if these tasks are performed while debugging. CR 4190 Attempts to edit/write last address location in the memory window generate application error. CR 3888 The "standard start up module" should not be selected as the default during new project creation. Fixed as part of the addition of the Assembly Only project type. CR 3884 Paths longer than the drop down area in the Find In Files dialog are not viewable. CR 3421 After an Emulator reset or an actual PC out of range condition, a -Breakpoint and -PC out of range indicator will be displayed in the debug window. If the program execution stops at a valid breakpoint, the -PC out of range indicator is incorrectly displayed. CR 3275 In the project setting dialog, there are options which are only applicable to C-compiler. Removed when active project is Assembly Only project type. CR 2842 Add use model for creating an Assembly only project. CR 2663 Incorrect or missing line end characters cause syntax or internal error in assembler CR 1245 Editor inserts tabs even when configured to insert spaces Hardware/Firmware -------------------------------------------------------------------------- (Fixed in 4.9.1) CR 7102 The Crimzon(TM) Emulator incorrectly treats CTR3 register bits 3 and 4 as functional bits when emulating the ZLx32300 series device. Assembler -------------------------------------------------------------------------- (Fixed in 4.9.2) CR 8058 Assembler can crash if INCLUDE path is too long. CR 8033 Errors when the $ symbol is used inside a calculation in an EQU statement. CR 4258 When both relocatable and absolute segments are present, the debug line information is corrupted. Compiler -------------------------------------------------------------------------- (Fixed in 4.9.2) CR 7946 Structure members which are rom pointers are not updated correctly in some cases. CR 6736 The compiler does not evaluate preprocessor constant expressions correctly which involve unsigned long values > 0x7FFFFFFFul. CR 6538 Internal error rather than a useful error message on an illegal typedef initialization. CR 6489 Compiler silently generates bad code for variable name 1 character longer than longest supported name. CR 6448 ZLP12840 interrupt routines may cause problems if they read from ROM CR 6328 Compiler issues no warning when a function is passed a near pointer when far pointer was expected. CR 6189 Compiler crashes when a local variable is illegally qualified with 'rom' memory qualifier. CR 6180 When unsigned long values > 0x7FFFFFFFul are converted to floats, converted value is wrongly taken to be negative. CR 5983 Compiler does not ensure atomic update of multi-register volatile variables. CR 5749 The compiler does not support the processing of source files that include spaces in their names. CR 5111 Assignment to a long structure member is incorrect for some optimization settings. CR 4810 Invalid value for "char data0[5*10+50*sizeof(int)];". CR 4010 Write to local static variable incorrectly optimized out for some optimization settings. CR 3686 System include file path not searched when search of local include path fails. CR 2957 The compiler doesn't issue a warning when a function of a non-void return type is missing a return statement. Run-Time Libraries -------------------------------------------------------------------------- (Fixed in 4.9.2) CR 6267 Sprintf prints floating-point values with leading zeroes after the decimal point incorrectly. CR 5900 Sprintf returns wrong value when printing large negative floating-point numbers. OPEN CHANGE REQUESTS ============================================================================== IDE -------------------------------------------------------------------------- CR 6375 The IDE may attempt to set a breakpoint from a previously open project resulting in the error: '[ERROR] Unable to retrieve valid address -- breakpoint not set at line [0] in file' CR 6073 The disassembly window does not reflect run-time code memory changes. Workaround: Use the code memory debug window to read the affected code memory and refresh the disassembly window by entering the desired address.