code generation in rapid -...

31
Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr Real-Time Computing and Communications Lab., Hanyang University http://rtcc.hanyang.ac.kr 임베디드시스템설계 실습 (4) Embedded System Design Real-Time Computing and Communications Lab. Hanyang University

Upload: others

Post on 22-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

임베디드시스템설계실습 (4)

Embedded System Design

Real-Time Computing and Communications Lab.

Hanyang University

Page 2: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

2Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 2Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

목차

1. Data Sheet

2. Startup Code

Page 3: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

3Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 3Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

DATA SHEET

Page 4: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

4Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 4Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

Data Sheet

Data sheet란?

부품, 하부시스템, 소프트웨어등의성능과특성등을모아놓은문서

제조사에서만들어서배포

Data sheet에들어가는정보 제품의특성

간단한기능설명

핀접속다이어그램

공급전압, 전력소비량, 입력전류등의최대/최소값

입/출력파형도

Page 5: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

5Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 5Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

수업에필요한 Data Sheet

DDI0344K_cortex_a8_r3p2_trm.pdf

ARM CORTEX A8의데이터시트

CORTEX A8 프로세서에관한정보를기재

• 프로세서가제공하는기능

• 레지스터설정을통한해당기능의사용법

• …

S5PC100_UM_REV101.pdf

SAMSUNG S5PC100 어플리케이션프로세서의데이터시트

Page 6: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

6Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 6Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

STARTUP CODE

Page 7: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

7Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 7Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

VPOS커널을포팅하기위한준비

1. 커널컴파일 + 커널이미지를 RAM에적재

2. Startup code 작성

3. UART 설정

4. TIMER 설정

5. Hardware Interrupt Handler구현(1) UART Interrupt

(2) Timer Interrupt

6. Software Interrupt Entering/Leaving Routine 구현

Page 8: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

8Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 8Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

Startup code

Startup code? ASM 코드

임베디드타겟보드의초기화

• C 소스에서액세스하기힘든초기화과정을처리

C코드의main 함수가실행되기전에먼저실행

• 코드마지막에 branch 명령어를사용하여 main 함수를실행

Startup Code에서처리하는작업 Variable 초기화

PLL 설정

Memory 설정

Stack 설정

UART 등주변장치설정

C 코드로점프

소스코드파일의위치 hal/cpu/HAL_arch_startup.S

Page 9: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

9Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 9Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

HAL_arch_startup파일

HAL_arch_startup파일 Startup code와 HAL 관련 code로나뉘어짐

Startup code 벡터테이블

Variable 초기화

캐시와메모리정책을설정

CPU 모드마다스택을할당

HAL 관련 code SWI

HWI

Context Switching

Page 10: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

10Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 10Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

HAL_arch_startup파일의분석

심볼정의 Startup code에서사용할외부변수, 외부함수, 전역변수등을정의

.extern : 외부심볼/레이블을참조해당심볼이다른모듈에정의되어있음

.global : 전역심볼/레이블을정의

.equ : 심볼에값을할당심볼을참조하기전에미리값을할당해야함

Page 11: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

11Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 11Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

HAL_arch_startup파일의분석

vh_VPOS_STARTUP

커널코드중가장처음실행되는부분

• 링커스크립터에서 ENTRY(vh_VPOS_STARTUP)로설정

nop : No-operation. 아무것도하지않는명령어

58 line의 ‘b vh_VPOS_reset’ 명령어를통해리셋작업시작

Page 12: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

12Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 12Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

HAL_arch_startup파일의분석

vh_vector_start

벡터테이블

Exception이발생하면 ,

• CPU는벡터테이블의베이스주소에 exception의 오프셋을더하여해당 exception handler를 실행

ctags를설치했다면, 레이블에커서를올리고 ‘ctrl키+]’로해당레이블로이동할수있음

Exception Mode Vector table offset

Reset SVC +0x00

Undefined Instruction UND +0x04

Software Interrupt(SWI) SVC +0x08

Prefetch Abort ABT +0x0c

Data Abort ABT +0x10

Not assigned - +0x14

IRQ IRQ +0x18

FIQ FIQ +0x1c

Page 13: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

13Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 13Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

HAL_arch_startup파일의분석

vh_VPOS_reset

리셋핸들러

Variable initialization

Mask interrupt and fast interrupt

Cache, Memory Setting(Control register)

Change vector table base address

Stack pointer setting

Jump to main function

Page 14: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

14Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 14Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Variable initialization

레지스터 r0를 0으로초기화

HAL code에서사용할변수를초기화

Page 15: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

15Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 15Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Mask interrupt and fast interrupt

CPSR의 I bit와 F bit를 1로 set

I bit : IRQ의인터럽트를마스크시킴

• 1 : Interrupt Disable

