mac-rom-simm-programmer/hal/at90usb646/LUFA/DoxygenPages/DirectorySummaries.txt
Doug Brown 7425af761a Break out code into a HAL, optimize flash operations
This makes the code pretty easily portable to other architectures if someone
wants to make a more modern SIMM programmer. I also was pretty careful to split
responsibilities of the different components and give the existing components
better names. I'm pretty happy with the organization of the code now.

As part of this change I have also heavily optimized the code. In particular,
the read and write cycle routines are very important to the overall performance
of the programmer. In these routines I had to make some tradeoffs of code
performance versus prettiness, but the overall result is much faster
programming.

Some of these performance changes are the result of what I discovered when
I upgraded my AVR compiler. I discovered that it is smarter at looking at 32-bit
variables when I use a union instead of bitwise operations.

I also shaved off more CPU cycles by carefully making a few small tweaks. I
added a bypass for the "program only some chips" mask, because it was adding
unnecessary CPU cycles for a feature that is rarely used. I removed the
verification feature from the write routine, because we can always verify the
data after the write chunk is complete, which is more efficient. I also added
assumptions about the initial/final state of the CS/OE/WE pins, which allowed me
to remove more valuable CPU cycles from the read/write cycle routines.

There are also a few enormous performance optimizations I should have done a
long time ago:

1) The code was only handling one received byte per main loop iteration. Reading
   every byte available cut nearly a minute off of the 8 MB programming time.
2) The code wasn't taking advantage of the faster programming command available
   in the chips used on the 8 MB SIMM.

The end result of all of these optimizations is I have programming time of the
8 MB SIMM down to 3:31 (it used to be 8:43).

Another minor issue I fixed: the Micron SIMM chip identification wasn't working
properly. It was outputting the manufacturer ID again instead of the device ID.
2020-11-27 00:16:35 -08:00

255 lines
14 KiB
Plaintext

