728x90
반응형
이번에는 Spark 모듈의 소스를 바탕으로 메모리 주소를 찾는 법을 알아 봅시다.
아시다시피 STM32의 외부 장치를 사용하기 위해서는 메모리에 직접 접근하여 레지스터를 세팅하여야 합니다. 그렇다면 메모리에는 어떤식으로 접근해야하고 메모리 주소는 어떻게 찾는지 알아봅시다
일단 stm32f10x.h의 RCC_TypeDef 구조체를 살펴봅시다
위에 나타난 화면이 헤더파일 중 RCC_TypeDef의 구조체 입니다.
CR, CFGR등 코어의 레지스터 이름이 많이 보이네요
프로젝트에서 Find를 선택한 후 RCC_TypeDef를 키워드로 찾기를 진행합니다.
RCC에 대한 define을 찾습니다.
RCC_TypeDef 다음 RCC_BASE가 있네요. 이걸 키워드로 Find 하여 다시 거슬러 올라갑시다.
RCC_BASE에 대한 define을 살펴보면 AHBPERIPH_BASE와 1000 주소값을 합쳐놓았습니다.
그렇다면 다시 AHBPERIPH를 찾아봅시다
PERIPH_BASE주소값에 다시 10000을 합쳐놓았습니다
다시 PERIPH_BASE를 키워드로 Find합니다.
PERIPH_BASE는 32비트 값으로 40000000으로 정의 되어있습니다. 여기가 끝인듯 합니다
결론적으로 거꾸로 거슬러 간 내용을 모두 합하면
40000000+20000+1000 = 40021000
데이터 시트를 보면 RCC 값이 0x40021000부터입니다.
코딩된 소스값과 같습니다.
CR 이나 CFGR의 주소값은 0x40021000부터 4바이트의 순서로 증가합니다.
쉽게 생각해서 데이터시트에 표시된 Address offset에 RCC의 주소값을 더하면 해당 레지스터의 주소가 나오게 됩니다.
모듈을 사용할 때 사용하는 레지스터는 거의 Peripheral 영역에 있습니다.
0x40000000부터 0x5fffffff니까 RCC의 경우 여기에 포함되게 되겠습니다.
반응형
'개발' 카테고리의 다른 글
[Spark] 스파크 모듈 개발환경 구축 (0) | 2017.04.18 |
---|---|
[Smartrobot] 아두이노 포팅 (0) | 2017.04.18 |
[STM32] STM32 세미나 (0) | 2017.04.18 |
[STM32] GPIO 사용방법 (0) | 2017.04.18 |
[STM32] keil설정 및 다운로드 (0) | 2017.04.18 |
댓글