• 0 : Interrupt Enable

F bit : FIQ의인터럽트를마스크시킴

• 1 : Fast interrupt Disable

• 0 : Fast interrupt Enable

Page 16: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

16Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 16Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Mask interrupt and fast interrupt

Code

CPSR를 r0에복사7번비트와 6번비트를 1로 set

r0를 CPSR로복사

Page 17: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

17Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 17Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Invalidate all instruction caches

Code

Data sheet (page. 88)

CRn Op1 CRm Op2

Page 18: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

18Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 18Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Control Register(c1) Setting

Read control register

MMU disable

D-cache & I-cache disable

Normal exception vectors selected, …

Alignment fault checking enable

Program flow prediction enable

Write control register

Page 19: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

19Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 19Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Control Register(c1) Setting

Data sheet

• Page. 122 ~ 125 참고

• Read control register ( p.124)

• Write control register (p. 125)

• 나머지 setting은 Table 3-46 Control Register bit functions 참고(p. 123~124)

Page 20: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

20Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 20Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Control Register(c1) Setting

Code

Read Control Register

MMU disable

D-cache disable

I-cache disable

Normal exception vectors, base address 0x00000000

Alignment fault checking enable

Program flow prediction enable

Write Control Register

Page 21: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

21Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 21Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Change vector table base address

벡터테이블의베이스주소를저장

exception이발생하면저장된베이스주소에해당 exception의오프셋을더하여핸들러로점프

Data sheet

• Page. 195~196 참고

Page 22: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

22Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 22Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Change vector table base address

베이스주소 : 0x20008044

Code

0x20008000

0x20008044

Page 23: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

23Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 23Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Stack pointer setting

ARM CPU는 Abort, FIQ, IRQ, Supervisor, System, Undefined,

User 모드를가짐

각모드별로스택포인터(r13, sp)에스택시작위치를설정

Setting Flow

1. cpsr를 r0에복사 (mrs명령어)

2. 프로세스모드를표시하는 5 bits [4:0]을수정하여 CPU 모드변경

3. 해당모드의스택포인터에스택시작위치를저장

Page 24: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

24Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 24Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Stack pointer setting

ARM은각모드별로 sp와 lr를가지고있음

• Undef모드에서 sp를바꿔도다른모드의 sp는전혀영향을받지않음

• 특정모드의 sp를수정하고싶으면해당모드로진입해야함

Page 25: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

25Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 25Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Stack pointer setting

Code

각모드비트와인터럽트마스크비트를나타내는심볼은 .equ로값이할당되어있음Ex) vh_UNDEFMODE = 0x1b

vh_MODEMASK = 0x1f

vh_NOINT = 0xc0

CPU 모드의변경법 :

1. mrs명령어로 CPSR을가져옴2. 모드비트와인터럽트마스크비트를

0으로클리어3. 원하는모드의모드비트를설정하고인터럽트마스크비트도함께 set

4. msr명령어로 CPSR에저장

Page 26: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

26Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 26Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

과제 USER 모드의 sp를설정하기

모드비트는 ‘vh_USERMODE’를사용

단, USER 모드에서는인터럽트를 Enable 해야함!!

Startup code에작성하고, 보고서로제출

Page 27: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

27Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 27Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

vh_VPOS_reset분석

Jump to main function

Code

Branch 명령어로 VPOS_kernel_main함수로점프

• VPOS_kernel_main() : VPOS 커널의 main함수

• vpos/kernel/kernel.start.c에위치

Reset 작업종료

Page 28: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

28Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 28Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

VPOS_kernel_main()

Code

VPOS 커널데이터구조체를초기화

시리얼장치와타이머등하드웨어를초기화

인터럽트 enable

부팅메시지출력

쉘스레드생성

스케줄러호출하는 VPOS_start

루틴으로진입

Page 29: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

29Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 29Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

보고서제출

보고서 학과, 학번, 이름

수업중작성한코드도첨부

• hal/cpu/HAL_arch_startup파일의 startup code 부분만첨부

• Jump to main function부분까지첨부

과제로내준코드를작성하고, 설명

Page 30: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

30Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 30Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

제출방법

제출방법 워드나한글로작성하여메일에첨부

문서제목에학번과이름을적을것

E-mail

[email protected]

메일제목 [임베디드시스템실습과제3]학번_이름

마감일 다음실습수업시간전까지

Page 31: Code Generation in Rapid - osdc.hanyang.ac.krosdc.hanyang.ac.kr/sitedata/2016_Under_Embedded/ES_Practice_04.pdf · Real-Time Computing and Communications Lab., Hanyang University

31Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr 31Real-Time Computing and Communications Lab., Hanyang University

http://rtcc.hanyang.ac.kr

수고하셨습니다.