You are on page 1of 6

TECHNICAL FEATURE/Engineer Community

ARM 따라잡기①
ARM 세계로의 초대

ARM 프로세서의 세계로 들어가는 것은 마치 특정 응용분야의 필요에 따른 여러 종류의 처를 기반으로 한다.(그림 1 참조)
외국으로 이사하는 것과 같아서 언어나 지형에 적당한 솔루션도 더러 있지만, 많은 산업분야 아키텍처 이름 중“T”
는 칩의 아키텍처가
익숙해지지 않으면 안된다. 임베디드 월드는 의 선두업체들이 ARM을 선택했다. 대다수의 16-비트 Thumb 명령어 모드를 지원함을 의
이제 가이드와 통역자로서 여러분을 ARM의 ARM 칩들은 아직도 볼 대신 리드 패키지로 미하는데, 이것에 대해서는 차후에 설명하게
세계로 안내하려고 한다. 이제 여러분의 프로 공급되고 있다. 시장엔 적당한 가격의 ARM 될 것이다. 또한 DSP extension을 위한 v5
젝트에 ARM 아키텍처를 사용함에 있어서 자 평가 보드가 수없이 많이 나와 있다. 아키텍처의 변형“E”
도 있다. 여러분은 다중
신감을 얻을 수 있을 것이다. 하이엔드 임베디드 ARM 프로세서에 소프 코어 패밀리에서 하나의 아키텍처를 구현할
트웨어를 쓰기 원하지만 평가보드가 없는 사 수 있다. 여러분이 ARM 프로세스를 여러분
감수: 임종용 부장, 임상희 과장/ARM 코리아 람들에겐 iPAQ에서 PocketPC OS를 제거한 의 디자인에 사용하고 있거나 ARM 코어를
것이 적당한 가격의 옵션이 될 것이다. 컴팩은 ASIC에 사용하고 있는 중이라면 명령어 집합
iPAQ이 임베디드 리눅스 개발의 타깃이 될 매뉴얼을 들여다 볼 때, 여러분은 오직 아키
수 있도록 공개 소스 프로젝트를 후원했다. 텍처 버전에만 신경을 쓰게 될 것이다. 그러
ARM사는 아키텍처, 프로세서 코어 및 시 나 앞서 말한 인텔과 디지털 세미컨덕터
스템 코어를 라이선스 해주는 IP 회사이다. (Digital Semiconductor) 같은 회사들은 주
또한 ARM은 명령어 집합 시뮬레이터와 어진 아키텍처와 호환되는 그 자신만의 코어
아마도 여러분은 지난 한 주일 동안 적어도 JTAG 인서킷 에뮬레이터를 포함하는 툴을 를 구현하기 위하여 아키텍처 자체에 많은 관
한 번은 ARM 기반 기기를 사용했을 것이다. 개발, 공급하고 있다. 심을 기울였다.
ARM 프로세서는 애플 컴퓨터사의 뉴턴 엔지니어들이 디자인에 ARM 칩을 사용하
PDA에 등장한 이래 주변에서 흔히 볼 수 있 고자 할 경우 아키텍처 버전에 대한 토론은
는 개인휴대정보단말기(PDA)에 사용되어 왔 그들의 눈을 흐리게 만드는 원인이 된다. 토
다. 현재 ARM은 마이크로소프트(MS)의 ARM 세계에는 임베디드 매크로셀을 모두 론이 칩에 사용되는 코어로 옮겨가면 이러한
PocketPC의 최신 버전을 유일하게 지원하는 포함한 코어와 명령어 집합 아키텍처, 기본 사태는 사라질 것이다.
프로세서 아키텍처다. 그리고 이제 머지않아 코어 간에 차이가 있다. 이러한 아이템들에 코어 패밀리는 아키텍처의 실질적인 구현
ARM 칩이 68K를 대신하여 PalmOS 기기에 대한 용어는 판매 대리점도 헷갈릴 만큼 비슷 이다. ARM의 일반적인 코어 패밀리는
등장하게 될 것이라는 것이 명백해졌다. 비슷하다. 따라서 이러한 차이를 이해하는 것 ARM7 Thumb, ARM9 Thumb, ARM9E
대부분의 핸드폰에도 ASIC이나 범용 CPU 이 중요하다. Thumb, ARM10 Thumb 등이다. 인텔의
형태로 ARM 코어를 사용한다. 또한 ARM 코 누군가가 ARM 아키텍처 버전에 대해 이 ARM 코어 패밀리도 있는데, 스트롱암
어는 여러분의 하드디스크, 프린터 또는 네트 야기하고 있다면 그들은 명령어 집합에 대해 (StrongARM)과 엑스스케일(Xscale) 마이크
워크 스위치를 제어하고 있을 것이다. ARM 이야기하고 있는 것이다. 임베디드 기기에 있 로아키텍처가 그것이다.
은 반도체 분야의 세대교체를 이끈 대표주자 는 대부분의 ARM 칩과 최근 디자인들은 여러분이 사용하는 코어는 여러분이 CPU
라고 할 수 있다. ARM 프로세서는 작은 임베 ARM v4나 v4T 아키텍처를 기반으로 하지 에서 얻을 수 있는 최대 성능을 결정한다. 같
디드 마이크로컨트롤러에서부터 멀티미디어 만, ARM과 인텔의 가장 진보된 ARM 칩들 은 아키텍처 버전 내에서라도 코어가 다르면
시장을 겨냥한 것들에 이르기까지 다양하다. 은 v4T 아키텍처의 수퍼세트인 v5T 아키텍 파이프라인과 데이터 경로 구조도 서로 다를

