Delfino 개발보드 예제 (F28335)

[실습예제] Delfion EVM - Profile, 내부램/내부플래시/외부램 속도비교

싱크웍스 (IP: 211.111.236.***) 2012.12.10 17:13:55 조회수 2,482

1. 실습 목적

TMS320F28335 칩과 CCS의 Profile 기능을 이용하여, TMS320F28X 계열의 내부 램 영역과 내부 플래시 영역, 외부 램 영역들에서 각각 동일한 코드를 실행시켰을때의 속도 차이를 확인해봅니다. 

 

2. 실습 준비

예제를 실습하기 위해서 아래와 같은 개발환경이 필요합니다. 

 

A. 실습 장비

1) CCSv3.3(SR12)이나 CCSv4.2.x 이상 / CCS v5.2.x 이상이 설치된 PC

2) Delfino 개발보드(옵션)과 TMS320F28335 초소형 메모리 모듈

   - 본 실습은 Delfino 개발보드 없이, TMS320F28335 초소형 메모리 모듈만으로도 진행이 가능합니다.

   - TMS320F28335 초소형 버스 모듈의 경우, 외부 램 예제(3번, 5번)들은 실습하실 수 없습니다.

 

B. 실습 예제

1) TIDCS_DSP2833x.exe를 PC에 설치합니다.

   >> TIDCS_DSP2833x.zip (다운로드) ← Click

2) (통합) Profile 실습예제들을 PC에 설치합니다.

   >> PROFILE_Examples.zip (예제 전체 통합 설치) ← Click

3) (CCSv3.3 SR12 사용자) Profile 실습예제들을 PC에 설치합니다.

   >> PROFILE01_CCSv3.3.zip (1번 - 내부 램 영역) ← Click

   >> PROFILE02_CCSv3.3.zip (2번 - 내부 플래시 영역) ← Click

   >> PROFILE03_CCSv3.3.zip (3번 - 외부 램 영역) ← Click

   >> PROFILE04_CCSv3.3.zip (4번 - 내부 플래시 영역 + 최적화) ← Click

   >> PROFILE05_CCSv3.3.zip (5번 - 외부 램 영역 + 최적화) ← Click

4) (CCSv4.2.4.00033 이상 사용자) Profile 실습예제들을 PC에 설치합니다.

   >> PROFILE01_CCSv4.x.zip (1번 - 내부 램 영역) ← Click

   >> PROFILE02_CCSv4.x.zip (2번 - 내부 플래시 영역) ← Click

   >> PROFILE03_CCSv4.x.zip (3번 - 외부 램 영역) ← Click

   >> PROFILE04_CCSv4.x.zip (4번 - 내부 플래시 영역 + 최적화) ← Click

   >> PROFILE05_CCSv4.x.zip (5번 - 외부 램 영역 + 최적화) ← Click

5) (CCSv5.3.0.00090 이상 사용자) Profile 실습예제들을 PC에 설치합니다.

   >> PROFILE01_CCSv5.x.zip (1번 - 내부 램 영역) ← Click

   >> PROFILE02_CCSv5.x.zip (2번 - 내부 플래시 영역) ← Click

   >> PROFILE03_CCSv5.x.zip (3번 - 외부 램 영역) ← Click

   >> PROFILE04_CCSv5.x.zip (4번 - 내부 플래시 영역 + 최적화) ← Click

   >> PROFILE05_CCSv5.x.zip (5번 - 외부 램 영역 + 최적화) ← Click

 

3. 실습해 보기

* 하기 설명은 CCS V5.3.0.00090 버전을 기준으로 예제 1번의 실행과정을 설명하고 있습니다. 

 

Step 1). Code Composer Studio를 실행하고, Profile 예제들을 불러들입니다.

Step 2). 사용중인 JTAG 에뮬레이터 및 프로세서를 설정합니다.(Target Configuration)

Step 3). 예제 프로젝트를 Build 하고, 설정한 Target Configuration으로 Debug Session을 엽니다.

Step 4). CCS와 Target을 연결(Connect)하고, Build 한 결과파일(*.out)을 칩에 Load 합니다.

Step 5). Profiling을 위해, CCS 상단메뉴 Run -> Clock -> Enable을 클릭합니다.

Step 6). CCS 화면 하단의 상태 바에 노란색 시계모양 아이콘과 숫자가 나타나는지 확인합니다. (나타나지 않는다면, Run -> Clock -> Show 클릭)

Step 7). 아래의 그림을 참조하여, Idle-loop 내의 Sine, Cosine 계산용 for loop 시작점에 Breakpoint를 설정합니다.

 

1_101143.png
 

 

Step 8). CCS 상단메뉴 Run -> Reset -> Reset CPU를 클릭하여, 프로세서를 Reset 합니다.

