2020년 9월 25일 금요일

DSP GPIO Interrupt

Tool 정보 : ccsv9

Board 정보 : EVM C6678 

keystone 인터럽트 관련 참고 사이트 : 

https://processors.wiki.ti.com/index.php/Configuring_Interrupts_on_Keystone_Devices

gpio 관련 문서 : https://www.ti.com/lit/ug/sprugv1/sprugv1.pdf

TEST_PH1(80PIN)



GPIO Memory Map Address : 

Start : 0x02320000  

End : 0x023200FF 

SIZE : 256

GPIO0 ~ GPIO15

인터럽트로 사용 GPIO -> GPIO14, GPIO15

사용 라이브러리 및 Products : 

Products : c667x PDK(2.0.16), SYS/BIOS (6.76.3.01)

라이브러리 : 

C:\ti\pdk_c667x_2_0_16\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.lite.lib

C:\ti\pdk_c667x_2_0_16\packages\ti\csl\lib\c6678\c66\release\ti.csl.ae66

C:\ti\pdk_c667x_2_0_16\packages\ti\csl\lib\c6678\c66\release\ti.csl.intc.ae66


시험 설명 

GPIO#13번핀을 인터럽트 신호 발생원으로 사용하고 GPIO#14, #15번을 각각 인터럽트핀으로 사용한다.

GPIO#13은 Clock함수를 이용하여 일정 주기(100msec)마다 인터럽트를 발생하고 발생된 인터럽트는 EventCombiner를 거쳐 Hwi인터럽트 설정 함수를 호출하여 인터럽트 처리를 한다.

인터럽트 처리는 Global변수를 증가하여 인터럽트 발생횟수를 확인한다.


소스코드 위치 

https://github.com/pcw1029/tms320C6678/tree/main/gpioInterrupt


TMS320C6678문서에 따르면 인터럽트 Event Number를 보면 GPIO핀은 GPIO8 ~ GPIO15을 인터럽트 사용할수 있으며, 이벤트번호 82 ~ 89까지 맵핑되어 있다.

(https://www.ti.com/lit/ds/symlink/tms320c6678.pdf 169페이지 참고)

설정(XGCONF)

  • SYS/BIOS -> Scheduling -> Hwi : 
    • Instance로 이동하여 아래 내용 설정
    • ISR Function이름, Interrupt number를 설정한다. 총 2개의 인터럽트를 생성할것이기 때문에 ADD를 눌러 인터럽트 1개를 더 추가하여 설정한다. [(인터럽트 번호는 각각 4,5를 사용할 것이며 인터럽트 0~3 예약되어 있어 사용할수 없다.)( 인터럽트가 발생되었을때 콜백될 함수는 gpio14Interrupt, gpio15Interrupt로 사용한다.)]
    • Event ID 설정 : 이벤트는 88, 89를 사용할 계획이므로 각각 88, 89를 설정한다. 이벤트 번호는 위에 그림에서 확인할수있고 또는 GPIO번호 + 74를 하면된다.

  • SYS/BIOS : Device Support로 이동하여 Event Combiner를 선택한다. 
    • Module : Add the EventCombiner module to my configuration을 체크
    • Event group 2 Hwi 항목에 6으로 설정 (이벤트 그룹 2를 선택한 이유는 event Combiner의 논리적 표현을 보면 124개의 시스템 이벤트가 있고 이를 4개의 그룹으로 나눴다. 즉 [Group#1 : event#04 ~ event#31], [Group#2 : event#32 ~ event#63], [Group#2 : event#64 ~ event#95], [Group#3 : event#96 ~ event#127]이다. Event 88,89가 GPIO인터럽트로 사용할수 있으면 이는 Event Combiner Group#2에 속해있기 때문이다. 
    • Events : Event 88, 89번의 Unmake를 false->true로 변경하고, 실행 함수명을 설정해준다. 함수명은 hwiCombinGpio14Gpio15다.

  • 프로젝트 생성시 ccs project인경우 task가 기본적으로 추가되어있으며 실험에선 사용하지 않으므로 삭제한다. 실험에서는 Clock함수를 생성하여 사용할것이기 때문이다.

  • SYS/BIOS -> Scheduling -> Clock  :  
    • Module  : Add the Clock support module to my configuration 체크
    • Instance :  Add
      • Function : gpio13InterruptOccursEveryCycle
      • Initial timeout : 50
      • Period : 50
      • Start at boot time when instance is created : 체크

보드 연결 상태


결과 화면




댓글 없음:

댓글 쓰기

VITIS Git + Doxygen Config

 Doxygen Configure 1. Vitis 메뉴의 Window->Preference의 C/C++ -> Editor의 Documentation tool comments 기본 설정값을 Doxygen으로 변경 설정 후 함수 바로 위에서 /...