본문 바로가기
임베디드SW/TC275 Lite Kit for 임베디드

인피니언 MCU TC275 iLLD 라이브러리를 포팅하는 방법

by 바이너리 임베디드 2021. 11. 21.

iLLD
인피니언 MCU TC275 iLLD 라이브러리를 포팅하는 방법

 

 

저번 포스팅에서는 인피니언 AURIX TC275 Lite Kit 언박싱 해보았습니다.
HighTec IDE 툴을 설치도 해보았습니다.
EVB와 PC를 연결도 시켜보았습니다.
더 나아가 Example 프로젝트를 다운로드까지 해서 main문에 도착해보았습니다.
아직 포스팅을 못 보신 분들을 위해 링크 남겨 드립니다.

인피니언 AURIX MCU TC275 Lite Kit 언박싱

 

인피니언 MCU TC275 Lite Kit EVB 언박싱

자~ 드디어 배송이 완료되었습니다. 지금 이 글이 처음이신 분은 이전 글로 가서 찾아 보시기 바랍니다. https://cookbook.tistory.com/13 임베디드 SW 개발자 되는 방법 바이너리 임베디드를 열며! 바이

cookbook.tistory.com


인피니언 AURIX MCU TC 275 Lite Kit HighTec 설치 (EVB to PC 연결)

 

인피니언 MCU TC275 HighTec IDE Tool로 통합개발환경 만드는 방법

이번에 제시한 "Mission 2. 개발보드와 컴퓨터간 연결하고, HighTec IDE Tool을 사용하여 프로젝트 환경을 만들어보자." 는 난이도가 조금 있었지만 잘 해결해내셨으리라 생각합니다. 그

cookbook.tistory.com



여기까지 오신분들 참 잘하고 계신다고 칭찬드리고 싶습니다!!!
정말 잘하고 계시고 있습니다. 

아자 아자 화이팅!! 

그럼 오늘은 무엇을 해볼까요? 
역시 제일 먼저 해보고 싶은 것은 반짝반짝 작은 별~~ 
LED를 제어해보려고 합니다.
가장 기본이겠죠?ㅎㅎ 
그리고 그냥 단순하게 GPIO를 제어 하는 것이 아니라 iLLD를 사용하여 LED를 제어해보려고 합니다. 
띠용!! 
iLLD?? 이게 무엇일까요? 
자 그럼 이제 알아보도록 합시다.


 

iLLD란 무엇인가?

 

항상 약어의 Full name이 중요하겠죠. 

iLLD는 Infineon Low Level Driver 라고 합니다. 
풀네임을 듣고 나니 감이 오시나요?
그럼 아래 그림을 통해 한번 살펴볼까요?

인피니언 MCU TC275 iLLD 라이브러리를 포팅



오호라, AURIX TriCore MCU Hardware와 Application Layer를 연결해주는 인피니언에서 제공해주는 Low Level Driver를 의미하는군요. 
그렇다면 MCU에서 제공해주는 것(페리페럴)들이 있고 그것을 Application에서 iLLD라는 라이브러리 즉 API를 통해 제어가 가능하다는 뜻이군요. 
MCU에서 제공해주는 것(페리페럴)들은 무엇이 있을까요?
아래 아키텍쳐가 있군요.. 음.. 
모터를 제어하거나 트리거 시그널을 만들어주는 PWM이 기능이 있고 그것을 위한 GTM, GPT12, CCU6이라는 모듈들이 보이는군요. 
Communication을 기능을 위한 I2C, LIN, Ethernet, CAN 모듈들도 보이네요.
Analog 시그널을 Digital로 변환해주는 ADC 모듈들도 보입니다. 
이러한 모듈들을 Application에서 쉽게 접근해서 쓸 수 있는 API들이 주르륵 들어있는 라이브러리를 뜻합니다.
조금은 이해가 되시나요?

인피니언 MCU TC275 iLLD 라이브러리를 포팅



iLLD에 대한 더 자세한 정보를 위한 링크를 남겨드립니다.

