|
| 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 | + |
| 135 | +* Release 2007-03-29 |
| 136 | + |
| 137 | + - New configuration option "USB_PUBLIC" in usbconfig.h. |
| 138 | + - Set USB version number to 1.10 instead of 1.01. |
| 139 | + - Code used USB_CFG_DESCR_PROPS_STRING_DEVICE and |
| 140 | + USB_CFG_DESCR_PROPS_STRING_PRODUCT inconsistently. Changed all occurrences |
| 141 | + to USB_CFG_DESCR_PROPS_STRING_PRODUCT. |
| 142 | + - New assembler module for 16.5 MHz RC oscillator clock with PLL in receiver |
| 143 | + code. |
| 144 | + - New assembler module for 16 MHz crystal. |
| 145 | + - usbdrvasm.S contains common code only, clock-specific parts have been moved |
| 146 | + to usbdrvasm12.S, usbdrvasm16.S and usbdrvasm165.S respectively. |
| 147 | + |
| 148 | +* Release 2007-06-25 |
| 149 | + |
| 150 | + - 16 MHz module: Do SE0 check in stuffed bits as well. |
| 151 | + |
| 152 | +* Release 2007-07-07 |
| 153 | + |
| 154 | + - Define hi8(x) for IAR compiler to limit result to 8 bits. This is necessary |
| 155 | + for negative values. |
| 156 | + - Added 15 MHz module contributed by V. Bosch. |
| 157 | + - Interrupt vector name can now be configured. This is useful if somebody |
| 158 | + wants to use a different hardware interrupt than INT0. |
| 159 | + |
| 160 | +* Release 2007-08-07 |
| 161 | + |
| 162 | + - Moved handleIn3 routine in usbdrvasm16.S so that relative jump range is |
| 163 | + not exceeded. |
| 164 | + - More config options: USB_RX_USER_HOOK(), USB_INITIAL_DATATOKEN, |
| 165 | + USB_COUNT_SOF |
| 166 | + - USB_INTR_PENDING can now be a memory address, not just I/O |
| 167 | + |
| 168 | +* Release 2007-09-19 |
| 169 | + |
| 170 | + - Split out common parts of assembler modules into separate include file |
| 171 | + - Made endpoint numbers configurable so that given interface definitions |
| 172 | + can be matched. See USB_CFG_EP3_NUMBER in usbconfig-prototype.h. |
| 173 | + - Store endpoint number for interrupt/bulk-out so that usbFunctionWriteOut() |
| 174 | + can handle any number of endpoints. |
| 175 | + - Define usbDeviceConnect() and usbDeviceDisconnect() even if no |
| 176 | + USB_CFG_PULLUP_IOPORTNAME is defined. Directly set D+ and D- to 0 in this |
| 177 | + case. |
| 178 | + |
| 179 | +* Release 2007-12-01 |
| 180 | + |
| 181 | + - Optimize usbDeviceConnect() and usbDeviceDisconnect() for less code size |
| 182 | + when USB_CFG_PULLUP_IOPORTNAME is not defined. |
| 183 | + |
| 184 | +* Release 2007-12-13 |
| 185 | + |
| 186 | + - Renamed all include-only assembler modules from *.S to *.inc so that |
| 187 | + people don't add them to their project sources. |
| 188 | + - Distribute leap bits in tx loop more evenly for 16 MHz module. |
| 189 | + - Use "macro" and "endm" instead of ".macro" and ".endm" for IAR |
| 190 | + - Avoid compiler warnings for constant expr range by casting some values in |
| 191 | + USB descriptors. |
| 192 | + |
| 193 | +* Release 2008-01-21 |
| 194 | + |
| 195 | + - Fixed bug in 15 and 16 MHz module where the new address set with |
| 196 | + SET_ADDRESS was already accepted at the next NAK or ACK we send, not at |
| 197 | + the next data packet we send. This caused problems when the host polled |
| 198 | + too fast. Thanks to Alexander Neumann for his help and patience debugging |
| 199 | + this issue! |
| 200 | + |
| 201 | +* Release 2008-02-05 |
| 202 | + |
| 203 | + - Fixed bug in 16.5 MHz module where a register was used in the interrupt |
| 204 | + handler before it was pushed. This bug was introduced with version |
| 205 | + 2007-09-19 when common parts were moved to a separate file. |
| 206 | + - Optimized CRC routine (thanks to Reimar Doeffinger). |
| 207 | + |
| 208 | +* Release 2008-02-16 |
| 209 | + |
| 210 | + - Removed outdated IAR compatibility stuff (code sections). |
| 211 | + - Added hook macros for USB_RESET_HOOK() and USB_SET_ADDRESS_HOOK(). |
| 212 | + - Added optional routine usbMeasureFrameLength() for calibration of the |
| 213 | + internal RC oscillator. |
| 214 | + |
| 215 | +* Release 2008-02-28 |
| 216 | + |
| 217 | + - USB_INITIAL_DATATOKEN defaults to USBPID_DATA1 now, which means that we |
| 218 | + start with sending USBPID_DATA0. |
| 219 | + - Changed defaults in usbconfig-prototype.h |
| 220 | + - Added free USB VID/PID pair for MIDI class devices |
| 221 | + - Restructured AVR-USB as separate package, not part of PowerSwitch any more. |
| 222 | + |
| 223 | +* Release 2008-04-18 |
| 224 | + |
| 225 | + - Restructured usbdrv.c so that it is easier to read and understand. |
| 226 | + - Better code optimization with gcc 4. |
| 227 | + - If a second interrupt in endpoint is enabled, also add it to config |
| 228 | + descriptor. |
| 229 | + - Added config option for long transfers (above 254 bytes), see |
| 230 | + USB_CFG_LONG_TRANSFERS in usbconfig.h. |
| 231 | + - Added 20 MHz module contributed by Jeroen Benschop. |
| 232 | + |
| 233 | +* Release 2008-05-13 |
| 234 | + |
| 235 | + - Fixed bug in libs-host/hiddata.c function usbhidGetReport(): length |
| 236 | + was not incremented, pointer to length was incremented instead. |
| 237 | + - Added code to command line tool(s) which claims an interface. This code |
| 238 | + is disabled by default, but may be necessary on newer Linux kernels. |
| 239 | + - Added usbconfig.h option "USB_CFG_CHECK_DATA_TOGGLING". |
| 240 | + - New header "usbportability.h" prepares ports to other development |
| 241 | + environments. |
| 242 | + - Long transfers (above 254 bytes) did not work when usbFunctionRead() was |
| 243 | + used to supply the data. Fixed this bug. [Thanks to Alexander Neumann!] |
| 244 | + - In hiddata.c (example code for sending/receiving data over HID), use |
| 245 | + USB_RECIP_DEVICE instead of USB_RECIP_INTERFACE for control transfers so |
| 246 | + that we need not claim the interface. |
| 247 | + - in usbPoll() loop 20 times polling for RESET state instead of 10 times. |
| 248 | + This accounts for the higher clock rates we now support. |
| 249 | + - Added a module for 12.8 MHz RC oscillator with PLL in receiver loop. |
| 250 | + - Added hook to SOF code so that oscillator can be tuned to USB frame clock. |
| 251 | + - Added timeout to waitForJ loop. Helps preventing unexpected hangs. |
| 252 | + - Added example code for oscillator tuning to libs-device (thanks to |
| 253 | + Henrik Haftmann for the idea to this routine). |
| 254 | + - Implemented option USB_CFG_SUPPRESS_INTR_CODE. |
| 255 | + |
| 256 | +* Release 2008-10-22 |
| 257 | + |
| 258 | + - Fixed libs-device/osctune.h: OSCCAL is memory address on ATMega88 and |
| 259 | + similar, not offset of 0x20 needs to be added. |
| 260 | + - Allow distribution under GPLv3 for those who have to link against other |
| 261 | + code distributed under GPLv3. |
| 262 | + |
| 263 | +* Release 2008-11-26 |
| 264 | + |
| 265 | + - Removed libusb-win32 dependency for hid-data example in Makefile.windows. |
| 266 | + It was never required and confused many people. |
| 267 | + - Added extern uchar usbRxToken to usbdrv.h. |
| 268 | + - Integrated a module with CRC checks at 18 MHz by Lukas Schrittwieser. |
| 269 | + |
| 270 | +* Release 2009-03-23 |
| 271 | + |
| 272 | + - Hid-mouse example used settings from hid-data example, fixed that. |
| 273 | + - Renamed project to V-USB due to a trademark issue with Atmel(r). |
| 274 | + - Changed CommercialLicense.txt and USBID-License.txt to make the |
| 275 | + background of USB ID registration clearer. |
| 276 | + |
| 277 | +* Release 2009-04-15 |
| 278 | + |
| 279 | + - Changed CommercialLicense.txt to reflect the new range of PIDs from |
| 280 | + Jason Kotzin. |
| 281 | + - Removed USBID-License.txt in favor of USB-IDs-for-free.txt and |
| 282 | + USB-ID-FAQ.txt |
| 283 | + - Fixed a bug in the 12.8 MHz module: End Of Packet decection was made in |
| 284 | + the center between bit 0 and 1 of each byte. This is where the data lines |
| 285 | + are expected to change and the sampled data may therefore be nonsense. |
| 286 | + We therefore check EOP ONLY if bits 0 AND 1 have both been read as 0 on D-. |
| 287 | + - Fixed a bitstuffing problem in the 16 MHz module: If bit 6 was stuffed, |
| 288 | + the unstuffing code in the receiver routine was 1 cycle too long. If |
| 289 | + multiple bytes had the unstuffing in bit 6, the error summed up until the |
| 290 | + receiver was out of sync. |
| 291 | + - Included option for faster CRC routine. |
| 292 | + Thanks to Slawomir Fras (BoskiDialer) for this code! |
| 293 | + - Updated bits in Configuration Descriptor's bmAttributes according to |
| 294 | + USB 1.1 (in particular bit 7, it is a must-be-set bit now). |
| 295 | + |
| 296 | +* Release 2009-08-22 |
0 commit comments