60
것이다. 게다가 ARM은 합성될 수 있는 일부
ARMv7
코어를 제외하고 하드매크로 형태로 코어를
제공한다. 이는 사용 가능한 코어의 크기와 V6 cores

사용 전압이 코어가 최초로 구현될 때 ARM ARMv6

에 의해 결정된다는 것을 의미한다. XScale™ ARM1022E


동일한 ARM 코어와 거의 비슷한 코어 ARMv5

CPU 성능을 가진 SoC가 여러 회사에서 공급 ARM1020 ARM9E ARM926EJ ARM10EJ


ARM7TDMI ARM720T
된다면 소비자가 제품을 선택하는데 많은 도
V4
움을 줄 것이다. 칩 제조사들은 마케팅 부서 StrongARM� ARM920T
에서만 의미 있는 벤치마크 숫자보다는 마이
1994 1996 1998 2000 2002 2004 2006
크로컨트롤러의 주변장치 세트를 놓고 서로
그림 1. ARM Architecture Revisions
경쟁한다.
시장에 나와있는 대부분의 ARM을 사용하 명백하게, ARM 프로세서는 RISC 계열이
여 설계된 칩은 ARM으로부터 공급받은 CPU 다. 메모리와의 유일한 상호작용은 로드하거
코어를 사용하는데, 이 CPU 코어는 디버그 나 레지스터를 저장하는 것이다. 연산, 논리
(D), 64-비트 multiplication result(M), ARM 프로세서용 코어는 거의 예외 없이 및 제어 명령은 오직 레지스터 상에서만 가동
DSP extension(E), 인서킷 에뮬레이션(I)의 고급 언어로 쓰여진다. 모든 RISC 계열처럼 한다. 이 때 큰 범용 레지스터 세트를 사용할
기능을 제공하는 임베디드 매크로셀과 기본 아키텍처는 C와 같은 고급언어와 잘 맞는다. 수 있다. 다른 RISC 프로세서와 달리 ARM
코어의 조합이다. 가장 일반적인 시스템 코어 그렇다면 우리는 왜 아키텍처와 명령어 집합 명령어 집합은 하나의 실행 사이클 보다 길게
는 ARM7TDMI와 ARM9TDMI이다(
“T”
가 에 대해 논해야 하는가. 걸리는 명령어가 있다. 다중 레지스터를 로드
Thumb 명령어 모드를 의미함을 상기할 것). 우선, 새로운 임베디드 플랫폼에 맞는 코드 하거나 저장하는 명령어는 이론상의 RISC 설
여러분은 CPU 코어와 메모리 시스템 유닛 를 개발하거나 포팅할 때 여러분은 일부 온칩 계에서는 벗어나지만 코드 공간을 줄이고 데
을 결합한 형태의 시스템 코어를 예상할 수 주변장치를 셋업하고 빠른 인터럽트와 같은 이터 처리율을 향상시키며 15회까지 32-비
있을 것이다. 이러한 시스템 코어들은 ARM 아키텍처 기능의 이점을 얻기 위해 어셈블리 트 워드의 atomic read나 write를 수행할 수
에 의해 라이선스되고 확장된 코어 번호를 사 를 사용하여 초기 스타트-업 코드를 개발하 있도록 해준다. 이러한 장점들은 ARM 설계
용하여 구분한다. 예를 들어, ARM720T 코 게 될 것이다. 둘째 여러분 중 대다수는 ARM 자가 순수한 RISC 구조에서 벗어난 명령어를
어에는 명령어와 데이터 캐시, 기록 버퍼 및 명령어 집합에 있는 일부 특징을 높이 평가할 ARM 아키텍처에 포함시키기에 충분한 이유
메모리 관리 유닛이 있다. 시스템 코어 형태 지 모른다. 가 될 것이다.
의 CPU는 메모리 계층 구조(memory 따라서, ARM과 그 경쟁자를 차별화시키
hierarchy)를 가지고 있기 때문에 소프트웨 는 것들 뿐 아니라 아키텍처와 명령어 집합에
어 개발 시에 CPU 코어만을 가진 CPU보다 대한 논의도 대략적인 소개로 마치려고 한다.
더 많은 장점을 제공한다. 이에 관해서는 ARM의“ARM 아키텍처 참고 ARM 프로세서는 인터럽트, 예외(excep-
매뉴얼”
을 참조할 필요가 있을 것이다. tion) 또는 시스템 태스크를 처리할 때 사용