iLLD_TC27xD: IFX Low Level Drivers

 

iLLD_TC27xD: IFX Low Level Drivers

Introduction The aim of the IFX Low Level Driver library (iLLD) is to provide access and configuration functions for the integrated peripherals of Infineon microcontrollers - from a simple timer register access up to 3 phases PWM driver for inverter applic

doc.tasking.com


위의 문서를 어떻게 봐야 할지는 차차 실습들을 진행해 보면서 알아가보도록 하겠습니다.


iLLD 다운로드 방법



제일 많은 정보를 얻을수 있는 곳은 인피니언 홈페이지겠죠? 링크
여기서 Training 부분에 보면 TC275_LK라고 써져 있는 것들이 우리가 이용해볼 수 있는 Example 프로젝트입니다.
그중에서 우리는 LED를 Blinky해볼테니까 Blinky_LED_1_KIT_TC275_LK를 들어가 보죠.

인피니언 MCU TC275 iLLD 라이브러리를 포팅



들어가 보니 PPT 슬라이드가 나오는군요.
간단한 소개와 사용방법들이 있는데 정작 우리가 사용할 프로젝트 코드는 어디 있냐는 거죠? 
아하 제일 아래 슬라이드에 나와 있었네요. 아래 링크로 가볼까요? 

 

인피니언 MCU TC275 iLLD 라이브러리를 포팅

 

https://github.com/Infineon/AURIX_code_examples

 

GitHub - Infineon/AURIX_code_examples: This repository contains code example projects for the AURIX™ Development Studio.

This repository contains code example projects for the AURIX™ Development Studio. - GitHub - Infineon/AURIX_code_examples: This repository contains code example projects for the AURIX™ Development ...

github.com

위에 링크로 가보니 Git repository가 나오네요. 
우리는 바로 다운로드해봅시다요.



인피니언 MCU TC275 iLLD 라이브러리를 포팅



폴더 구조를 보니 인피니언 홈페이지에서 Training에 있던 Example Code들이 그대로 들어 있군요. 
그럼 우리가 원하는 프로젝트를 드디어 찾았습니다.

인피니언 MCU TC275 iLLD 라이브러리를 포팅
인피니언 MCU TC275 iLLD 라이브러리를 포팅


그렇다면 1번이 우리가 필요로 하는 iLLD 소스 코드입니다. 
2번은 LED를 깜박깜박하게 할 Application 코드라고 보면 될 것같습니다.
3번은 각각의 코어 Main문이 들어있는 소스고, 4번은 메모리 영역을 잡아주는 링커 파일입니다.
그럼 우리는 현재 HighTec IDE에서 프로젝트를 만들어 보드를 BringUp 한 상태입니다. 
HighTec에서 제공하는 링커스크립트 파일을 이용해 메모리 영역을 잡아주고 main문까지 들어온 상태이니 1번과 2번을 가지고 와서 포팅시켜보죠. 
나중에는 메모리 영역을 파헤쳐보고 우리가 원하는 메모리 영역을 설정해 봅시다. 
그전까지는 제공되는 것을 이용해 보죠. 
뭐든지 천천히 하나씩 하나씩 하다 보면 언젠가는 정복할 수 있겠죠?ㅎㅎ 


HighTec IDE 프로젝트에 iLLD를 포팅해보자!!



HighTec에 만들어 놓았던 프로젝트 폴더에 1번을 복사해오고 src폴더에 2번을 복사해서 넣었습니다.

인피니언 MCU TC275 iLLD 라이브러리를 포팅

이제 여기서 복사는 해왔으니까 빌드를 한번 해보고 어떻게 나오는지를 한번 살표 보죠.
개발함에 있어서 에러 앤 트라이 방법이 아주 중요하답니다.

인피니언 MCU TC275 iLLD 라이브러리를 포팅


빌드 결과를 보아하니 IfxPort.h: No such file or directory.. 음.. 뭘까? 뭘까?
Blinky_LED.c를 컴파일하려고 하는데 IfxPort.h 파일을 참조하려고 하는데 못 찾겠다 꾀꼬리라고 외치는 거군요..
그럼 이렇게 해결해 봅시다.

