일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 멤버십
- 고려대학교
- 파이썬
- BAM
- 빅데이터
- 삼성소프트웨어멤버십
- 구글 앱 엔진
- Google App Engine
- 패턴인식
- Python
- 신경회로망
- 삼성
- NarwalFreo
- 물걸레자동세척로봇청소기
- Neural Network
- 동아리
- Friendship
- 신경망
- 가상화
- 나르왈프레오
- hopfield network
- 물걸레로봇청소기추천
- 하이퍼바이저
- 패턴 인식
- Bidirectional Associative Memory
- 인공지능
- 삼성전자 소프트웨어멤버십 SSM
- 증강현실
- 갤럭시탭S8울트라
- SSM
- Today
- Total
정보공간_1
[7기 강남 이학경 ] Cortex-M# (STM32F#)전체 환경 셋팅 본문
[7기 강남 이학경 ] Cortex-M# (STM32F#)전체 환경 셋팅
알 수 없는 사용자 2015. 6. 8. 10:33안녕하세요.
강남 멤버십 이학경 입니다.
이번 포스팅은 마이크로프로세서 시장의 대표 제품인 STM32(Cortex-M#)의 개발 환경셋팅에 대하여 알아보도록 하겠습니다.
STM32프로세서는 기본적으로 CMSIS라이브러리를 통해서 코드 작업을 진행합니다.
IAR컴파일러가 설치되어있다는 가정하여 ST사에서 제공하는 CMSIS라이브러리를 다운받도록합니다.
지속적으로 업데이트 되므로 버전이 계속해서 변하니 포스팅 시점과 글을 읽으시는 시점의 버전 및 경로가 다를 수 있습니다.
ST.com 접속경로
링크
http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890?s_searchtype=keyword
아래의 경로까지만 접속하면
저의 경우는 STM32F4(Cortex-M4)의 CMSIS가 필요했습니다.
Related Tools and Software ->
STSW-STM32065 | STM32F4 DSP and standard peripherals library |
STSW-STM32065 라이브러리 다운
(여러 라이브러리가 있으나 가장 기본이되는 standard 라이브러리를 선택)
stm32f4_dsp_stdperiph_lib.zip 압축을 풀면 stm32f4_dsp_stdperiph_lib 폴더가 생기는데요. C드라이브에 IAR개발환경을 저장할 폴더를 하나 생성하고 stm32f4_dsp_stdperiph_lib폴더명을 STM32F4xx_Library로 변경한 후 안에 넣어줍니다.
아래의 예 처럼 프로젝트폴더 안에 넣어주면 됩니다.
C:\IAR_Project\Project_A
C:\IAR_Project\Project_B
C:\IAR_Project\Project_C
프로젝트마다 라이브러리를 저장해서 넣어주는걸 권장드립니다.
(IAR컴파일러에서 라이브러리 경로설정을 하기 용이 하기 때문)
1) IAR 컴파일러 실행
2) Project -> Create New Project
3) OK 선택
4) 라이브러리가 있는 경로에 원하는 파일명(영문)으로 저장
5) 저장을 누른후 왼쪽에 프로젝트가 생성된 모습
6) Save All 을 눌러서 같은 이름으로 .eww파일 저장
7) 왼쪽의 Workspace에서 File에 프로젝트명을 우클릭
Add-> Add Group 선택하여 폴더 4개 생성
8) 폴더명은 다음과 같이 지정 (CMSIS, EWARM, STM32F4xx_StdPeriph_Driver, User)
9)
CMSIS 폴더 우클릭 Add-Files를 클릭하여
다음경로의 파일을 불러온다.
경로
C:\IAR_Project\Project_CortexM4_#1\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar
해당경로에는 .s 파일이 여러개가 존재하는데 자신이 사용하는 F4계열 칩에 맞는것을 선택하면 됩니다. (startup_xx..xx.s 파일은 칩을 선택하는 기능을 포함합니다.)
아래와 같은 화면이 나오면 선택하여 추가하면 됩니다.
10)
동일한 방법으로 EWARM폴더를 우클릭하여 다음 경로의 파일을 추가시켜 줍니다.
경로
C:\IAR_Project\Project_CortexM4_#1\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates
파일명
system_stm32f4xx.c
아래와 같이 추가된것을 볼수 있습니다.
11)
메모장을 열어 다음 경로에 main.c 파일명으로 저장합니다.
C:\IAR_Project\Project_STMF4 (최상위 경로)
추가한후에 컴파일러의 User폴더에서 main.c파일을 추가해줍니다.
아래와 같이 아무내용이 없는 main문이 추가된것을 볼 수 있습니다.
12)
Cortex-M4(STM32F4)를 사용하기위한 가장 기본적인 파일을 추가 하였습니다.
옵션 설정 (STM32F4-Debug를 우클릭하여 옵션을 선택합니다.)
13) Device에서 해당하는 프로세서를 선택합니다.
14) 프로세서를 선택하고 Fpu에서 VFPv4를 선택 하면 FPU를 사용한다는 의미이다.
None를 선택하면 사용하지 않습니다. - M4를 사용하신다면 선택해주세요.
15) General Options -> Library Configuration -> CMSIS -> Use CMSIS 선택
(DSP라이브러리를 사용할경우 DSP libray 선택)
printf 함수를 사용하려면 Library -> Full 로 선택
16) C/C++ Compiler에서 Optimizations 설정
Level에서 None으로 설정해도되고 High로 설정하여도 무방합니다.
17)
C/C++ Compiler에서 Preprocessor 설정
가장 중요한 부분인데요. 사용하는 라이브러리의 경로를 추가해주는 부분입니다.
경로
$PROJ_DIR$\
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Include
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\STM32F4xx_StdPeriph_Driver\inc
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\STM32F4xx_StdPeriph_Driver\src
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Project\STM32F4xx_StdPeriph_Templates
$PROJ_DIR$\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Include
Defined symbol (미리 정의되어있는 부분)
USE_STDPERIPH_DRIVER
STM32F40XX
18)
Output Converter -> Output 설정 에서 binary 선택, Output file->체크
19)
Debugger ST-LINK 선택 (저는 ST-LINK를 사용하였습니다)
20)
다운로드에서 해당부분 체크
21)
ST-LINK옵션 다음과 같이 선택합니다.
CPU clock : 168Mhz (해당 칩마다 다름)
22)
여기까지 셋팅을 한 후에 아래의 소스를 main문에 복사해서 F7를 눌러 컴파일을 합니다.
#include "stm32f4xx.h"
void main(void)
{
while(1);
}
잘 작동하는것을 확인할수 있습니다.
여기까지가 STMF4를 사용하기위한 최소한의 셋팅이었습니다.
23)
본격적인 CMSIS 라이브러리를 사용하기위해서는 몇가지 라이브러리를 더 추가해 주어야 합니다.
STM32F4xx_StdPeriph_Driver 폴더 우클릭 해당경로의 파일 전체 추가
경로
C:\IAR_Project\Project_CortexM4_#1\Lib\STM32F4xx_DSP_StdPeriph_Lib\Libraries\STM32F4xx_StdPeriph_Driver\src
24)
GPIOA의 작동 확인을 위한 예제소스를 main.c에 복사해서 붙여 넣습니다.
/* 예제소스 */
#include "stm32f4xx.h"
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
void Delay(uint32_t nCount)
{
__IO uint32_t i; //__IO mean volatile
for(i=0; nCount > i; i++);
}
void main(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //structure
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //Pin_Enable
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while(1)
{
GPIO_SetBits(GPIOA, GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); Delay(1000000);
GPIO_ResetBits(GPIOA, GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); Delay(1000000);
}
}
F7를 누르면 다음과 같이 컴파일 에러가 나는것을 확인할수 있는데요.
이는 추가된 fmc 등 여러 라이브러리가 충돌하기 때문입니다.
다음과 같이 우클릭을하고 옵션을 선택한 후에
Exclude form build를 선택합니다. (오른쪽에 빨간 *로 뜨는 모든c파일에 적용)
25)
Exclude form build를 선택하면 회색으로 비활성화 되는것을 확인할 수 있습니다.
다시 F7를 눌러 컴파일을 하면 정상적으로 작동 됩니다.
26)
컴파일이 정상적으로 되었으면 ST-LINK를 이용하여 다운로드를 해봅시다.
오른쪽 상단에 Make & Restart Debugger 를 클릭
27)
다음과 같이 디버깅을 준비하는 화면이 나온다.
Go를 누르면 프로그램을 실행합니다.
/* IAR 컴파일러 기본셋팅 완료 */
여기까지 모든 셋팅이 끝났습니다.
생각보다 손이 많이가고 길었던 작업이엇죠?
이 셋팅을 하기까지 많은 자료조사와 시간이 필요했었는데요.
많은 분들에게 도움이 되었으면 합니다.
감사합니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[7기 수원 박성진] EC2 접속 후 django 설치 (0) | 2015.07.02 |
---|---|
[7기 신촌 박진상] 기계학습 #5 - SVM의 이해와 LibSVM을 이용한 예측기 만들기 (0) | 2015.06.26 |
[7기 강남 이학경] Bluetooth 4.x 버전 및 전력 효율 분석 (0) | 2015.06.08 |
[7기 대구 유용수] IO Completion Port 4장. IOCP구조체와 함수, 실습 (0) | 2015.05.25 |
[7기 대구 유용수] IO Completion Port 3장. 서버모델과 IOCP개념 (0) | 2015.05.25 |