Embedded World 61
TECHNICAL FEATURE/Engineer Community

되는 6개의 privileged mode와 하나의 표준 이 된다. 자신의 고유 모드와 레지스터가 있 한다. 37개의 레지스터 중 31개는 범용 레지
사용자 모드를 포함해 7개의 사용 가능한 운 는 Exception은 exception-handling 스터이고 6개는 상태 레지스터이다. 각각의
영 모드(potential operating mode)가 있다. latency(예외 처리 지연)를 최소화하고 중첩 프로그램 상태 레지스터(program status
privileged mode는 System, Supervisor, 된 예외(nested exception)처리 문제를 감소 register, PSR)에는 current processor
Interrupt, Fast Interrupt, Abort, Undef- 시킨다. 여러분은 스택 포인터, 링크 레지스 mode, interrupt 및 fast interrupt enable
ined Instruction 등이다. System mode를 터 그리고 SPSR에 대해 걱정할 필요 없이 여 flag, Thumb mode flag, conditional flag
제외한 모든 privileged mode는 독자적인 러분의 exception handler에 사용할 레지스 등이 포함된다. 플래그—negative, zero,
스택 포인터, 링크 레지스터, 현 상태 레지스 터를 저장하기만 하면 된다. Exception carry, overflow—는 ARM 명령어의 조건부
터(current status regi-ster)를 가지고 있 handler에 있는 exception을 re-enable하 실행에 사용된다.
다. System mode는 User mode register 려 한다면 이 레지스터들을 저장해야 한다. PSR 중의 하나인 CPSR(current program
set을 사용한다. status register)는 프로세서의 current state
Supervisor, Interrupt, Fast Interrupt, 에 사용된다. 다섯 개의 exception processor
Abort 및 Undefined Instruction mode는 mode에는 각기 고유의 SPSR(saved program
하드웨어나 소프트웨어 exception을 통해 천 ARM 아키텍처는 37개의 레지스터를 정의 status register)가 있다. 이는 SPSR_mode로
표시된다.

