 안녕하세요 이번 시간에는 stm3e 큐브로 만들어진 어플리케이션을 다른 stm3e 시리즈로 변과하는 방법에 대해서 설명하겠습니다. stm3e 큐브에 대해 잘 모르시는 분들은 아래 주소에 있는 유튜브 채널에서 큐브 MX 동영상을 먼저 시청하시기 부탁드립니다. 앞으로 설명들을 stmCU 및 뉴클레오보드와 관련된 다양한 동영상 자료들도 함께 찾아 보실 수 있습니다. 오늘 설명에는 iar컴파일러와 stm3e 뉴클레오보드 그리고 x 뉴클레오 익스펜션 보드를 사용할 예정입니다. 왼쪽에는 뉴클레오보드는 아드위노와 모포 커넥터를 지원하는 개발보드로 usb 전원을 사용하며 stlink 디버거를 내장하고 있어서 빠른 개발 환경 구축과 구현에 유용합니다. 오른쪽에 있는 x 뉴클레오 확장 보드는 아드위노 실도 호환 보드로 뉴클레오보드 위에 꽂아서 사용하실 수 있습니다. 블루투스, 와이파이, NFC, 모터 제어된 것 같은 다양한 종류 확장 보드가 준비되어 있으며 오늘 사용할 보드는 근접 센서, 조도 센서 등의 역할을 하는 st사의 vl6180s 센서를 탑재하고 있습니다. 우선 st on페이지에서 x 뉴클레오로 검색을 해서 vl6180s 센서가 있는 확장 보드를 젖어서 클릭합니다. 클로를 하면 stm32cube Software를 찾아보실 수 있습니다. 다운로드를 받아서 앞쪽을 풀고 프로젝트를 실행해 보겠습니다. 프로젝트의 멀티, 어플리케이션 vl6180x 제스처 지텍트 1에 있는 iar 프로젝트를 열어서 컴파이를 해보겠습니다. 리벨드 5를 하면 정상적으로 L 없이 빌드 되는 것을 확인하실 수 있습니다. 실제로 보드를 usb로 연결해서 폼웨어 다운로드를 해보겠습니다. 이 예지커드는 stm32f401 기반의 뉴클레오보드로 작성되어 있는데 이제 stm32l-053용으로 프로젝트를 변경해 보겠습니다. 다운로드 받으신 소스에는 stm32l-053용 파일도 같이 제공하고 있는데 이런 파일들이 없다는 가정에 진행하도록 하겠습니다. 첫 번째로 타겟 디바이스를 stm32l-053로 변경합니다. 프로젝트 옵션에 있는 디바이스를 stm32l-053x 파일로 변경합니다. 두번째로 초기화코드를 담고 있는 startup.s 파일을 바꿔주고 cmsc수와 hall library도 바꿔줍니다. low-level 초기화 파일인 msp.c 파일과 interrupt 파일인 it.c 파일도 바꿔줍니다. 자 이제 본격적으로 파일을 수정해 보겠습니다. startup.s 파일의 상위 폴더를 오른쪽 클릭하고 ad files를 눌러서 drivers, cmsc수, device, st, l0, source, template iar 폴더에 있는 32l-053용 startup 파일을 선택합니다. 이전에 있던 사공의 파일은 exclude from build를 하거나 또는 remove를 합니다. 다음으로 src 폴더에 있는 it.c 파일과 msp.c 파일을 이전에 있던 f4용 파일을 복사 보처넣기 한 후에 파일 이름을 f4에서 l0로 바꿔줍니다. 다시 상위 폴더를 오른쪽 클릭해서 ad files로 조금 전 만들어 놓은 l0용 파일들을 추가해 줍니다. 이전에 있던 f4용 파일들은 제거하겠습니다. 유저 폴더네이 파일들에 있는 include 이름들도 f4에서 l0로 바꿔줍니다. cmsc수 파일의 경우 drivers, cmsc수, device, st, l0, source, template 폴더에 있는 l0 파일로 교체해 줍니다. driver 폴더에서 ad groups를 해서 l0용 파일 드라이버 폴더를 생성합니다. 이전에 있던 f4용 파일 드라이버 폴더는 제거하고 ad files로 driver l0 파일 드라이버 src 폴더에는 파일 전체를 선택해서 추가합니다. 마지막으로 include 폴더에 있는 f4용 hcmsc.h 파일과 it.h 파일을 복사 붙여넣게 한 후에 파일 이름을 f4에서 l0로 바꿔줍니다. 파일 앱에 있는 f4 구문을 l0로 바꿔주고 파일 드라이버 모듈에 따른 include 파일 이름도 f4에서 l0로 교체해 줍니다. 다른 l0 az 프로젝트에 있는 내용을 붙여넣겠습니다. 프로젝트 옵션의 프리 프로세스에 선언된 include 파일들의 패스 설정과 symbol define을 f4에서 l0로 교체합니다. 자, 이제 컴파일을 하면 크게 두 가지 에러가 발생합니다. stm32l053mcun에만 사용되는 선언문이 포함되어 있지 않아서 발생하는 에러인데요. 디폴트 값으로 선언해주고 다시 컴파일을 하면 에러가 없어집니다. 펌웨어 다운로드 후 뉴클레오 보드에서 실제 동작하는 영상을 보시겠습니다. 왼쪽에 보이는 32f401 보드에 손을 가까이 되면 근접 센서 값이 변하는 것을 보실 수 있습니다. 오른쪽에 보이는 32l053 보드에 앞에서 작업한 펌웨어를 다운로드하고 테스트를 해보면 정상 동작하는 것을 확인하실 수 있습니다. 앞에서 말씀드린 내용을 정리하면 우선 프로젝트 옵션에서 타겟 디바이스를 변경해주고 다음으로 타겟 디바이스와 관련된 파일들을 변경해줍니다. 첫째로 EWM은 IAR컴파일러와 연관된 파일로 만약에 칼이나 GCC같은 다른 컴파일러를 사용한다면 다른 파일로 변경이 필요합니다. 둘째로 유저코드에서 디바이스와 관련된 파일들 예를 들어 EWM 파일, HAL 드라이버 설정 파일, 하드웨어 초기업 파일들에서 디바이스 관련 내용을 찾아서 변경해줍니다. 셋째로 디바이스의 코텍스코어 종류와 관련된 심시스파이를 변경해주고 넷째로 HAL 드라이버 파일을 디바이스에 맞게 변경해줍니다. 추가로 다른 디바이스와 호환되지 않는 기능이나 특성이 있는 경우 찾아서 변경해줍니다. 마지막으로 Include 파일의 패스와 신보를 프로젝트 옵션에서 찾아서 변경하면 되겠습니다. 이상으로 설명을 마치겠습니다. 감사합니다.