지난 시간에는 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 에 들어간다.
그림 2처럼 체크박스를 선택한다.
그리고 add를 눌러서 다음과 같이 작성한다.
main함수에서 Swi0_ISR()이라는 함수를 swi0으로 사용할 것이다.
빌드하다보면 필요없는 파일이 있다.
두 함수를 삭제해도 좋다.
하나더 f2838x_codestartbranch.asm를 Exclude from Build로 설정해두자.
이거로 인해 cmd 에러가 발생한다.
마지막으로 cmd 파일에서 발생하는 warning을 없애기 위해 그림 5처럼 해준다.
각각의 의미는 나중에 정리해본다.
마지막으로 main 함수를 보자.
그림 6을 보면, Swi 관련 라이브러리를 추가하고, 디버깅을 위한 전역변수를 선언하고, 핸들러와 ISR 함수를 선언한다.
그림 7을 보면, TaskB에 swi를 호출하는 코드가 있다.
그림 8에 swi 코드를 적어놓았다.
TaskB에서 10ms 마다 호출되고, Swi0_ISR 함수가 실행될 때마다 LEDcount가 1씩 증가한다.
그리고 LEDcount가 100이 되면 D2가 토글된다.
따라서, 1초마다 D2가 토글하게 된다.
[TMS320F28388D] SYS/BIOS 5부 - Hwi 생성하기 (0) | 2023.08.19 |
---|---|
[TMS320F28388D] SYS/BIOS 4부 - Timer 생성하기 (2) | 2023.08.19 |
[TMS320F28388D] SYS/BIOS 2부 - Task 생성하기 (0) | 2023.08.18 |
[TMS320F28388D] SYS/BIOS 1부 - 인트로, 프로젝트 생성하기 (0) | 2023.08.18 |
CPU1와 CM간 IPC 통신 - (2) 코드 설명 및 디버깅 (2) | 2023.08.12 |