Register APCS name Use Saving convention 프로세서가 User mode 이외의 모드에 있
을 때 SPSR은 이전 모드에서의 CPSR 값을
r0 a1 Arg 1/integer result/scratch Caller
가지고 있다. 특히, Thumb-enabling
r1 a2 Arg 2/scratch Caller
r2 a3 Arg 3/scratch Caller processor를 사용한다면 일부 exception
r3 a4 Arg 4/scratch Caller handler에서 SPSR을 사용할 필요가 있다.
r4 v1 Register variable 1 Callee ARM 아키텍처에는 31개 32-bit-wide의
r5 v2 Register variable 2 Callee 범용 레지스터가 있다. 언제라도 15개의 범용
r6 v3 Register variable 3 Callee
레지스터, 프로그램 카운터, CPSR만은 볼 수
r7 v4 Register variable 4 Callee
있다. r0에서 r7까지의 앞에서 여덟 개 레지
r8 v5 Register variable 5 Callee
스터는 unbanked register라 불린다. r8에
r9 sb/v6 Static base/register variable 6 No change/callee
r10 sl/v6 Stack limit/register variable 7 No change/callee 서 r14 레지스터는 별개의 레지스터가 상이
r11 fp Frame pointer 한 프로세서 모드에서 같은 이름으로 보여질
r12 ip Scratch/new sb in interlink-unit calls 수 있기 때문에 banked register라 불린다.
r13 sp Stack pointer 모든 exception mode는 모드 스택 포인
r14 Ir Link register/scratch
터와 링크 레지스터에 r13과 r14 banked
r15 pc Program counter
register를 사용한다. FIQ 모드만이 r8에서
표 1. APCS(ARM procedure calling standard)는 레지스터의 사용방법을 규정한다. ARM 고급 언어 컴파일러는 이 r12까지의 레지스터를 bank한다. 특정한 모
규칙을 따른다. 고급 언어에 인터페이스하는 어셈블리어 루틴은 레지스터의 caller saving 또는 callee saving을 위해
적어도 이 규칙은 따라야 한다. 드를 위한 banked register는 rN_mode로

