지난 번에 FreeRTOS를 소개했듯이 현업에서 개발하다보면, RTOS를 사용하게 되어있다.
지난 시간에는 CCS 프로젝트로만 만들었지만, 이번 시간부터는 TI-RTOS인 SYS/BIOS를 사용한다.
왜 SYS/BIOS를 사용하는지, 어떤 특징이 있는지 먼저 알고 가면 좋겠지만...
먼저 컴파일과 실습을 하고 천천히 알아가는 것도 방법이라고 생각하므로
SYS/BIOS와 bootloader 등 이론과 데이터시트 분석을 차근차근 하도록 한다.
지금 부터 프로젝트를 만들어 가는 과정은 다음과 같다.
1. SYS/BIOS 프로젝트 생성하기
2. Task 생성하기
3. Swi 생성하기
4. Timer 생성하기
5. Hwi 생성하기
6. CLA 생성하기
Task는 보통 1ms 주기로 실행할 작업을 넣고,
Hwi는 하드웨어적으로 16kHz, 32kHz 등 제어 루프의 실행을 위해
Swi는 Hwi보다는 우선 순위가 떨어지는 작업을 실행하기 위해,
Timer는 더 우선 순위가 낮은 작업을 실행하기 위해,
CLA는 CPU에서 복잡한 계산이 필요한 작업을 대신 해주므로 대역폭을 증가시키기 위해
사용한다.
자, 우선 프로젝트를 생성해보자.
이 프로젝트를 시작하기 위해서는 SYS/BIOS와 XDC Tools가 필요하다.
버전은 그림 1을 참고한다.
그림 2와 같이 CPU1에서 실행할 프로젝트를 생성한다.
라이브러리를 사용하기 위해 그림 3처럼 추가해준다.
각자 PC에 설치된 C2000 버전에 따라 경로는 달라진다.
그림 3처럼 프로젝트를 만들어줘야 한다.
먼저, 파란 음영으로 된 "core_CPU1"을 우클릭하고 "Properties"를 클릭하자.
그런 다음 그림 4처럼 문구를 추가해준다.
그림 3의 cmd 파일은 includes 경로에 있는 common과 driverlib 폴더에서 찾아서 복사하여 프로젝트에 직접 넣어준다.
이 파일은 프로젝트의 크기에 따라 맞춰줘야 하므로 특별하게 관리해줘야 하기 때문이다.
나중에 CLA를 하게 될텐데 골때린다.
그림 3의 TMS320F2838X1.cmd만을 사용하여 프로젝트 빌드하면 아무런 문제없이 빌드되지만, 우리는 별도의 cmd 파일을 사용해줘야 한다.
왜냐하면 듀얼코어 칩이므로 CPU1과 CPU2로 나눠줘야 하기 때문이다.
(맞나?)
자, 이제 빌드해보자.
당연하게도 에러가 발생한다.
하나하나 해결해본다.
그림 5에서는 RAMLS0_5가 없다고 발생하는 에러이다.
TMS320F2838X1.cmd에는 정의되어 있지만, 2838x_FLASH_lnk_cpu1.cmd에는 없다.
먼저, 그림 6처럼 app.cfg 파일을 열자.
2838x_FLASH_lnk_cpu1.cmd은 그냥 첨부파일로 넣겠다. 글 맨 아래를 보자.
필자는 빌드하다보면 fpu64 관련 에러가 종종 발생했다.
다시 빌드하다보면 정상적으로 빌드 완료되기도 하지만 그림 8처럼 설정해줬다.
자, 다음 시간에 Task를 생성해본다.
아래 github 파일을 참고해도 좋다.
라이브러리 파일을 제외하고 올렸다.
[TMS320F28388D] SYS/BIOS 4부 - Timer 생성하기 (2) | 2023.08.19 |
---|---|
[TMS320F28388D] SYS/BIOS 3부 - Swi 생성하기 (0) | 2023.08.19 |
[TMS320F28388D] SYS/BIOS 2부 - Task 생성하기 (0) | 2023.08.18 |
CPU1와 CM간 IPC 통신 - (2) 코드 설명 및 디버깅 (2) | 2023.08.12 |
CPU1와 CM간 IPC 통신 - (1) 프로젝트 생성 (0) | 2023.08.12 |