Step 9). CCS 상단메뉴 Run -> Resume을 클릭하여, 예제를 실행시킵니다.

Step 10). 과정 7에서 설정한 Breakpoint에서 프로그램이 멈춤을 확인합니다.

Step 11). CCS 화면 하단 상태 바의 노란색 시계모양 아이콘과 그 옆의 숫자를 확인합니다. (시계모양 아이콘 옆의 숫자는 프로그램 시작부터 Breakpoint까지 CPU가 소비한 Cycle 수를 의미합니다.)

Step 12). 시계모양 아이콘 옆의 숫자를 마우스 좌측버튼으로 더블클릭하여, 숫자를 다시 "0"으로 초기화 합니다.

Step 13). 과정 7에서 설정한 Breakpoint를 해제하고, Sine, Cosine 계산용 for loop 바로 아래에 위치한 "BackTicker++;" 코드에 새로운 Breakpoint를 설정합니다.

 

2_101234.png
 

 

Step 14). CCS 상단메뉴 Run -> Resume을 클릭하여, 예제를 다시 실행시킵니다.

Step 15). 과정 13에서 새로 설정한 Breakpoint에서 프로그램이 멈춤을 확인합니다.

Step 16). CCS 화면 하단 상태 바의 노란색 시계모양 아이콘과 그 옆의 숫자를 확인합니다. (시계모양 아이콘 옆의 숫자는 for loop 시작부터 "BackTicker++;" 코드가 실행되기 전까지 CPU가 소비한 Cycle 수를 의미합니다. 즉, Sine, Cosine 계산을 위한 for loop를 실행하는데 CPU가 소비한 Cycle 수가 됩니다.)

Step 17). 확인된 CPU Cycle 수를 시간(초)으로  환산해봅니다. (예제의 CPU Clock 설정 = 150MHz, 6.67nec / 예, 150,007 Cycle x 6.67nsec = 약 1msec)

Step 18). 유사한 방법으로 나머지 예제들을 실습해보고, 내부 램 영역과 내부 플래시, 외부 램에서 동일한 코드를 실행했을때, CPU Cycle 수가 어떻게 달라지는지 확인해봅니다.

 

참고) 외부 램 영역에서 코드를 실행하는 3번, 5번 예제의 경우, 외부 램 영역에서 코드를 실행해야 하므로 프로그램 Load 전 기본 GPIO 상태인 외부 메모리 회로 및 관련 인터페이스 포트들을 적절하게 초기화 해야 합니다. 이를 위해 기본 GEL 스크립트 파일(f28335.gel)의 XINTF_Enable( )를 수정해야 하며, 미리 수정된 예시는 예제 3번, 5번 폴더 안에 포함(f28335_XRAM_Example.gel)되어 있습니다. 반드시, 예제 프로그램을 Load 하기 전 수정된 GEL 스크립트 파일을 적용하고, CCS 상단 Script 메뉴에서 XINTF_Enable 루틴을 실행해줘야 합니다.

 

276ea52e47832b206b38af75d8cc052a_104631.png
 

4. 결과 정리 

예제 1번, 2번, 3번은 각각 TMS320F28X 칩의 내부 램 영역, 내부 플래시 영역, 외부 램 영역에서 동일한 코드를 수행하는 예제이며, 칩의 Reset 후 초기 설정을 변경하지 않습니다. 그 결과를 종합해보면 아래와 같습니다. (Compiler 버전에 따라, 숫자가 다소 상이할 수 있습니다.) 

   >> 내부 램 영역 코드 실행 : 150,007 Cycles

   >> 내부 플래시 영역 코드 실행 : 1,568,000 Cycles

   >> 외부 램 영역 코드 실행 : 5,488,057 Cycles

 

예제 4번은 TI가 제공하는 InitFlash( ) 함수를 이용하여, 내부 플래시 영역의 Pipeline을 활성화하고, 초기 가장 느리게 설정되어 있는 내부 플래시 메모리 Wait-state를 최적화 한 결과입니다.

   >> 내부 플래시 영역 코드 실행 (플래시 메모리 최적화) : 338,998 Cycles

 

예제 5번은 TMS320F28335 초소형 메모리 모듈에 장착된 SRAM - IS61WV25616BLL-10BLI의 Datasheet에서 Access Timing을 참고하여, 초기 가장 느리게 설정되어 있는 외부 메모리 인터페이스 Wait-state를 최적화 한 결과입니다.

   >> 외부 램 영역 코드 실행 (EMIF 최적화) : 412,000 Cycles

 

결과를 종합하여, 동일한 코드 실행에 있어 속도 순으로 각 메모리 영역을 나열하면 아래와 같음을 알 수 있습니다.

   * 내부 램 > 내부 플래시 > 외부 램

 