62
불린다. 특정한 모드에 있을 때, 여러분은 저장해야 하는 지에 대한 규칙은 따라야 한 fast interrupt, software interrupt, data
“_mode”지정을 사용하지 않아도 그 모드를 다. APCS의 레지스터 사용법을 표 1에 제시 abort, prefetch abort, undefined
위한 레지스터를 보게 될 것이다. 프로세서의 한다. instruction 등 7개 타입의 예외(exception)
내부는 프로세서 모드 교체를 위해 _mode 함수호출에서 첫 번째 네 인수는 레지스터 가 있다. 예외 상황이 발생하면 ARM 하드웨
register를 사용한다. a1�a4에 위치한다. APCS는 이러한 레지스 어는 그 예외를 위한 정의된 주소로 점프하게
레지스터 r15는 프로그램 카운터이며, 다 터가 호출된 함수 내에서 바뀔 수 있도록 한 된다. 표 2에 벡터 어드레스를 제시했다.
른 15개의 범용 레지스터와 다르게 처리해야 다. 함수 호출자는 이러한 값들이 예측할 수 Fast interrupt를 제외한 모든 예외에 사용
한다. 프로그램 카운터에 기록할 때에는 각별 없는 상태로 되돌아온다고 생각해야 한다. 레 할 수 있는 machine word는 하나밖에 없기
한 주의를 기울여야 하는데, 이는 프로세서가 지스터를 보존해야 할 필요가 있다면 레지스 때문에 벡터 어드레스에서의 명령어는 actual
새로운 어드레스로 분기(branch)를 실행하는 터를 함수호출에 앞서 푸시해야 한다. 리턴 exception handler로의 점프이다. 예외는
원인이 될 수 있기 때문이다. 함수호출로부터 값은 a1 레지스터에 저장된다. fast interrupt인데, 최고 예외 벡터(highest
복귀하기 위해서는 return address를 프로 레지스터 변수용으로 지정된 v1-v5/v7은 exception vector)로서 점프를 할 필요가 없
그램 카운터로 이동시켜야 한다. 이 때 가장 함수호출 도중에는 바뀌어선 안된다. 호출된 으며 0x0000001C 어드레스에서 시작해 FIQ
간단한 방법은 mov pc, Ir 명령을 실행시키는 함수는 이러한 값들을 저장하고 나서 사용하 handler에 제한이 없다.
것이며 그렇게 함으로써 링크 레지스터 내의 고 복원해야 하며 그 이후에 복귀해야 한다. 예외가 발생할 때 새로운 모드에 bank하
return address를 프로그램 카운터로 C compiler writer는 이 규칙을 따르기 때 게 될 레지스터는 가능한 _mode register로
register-register transfer 할 수 있다. 문에 코드의 모든 부분에서 최적화된 변수의 전송된다. 그리고 나서 CPSR이 예외 모드의
링크 레지스터가 function으로 들어갈 때 최대 수를 알 수 있다. SPSR로 복사되고, normal interrupt가 불
스택에 저장되었다면 load multiple 능화되며 프로그램 카운터가 예외 벡터로 설
register command를 사용할 수 있다. 예를 정된다.
들어 stmfd sp!, {r4-r6, Ir} 명령을 이용하여 링 예외가 리셋 또는 fast interrupt 일 경우
크 레지스터와 함께 스택상의 r4�r6 레지스 ARM 프로세서에는 reset, interrupt, 에는 FIQ도 불능화된다. 다른 경우에는,
터를 저장하고 실행하면 Idmfd sp!, {r4-r6,pc}
가 r4�r6 레지스터를 복원하고 return Exception Processor mode Vector address
address로의 분기를 야기할 것이다.
Reset Supervisor 0x00000000
ARM은 APCS(ARM procedure call Undefined instruction Undefined 0x00000004
standard)에서 레지스터 사용 규칙을 정의한 Software interrupt Supervisor 0x00000008
다. 이 규칙은 compiler writer와 고급 언어 Prefetch abort Abort 0x0000000C
와 접속하게 될 어셈블리 코드 기록에 필요한 Data abort Abort 0x00000010

기본 룰을 설정한다. Interrupt IRQ 0x00000018


Fast interrupt FIQ 0x0000001C
ARM 명령어 집합은 고급언어와 사용되어
야 하므로 모든 ARM 어셈블리 언어 루틴은 표 2. 일곱 개의 ARM exception 중 하나가 발생하면 프로세서는 privileged mode로 바뀌고 well-known 어드레스로
벡터화한다. 마지막 인터럽트의 예외와 함께, 또 다른 예외를 위한 벡터 어드레스는 다음 워드로 뒤이어 계속된다.
적어도 callee routine이 어떤 레지스터를 모든 FIQ exception handler를 위해 vector address의 명령어는 실제 exception handler로 점프하게 된다.

Embedded World 63
TECHNICAL FEATURE/Engineer Community

