이번에는 전에도 게시판에 올렸는데 블루필의 형제인 Black Pill Board에 Mbed Studio에서 Custom Board
Porting를 해 보도록 하겠습니다.
가급적 포팅단계를 상세히 설명하고 자 합니다.
66번 Mbed Custom Board Porting-3 에 회로도 및 자료를 참고하시기 바랍니다.
참고로 블랙보드 필은 LED는 PB_12번에 연결되어 있습니다.
ST-LINK를 사용했으며, 프로그램 라이트는 Mbed Studio에서 라이트 했습니다.
물론 ST-LINK 유틸리티 프로그램에서도 프로그램 라이트 가능 합니다
그러나 이럴경우 2개의 프로그램을 띠워놓아야 하고 이쪽저쪽 이동해야 해서 귀찮고 번거로와 Mbed Studio에서
프로그램 작성, 빌드, 프로그램 라이트 까지 일련의 과정을 한번에 다 하는게 개발 편리상 좋습니다.
포팅순서는 다음과 같습니다.
1. ST LINK를 연결한다
- USB는 ST-LINK 시리얼 번호를 인식하여 표시한다.
2. 이 단계에서는 3가지 방법이 있다.
1). 기존 만들어져 있는(기본 레퍼런스보드= 예) NUCLEO-F103) 프로젝트를 복사 후 프로젝트 이름하고 폴더명을 교체하여
사용하는방법 = 이 경우 디바이스 드라이버 만 등록하면 됨
2). 기존 등록되어 있는 기본 레퍼런스 디바이스를 선택하던지 아님 NUCLEO-F103 보드를 준비하여 연결 후 새로이 디바이스
를 등록한 후 신규 프로젝트를 만들던지,
3). 아예신규로 디바이스를 등록하여 신규프로젝트를 만들던지 = 이 방법으로 실습 함
3. 프로젝트를 만든다.
- 일단 부모계열의 공개된 기본 레퍼런스 보드나 프로세서 칩을 선택한다.
- 여기서는 우리가 사용할 프로세서 는 STM32F103C8T6 보드이니 기본 레퍼런스 보드를
NUCLEO-F103RB를 선택한다(이를 기본으로 상속할 것이다.)
- 이 경우 선택한 워크폴더에 프로젝트 폴더가 생성된다.
3.1) file메뉴의 New Program 선택한다.
3.2) 이글잼플 프로그래밍에서 아무거나 샘플 프로그램을 선택한다(여기선 가장기본인 Blinkey를 선택)
3.3) Program Name를 자신의 용도에 맞게 작성한다.
3.4) Add Program 을 누른다 ==>> 프로젝트 생성 완료 ==>> My_Led5_tg
4. 디비이스를 생성하고 등록한다
4.1) Target 드룹다운 메뉴를 누르면 IC칩 모양의 원형모향의 custom target 버튼을 누른다.
선택되면 파란색으로 변한다.
4.2) USB devicedp ST LINK를 선택한다 = 자동으로 인식 함
4.3) Target name 에 사용하고자 하는 MCU 칩을 작성한다.
여기선 STM32F103C8로 작성한다.
4.4) Bluild target을 부모격인 기본 레퍼런스보드 NUCleo-F103으로 선택한다.
4.5) Display and debug target을 드룹다운 메뉴를 누른 후 아래로 스크루하여 STM32F103C8를 찿아
선택하던지 검색하여 찿아 선택한다.
4.6) 그러면 Debug File이 활성화 된다.
4.7) 다 입력 후 Save All을 누른다. == 디바이스 생성 및 등록이 완료 됨 = 한번 등록된 디바이스는
계속 Mbed stidio에 등록되어 있다.
5. Active Program을 방금 생성한 프로젝트 My_Led5_TG로 선택한다.
6. Target 디바이스를 방금 등록한 STM32F103C8로 선택한다. ==>> 이때 USB ST LINK 시리얼 번호가
자동으로 맴핑되어 방금 등록한 STM32F103C8 디바이스에 자동 맵핑된다.
6.1) Target의 드룹다운 메뉴를 누른 후 아래로 스크루하면서 방금 등록한 STM32F103C8디바이스를
찿아 등록하던지 검색에서 찿아 등록한다.
6.2) 보통은 신규등록 디바이스는 바로밑에 나온다.
7. custom_target.json 파일을 생성한다.
7.1) 드룹다운 메뉴를 누르면 나타나는 IC모양 원형모양 custom target 버튼을 선택한다.
7.2) Build target 드룹다운 박스 옆의 </>모양 박스를 누른다.
선택되면 파란색으로 변한다.
7.3) custom_target. json 파일 작성 에디터가 열리면 다음과 같이 작성 한다.
작성 후 저장하면 메인 트리 파일 내용에 custom_target.json 파일이 생성되어 표시된다.
{
"MY_TARGET": {
"inherits": ["MCU_STM32F103x8"],
"device_name": "STM32F103C8T6",
"config": {
"overrides": {
"clock_src": "USE_PLL_HSE_XTAL|USE_PLL_HSI"
},
"hse_value": {
"value": "8000000",
"macro_name": "HSE_VALUE"
}
적색글씨 부분이 중요함
8. 필요시 다음과 같은 파일도 수정하여 준다. ==>> 이 파일들은 프로젝트의 Target 폴더안의 해당칩 폴더 안에 있다.
==>> 아무것도 수정없이 사용해도 된다. 다만 추가된 기능 위에는
없어진 기능은 안쓰면 되므로 따로 수정안 해도 되나 기본 레퍼런스 보드 나 칩의 상위 기종은 추가된 기능을
사용시에는 다음 파일들을 사용한는 칩에 맞게 수정해 주어야 한다.
==>> 기본 레퍼런스 보드 또는 칩보다 낮은 사양 칩은 수정없이 사용해도 된다. ==>> 그러나 쓰레기 소스코드,
메모리 용량 줄이기, 깔끔한 소스코드...등등 시간되면 기본적으로 수정 해주는게 정석일 것이다.
==>> 그리고 필요시 Target의 폴더안의 폴더명도 선택한 칩 파트명으로 변경해줄 필요도 있다.
PinNames.h
PeripheralPins.c
PeripheralPinMaps.h
system_clock.c
==>> 그리고 필요에 따라선 다음 내용도 확인해 줄 필요가 있다. 컴파일 에러발생시에....
inherits 값은 mbed-os / targets / targets.json 파일에서 개발 보드 MCU와 일치하는 칩 이름이어야합니다.
device_name의 값은 mbed-os / tools / arm_pack_manager / index.json 파일에서 개발 보드 MCU와 일치하는 칩 이름이어야합니다
9. 소스코드를 작성하고 빌드한다.
- 처음 빌드할때는 시간이 좀 걸린다. ==>> 라이브러리 설치하고 전체 빌드하느라
==>> 두번째부터는 수정한 소스코드만 하면 되므로 빠르게 빌드된다.
10. 프로그램을 라이트하고 실행한다.
이로써 저에 목표인 1단계 장벽을 넘었다.
새로운 장으로 세계로 기술이 한단계 더 진보되게 되어 다행이다.
또한 회원들하고도 약속을 지킬 수 잇어 천만다행으로 여기고 더 열심히 노력하여 많은 기술들을 공개하껬다.
이젠 한 걸음 더 나아가 2단계 인 CubeMX 및 STM HAL(LL) 라이브러리하고 Mbed OS 하고 연동하는 걸
해 보도록 하겠다...
근데 2단계 장벽을 넘기전에 먼저 해야 할 단계가 존재한다. 어찌보면 1단계 연장선으로
VS Code + PlatformIO 개발환경을 구축하고자 한다 = 이 개발환경이 제가 추구하고, 구축하고자 하는 최종 개발환경
이기 때문이다. 2단계 목표 포함하여... Arduino하고 라즈베리파이도 마찬가지다.
계속 관심가 응원 부탁드리며 다음회를 기대해 주세요....
ㄹㄹㄹ
}
}
}