STM32 질문/답변

HAL과 LL에 대해 궁금합니다.

horrddi 2 2,621 01.31 15:56

현재 STM32F765ZGTx 칩을 사용중이며 arm기반 프로세서 사용에는 초보입니다.

디버깅과 코드 해석정도로 하고있으며, cubemx에 대해 공부하면서 내부적으로 궁금하여 질문드립니다.
HAL과 LL에 대해 궁금합니다. 또한 static함수의 특징도 알고싶습니다. 지식공유 부탁드립니다.! 

Comments

plainy 02.03 22:57
HAL은 Hardware abstraction layer의 약자로 이름과 같이 H/W계층을 가려주는 역할을 합니다.
여기서 H/W계층은 MCU내부의 Peripheral의 Register들을 의미합니다.
기존 MCU프로그래밍의 경우 내부 Register를 직접 제어하여 프로그래밍 했지만 HAL을 사용할 경우 Register를 제어하는 부분이 모두 Library화 되어 있기 때문에 함수만으로 프로그래밍을 진행할 수 있습니다.

물론 기존 프로그래밍 방식도 함수로 Register를 직접 제어하도록 설계되어 있지만 STM32에서 제공하는 HAL Driver는 좀 더 구조화된 형태의 함수를 제공하고 있어 쉬운 프로그래밍을 가능하게 합니다.

HAL은 STM32의 모든 Series(STM32F0부터 H7까지)용이 제공되고 있습니다. 모든 HAL은 호환성을 가지도록 만들어져 있어 STM32F0을로 제작된 Source를 F7에서도 사용할 수 있습니다.

HAL이 많은 기능을 제공하고 있기 떄문에 쉬운 프로그래밍이 가능하지만 속도가 느리며 프로그램 사이즈가 커진다는 단점도 가지고 있습니다.

이를 위해 ST에서는 Low Level Driver(LL)을 제공하고 있습니다.
LL은 좀더 Simple한 구조로 제작되어 있으며 함수내에서 Register를 직접제어하는 방식으로 구현되어 있습니다.

자세한 내용은 아래 Link의 user manual에 잘 설명되어 있으니 참고하시기 바랍니다.
https://www.st.com/content/ccc/resource/technical/document/user_manual/2f/71/ba/b8/75/54/47/cf/DM00105879.pdf/files/DM00105879.pdf/jcr:content/translations/en.DM00105879.pdf
horrddi 02.07 09:42
좋은 정보 감사합니다. 추가적으로 CubeMX의 Template Setting 기능에 대해서 내용이 이해가 되지않습니다... 지식 공유 부탁드립니다...!
Category
글이 없습니다.
글이 없습니다.
Facebook Twitter GooglePlus KakaoStory NaverBand