상세 컨텐츠

본문 제목

[TMS320F28388D] SYS/BIOS 3부 - Swi 생성하기

TMS320F28388D 공부

by Zin9 2023. 8. 19. 20:43

본문

728x90

 

 

[TMS320F28388D] SYS/BIOS 2부 - Task 생성하기

[TMS320F28388D] SYS/BIOS 1부 - 인트로, 프로젝트 생성하기 지난 번에 FreeRTOS를 소개했듯이 현업에서 개발하다보면, RTOS를 사용하게 되어있다. 지난 시간에는 CCS 프로젝트로만 만들었지만, 이번 시간부

zin9.tistory.com

 

 

[TMS320F28388D] SYS/BIOS 4부 - Timer 생성하기

[TMS320F28388D] SYS/BIOS 3부 - Swi 생성하기 [TMS320F28388D] SYS/BIOS 2부 - Task 생성하기 [TMS320F28388D] SYS/BIOS 1부 - 인트로, 프로젝트 생성하기 지난 번에 FreeRTOS를 소개했듯이 현업에서 개발하다보면, RTOS를 사

zin9.tistory.com

 

 

지난 시간에는 Task를 생성했다.

TaskA는 200[ms] 마다 D1을 토글하고, TaskB는 10[ms]마다 Swi0_ISR()함수를 호출한다.

그리고 Swi0_ISR()함수에서는 매 호출 마다 LEDcount가 1씩 증가하며, 100이 되면, D2를 토글한다.

 

Swi 생성하기는 config 시스템을 이용하면 간단하게 구현 가능하다.

먼저 app_CPU1.cfg 파일을 열어주자.

 

SYS/BIOS - System Overview - Threads - Swi 에 들어간다.

<그림 1. cfg 파일에서 Swi 메뉴 들어가기>

 

 

그림 2처럼 체크박스를 선택한다.

<그림 2. 체크박스 선택>

 

그리고 add를 눌러서 다음과 같이 작성한다.

main함수에서 Swi0_ISR()이라는 함수를 swi0으로 사용할 것이다.

<그림 3. swi 함수 설정>

 

빌드하다보면 필요없는 파일이 있다.

두 함수를 삭제해도 좋다.

<그림 4. 빌드하면 에러가 발생하는 파일>

 

하나더 f2838x_codestartbranch.asm를 Exclude from Build로 설정해두자.

이거로 인해 cmd 에러가 발생한다.

 

 

마지막으로 cmd 파일에서 발생하는 warning을 없애기 위해 그림 5처럼 해준다.

각각의 의미는 나중에 정리해본다.

<그림 5. .binit 추가>

마지막으로 main 함수를 보자.

그림 6을 보면, Swi 관련 라이브러리를 추가하고, 디버깅을 위한 전역변수를 선언하고, 핸들러와 ISR 함수를 선언한다.

 

<그림 6. main 코드>

 

그림 7을 보면, TaskB에 swi를 호출하는 코드가 있다.

<그림 7. swi 호출 코드>

 

그림 8에 swi 코드를 적어놓았다.

TaskB에서 10ms 마다 호출되고, Swi0_ISR 함수가 실행될 때마다 LEDcount가 1씩 증가한다.

그리고 LEDcount가 100이 되면 D2가 토글된다.

따라서, 1초마다 D2가 토글하게 된다.

<그림 8. swi 함수 작성>

 

 

 

GitHub - Zin9s/TMS320F28388D

Contribute to Zin9s/TMS320F28388D development by creating an account on GitHub.

github.com

 

728x90

관련글 더보기