Exception Priority Banked registers Link register Return example multiple source도 될 수 있지만 FIQ의 경우
에는 단 하나의 소스가 된다. 이름에서 알 수
Reset 1 Undefined Undefined Undefined
Data abort 2 r13, r14, CPSR Aborted instruction + 8 subs pc, r14, #8 있듯이 fast interrupt는 최소 인터럽트 처리
Fast interrupt 3 r8-r14, CPSR Next instruction + 4 subs pc, r14, #4 시간을 의미한다. ARM 아키텍처는 세 가지
Normal interrupt 4 r13, r14, CPSR Next instruction + 4 subs pc, r14, #4 방법으로 이것을 지원한다. 첫째, FIQ exce-
Prefetch abort 5 r13, r14, CPSR Aborted instruction + 8 subs pc, r14, #8 ption의 유일한 소스의 한계는 software
Undefined 6 r13, r14, CPSR Next instruction movs pc, r14
vectoring의 필요성을 없앤다. 둘째, FIQ
Software interrupt 6 r13, r14, CPSR Next instruction movs pc, r14
handler가 최상 exception vector address
표 3. 7개의 ARM exception을 위한 return mechanism, exception priority, banked register 이다. 우선순위(priority)는
instruction의 완료 시 pending된 multiple exception이 있을 경우에 사용된다. Undefined exception과 software 이므로 별도의 점프가 필요 없다. 셋째, 프로
interrupt는 상호 배타적이므로 우선순위가 같다.
세서는 FIQ exception에서 레지스터 r8-r14
를 bank할 것이다(표 3 참조). 이는 충분한
sub r14, r14, #4 //Set return address properly working register를 공급하기 때문에 스택
stmfd sp!, {r0-r5,r14} //Store r0-r5 and return address on
오퍼레이션이 필요치 않다.
the stack
Normal IRQ는 온칩 주변장치나 칩으로의
;
;Execute main part of IRQ handler interrupt request에 의해 야기될 수 있다.
; 각 이행은 개별적으로 다중화(multiplexing)
Idmfd sp!, {r0-r5, pc}^ //Restore registers and return 를 처리할 수 있다. 일부 이행은 다중화를 인
//Note ^ for changing modes
터럽트하기 위해 외부 하드웨어를 필요로 하
는 반면, 어떤 이행은 내부 레지스터를 공급한
리스트 1. Exception handler를 entering 할 때, 여러분은 스택에 사용하게 될 레지스터를 푸시해야 한다. Working
register를 위한 store multiple register instruction을 사용할 때 스택에 푸시된 마지막 레지스터는 링크 레지스터이 다. 일반적으로 IRQ에는 software vectoring
어야 한다. 이렇게 되면 하나의 명령어로 working register를 복원하고 복귀시킬 수 있다. 이 리스트는 IRQ handler
를 위해 r0-r6를 저장하는 방법을 보여준다. 이 필요하다. 여기에도 이행 사이에 잠재적 차
이점이 있다. AT91 ARM7TDMI 패밀리는 온
CPSR에 있는 FIQ disable bit는 수정되지 어 있다. 칩 주 변 장 치 인 Advanced Interrupt
않는다. Banked link register에 의해 지정 여러분은 함수에서 복귀하기 위해 행해졌 Controller를 통해 하드웨어 IRQ vectoring을
된 명령어는 예외 타입에 의해 결정된다. 리 던 것을 약간 변형하여 store multiple과 구현한다.
셋용 링크 레지스터는 정의되지 않는데, 이는 load multiple 조합을 이용할 수 있다. 우선 두 abort exception은 instruction fetch,
프로세서 리셋으로부터의 복귀가 이치에 맞 Store Multiple 명령을 하기 전에 링크 레지 data load 또는 store 등이 invalid address
지 않기 때문이다. 각 예외를위해저장된링 스터를 적절히 삭감해야 한다. 둘째, mode (무효 어드레스)에서 요구될 때 메모리 시스
크 레지스터는 표 3에 제시했다. 예외에서 change가 일어나야 하는 프로세서를 알리기 템에 의해 초기화된다. 이는 메모리 관리 유
복귀하기 위해선, 프로세서에 저장된 레지스 위해 앞에 ^ 를 붙여야 한다. 리스트 1에 그 닛(MMU)이나 메모리 보호 유닛(MPU)이 있
터가 반드시 복원되어야 함을 알리기 위해 예가 제시되어 있다. 을 때 시스템에서 보통 일어나게 되는 현상이
접두사“s”
가 붙은mov나 sub의 특수한명령 인터럽트 메커니즘은 normal interrupt 다. Exception handler는 일반적으로 abort
어 형태가 필요하다. 이것도 표 3에 제시되 와 fast interrupt가 있다. IRQ의 경우에는 상태를 해결하고 나서 abort의 원인이 된 명

