code generation in rapid -...
TRANSCRIPT
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
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
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
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에들어가는정보 제품의특성
간단한기능설명
핀접속다이어그램
공급전압, 전력소비량, 입력전류등의최대/최소값
입/출력파형도
…
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 어플리케이션프로세서의데이터시트
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
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 구현
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
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
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 : 심볼에값을할당심볼을참조하기전에미리값을할당해야함
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’ 명령어를통해리셋작업시작
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
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
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에서사용할변수를초기화
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
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로복사
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
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
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)
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
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 참고
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
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. 해당모드의스택포인터에스택시작위치를저장
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를수정하고싶으면해당모드로진입해야함
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에저장
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에작성하고, 보고서로제출
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 작업종료
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
루틴으로진입
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부분까지첨부
과제로내준코드를작성하고, 설명
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
제출방법
제출방법 워드나한글로작성하여메일에첨부
문서제목에학번과이름을적을것
메일제목 [임베디드시스템실습과제3]학번_이름
마감일 다음실습수업시간전까지
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
수고하셨습니다.