|
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 |
|
297 |
|
298 - Moved first DBG1() after odDebugInit() in all examples. |
|
299 - Use vector INT0_vect instead of SIG_INTERRUPT0 if defined. This makes |
|
300 V-USB compatible with the new "p" suffix devices (e.g. ATMega328p). |
|
301 - USB_CFG_CLOCK_KHZ setting is now required in usbconfig.h (no default any |
|
302 more). |
|
303 - New option USB_CFG_DRIVER_FLASH_PAGE allows boot loaders on devices with |
|
304 more than 64 kB flash. |
|
305 - Built-in configuration descriptor allows custom definition for second |
|
306 endpoint now. |
|
307 |
|
308 * Release 2010-07-15 |
|
309 |
|
310 - Fixed bug in usbDriverSetup() which prevented descriptor sizes above 255 |
|
311 bytes. |
|
312 - Avoid a compiler warning for unused parameter in usbHandleResetHook() when |
|
313 compiler option -Wextra is enabled. |
|
314 - Fixed wrong hex value for some IDs in USB-IDs-for-free.txt. |
|
315 - Keep a define for USBATTR_BUSPOWER, although the flag does not exist |
|
316 in USB 1.1 any more. Set it to 0. This is for backward compatibility. |
|
317 |
|
318 * Release 2012-01-09 |
|
319 |
|
320 - Define a separate (defined) type for usbMsgPtr so that projects using a |
|
321 tiny memory model can define it to an 8 bit type in usbconfig.h. This |
|
322 change also saves a couple of bytes when using a scalar 16 bit type. |
|
323 - Inserted "const" keyword for all PROGMEM declarations because new GCC |
|
324 requires it. |
|
325 - Fixed problem with dependence of usbportability.h on usbconfig.h. This |
|
326 problem occurred with IAR CC only. |
|
327 - Prepared repository for github.com. |
|
328 |
|
329 * Release 2012-12-06 |