총 댓글 0
로그인을 하셔야 댓글을 등록하실 수 있습니다.
번호 제목 작성자 날짜
번호 제목 날짜 작성자 조회
공지 Delfino 개발보드 예제 100선 PART1 핸드북 (공개) 2018.12.14 싱크웍스 3615
53 [실습예제] TMS320F28335 - FIR Null Filter vs. IIR Notch Filter 이미지첨부 있음 인기글 2017.01.17 싱크웍스 2437
52 [실습예제] TMS320F28335 - 디지털 필터링 (FIR) 이미지첨부 있음 인기글 2016.12.26 싱크웍스 3179
51 [실습예제] Delfino EVM - SPI로 Ext. FLASH(M25P40) 다루기 인기글 2015.07.07 싱크웍스 1848
50 [실습예제] Delfion EVM - SPI LoopBack 통신 - 인터럽트방식, FIFO 사용 인기글 2013.01.14 싱크웍스 2350
49 [실습예제] Delfion EVM - Profile, 내부램/내부플래시/외부램 속도비교 이미지첨부 있음 인기글 2012.12.10 싱크웍스 2482
48 [실습예제] Delfion EVM - SPI LoopBack 통신 - 인터럽트방식 인기글 2012.11.30 싱크웍스 972
47 [실습예제] Delfion EVM - SPI LoopBack 통신 - 폴링방식, FIFO 사용 인기글 2012.11.23 싱크웍스 737
46 [실습예제] Delfion EVM - SPI LoopBack 통신 - 폴링방식 인기글 2012.11.20 싱크웍스 1010
45 [실습예제] Delfion EVM - SCI의 AutoBaud Rate 기능 사용하기 이미지첨부 있음 인기글 2012.10.31 싱크웍스 560
44 [실습예제] Delfion EVM - SCI를 이용한 보드간 1:1 통신 이미지첨부 있음 인기글 2012.10.12 싱크웍스 1332
43 [실습예제] Delfion EVM - SCI를 이용한 PC와 시리얼(RS-232C) 통신 이미지첨부 있음 인기글 2012.02.29 싱크웍스 2595
42 [실습예제] Delfion EVM - SCI LoopBack 통신 - 인터럽트방식, FIFO 사용 이미지첨부 있음 인기글 2012.02.24 싱크웍스 1018
41 [실습예제] Delfion EVM - SCI LoopBack 통신 - 인터럽트방식 이미지첨부 있음 인기글 2012.02.06 싱크웍스 963
40 [실습예제] Delfino EVM - XINTF(EMIF)로 SRAM 다루기 2 이미지첨부 있음 인기글 2012.01.30 싱크웍스 983
39 [실습예제] Delfino EVM - XINTF(EMIF)로 SRAM 다루기 1 이미지첨부 있음 인기글 2012.01.30 싱크웍스 1632
38 [실습예제] Delfion EVM - SCI LoopBack 통신 - 폴링방식, FIFO 사용 이미지첨부 있음 인기글 2012.01.27 싱크웍스 590
37 [실습예제] Delfion EVM - SCI LoopBack 통신 - 폴링방식 이미지첨부 있음 인기글 2012.01.27 싱크웍스 698
36 [실습예제] Delfino EVM - EQEP 모듈로 Incremental 엔코더 신호 해석하기 이미지첨부 있음 인기글 2011.11.14 싱크웍스 971
35 [실습예제] Delfion EVM - CPU Timer 인터럽트를 이용한 LED 주기점멸 이미지첨부 있음 인기글 2011.11.11 싱크웍스 1363
34 [실습예제] Delfino EVM - ECAP 모듈을 단상 PWM 발생기로 활용하기 이미지첨부 있음 인기글 2011.10.12 싱크웍스 734
33 [실습예제] Delfino EVM - ECAP 모듈로 펄스의 주파수 및 듀티비율 알아내기 이미지첨부 있음 인기글 2011.10.12 싱크웍스 786
32 [실습예제] Delfino EVM - ECAP 모듈의 Edge 검출 인터럽트 이미지첨부 있음 인기글 2011.10.12 싱크웍스 551
31 [실습예제] Delfion EVM - GPIO 출력, LED 점멸 3 이미지첨부 있음 인기글 2011.10.07 싱크웍스 952
30 [실습예제] Delfion EVM - GPIO 출력, LED 점멸 2 이미지첨부 있음 인기글 2011.10.07 싱크웍스 595
29 [실습예제] Delfion EVM - GPIO 출력, LED 점멸 1 이미지첨부 있음 인기글 2011.09.23 싱크웍스 1928
28 [실습예제] Delfino EVM - GPIO 입력, Qualification 기능 사용하기 이미지첨부 있음 인기글 2011.09.23 싱크웍스 519
27 [실습예제] Delfino EVM - GPIO 입력, 외부 인터럽트로 사용 이미지첨부 있음 인기글 2011.09.09 싱크웍스 956
26 [실습예제] Delfino EVM - GPIO 입력으로 쓰기 이미지첨부 있음 인기글 2011.09.09 싱크웍스 932
25 [실습예제] Delfino EVM - 2채널 PWM-to-Analog 출력 구현해보기 이미지첨부 있음 인기글 2011.09.07 싱크웍스 983
24 [실습예제] Delfino EVM - 3상 Phase-Interleaved PWM 출력하기 이미지첨부 있음 인기글 2011.09.07 싱크웍스 1341
23 [실습예제] Delfino EVM - 3상 Sinusoidal PWM 출력하기 이미지첨부 있음 인기글 2011.09.07 싱크웍스 1557
22 [실습예제] Delfino EVM - EPWM 모듈의 Trip 기능 확인하기 이미지첨부 있음 인기글 2011.09.07 싱크웍스 662
21 [실습예제] Delfino EVM - 1채널 PWM Chopping 이미지첨부 있음 인기글 2011.09.07 싱크웍스 628
20 [실습예제] Delfino EVM - 2채널 PWM에 Dead-Band 추가하기 이미지첨부 있음 인기글 2011.09.07 싱크웍스 832
19 [실습예제] Delfino EVM – 1채널, 오버샘플링(Over-Sampling) ADC 이미지첨부 있음 인기글 2011.08.23 싱크웍스 739
18 [실습예제] Delfino EVM – 8채널, ADC, Mode 2 인터럽트 결과저장 이미지첨부 있음 인기글 2011.08.23 싱크웍스 971
17 [실습예제] Delfino EVM – 8채널, 동시(Simultaneous), 병렬(Dual) ADC 하기 이미지첨부 있음 인기글 2011.08.23 싱크웍스 1050
16 [실습예제] Delfino EVM – 8채널, 순차(Sequential) ADC 하기 이미지첨부 있음 인기글 2011.08.23 싱크웍스 1311
15 [실습예제] Delfino EVM – 2채널, 병렬 시퀀서(Dual-Sequencer) 모드 운용 이미지첨부 있음 인기글 2011.08.11 싱크웍스 523
14 [실습예제] Delfino EVM – 2채널, 동시(Simultaneous) 모드 운용 이미지첨부 있음 인기글 2011.08.11 싱크웍스 807
13 [실습예제] Delfino EVM - 2채널 PWM 출력하기 (Complementary) 이미지첨부 있음 인기글 2011.08.10 싱크웍스 1143
12 [실습예제] Delfino EVM - 2채널 PWM 출력하기 (Independent Duty Cycle) 이미지첨부 있음 인기글 2011.08.10 싱크웍스 1122
11 [실습예제] Delfino EVM - 2채널, 인터럽트(Interrupt) 방식으로 ADC 하기 이미지첨부 있음 인기글 2011.08.04 싱크웍스 1232
10 [실습예제] Delfino EVM - 1채널, 인터럽트(Interrupt) 방식으로 ADC 하기 이미지첨부 있음 인기글 2011.08.04 싱크웍스 1635
9 [실습예제] Delfino EVM - 주기적인 인터럽트 생성과 이벤트 분주 이미지첨부 있음 인기글 2011.08.03 싱크웍스 1000
8 [실습예제] Delfino EVM - 1채널 PWM 출력하기 (Asymmetric, Dual Edge) 이미지첨부 있음 인기글 2011.08.03 싱크웍스 857
7 [실습예제] Delfino EVM - 1채널 PWM 출력하기 (Symmetric, Dual Edge) 이미지첨부 있음 인기글 2011.07.29 싱크웍스 1043
6 [실습예제] Delfino EVM - 1채널 PWM 출력하기 (Asymmetric, Single Edge) 이미지첨부 있음 인기글 2011.07.29 싱크웍스 1799
5 [실습예제] Delfino EVM - 2채널, 비-인터럽트(Polling) 방식으로 ADC 하기 이미지첨부 있음 인기글 2011.07.28 싱크웍스 887
4 [실습예제] Delfino EVM - 1채널, 비-인터럽트(Polling) 방식으로 ADC 하기 이미지첨부 있음 인기글 2011.07.28 싱크웍스 1813
3 [실습예제] Delfino EVM - TMS320C28346 ADC 어댑터 예제 인기글 2011.07.20 싱크웍스 1482
2 [실습예제] Delfino EVM - CCS 프로젝트 만들기(TMS320C28346) , CCSv5 버전추가 인기글 2011.07.20 박창희 1227
1 [실습예제] Delfino EVM - CCS 프로젝트 만들기(TMS320F28335) , CCSv5버전 추가 인기글 2011.07.20 박창희 3644

비밀번호 인증

비밀번호를 입력해 주세요.

닫기
 
 

비밀번호 인증

글 작성시 설정한 비밀번호를 입력해 주세요.

닫기