AT90USBxxx USB Mass storage
Use of this program is subject to Atmel's End User License Agreement.
Please read file lic_page for copyright notice.
This embedded application source code illustrates how to implement a USB mass storage application over the AT90USBxxx controller.
By default the sample code is delivered configured for STK525, but this sample application can be configured for both STK525 or AT90USBKey hardware, see TARGET_BOARD define value in config.h file.
- V2.0.4
USB Device Stack :
- Class MSC :
- Improve MSC compliance
- Add MSC compliance for Linux 2.4 kernel
- V2.0.3
USB Device Stack :
- Improve USB device detach behavior in mode self power
- Fix bug about back drive voltage on D+ after VBus disconnect (USB Certification)
- Remove VBus interrupt (bug IT VBUS, see errata) and manage VBus state by pooling
- Fix bug during attach (the interrupt must be disable during attach to don't freeze clock)
- Class MSC :
- Add write Protect Management under MAC OS
- Fix bug in sense command to support Vista and Windows Seven
- V2.0.2
USB Stack :
- Improve USB protocol for USB chap9 and MSC compliance
- V2.0.1
USB Stack:
- Improve USB protocol for USB chap9 and MSC compliance
- Move VBus interrupt to VBus pooling
- Fix USB constant about Device Status
- Add three possibilities for SN on USB : No SN, Constant SN, Unique SN
- clean stack constant
- Fix inquiry command
- clean and fix specific request
DataFlash driver:
- Add USB Write Protection management on DataFlash
- Fix error on DataFlash I/O initialization
New watchdog driver to control the specific sequence timing
- V2.0.0 and before
First releases
This source code is usable with the following compilers:
- IAR Embedded Workbench (5.11A and higher)
- AVRGCC (WinAVR 20080411 and higher).
Support for other compilers may required modifications or attention for:
- compiler.h file
- special registers declaration file
- interrupt subroutines declarations
As illustrated in the figure bellow, the application entry point is located is the main.c file. The main function first performs the initialization of a scheduler module and then runs it in an infinite loop. The scheduler is a simple infinite loop calling all its tasks defined in the conf_scheduler.h file. No real time schedule is performed, when a task ends, the scheduler calls the next task defined in the configuration file (conf_scheduler.h).
The sample dual role application is based on two different tasks:
- The usb_task (usb_task.c associated source file), is the task performing the USB low level enumeration process in device mode.
- The storage task performs SCSI bulk only protocol decoding and performs flash memory access.
Generated on Mon Sep 14 13:26:38 2009 for ATMEL by
1.5.3