Без опису
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  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. 2005-04-01:
  5. - Implemented endpoint 1 as interrupt-in endpoint.
  6. - Moved all configuration options to usbconfig.h which is not part of the
  7. driver.
  8. - Changed interface for usbVendorSetup().
  9. - Fixed compatibility with ATMega8 device.
  10. - Various minor optimizations.
  11. 2005-04-11:
  12. - Changed interface to application: Use usbFunctionSetup(), usbFunctionRead()
  13. and usbFunctionWrite() now. Added configuration options to choose which
  14. of these functions to compile in.
  15. - Assembler module delivers receive data non-inverted now.
  16. - Made register and bit names compatible with more AVR devices.
  17. 2005-05-03:
  18. - Allow address of usbRxBuf on any memory page as long as the buffer does
  19. not cross 256 byte page boundaries.
  20. - Better device compatibility: works with Mega88 now.
  21. - Code optimization in debugging module.
  22. - Documentation updates.
  23. 2006-01-02:
  24. - Added (free) default Vendor- and Product-IDs bought from voti.nl.
  25. - Added USBID-License.txt file which defines the rules for using the free
  26. shared VID/PID pair.
  27. - Added Readme.txt to the usbdrv directory which clarifies administrative
  28. issues.
  29. 2006-01-25:
  30. - Added "configured state" to become more standards compliant.
  31. - Added "HALT" state for interrupt endpoint.
  32. - Driver passes the "USB Command Verifier" test from usb.org now.
  33. - Made "serial number" a configuration option.
  34. - Minor optimizations, we now recommend compiler option "-Os" for best
  35. results.
  36. - Added a version number to usbdrv.h
  37. 2006-02-03:
  38. - New configuration variable USB_BUFFER_SECTION for the memory section where
  39. the USB rx buffer will go. This defaults to ".bss" if not defined. Since
  40. this buffer MUST NOT cross 256 byte pages (not even touch a page at the
  41. end), the user may want to pass a linker option similar to
  42. "-Wl,--section-start=.mybuffer=0x800060".
  43. - Provide structure for usbRequest_t.
  44. - New defines for USB constants.
  45. - Prepared for HID implementations.
  46. - Increased data size limit for interrupt transfers to 8 bytes.
  47. - New macro usbInterruptIsReady() to query interrupt buffer state.
  48. 2006-02-18:
  49. - Ensure that the data token which is sent as an ack to an OUT transfer is
  50. always zero sized. This fixes a bug where the host reports an error after
  51. sending an out transfer to the device, although all data arrived at the
  52. device.
  53. - Updated docs in usbdrv.h to reflect changed API in usbFunctionWrite().
  54. * Release 2006-02-20
  55. - Give a compiler warning when compiling with debugging turned on.
  56. - Added Oleg Semyonov's changes for IAR-cc compatibility.
  57. - Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect()
  58. (also thanks to Oleg!).
  59. - Rearranged tests in usbPoll() to save a couple of instructions in the most
  60. likely case that no actions are pending.
  61. - We need a delay between the SET ADDRESS request until the new address
  62. becomes active. This delay was handled in usbPoll() until now. Since the
  63. spec says that the delay must not exceed 2ms, previous versions required
  64. aggressive polling during the enumeration phase. We have now moved the
  65. handling of the delay into the interrupt routine.
  66. - We must not reply with NAK to a SETUP transaction. We can only achieve this
  67. by making sure that the rx buffer is empty when SETUP tokens are expected.
  68. We therefore don't pass zero sized data packets from the status phase of
  69. a transfer to usbPoll(). This change MAY cause troubles if you rely on
  70. receiving a less than 8 bytes long packet in usbFunctionWrite() to
  71. identify the end of a transfer. usbFunctionWrite() will NEVER be called
  72. with a zero length.
  73. * Release 2006-03-14
  74. - Improved IAR C support: tiny memory model, more devices
  75. - Added template usbconfig.h file under the name usbconfig-prototype.h
  76. * Release 2006-03-26
  77. - Added provision for one more interrupt-in endpoint (endpoint 3).
  78. - Added provision for one interrupt-out endpoint (endpoint 1).
  79. - Added flowcontrol macros for USB.
  80. - Added provision for custom configuration descriptor.
  81. - Allow ANY two port bits for D+ and D-.
  82. - Merged (optional) receive endpoint number into global usbRxToken variable.
  83. - Use USB_CFG_IOPORTNAME instead of USB_CFG_IOPORT. We now construct the
  84. variable name from the single port letter instead of computing the address
  85. of related ports from the output-port address.
  86. * Release 2006-06-26
  87. - Updated documentation in usbdrv.h and usbconfig-prototype.h to reflect the
  88. new features.
  89. - Removed "#warning" directives because IAR does not understand them. Use
  90. unused static variables instead to generate a warning.
  91. - Do not include <avr/io.h> when compiling with IAR.
  92. - Introduced USB_CFG_DESCR_PROPS_* in usbconfig.h to configure how each
  93. USB descriptor should be handled. It is now possible to provide descriptor
  94. data in Flash, RAM or dynamically at runtime.
  95. - STALL is now a status in usbTxLen* instead of a message. We can now conform
  96. to the spec and leave the stall status pending until it is cleared.
  97. - Made usbTxPacketCnt1 and usbTxPacketCnt3 public. This allows the
  98. application code to reset data toggling on interrupt pipes.
  99. * Release 2006-07-18
  100. - Added an #if !defined __ASSEMBLER__ to the warning in usbdrv.h. This fixes
  101. an assembler error.
  102. - usbDeviceDisconnect() takes pull-up resistor to high impedance now.
  103. * Release 2007-02-01
  104. - Merged in some code size improvements from usbtiny (thanks to Dick
  105. Streefland for these optimizations!)
  106. - Special alignment requirement for usbRxBuf not required any more. Thanks
  107. again to Dick Streefland for this hint!
  108. - Reverted to "#warning" instead of unused static variables -- new versions
  109. of IAR CC should handle this directive.
  110. - Changed Open Source license to GNU GPL v2 in order to make linking against
  111. other free libraries easier. We no longer require publication of the
  112. circuit diagrams, but we STRONGLY encourage it. If you improve the driver
  113. itself, PLEASE grant us a royalty free license to your changes for our
  114. commercial license.
  115. * Release 2007-03-29
  116. - New configuration option "USB_PUBLIC" in usbconfig.h.
  117. - Set USB version number to 1.10 instead of 1.01.
  118. - Code used USB_CFG_DESCR_PROPS_STRING_DEVICE and
  119. USB_CFG_DESCR_PROPS_STRING_PRODUCT inconsistently. Changed all occurrences
  120. to USB_CFG_DESCR_PROPS_STRING_PRODUCT.
  121. - New assembler module for 16.5 MHz RC oscillator clock with PLL in receiver
  122. code.
  123. - New assembler module for 16 MHz crystal.
  124. - usbdrvasm.S contains common code only, clock-specific parts have been moved
  125. to usbdrvasm12.S, usbdrvasm16.S and usbdrvasm165.S respectively.
  126. * Release 2007-06-25
  127. - 16 MHz module: Do SE0 check in stuffed bits as well.
  128. * Release 2007-07-07
  129. - Define hi8(x) for IAR compiler to limit result to 8 bits. This is necessary
  130. for negative values.
  131. - Added 15 MHz module contributed by V. Bosch.
  132. - Interrupt vector name can now be configured. This is useful if somebody
  133. wants to use a different hardware interrupt than INT0.
  134. * Release 2007-08-07
  135. - Moved handleIn3 routine in usbdrvasm16.S so that relative jump range is
  136. not exceeded.
  137. - More config options: USB_RX_USER_HOOK(), USB_INITIAL_DATATOKEN,
  138. USB_COUNT_SOF
  139. - USB_INTR_PENDING can now be a memory address, not just I/O
  140. * Release 2007-09-19
  141. - Split out common parts of assembler modules into separate include file
  142. - Made endpoint numbers configurable so that given interface definitions
  143. can be matched. See USB_CFG_EP3_NUMBER in usbconfig-prototype.h.
  144. - Store endpoint number for interrupt/bulk-out so that usbFunctionWriteOut()
  145. can handle any number of endpoints.
  146. - Define usbDeviceConnect() and usbDeviceDisconnect() even if no
  147. USB_CFG_PULLUP_IOPORTNAME is defined. Directly set D+ and D- to 0 in this
  148. case.
  149. * Release 2007-12-01
  150. - Optimize usbDeviceConnect() and usbDeviceDisconnect() for less code size
  151. when USB_CFG_PULLUP_IOPORTNAME is not defined.
  152. * Release 2007-12-13
  153. - Renamed all include-only assembler modules from *.S to *.inc so that
  154. people don't add them to their project sources.
  155. - Distribute leap bits in tx loop more evenly for 16 MHz module.
  156. - Use "macro" and "endm" instead of ".macro" and ".endm" for IAR
  157. - Avoid compiler warnings for constant expr range by casting some values in
  158. USB descriptors.
  159. * Release 2008-01-21
  160. - Fixed bug in 15 and 16 MHz module where the new address set with
  161. SET_ADDRESS was already accepted at the next NAK or ACK we send, not at
  162. the next data packet we send. This caused problems when the host polled
  163. too fast. Thanks to Alexander Neumann for his help and patience debugging
  164. this issue!
  165. * Release 2008-02-05
  166. - Fixed bug in 16.5 MHz module where a register was used in the interrupt
  167. handler before it was pushed. This bug was introduced with version
  168. 2007-09-19 when common parts were moved to a separate file.
  169. - Optimized CRC routine (thanks to Reimar Doeffinger).
  170. * Release 2008-02-16
  171. - Removed outdated IAR compatibility stuff (code sections).
  172. - Added hook macros for USB_RESET_HOOK() and USB_SET_ADDRESS_HOOK().
  173. - Added optional routine usbMeasureFrameLength() for calibration of the
  174. internal RC oscillator.
  175. * Release 2008-02-28