/** \file
*
* This file contains special DoxyGen information for the generation of the main page and other special
* documentation pages. It is not a project source file.
*/
/** \dir LUFA/Common
* \brief Common library header files.
*
* This folder contains header files which are common to all parts of the LUFA library. They may be used freely in
* user applications.
*
* \dir LUFA/Drivers
* \brief Library hardware and software drivers.
*
* This folder contains all the library hardware and software drivers for each supported board, architecture and
* microcontroller model.
*
* \dir LUFA/Drivers/Misc
* \brief Miscellaneous driver files.
*
* This folder contains drivers for aspects other than the USB interface, board hardware or microcontroller peripherals.
*
* \dir LUFA/Drivers/Peripheral
* \brief Microcontroller peripheral driver files.
*
* This folder contains drivers for various low level microcontroller peripherals, usually located on the microcontroller
* die within the same physical chip.
*
* \dir LUFA/Drivers/USB
* \brief USB controller peripheral driver files.
*
* This folder contains the complete LUFA USB stack and controller files, including the core driver and stack, as well
* as the USB class driver implementations.
*
* \dir LUFA/Drivers/USB/Core
* \brief Core USB driver files.
*
* This folder contains the core USB stack and controller driver files, to correctly implement USB functionality on the
* target architecture and microcontroller model. This
*
* \dir LUFA/Drivers/USB/Class
* \brief USB Class helper driver files.
*
* This folder contains drivers for implementing functionality of standardized USB classes. These are not used directly by the library,
* but provide a standard and library-maintained way of implementing functionality from some of the defined USB classes without extensive
* development effort. Is is recommended that these drivers be used where possible to reduce maintenance of user applications.
*
* \dir LUFA/Drivers/USB/Class/Device
* \brief USB Device Class helper driver files.
*
* Device mode drivers for the standard USB classes.
*
* \dir LUFA/Drivers/USB/Class/Host
* \brief USB Host Class helper driver files.
*
* Host mode drivers for the standard USB classes.
*
* \dir LUFA/Drivers/Board
* \brief Board hardware driver files.
*
* This folder contains drivers for interfacing with the physical hardware on supported commercial boards, primarily from
* the Atmel corporation. Header files in this folder should be included in user applications requiring the functionality of
* hardware placed on supported boards.
*
* \dir LUFA/Drivers/Board/AVR8/ADAFRUITU4
* \brief ADAFRUITU4 board hardware driver files.
*
* This folder contains drivers for hardware on the Adafruit U4 breakout board (http://ladyada.net/products/atmega32u4breakout).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
* \dir LUFA/Drivers/Board/AVR8/ATAVRUSBRF01
* \brief ATAVRUSBRF01 board hardware driver files.
*
* This folder contains drivers for hardware on the Atmel ATAVRUSBRF01 board, as used in several Atmel wireless demo kits. The header
* files in this folder should not be included directly in user applications; the similarly named dispatch header files located in
* the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/BENITO
* \brief BENITO board hardware driver files.
*
* This folder contains drivers for hardware on the Benito boards (http://dorkbotpdx.org/wiki/benito). The header files in this
* folder should not be included directly in user applications; the similarly named dispatch header files located in the parent
* Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/BUMBLEB
* \brief BUMBLEB board hardware driver files.
*
* This folder contains drivers for hardware on the Fletchtronics Bumble-B board (http://fletchtronics.net/bumble-b). The header
* files in this folder should not be included directly in user applications; the similarly named dispatch header files located in
* the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/BUI
* \brief BUI board hardware driver files.
*
* This folder contains drivers for hardware on the Busware BUI (http://www.busware.de/tiki-index.php?page=BUI).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/BLACKCAT
* \brief BLACKCAT board hardware driver files.
*
* This folder contains drivers for hardware on the TCNISO Blackcat USB JTAG (http://www.embeddedcomputers.net/products/BlackcatUSB/.
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/CULV3
* \brief CULV3 board hardware driver files.
*
* This folder contains drivers for hardware on the Busware CUL V3 (http://busware.de/tiki-index.php?page=CUL).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/EVK527
* \brief EVK527 board hardware driver files.
*
* This folder contains drivers for hardware on the Atmel EVK527 development board. The header files in this folder should
* not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory
* should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/JMDBU2
* \brief JM-DB-U2 board hardware driver files.
*
* This folder contains drivers for hardware on the JM-DB-U2 boards (http://u2.mattair.net/). The header files in this folder
* should not be included directly in user applications; the similarly named dispatch header files located in the parent Board
* directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/MAXIMUS
* \brief MAXIMUS board hardware driver files.
*
* This folder contains drivers for hardware on the Maximus boards (http://www.avrusb.com/). The header files in this folder
* should not be included directly in user applications; the similarly named dispatch header files located in the parent Board
* directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/MICROSIN162
* \brief MICROSIN162 board hardware driver files.
*
* This folder contains drivers for hardware on the Microsin AVR-USB162 board (http://microsin.ru/content/view/685/44/). The
* header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/MINIMUS
* \brief MINIMUS board hardware driver files.
*
* This folder contains drivers for hardware on the Minimus boards (http://www.minimususb.com/). The header files in this folder
* should not be included directly in user applications; the similarly named dispatch header files located in the parent Board
* directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/OLIMEX162
* \brief Olimex USB-STK-162 board hardware driver files.
*
* This folder contains drivers for hardware on the Olimex AVR-USB-162 boards (http://www.olimex.com/dev/avr-usb-162.html).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/RZUSBSTICK
* \brief RZUSBSTICK board hardware driver files.
*
* This folder contains drivers for hardware on the Atmel RZUSBSTICK board, as used in the Atmel "Raven" wireless kits. The header
* files in this folder should not be included directly in user applications; the similarly named dispatch header files located in
* the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/SPARKFUN8U2
* \brief SPARKFUN8U2 board hardware driver files.
*
* This folder contains drivers for hardware on the Sparkfun ATMEGA8U2 breakout board (http://www.sparkfun.com/products/10277). The
* header files in this folder should not be included directly in user applications; the similarly named dispatch header files located
* in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/STK525
* \brief STK525 board hardware driver files.
*
* This folder contains drivers for hardware on the Atmel STK525 development board. The header files in this folder should
* not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory
* should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/STK526
* \brief STK526 board hardware driver files.
*
* This folder contains drivers for hardware on the Atmel STK526 development board. The header files in this folder should
* not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory
* should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/TEENSY
* \brief TEENSY board hardware driver files.
*
* This folder contains drivers for hardware on all revisions of the PJRC Teensy boards (http://www.pjrc.com/teensy/). The header
* files in this folder should not be included directly in user applications; the similarly named dispatch header files located
* in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/TUL
* \brief TUL board hardware driver files.
*
* This folder contains drivers for hardware on the Busware TUL (http://busware.de/tiki-index.php?page=TUL).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/UDIP
* \brief UDIP board hardware driver files.
*
* This folder contains drivers for hardware on the Linnix UDIP boards (http://linnix.com/udip/).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/UNO
* \brief UNO board hardware driver files.
*
* This folder contains drivers for hardware on the Arduino Uno boards (http://www.arduino.cc).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/USBFOO
* \brief USBFOO board hardware driver files.
*
* This folder contains drivers for hardware on the USBFOO boards (http://shop.kernelconcepts.de/product_info.php?products_id=102).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/USBKEY
* \brief USBKEY board hardware driver files.
*
* This folder contains drivers for hardware on the Atmel USBKEY demonstration board. The header files in this folder should
* not be included directly in user applications; the similarly named dispatch header files located in the parent Board directory
* should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/USBTINYMKII
* \brief USBTINY-MKII board hardware driver files.
*
* This folder contains drivers for hardware on all revisions of the USBTINY-MKII boards (http://tom-itx.dyndns.org:81/~webpage/).
* The header files in this folder should not be included directly in user applications; the similarly named dispatch header files
* located in the parent Board directory should be included instead.
*
* \dir LUFA/Drivers/Board/AVR8/XPLAIN
* \brief XPLAIN board hardware driver files.
*
* This folder contains drivers for hardware on the Atmel XPLAIN board (all hardware revisions). The header files in this folder
* should not be included directly in user applications; the similarly named dispatch header files located in the parent Board
* directory should be included instead.
*
* \dir LUFA/CodeTemplates
* \brief Code templates for use in LUFA powered applications.
*
* This contains code templates for board drivers, sample LUFA project makefiles and other similar templates that can be copied into
* a LUFA powered application and modified to speed up development.
*
* \dir LUFA/CodeTemplates/DriverStubs
* \brief Driver stub header files for custom boards, to allow the LUFA board drivers to operate.
*
* This contains stub files for the LUFA board drivers. If the LUFA board drivers are used with board hardware other than those
* directly supported by the library, the BOARD parameter of the application's makefile can be set to "USER", and these stub files
* copied to the "/Board/" directory of the application's folder. When fleshed out with working driver code for the custom board,
* the corresponding LUFA board APIs will work correctly with the non-standard board hardware.
*/