| 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 | 
          |