201 lines
8.7 KiB
Plaintext
201 lines
8.7 KiB
Plaintext
This file documents changes in the firmware-only USB driver for atmel's AVR
|
|
microcontrollers. New entries are always appended to the end of the file.
|
|
Scroll down to the bottom to see the most recent changes.
|
|
|
|
2005-04-01:
|
|
- Implemented endpoint 1 as interrupt-in endpoint.
|
|
- Moved all configuration options to usbconfig.h which is not part of the
|
|
driver.
|
|
- Changed interface for usbVendorSetup().
|
|
- Fixed compatibility with ATMega8 device.
|
|
- Various minor optimizations.
|
|
|
|
2005-04-11:
|
|
- Changed interface to application: Use usbFunctionSetup(), usbFunctionRead()
|
|
and usbFunctionWrite() now. Added configuration options to choose which
|
|
of these functions to compile in.
|
|
- Assembler module delivers receive data non-inverted now.
|
|
- Made register and bit names compatible with more AVR devices.
|
|
|
|
2005-05-03:
|
|
- Allow address of usbRxBuf on any memory page as long as the buffer does
|
|
not cross 256 byte page boundaries.
|
|
- Better device compatibility: works with Mega88 now.
|
|
- Code optimization in debugging module.
|
|
- Documentation updates.
|
|
|
|
2006-01-02:
|
|
- Added (free) default Vendor- and Product-IDs bought from voti.nl.
|
|
- Added USBID-License.txt file which defines the rules for using the free
|
|
shared VID/PID pair.
|
|
- Added Readme.txt to the usbdrv directory which clarifies administrative
|
|
issues.
|
|
|
|
2006-01-25:
|
|
- Added "configured state" to become more standards compliant.
|
|
- Added "HALT" state for interrupt endpoint.
|
|
- Driver passes the "USB Command Verifier" test from usb.org now.
|
|
- Made "serial number" a configuration option.
|
|
- Minor optimizations, we now recommend compiler option "-Os" for best
|
|
results.
|
|
- Added a version number to usbdrv.h
|
|
|
|
2006-02-03:
|
|
- New configuration variable USB_BUFFER_SECTION for the memory section where
|
|
the USB rx buffer will go. This defaults to ".bss" if not defined. Since
|
|
this buffer MUST NOT cross 256 byte pages (not even touch a page at the
|
|
end), the user may want to pass a linker option similar to
|
|
"-Wl,--section-start=.mybuffer=0x800060".
|
|
- Provide structure for usbRequest_t.
|
|
- New defines for USB constants.
|
|
- Prepared for HID implementations.
|
|
- Increased data size limit for interrupt transfers to 8 bytes.
|
|
- New macro usbInterruptIsReady() to query interrupt buffer state.
|
|
|
|
2006-02-18:
|
|
- Ensure that the data token which is sent as an ack to an OUT transfer is
|
|
always zero sized. This fixes a bug where the host reports an error after
|
|
sending an out transfer to the device, although all data arrived at the
|
|
device.
|
|
- Updated docs in usbdrv.h to reflect changed API in usbFunctionWrite().
|
|
|
|
* Release 2006-02-20
|
|
|
|
- Give a compiler warning when compiling with debugging turned on.
|
|
- Added Oleg Semyonov's changes for IAR-cc compatibility.
|
|
- Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect()
|
|
(also thanks to Oleg!).
|
|
- Rearranged tests in usbPoll() to save a couple of instructions in the most
|
|
likely case that no actions are pending.
|
|
- We need a delay between the SET ADDRESS request until the new address
|
|
becomes active. This delay was handled in usbPoll() until now. Since the
|
|
spec says that the delay must not exceed 2ms, previous versions required
|
|
aggressive polling during the enumeration phase. We have now moved the
|
|
handling of the delay into the interrupt routine.
|
|
- We must not reply with NAK to a SETUP transaction. We can only achieve this
|
|
by making sure that the rx buffer is empty when SETUP tokens are expected.
|
|
We therefore don't pass zero sized data packets from the status phase of
|
|
a transfer to usbPoll(). This change MAY cause troubles if you rely on
|
|
receiving a less than 8 bytes long packet in usbFunctionWrite() to
|
|
identify the end of a transfer. usbFunctionWrite() will NEVER be called
|
|
with a zero length.
|
|
|
|
* Release 2006-03-14
|
|
|
|
- Improved IAR C support: tiny memory model, more devices
|
|
- Added template usbconfig.h file under the name usbconfig-prototype.h
|
|
|
|
* Release 2006-03-26
|
|
|
|
- Added provision for one more interrupt-in endpoint (endpoint 3).
|
|
- Added provision for one interrupt-out endpoint (endpoint 1).
|
|
- Added flowcontrol macros for USB.
|
|
- Added provision for custom configuration descriptor.
|
|
- Allow ANY two port bits for D+ and D-.
|
|
- Merged (optional) receive endpoint number into global usbRxToken variable.
|
|
- Use USB_CFG_IOPORTNAME instead of USB_CFG_IOPORT. We now construct the
|
|
variable name from the single port letter instead of computing the address
|
|
of related ports from the output-port address.
|
|
|
|
* Release 2006-06-26
|
|
|
|
- Updated documentation in usbdrv.h and usbconfig-prototype.h to reflect the
|
|
new features.
|
|
- Removed "#warning" directives because IAR does not understand them. Use
|
|
unused static variables instead to generate a warning.
|
|
- Do not include <avr/io.h> when compiling with IAR.
|
|
- Introduced USB_CFG_DESCR_PROPS_* in usbconfig.h to configure how each
|
|
USB descriptor should be handled. It is now possible to provide descriptor
|
|
data in Flash, RAM or dynamically at runtime.
|
|
- STALL is now a status in usbTxLen* instead of a message. We can now conform
|
|
to the spec and leave the stall status pending until it is cleared.
|
|
- Made usbTxPacketCnt1 and usbTxPacketCnt3 public. This allows the
|
|
application code to reset data toggling on interrupt pipes.
|
|
|
|
* Release 2006-07-18
|
|
|
|
- Added an #if !defined __ASSEMBLER__ to the warning in usbdrv.h. This fixes
|
|
an assembler error.
|
|
- usbDeviceDisconnect() takes pull-up resistor to high impedance now.
|
|
|
|
* Release 2007-02-01
|
|
|
|
- Merged in some code size improvements from usbtiny (thanks to Dick
|
|
Streefland for these optimizations!)
|
|
- Special alignment requirement for usbRxBuf not required any more. Thanks
|
|
again to Dick Streefland for this hint!
|
|
- Reverted to "#warning" instead of unused static variables -- new versions
|
|
of IAR CC should handle this directive.
|
|
- Changed Open Source license to GNU GPL v2 in order to make linking against
|
|
other free libraries easier. We no longer require publication of the
|
|
circuit diagrams, but we STRONGLY encourage it. If you improve the driver
|
|
itself, PLEASE grant us a royalty free license to your changes for our
|
|
commercial license.
|
|
|
|
* Release 2007-03-29
|
|
|
|
- New configuration option "USB_PUBLIC" in usbconfig.h.
|
|
- Set USB version number to 1.10 instead of 1.01.
|
|
- Code used USB_CFG_DESCR_PROPS_STRING_DEVICE and
|
|
USB_CFG_DESCR_PROPS_STRING_PRODUCT inconsistently. Changed all occurrences
|
|
to USB_CFG_DESCR_PROPS_STRING_PRODUCT.
|
|
- New assembler module for 16.5 MHz RC oscillator clock with PLL in receiver
|
|
code.
|
|
- New assembler module for 16 MHz crystal.
|
|
- usbdrvasm.S contains common code only, clock-specific parts have been moved
|
|
to usbdrvasm12.S, usbdrvasm16.S and usbdrvasm165.S respectively.
|
|
|
|
* Release 2007-06-25
|
|
|
|
- 16 MHz module: Do SE0 check in stuffed bits as well.
|
|
|
|
* Release 2007-07-07
|
|
|
|
- Define hi8(x) for IAR compiler to limit result to 8 bits. This is necessary
|
|
for negative values.
|
|
- Added 15 MHz module contributed by V. Bosch.
|
|
- Interrupt vector name can now be configured. This is useful if somebody
|
|
wants to use a different hardware interrupt than INT0.
|
|
|
|
* Release 2007-08-07
|
|
|
|
- Moved handleIn3 routine in usbdrvasm16.S so that relative jump range is
|
|
not exceeded.
|
|
- More config options: USB_RX_USER_HOOK(), USB_INITIAL_DATATOKEN,
|
|
USB_COUNT_SOF
|
|
- USB_INTR_PENDING can now be a memory address, not just I/O
|
|
|
|
* Release 2007-09-19
|
|
|
|
- Split out common parts of assembler modules into separate include file
|
|
- Made endpoint numbers configurable so that given interface definitions
|
|
can be matched. See USB_CFG_EP3_NUMBER in usbconfig-prototype.h.
|
|
- Store endpoint number for interrupt/bulk-out so that usbFunctionWriteOut()
|
|
can handle any number of endpoints.
|
|
- Define usbDeviceConnect() and usbDeviceDisconnect() even if no
|
|
USB_CFG_PULLUP_IOPORTNAME is defined. Directly set D+ and D- to 0 in this
|
|
case.
|
|
|
|
* Release 2007-12-01
|
|
|
|
- Optimize usbDeviceConnect() and usbDeviceDisconnect() for less code size
|
|
when USB_CFG_PULLUP_IOPORTNAME is not defined.
|
|
|
|
* Release 2007-12-13
|
|
|
|
- Renamed all include-only assembler modules from *.S to *.inc so that
|
|
people don't add them to their project sources.
|
|
- Distribute leap bits in tx loop more evenly for 16 MHz module.
|
|
- Use "macro" and "endm" instead of ".macro" and ".endm" for IAR
|
|
- Avoid compiler warnings for constant expr range by casting some values in
|
|
USB descriptors.
|
|
|
|
* Release 2008-01-21
|
|
|
|
- Fixed bug in 15 and 16 MHz module where the new address set with
|
|
SET_ADDRESS was already accepted at the next NAK or ACK we send, not at
|
|
the next data packet we send. This caused problems when the host polled
|
|
too fast.
|
|
|
|
* Release 2008-02-05
|