64
Real
Real Time
RealTime OS
TimeOS Solution
OSSolution
Solution

령어를 다시 수행한다. MMU가 있는 시스템, machine code encoding에 대한 지식을 필


특히 가상 메모리 시스템에서는 abort 요로 한다.
exception handler가 MMU 레지스터를 적 Exception handling의 타이밍은 각 Embedded System
Embedded System Solution
Solution
절히 셋업하기 위해 사용될 것이다. v5T 아 exception마다 다르다. 프로세서로 reset
키텍처에서 breakpoint(BKPT) 명령어는 input이 들어오면 프로세서는 현재 명령을 RxWork
RxWork Package
RxWork Package
Package
Include
Include Cross-Compiler(MICROCROSS)
Cross-Compiler(MICROCROSS)++++
IncludeCross-Compiler(MICROCROSS)
Include Cross-Compiler(MICROCROSS)
prefetch abort exception을 만드는 또 다른 인터럽트하면서 즉시 리셋 상태로 들어간다. Bootcode
Bootcode+++++RTKernel+RTModule
Bootcode
Bootcode
Bootcode RTKernel+RTModule
RTKernel+RTModule
RTKernel+RTModule
RTKernel+RTModule
+++++File
File
File System
System
FileSystem
File Maker
Maker+++++CoreModule
Maker
SystemMaker
System Maker CoreModule
CoreModule
CoreModule Schemetic
Schemetic
CoreModuleSchemetic
Schemetic
Schemetic
방법이다. 여러분이 가장 흥미를 가지고 있을 또 하나는
DEBUGGER
DEBUGGER Solution
DEBUGGER Solution
Solution
Software interrupt(SWI)는 User mode 아마도 FIQ exception과 IRQ exception의 BDI2000
BDI2000
BDI2000
BDI2000
BDI2000
에서 privileged mode로 접근하는데 사용된 타이밍일 것이다. Interrupt input 상태는 BDM
BDM
BDM Support
Support
BDMSupport
BDM CPU16/32/32+,PowerPC
CPU16/32/32+,PowerPC
SupportCPU16/32/32+,PowerPC
Support 5xx/8xx,
5xx/8xx,
CPU16/32/32+,PowerPC5xx/8xx,
CPU16/32/32+,PowerPC 5xx/8xx,
5xx/8xx,
ColdFire
ColdFire
ColdFire
ColdFire
ColdFire
다 . swi <argument> 명 령 을 실 행 하 면 명령어 바운드리(instruction boundary)에 JTAG
JTAG Support
JTAGSupport
JTAG ARM,M-CORE,PowerPC
SupportARM,M-CORE,PowerPC
Support ARM,M-CORE,PowerPC
ARM,M-CORE,PowerPC
4xx/6xx/7xx/82xx,Xscale,MIPS32,TriCore
4xx/6xx/7xx/82xx,Xscale,MIPS32,TriCore
4xx/6xx/7xx/82xx,Xscale,MIPS32,TriCore
4xx/6xx/7xx/82xx,Xscale,MIPS32,TriCore
4xx/6xx/7xx/82xx,Xscale,MIPS32,TriCore
software interrupt exception이 생긴다. 시 서 체크된다. 각각의 명령어는 인터럽트되지
CORE
CORE B/D
CORE B/D Solution
B/D Solution
Solution
스템은 request를 수행하기 위해 Supervisor 않는다. 이는 load multiple, store multiple PowerPC
PowerPC 5xx/8xx,
PowerPC5xx/8xx, PowerPC
5xx/8xx,PowerPC
PowerPC
PowerPC 5xx/8xx, PowerPC
4xx/6xx/7xx/82xx,Xscale,
4xx/6xx/7xx/82xx,Xscale,
4xx/6xx/7xx/82xx,Xscale, ARM,IBM405GP/750
ARM,IBM405GP/750
4xx/6xx/7xx/82xx,Xscale,ARM,IBM405GP/750
4xx/6xx/7xx/82xx,Xscale, ARM,IBM405GP/750
ARM,IBM405GP/750
mode에 들어갈 것이다. Exception handler 그리고 coprocessor transfer instruction
는 시스템 함수를 결정하기 위해 인수를 사용 이 인터럽트의 프로세서 인식을 지연시킬 수 RTLinux
RTLinux Education
RTLinux Education Solution
Education Solution
Solution
매월
매월
매월 마지막
매월마지막
마지막주
마지막 주 시행
주시행
주 시행
시행
하며, 이 인수는 명령어에서 인코드된다. 이 있다는 의미이다.
PORTING
PORTING SERVICE
PORTING SERVICE
SERVICE
인수는 SWI 명령어가 ARM 모드에서 실행될 이는 load multiple과 store multiple Special
Special
Special Basic
Basic
SpecialBasic
Special Basic Porting
Porting (450만원)
(450만원)
Porting(450만원)
BasicPorting
Porting (450만원)
(450만원)
RTLinux
RTLinux 교육(1인)
교육(1인)
교육(1인) +++++ RTLinux
RTLinux 교육(1인)
RTLinux
RTLinux 교육(1인) RTLinux
RTLinux BasicPorting(1
BasicPorting(1
RTLinux BasicPorting(1
RTLinux BasicPorting(1
BasicPorting(1
경우에는 24-비트이며 Thumb mode에서 instruction의 경우, 16 word나 512 바이트 Ethernet/1
Ethernet/1 Serial)
Serial)
Ethernet/1
Ethernet/1Serial)
Ethernet/1 Serial)
Serial)
실행될 경우 8-비트밖에 안된다. 메모리를 읽거나 쓰는데 필요한 시간에 따라 Target
Target:::::MPC850/860/8260/8245,
Target
Target
Target MPC850/860/8260/8245,
MPC850/860/8260/8245, IBM405GP,
IBM405GP,
MPC850/860/8260/8245,IBM405GP,
MPC850/860/8260/8245, IBM405GP,
IBM405GP,
StrongARM
StrongARM
StrongARM
StrongARM
StrongARM
여러분이 Thumb instruction을 사용할 예 다르다. 코프로세서 설계자는 coprocessor
정이거나 Thumb networking을 위해 셋업한 transfer instruction에 의해 전송되는 최대
시스템을 구현하고 있다면 시스템 명령어의 바이트 수를 결정한다. 이러한 이유 때문에
수를 255로 제한하는 것을 검토해 봐야 한다. ARM은 코프로세서 설계자에게 하나의 명령
SWI Exception handler는 링크 레지스터에 어에서 512 바이트 이상을 전송하지 않도록
저장된 주소의 바로 이전 명령어에서 인수를 권고하고 있다.
추출해야 한다. Undefined instruction 다음은 임베디드 설계에 ARM을 사용하는
exception은 undefined opcode가 실행되거 가장 큰 이유, 즉 ARM 아키텍처가 다른
나 코프로세서가 코프로세서 명령을 받아들이 RISC 프로세서에 비해 코드 사이즈를 축소시
(주)알코통신은 Embedded System에 대한
지 않을 때 발생한다. 키는 기능이 있다는 것에 대해서 설명할 것이 전문화된 경험으로 안전하고 완벽한 임베디
드 시스템 Total solution을 제공합니다.
Undefined instruction handler를 구현 다. 또한 다양한 CPU와 시스템 코어, 툴체
하기 위해 여러분은 링크 레지스터에 저장된 인, OS 등에 대해서도 다룰 것이다.
주소의 바로 이전 명령어를 decode해야만 한 서울시 강남구 대치동 959-4 지성빌딩 5층
다. Undefined instruction과 software Tel : 02∙556∙3807 Fax : 02∙556∙3808
http://www.rcotel.co.kr E-mail: support@rcotel.co.kr
interrupt handler 모두 instruction

Embedded World 65