인피니언 MCU TC275 iLLD 라이브러리를 포팅


우클릭하고 Properties를 들어가서

 

인피니언 MCU TC275 iLLD 라이브러리를 포팅

 



C/C++ General --> Path and symblos --> Add --> Workspce... --> 제일 위 상단에 IfxPort.h 파일이 있는 폴더 트리 구조를 따라가서 찾고 --> OK --> Apply and Close 순서로 진행해 봅시다.
빌드할 때 헤더가 어디 있는지 경로를 찾을 수 있도록 설정하는 부분입니다.
자 그럼 빌드 결과를 볼까요?

 

인피니언 MCU TC275 iLLD 라이브러리를 포팅


오호 아까 전에 봤던 에러가 아닌 다른 에러가 잡혀 있네요. 
그리고 비슷한 에러 문구가 있네요. 
No such file or directory
그럼 위와 같은 방법으로 계속 헤더를 찾을 수 있게 추가해보죠. 
네가 이기나 내가 이기나 한번 끝까지 가 봅시다.

인피니언 MCU TC275 iLLD 라이브러리를 포팅


헉 이번에는 다른 에러가 포착.. 
넌 뭐냐 한번 보자...
흠.. 살펴보니 BSP_DEFAULT_TIMER가 선언이 안되어 있어서 컴파일러가 어찌할 바를 모르고 있네요.
왜 그런지 살펴보니 HighTec에서 제공해주는 bsp.h파일과 iLLD에서 제공해주는 Bsp.h파일이 있어서 똑같은 이름의 파일이 2개가 있군요. 
흠 이럴 땐 iLLD를 앞으로 변경 없이 사용하는 게 중요할 테니 HighTec에서 제공해 주는 bsp.h 파일 이름을 바꾸고 원래 참조하고 있던 녀석들도 바꿔봅시다. 
저는 bsp_hightec.h 파일로 이름을 변경해 주었습니다.

총 추가된 헤더 폴더 항목을 나열해 봅니다.

 

 

인피니언 MCU TC275 iLLD 라이브러리를 포팅



이 정도 추가해주니 빌드가 완료되어 포팅 가능해졌네요.

 

반짝반짝 작은 별~ GPIO 제어를 통해 LED를 깜빡여 보자!! 

 

음 좋아 좋아 그럼 이제 shared_main문안에서 LED를 초기화하고 동작시켜 봅시다.

인피니언 MCU TC275 iLLD 라이브러리를 포팅
인피니언 MCU TC275 iLLD 라이브러리를 포팅



우선 돌려보는 것이 목적이니 빠르게 코딩해보고 고고!!
다운 로드한 후 보드를 살펴보니 LED1 하나가 깜박깜박하고 있네요.

오호라 드디어 나도 뭔가를 짜서 동작하게 만들었네요!! 좋아 좋아!!


Mission. LED의 동작을 1초마다 깜박이게 구현해보기! - GPIO편


LED를 깜박깜박이게 해봤는데요. 
LED를 깜박인다는 것은 GPIO를 제어한다는 의미입니다.
현재 TC275의 GPIO 구조가 어떻게 생겼고 핀을 Input으로 설정하는 방법과 Output으로 설정하는 방법을 알아보세요. 

그럼 혼자 힘으로 알아보는겁니다! 고고!

 

Mission을 완료하시거나 모르겠으면 어디서 물어보면 된다?

 

고고씽 바이너리 임베디드 아카데미 카페에 남기시면됩니다^^

 

https://cafe.naver.com/binaryembedded

 

바이너리 임베디드 : 네이버 카페

임베디드 SW 개발자 되기 아카데미

cafe.naver.com

https://cafe.naver.com/binaryembedded

 

 

바이너리 임베디드 : 네이버 카페

임베디드 SW 개발자 되기 아카데미

cafe.naver.com

 

댓글