ASF directory structure
ASF root folder:
avr32/
common/
mega/
sam/
thirdparty/
xmega/
common/*
application/
boards/
components/
drivers/
services/
utils/
applications/
This directory provides application examples that are based on services, components
and drivers modules. These applications are more high level and might have multiple
dependencies into several modules, thus demoing advanced applications like web
server, various USB demos, bootloader, audio player, etc.
boards/
This directory contains the various board definitions for the given architecture. The
board code abstracts the modules above the board from the physical wiring, I/O
initialization, initialization of external devices, etc. The board code will also identify
what board features are available to the modules above.
The board entry point board.h header file used by all applications is located at
common/boards/board.h since it is shared between multiple architectures.
components/
This directory provides software drivers to access external hardware components
such as memory (for example, Atmel DataFlash®
, SDRAM, SRAM, and NAND flash),
displays, sensors, wireless, etc.
The components are placed in the common/ directory if it is shared between the
architectures; otherwise it is placed in the appropriate architecture directory.
drivers/
Each driver is composed of a driver.c and driver.h file that provides low level register
interface functions to access a peripheral or device specific feature. The services and
components will interface the drivers.
services/
This directory will provide more application oriented software such as a USB classes,
FAT file system, architecture optimized DSP library, graphical library, etc.
The services are placed in the common/ directory if it is shared between the
architectures; otherwise it is placed in the appropriate architecture directory.
utils/
This directory provides several linker script files, common files for the build system
and C/C++ files with general usage defines, macros and functions. The utils/ directory
also provide ways to make a common interface for differences between toolchains for
a specific architecture.
The code utilities are placed in the common/ directory if they are shared between the
architectures; otherwise they are placed in the appropriate architecture directory.