ATmel studio, ASF compare, HAL vs HPL

There are few people talk about the structure of the atmel studio code set.

I look through the library and the document and give the following result.

http://www.microchip.com/avr-support/advanced-software-framework-(asf)
https://www.microchip.com/mplab/avr-support/advanced-software-framework

Click to access 50002633A.pdf

Advanced Software Framework(ASF) is the framwork used by Mircochip for Atmel product

ASF4 must be used in conjunction with Atmel START, which replaces the ASF Wizard of ASF3.

After configuring in the Atmel START, you can see a list of library inside the folder.

列出磁碟區 Windows 的資料夾 PATH
磁碟區序號為 EE0C-64C1
C:.
├─.atmel-start-backup
├─.atmelstart
├─Config
├─Debug
│ ├─Config
│ ├─Device_Startup
│ ├─examples
│ ├─hal
│ │ ├─include
│ │ ├─src
│ │ └─utils
│ │ ├─include
│ │ └─src
│ ├─hpl
│ │ ├─adc
│ │ ├─core
│ │ ├─dmac
│ │ ├─gclk
│ │ ├─mclk
│ │ ├─osc32kctrl
│ │ ├─oscctrl
│ │ ├─pm
│ │ ├─port
│ │ ├─rtc
│ │ ├─sercom
│ │ ├─systick
│ │ ├─tc
│ │ └─wdt
│ └─hri
├─Device_Startup
├─examples
├─hal
│ ├─include
│ ├─src
│ └─utils
│ ├─include
│ └─src
├─hpl
│ ├─adc
│ ├─core
│ ├─dmac
│ ├─gclk
│ ├─mclk
│ ├─osc32kctrl
│ ├─oscctrl
│ ├─pm
│ ├─port
│ ├─rtc
│ ├─sercom
│ ├─systick
│ ├─tc
│ └─wdt
└─hri

atmel_start_pins.h –> let you find the name of the pin and use it in the program –> \param[in] pin The pin number for device, (const uint8_t pin)

(if middleware is used, it will be the toppest model)
Three main word appear:
• Hardware Abstraction Layer – HAL
Naming convention: HAL functions start with usecase_, for example: adc_dma_driver

• Hardware Proxy Layer – HPL
Naming convention: HPL functions start with _usecase_, for example: _usart_async_init()

• Hardware Register Interface – HRI
accessing the register.

PS, in the utils, it has list, marco, ringbuffer for you to use