| 3331 | kaklik | 1 | This file documents changes in the firmware-only USB driver for atmel's AVR | 
      
        |  |  | 2 | microcontrollers. New entries are always appended to the end of the file. | 
      
        |  |  | 3 | Scroll down to the bottom to see the most recent changes. | 
      
        |  |  | 4 |  | 
      
        |  |  | 5 | 2005-04-01: | 
      
        |  |  | 6 |   - Implemented endpoint 1 as interrupt-in endpoint. | 
      
        |  |  | 7 |   - Moved all configuration options to usbconfig.h which is not part of the | 
      
        |  |  | 8 |     driver. | 
      
        |  |  | 9 |   - Changed interface for usbVendorSetup(). | 
      
        |  |  | 10 |   - Fixed compatibility with ATMega8 device. | 
      
        |  |  | 11 |   - Various minor optimizations. | 
      
        |  |  | 12 |  | 
      
        |  |  | 13 | 2005-04-11: | 
      
        |  |  | 14 |   - Changed interface to application: Use usbFunctionSetup(), usbFunctionRead() | 
      
        |  |  | 15 |     and usbFunctionWrite() now. Added configuration options to choose which | 
      
        |  |  | 16 |     of these functions to compile in. | 
      
        |  |  | 17 |   - Assembler module delivers receive data non-inverted now. | 
      
        |  |  | 18 |   - Made register and bit names compatible with more AVR devices. | 
      
        |  |  | 19 |  | 
      
        |  |  | 20 | 2005-05-03: | 
      
        |  |  | 21 |   - Allow address of usbRxBuf on any memory page as long as the buffer does | 
      
        |  |  | 22 |     not cross 256 byte page boundaries. | 
      
        |  |  | 23 |   - Better device compatibility: works with Mega88 now. | 
      
        |  |  | 24 |   - Code optimization in debugging module. | 
      
        |  |  | 25 |   - Documentation updates. | 
      
        |  |  | 26 |  | 
      
        |  |  | 27 | 2006-01-02: | 
      
        |  |  | 28 |   - Added (free) default Vendor- and Product-IDs bought from voti.nl. | 
      
        |  |  | 29 |   - Added USBID-License.txt file which defines the rules for using the free | 
      
        |  |  | 30 |     shared VID/PID pair. | 
      
        |  |  | 31 |   - Added Readme.txt to the usbdrv directory which clarifies administrative | 
      
        |  |  | 32 |     issues. | 
      
        |  |  | 33 |  | 
      
        |  |  | 34 | 2006-01-25: | 
      
        |  |  | 35 |   - Added "configured state" to become more standards compliant. | 
      
        |  |  | 36 |   - Added "HALT" state for interrupt endpoint. | 
      
        |  |  | 37 |   - Driver passes the "USB Command Verifier" test from usb.org now. | 
      
        |  |  | 38 |   - Made "serial number" a configuration option. | 
      
        |  |  | 39 |   - Minor optimizations, we now recommend compiler option "-Os" for best | 
      
        |  |  | 40 |     results. | 
      
        |  |  | 41 |   - Added a version number to usbdrv.h | 
      
        |  |  | 42 |  | 
      
        |  |  | 43 | 2006-02-03: | 
      
        |  |  | 44 |   - New configuration variable USB_BUFFER_SECTION for the memory section where | 
      
        |  |  | 45 |     the USB rx buffer will go. This defaults to ".bss" if not defined. Since | 
      
        |  |  | 46 |     this buffer MUST NOT cross 256 byte pages (not even touch a page at the | 
      
        |  |  | 47 |     end), the user may want to pass a linker option similar to | 
      
        |  |  | 48 |     "-Wl,--section-start=.mybuffer=0x800060". | 
      
        |  |  | 49 |   - Provide structure for usbRequest_t. | 
      
        |  |  | 50 |   - New defines for USB constants. | 
      
        |  |  | 51 |   - Prepared for HID implementations. | 
      
        |  |  | 52 |   - Increased data size limit for interrupt transfers to 8 bytes. | 
      
        |  |  | 53 |   - New macro usbInterruptIsReady() to query interrupt buffer state. | 
      
        |  |  | 54 |  | 
      
        |  |  | 55 | 2006-02-18: | 
      
        |  |  | 56 |   - Ensure that the data token which is sent as an ack to an OUT transfer is | 
      
        |  |  | 57 |     always zero sized. This fixes a bug where the host reports an error after | 
      
        |  |  | 58 |     sending an out transfer to the device, although all data arrived at the | 
      
        |  |  | 59 |     device. | 
      
        |  |  | 60 |   - Updated docs in usbdrv.h to reflect changed API in usbFunctionWrite(). | 
      
        |  |  | 61 |  | 
      
        |  |  | 62 | * Release 2006-02-20 | 
      
        |  |  | 63 |  | 
      
        |  |  | 64 |   - Give a compiler warning when compiling with debugging turned on. | 
      
        |  |  | 65 |   - Added Oleg Semyonov's changes for IAR-cc compatibility. | 
      
        |  |  | 66 |   - Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect() | 
      
        |  |  | 67 |     (also thanks to Oleg!). | 
      
        |  |  | 68 |   - Rearranged tests in usbPoll() to save a couple of instructions in the most | 
      
        |  |  | 69 |     likely case that no actions are pending. | 
      
        |  |  | 70 |   - We need a delay between the SET ADDRESS request until the new address | 
      
        |  |  | 71 |     becomes active. This delay was handled in usbPoll() until now. Since the | 
      
        |  |  | 72 |     spec says that the delay must not exceed 2ms, previous versions required | 
      
        |  |  | 73 |     aggressive polling during the enumeration phase. We have now moved the | 
      
        |  |  | 74 |     handling of the delay into the interrupt routine. | 
      
        |  |  | 75 |   - We must not reply with NAK to a SETUP transaction. We can only achieve this | 
      
        |  |  | 76 |     by making sure that the rx buffer is empty when SETUP tokens are expected. | 
      
        |  |  | 77 |     We therefore don't pass zero sized data packets from the status phase of | 
      
        |  |  | 78 |     a transfer to usbPoll(). This change MAY cause troubles if you rely on | 
      
        |  |  | 79 |     receiving a less than 8 bytes long packet in usbFunctionWrite() to | 
      
        |  |  | 80 |     identify the end of a transfer. usbFunctionWrite() will NEVER be called | 
      
        |  |  | 81 |     with a zero length. | 
      
        |  |  | 82 |  | 
      
        |  |  | 83 | * Release 2006-03-14 | 
      
        |  |  | 84 |  | 
      
        |  |  | 85 |   - Improved IAR C support: tiny memory model, more devices | 
      
        |  |  | 86 |   - Added template usbconfig.h file under the name usbconfig-prototype.h | 
      
        |  |  | 87 |  | 
      
        |  |  | 88 | * Release 2006-03-26 | 
      
        |  |  | 89 |  | 
      
        |  |  | 90 |   - Added provision for one more interrupt-in endpoint (endpoint 3). | 
      
        |  |  | 91 |   - Added provision for one interrupt-out endpoint (endpoint 1). | 
      
        |  |  | 92 |   - Added flowcontrol macros for USB. | 
      
        |  |  | 93 |   - Added provision for custom configuration descriptor. | 
      
        |  |  | 94 |   - Allow ANY two port bits for D+ and D-. | 
      
        |  |  | 95 |   - Merged (optional) receive endpoint number into global usbRxToken variable. | 
      
        |  |  | 96 |   - Use USB_CFG_IOPORTNAME instead of USB_CFG_IOPORT. We now construct the | 
      
        |  |  | 97 |     variable name from the single port letter instead of computing the address | 
      
        |  |  | 98 |     of related ports from the output-port address. | 
      
        |  |  | 99 |  | 
      
        |  |  | 100 | * Release 2006-06-26 | 
      
        |  |  | 101 |  | 
      
        |  |  | 102 |   - Updated documentation in usbdrv.h and usbconfig-prototype.h to reflect the | 
      
        |  |  | 103 |     new features. | 
      
        |  |  | 104 |   - Removed "#warning" directives because IAR does not understand them. Use | 
      
        |  |  | 105 |     unused static variables instead to generate a warning. | 
      
        |  |  | 106 |   - Do not include <avr/io.h> when compiling with IAR. | 
      
        |  |  | 107 |   - Introduced USB_CFG_DESCR_PROPS_* in usbconfig.h to configure how each | 
      
        |  |  | 108 |     USB descriptor should be handled. It is now possible to provide descriptor | 
      
        |  |  | 109 |     data in Flash, RAM or dynamically at runtime. | 
      
        |  |  | 110 |   - STALL is now a status in usbTxLen* instead of a message. We can now conform | 
      
        |  |  | 111 |     to the spec and leave the stall status pending until it is cleared. | 
      
        |  |  | 112 |   - Made usbTxPacketCnt1 and usbTxPacketCnt3 public. This allows the | 
      
        |  |  | 113 |     application code to reset data toggling on interrupt pipes. | 
      
        |  |  | 114 |  | 
      
        |  |  | 115 | * Release 2006-07-18 | 
      
        |  |  | 116 |  | 
      
        |  |  | 117 |   - Added an #if !defined __ASSEMBLER__ to the warning in usbdrv.h. This fixes | 
      
        |  |  | 118 |     an assembler error. | 
      
        |  |  | 119 |   - usbDeviceDisconnect() takes pull-up resistor to high impedance now. | 
      
        |  |  | 120 |  | 
      
        |  |  | 121 | * Release 2007-02-01 | 
      
        |  |  | 122 |  | 
      
        |  |  | 123 |   - Merged in some code size improvements from usbtiny (thanks to Dick | 
      
        |  |  | 124 |     Streefland for these optimizations!) | 
      
        |  |  | 125 |   - Special alignment requirement for usbRxBuf not required any more. Thanks | 
      
        |  |  | 126 |     again to Dick Streefland for this hint! | 
      
        |  |  | 127 |   - Reverted to "#warning" instead of unused static variables -- new versions | 
      
        |  |  | 128 |     of IAR CC should handle this directive. | 
      
        |  |  | 129 |   - Changed Open Source license to GNU GPL v2 in order to make linking against | 
      
        |  |  | 130 |     other free libraries easier. We no longer require publication of the | 
      
        |  |  | 131 |     circuit diagrams, but we STRONGLY encourage it. If you improve the driver | 
      
        |  |  | 132 |     itself, PLEASE grant us a royalty free license to your changes for our | 
      
        |  |  | 133 |     commercial license. | 
      
        |  |  | 134 |  |