630 likes | 880 Views
Code Worrior. SYSDEC. <*SlideNumber*>. CodeWarrior. CodeWarrior IDE(integrated development environment) 는 ARM 과 Thumb 명령어를 타겟으로 하는 C, C++, ARM assembly language code 를 개발하는 ARM Developer Suite 에 사용되는 IDE 이다. SYSDEC. <*SlideNumber*>. New Project. SYSDEC. <*SlideNumber*>.
E N D
Code Worrior SYSDEC <*SlideNumber*>
CodeWarrior CodeWarrior IDE(integrated development environment)는 ARM과 Thumb 명령어를 타겟으로 하는 C, C++, ARM assembly language code를 개발하는 ARM Developer Suite에 사용되는 IDE이다. SYSDEC <*SlideNumber*>
New Project SYSDEC <*SlideNumber*>
ARM executable image 생성을 위한 프로젝트 Project 이름 입력 SYSDEC <*SlideNumber*>
결과 SYSDEC <*SlideNumber*>
마우스 오른쪽 버튼 클릭 파일 추가 SYSDEC <*SlideNumber*>
파일 추가 (다른 방법) SYSDEC <*SlideNumber*>
파일 선택 SYSDEC <*SlideNumber*>
원하는 타겟 설정 Build Target 선택 SYSDEC <*SlideNumber*>
Build Target Debug, DebugRel, Release build targets Debug 소스 파일의 각각의 라인에 대해서 디버그 정보를 생성 DebugRel 소스 파일의 각각의 라인에 대해서 적당한 수준의 디버그 정보를 생성 Release 디버그 정보를 생성하지 않음 SYSDEC <*SlideNumber*>
파일 추가 결과 SYSDEC <*SlideNumber*>
파일 관리 용이 파일 그룹 생성 SYSDEC <*SlideNumber*>
파일 그룹 생성 결과 (qsort_small) SYSDEC <*SlideNumber*>
파일을 파일 그룹으로 이동 SYSDEC <*SlideNumber*>
파일 그룹 파일 이름 이동 결과 SYSDEC <*SlideNumber*>
파일이나 그룹의 삭제 SYSDEC <*SlideNumber*>
프로젝트 화면의 탭 Files 탭 파일, 그룹, 서브프로젝트 Link Order 탭 CodeWarrior가 최종 결과 파일을 어떤 순서로 링크 하는가에 대한 정보 각각의 오브젝트 파일이 최종 binary 타겟 파일에 위치하는 순서 Targets 탭 Debug, Release, DebugRel SYSDEC <*SlideNumber*>
현재의 타겟 Build Target Setting SYSDEC <*SlideNumber*>
파일 이름을 더블 클릭 텍스트 에디터 호출 SYSDEC <*SlideNumber*>
텍스트 에디터 SYSDEC <*SlideNumber*>
Build Target 내부 설정 SYSDEC <*SlideNumber*>
Target 이름 및 링커 종류의 설정 SYSDEC <*SlideNumber*>
Access Path User header 파일 혹은 library 파일의 search path 설정 C system header 파일 혹은 library파일의 search path 설정 SYSDEC <*SlideNumber*>
File Mapping 파일 이름의 확장자를 ARM C compiler와 같은 툴의 plug-in과 연계시킨다. SYSDEC <*SlideNumber*>
Assembler 설정 SYSDEC <*SlideNumber*>
C 컴파일러 설정 SYSDEC <*SlideNumber*>
Qsort_small SYSDEC <*SlideNumber*>
make 버튼을 클릭한 후 error나 warning 없이 컴파일이 끝났다. Make SYSDEC <*SlideNumber*>
warnings errors 그 밖의 message error가 난 위치 Make Window SYSDEC <*SlideNumber*>
Debugger의 선택 SYSDEC <*SlideNumber*>
Argument 설정 SYSDEC <*SlideNumber*>
Debug Run Debugging과 Running Run 또는 Debug 버튼을 누르면 AXD (ARM eXtended Debugger)가 자동으로 실행된다. SYSDEC <*SlideNumber*>
AXD의 실행 SYSDEC <*SlideNumber*>
ARM eXtended Debugger(AXD) SYSDEC <*SlideNumber*>
ARM Debugger AXD Remote Debug Interface (RDI) RDI RDI Target simulated in software ARM development board ARMulator Multi-ICE 디버깅 시스템의 타겟 ARMulator (Software) Architecture simulator Multi-ICE (Hardware) 또는 Vbox-pro JTAG 기반 SYSDEC <*SlideNumber*>
AXD의 타겟 설정 (1) ARM920T로 바로 연결이 안 된다면 AXD 메뉴바의 Options Configure Targets를 선택! SYSDEC <*SlideNumber*>
Debug Target의 설정 SYSDEC <*SlideNumber*>
Armulator로 설정 SYSDEC <*SlideNumber*>
Armulator의 설정 SYSDEC <*SlideNumber*>
default break point disassembled image log window AXD Window SYSDEC <*SlideNumber*>
ARMulator를 이용한 Simulation AXD의 Execute menu에서 “Go”를 선택 또는 “Go”버튼을 클릭 Default breakpoint main()의 시작 지점에서 실행이 멈춤 실행의 계속 “Go”를 클릭 프로그램 실행을 반복하려면, File menu바에서 “Reload Current Image…”를 클릭 SYSDEC <*SlideNumber*>
Go SYSDEC <*SlideNumber*>
output이 console window에 나타난다. Qsort_small 실행 중 SYSDEC <*SlideNumber*>
Qsort_small 실행이 끝난 후 SYSDEC <*SlideNumber*>
User Mode 일반 응용 프로그램을 수행하는데 사용가능, FIQ Mode IRQ보다 좀 더 빠른 인터럽트 처리를 위해 있는 것 IRQ Mode 일반적으로 I/O 장치로부터의 입력이 들어오면 반응하는 흔히 말하는 인터럽트 EXCEPTION Supervisor Mode OS중 서비스 영역에서 동작하는 Mode Abort Mode 명령어를 읽을 수 없거나 데이터를 읽거나 쓸 수 없는 상황에 사용 Undefined Mode ARM7에 정의되어 있지 않은 명령어를 만났을 경우에 발생. ARM7의 6가지 동작모드 SYSDEC <*SlideNumber*>
RO~R7 R8~R12 SP(Stack pointer) LR(Link Register) PC CPSR SPSR ARM state -PC(R15): R15는 다른 CPU에서의 PC와 같은 역할을 한다. ARM 어셈블러는 PC라는 키워드와 R15를 동일하게 취급. -SP (R13) :ARM7에는 스택을 위한 명령어가 따로 없다. SP라는 키워드를 사용하여 R13을 쓸 수 있다. -LR (R14):ARM7에서는 CALL, RET과 같은 명령어가 없다. 대신 Branch with link(BL)라는 명령어가 있는데, 해당 명령어를 수행하여 CALL과 비슷하게 다음에 수행될 PC(R15)값을 LR(R14)에 넣고 분기번지를 PC(R15)에 넣고 분기한다. 함 호출 시, 복귀할 명령어 주소가 저장되 있음 SYSDEC <*SlideNumber*>
CPU의 6개 동작 상태를 나타냄. N:연산결과가 마이너스 일 때 Z:연산결과가 0이었을 때 C:연산결과가 자리올림이나 내림이 발생한 경우 V:연산결과가 오버 플로우 됐을 때 -ARM7은 32bit status register(=PSR,CPSR)가 6개 있다. -CPSR: Flag bits + control bits -SPSR:이전에 저장된 프로그램 상태 레지스터 SYSDEC <*SlideNumber*>
Mode_USR EQU 0X10 유저 모드 선택 비트 Mode_IRQ EQU 0X12 일반 인터럽트 처리 모드 Mode_SVC EQU 0X13 운영체제를 위한 보호 모드 IRQ_Stack EQU RAM_Limit IRQ 스택의 Top pointer정의(stack영역은 1k) SVC_Stack EQU RAM_Limit-1024 SVC메모리스택의 Top pointer(stack영역은 8k) USR_Stack EQU SVC_Stack-1024 USR 스택의 Top pointer I_Bit EQU 0X80 IRQ 불가능 F_Bit EQU 0X40 FIQ 불가능 SYSDEC <*SlideNumber*>
1. Entry point정의 2. 예외처리 벡터 설정 3. 불필요한 하드웨어 동작 중지 4. 시스템 클록 설정 5. 메모리 시스템 초기화 6. 스택 영역 설정 7. IRQ예외처리 핸들러 설정 및 IRQ인터럽트 Enable 8. C에서 사용하는 변수 초기화. 9. C코드로 분기 부트 코드 작성 (시스템의 초기화 동작)
1. Entry point정의 어셈블러로 구성되며 모든 프로그램에는 반드시 필요하다. 일반적으로 init.S, startup.s등의 이름을 사용한다.