블로그 이미지
Terapi

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

'Embedded'에 해당되는 글 6

  1. 2008.12.29 그림으로 설명한다.. 임베디드 리눅스
  2. 2008.12.11 Thumb 상태
  3. 2008.12.11 단위
  4. 2008.12.11 메모리 메핑
  5. 2008.05.30 임베 기초..
  6. 2008.05.30 임베디드 시스템 개요
2008.12.29 12:41 Embedded/Embedded 이론

신고

'Embedded > Embedded 이론' 카테고리의 다른 글

그림으로 설명한다.. 임베디드 리눅스  (0) 2008.12.29
Thumb 상태  (0) 2008.12.11
단위  (0) 2008.12.11
메모리 메핑  (0) 2008.12.11
임베 기초..  (0) 2008.05.30
임베디드 시스템 개요  (0) 2008.05.30
posted by Terapi
2008.12.11 10:49 Embedded/Embedded 이론

ARM(Advanced RISC machines) 프로세서의 Thumb 모드에 대한 글을 써야겠다고 마음 먹고 있다가 시간을 내어 글을 쓰게 되었습니다.

ARM
프로세서는 일반적인 32비트 인스트럭션 셋을 제공하는 ARM 모드와, 16비트 인스트럭션 셋을 제공하는 Thumb 모드가 있습니다. 모든ARM 프로세서가 Thumb 모드를 지원하진 않고 ARM7TDMI처럼 프로세서 이름에 T가 들어있는 제품군이 Thumb 모드를 지원합니다.


이 이야기는 하나의 프로세서가 두 가지 인스트럭션을 제공한다는 뜻인데, 그 이유가 무엇일까요?

RISC
머신은 복잡한 CISC 머신에 비해서, 칩 설계가 간단해지므로 보통 한 CPU 사이클에 하나의 인스트럭션을 수행할 수 있다는 장점이 있습니다. 부족한 부분은 컴파일러 최적화를 활용해서 성능을 개선하는 것이죠. 반대로 CISC처럼 복잡한 인스트럭션이 없다 보니 같은 기능을 구현하기 위해 드는 인스트럭션의 길이가 길어지는 문제점도 있습니다
.

ARM
이 주로 조그마한 임베디드 시스템에 사용되는 프로세서임을 생각해 본다면 그런 기계들은 메모리도 무척 귀중한 자원임을 알수 있습니다. 하지만 ARM RISC 머신이기 때문에 바이너리 크기가 같은 기능을 하는 CISC 프로세서용 바이너리보다 커지는 것이죠
.

이 문제를 해결하기 위해서 도입한 것이 Thumb 모드입니다. ARM 인스트럭션 중에 자주 쓰이는 수치 연산, 브랜치, load/store 등의 일부 명령을 16 비트로 표시할 수 있는모드를 만든 것이죠. ARM CSPR(Current Program Status Register)라는 현재 상태를 나타내는 레지스터가 있는데 여기 플래그를 하나 두고 현재 ARM 모드인지 Thumb모드인지 구분하게 됩니다
.

하지만 하나의 CPU가 두 개의 인스트럭션 셋을 가진다는 것은 그만큼 프로세서가 복잡해진다는 것을 뜻합니다. 이러면 RISC의 기본 정신에 어긋나게 되겠죠. 실제로 Thumb 모드는 별도의 프로세서가 아닌 보조 하드웨어를 거쳐서 ARM 인스트럭션으로 변환되게 됩니다. 이 변환은 하드웨어에서 이루어지기 때문에 별도의 속도 저하가 일어나지 않는 것이죠
.

물론 원래 32비트였던 인스트럭션을 16비트로 줄였기 때문에 몇 가지 제약 사항이 생깁니다. 원래 ARM 사용자모드에서는 16+1개 레지스터가 보이는데, 레지스터 어드레싱하는 비트를 줄이기 위해 이를 8+1개로 바꾸었습니다. 대신에 원래 ARM 모드에는 원래 PUSH, POP 명령은 암묵적으로 R13번을 사용하는 식으로 레지스터 어드레싱을 합니다
.

ARM
Thumb 모드는 하나의 바이너리 내에서도 자유롭게 변환이 가능합니다. C 프로그램을 컴파일한다고 하면 일부 함수는 ARM 모드로, 일부 함수는Thumb 모드로 컴파일이 가능한 것이죠. 물론 디바이스 드라이버나 예외 처리(exception handling) 같이 모든 레지스터와 인스트럭션에 대한 접근이 필요한 경우는 ARM 모드로 해야 하고요. 이런 변환은 보통 BX(Branch, Exchange) BLX(Branch, Link and Exchange) 같은 명령으로 이루어지는데 브랜치 할 때 목적 주소(destination address) LSB 0인지 1인지에 따라 결정을 하게 됩니다
.

Thumb
모드로 하면 한 가지 부수적인 장점은 데이터 버스를 16비트로 줄일 수 있다는 겁니다. 이 경우 Thumb 모드 인스트럭션은 16 비트로 버스로 보내고, 32비트 ARM 인스트럭션은 16비트 버스로2번 패치(fetch)해서 처리할 수 있죠. 실제데이터 버스는 16비트이지만 32비트로 RISC 머신을 쓸 수 있다는 장점이 있습니다. 대신에 비용을 낮추는 것이지요

 

http://skyul.tistory.com/tag/risc

 

 

 

흐름 제어 명령어

- 순차적인 프로그램의 수행 흐름을 바꾼다.

PC 상대적 분기 : B, BL
절대 분기 : BX, BLX, ALU 연산 명령어, LDR/STR 명령어


-명령어의 종류

상대분기
     분기 명령어 : B
     함수 호출 명령어  : BL ( Branch and Link)

절대분기
     분기전환 : BX
     분기전환 함수 호출 명령어 : BLX


B
=> 이 명령어가 수행될 때 PC의 값은 파이프라이닝에 의하여 명령어 주소 + 8의 값을 가지고 이 값에 분기 옵셋이 더해진다. 분기 옵세의 범위 : -32MB ~ 32MB

BL => LR에 BL 다음 명령어 주소를 기록 후 분기 복귀할 경우 
MOV PC, LR을 사용

BX =>ARM-Thumb 상태 전환 명령어
        분기할 주소 Rm AND 0xFFFFFFFE
        T = Rm[0] : BX 명령어를 사용한다면 1비트 무시하고 점프를 뛴다.
        Rm[0] 1이면 thumb 상태로 전환 하고 Rm[0] 0이면 ARM 상태로 전환한다.

신고

'Embedded > Embedded 이론' 카테고리의 다른 글

그림으로 설명한다.. 임베디드 리눅스  (0) 2008.12.29
Thumb 상태  (0) 2008.12.11
단위  (0) 2008.12.11
메모리 메핑  (0) 2008.12.11
임베 기초..  (0) 2008.05.30
임베디드 시스템 개요  (0) 2008.05.30
posted by Terapi
2008.12.11 10:17 Embedded/Embedded 이론
 

service vsftpd restart

 

 

nibble                = 4bit

byte                  = 8 bit

KB(kilo byte)     = 1024 byte(2의 10승 byte)

MB(mega byte) = 1024 kb (2의 20승 byte)

GB(giag byte)   = 1024 mb (2의 30승 byte)

TB(tera byte)    = 1024 gb (2의 40승 byte)

PB(peta byte)   = 1024 tb (2의 50승 byte)

신고

'Embedded > Embedded 이론' 카테고리의 다른 글

그림으로 설명한다.. 임베디드 리눅스  (0) 2008.12.29
Thumb 상태  (0) 2008.12.11
단위  (0) 2008.12.11
메모리 메핑  (0) 2008.12.11
임베 기초..  (0) 2008.05.30
임베디드 시스템 개요  (0) 2008.05.30
posted by Terapi
2008.12.11 10:15 Embedded/Embedded 이론

신고

'Embedded > Embedded 이론' 카테고리의 다른 글

그림으로 설명한다.. 임베디드 리눅스  (0) 2008.12.29
Thumb 상태  (0) 2008.12.11
단위  (0) 2008.12.11
메모리 메핑  (0) 2008.12.11
임베 기초..  (0) 2008.05.30
임베디드 시스템 개요  (0) 2008.05.30
posted by Terapi
2008.05.30 16:47 Embedded/Embedded 이론

(1). Cross Compiler 무엇인가?
 
 * 개발된 소스 프로그램을 다른 machine 기계어로 번역하는 프로그램.
 *
예를 들면 x86 계열의 호스트에서 개발한 소스 프로그램을 ARM 기계어로 번역하는
  
프로그램을 말한다.

 

(2). 임베디드 시스템에서 디버깅이 필요한 이유는 무엇인가?


 * 실행제어
   -
데이터 억세스에 대하여 watchpoint 설정
   -
명령 실행에 대한 breakpoint 설정
   -
코드를 single step 실행
 *
상태 제어
   - Processor
상태 제어(Register 값을 읽고 쓴다)
 *
시스템 상태 제어
   -
시스템 메모리 억세스
   -
코드 다운로드
 *
프로그램 실행분석
   -
실시간 trace
   - Memory
억세스 history

(3). 소스 코드의 컴파일이 완료되면 생성되는 이미지는 어떤 Format 인가?

 * Object 파일
   -
컴파일러나 어셈블러에 의해서 만들어진 바이너리 format 파일
   -
명령어와 자료구조 정보로 구성 되어 있다.
        (Header,section,symbol table
등으로 구성되어 있다)
  
(4). ATPCS 무엇이며 필요한가?

  * ATPCS (ARM Thumb Procedure Call Standard)
    -
컴파일러와 어셈블러에서 레지스터를 사용되는 방법에 대해서 정의
    - Function Argument
사용
    - Result passing(return)
    - Stack
사용
    - General purpose
레지스터의 사용

 

(5). JTAG 이란 무엇이며 어떤 기능을 가지고 있는가?

  * JTAG (Joint Test Action Group)
   - JTAG
PC 검사 산업에서 발전
   -
회로의 입출력 핀이 JTAG 핀과 상호 동작
   -
프로세서(CPU) 상태와 관계없이 모든 외부 핀을 구동 시키거나 값을 읽어 들일
   
있다
   -
각각의 셀은 시리얼 쉬프트 레지스터(바운더리 스캔 레지스터) 형성하기 위해서
   
서로 연결
   -
전체적인 인터페이스는 5개의 핀에 의해서 제어

(6). ICE(In-Circuit Emulator) 무엇인가?
 
  
-> 동작중인 TARGET 시스템의 실행을 제어하고, 메모리 프로세서의 레지스터를 읽거나
    
변경할 있고, trace 기능을 통하여 최상의 디버깅 환경을 제공한다.

 

(7). Embedded ICE 로직의 기능은 무엇인가?

   * ARM 프로세서는 2개의 watchpoint unit 가지고 있다.
    - Address
버스, data 버스, control 신호를 감시하고 있다가 설정된 값과 같으면 watchpoint
    
breakpoint 설정
   *
watchpoint unit
    -
단일 watchpoint 설정
    - ROM
또는 RAM 에서 단일 하드웨어를 breakpoint 설정
    - RAM
에서 무한개의 소프트웨어 breakpoint 설정 하여 사용할 있다

 

(8). Exception Vector Table이란 무엇인가?
- Exception 발생하면 미리 정해진 어드레스의 프로그램을 수행하는데, 어드레스를 Exception Vector 하고,각각의 Exception 대해서 Exception Vector 정의해 놓은 테이블을 Exception Vector Table이라 한다.

 

(9). Exception에서 return 사용될수 있는 명령은?
 * SUBS PC,LR,#4
 - Privilege(
특권) Mode에서 S 접미사를 사용하면 CPSR 복원
 * LDM SP!, {PC}^
 - SP
저장되어 있는 주소값을 PC 넣을때 '^' 붙여주면 CPSR 동시에 복원

 

(10). Data Abort 언제 발생하는가?
 * 잘못된 어드레스 공간에서 데이터를 읽거나 쓰려고 할때 발생
 * MMU
메모리 Controller에서 발생한 Abort신호 입력에 의해서 발생

 

(11). Re-mapping이란 무엇이며, 필요한가?
 
* 하드웨어 적으로 메모리의 어드레스 MAP 바꾸는 동작
 * Rom
이나 Flash DRAM 비하여 data버스의 폭도 좁고, 속도가 드려서 시스템의 성능을 저하 시킬수 있으므로,
  Re-mapping
하여 Rom data Ram 영역으로 올려 시스템 성능 저하같은 문제를 해결한다.

 

12. Scatter Loading이란 무엇인가?
 - 프로그램이 샐행되는 메모리 위치를 재배치하여 시스템의 성능을 증가 시키기 위한 방법

 

13. Start-Up 코드란 무엇인가?
 - 메인시스템이 동작하기 전에 기본적인 하드웨어의 초기화 작업을 설정을 해주는 명령어들로 Reset신호가입력되면,
시스템초기화 작업(시스템클럭, 메모리 컨트롤러, 입출력포트, MMU, 인터럽트 스택초기화) 수행하고, main()
같은 C 구성횐 함수를 호출한다.

 

14. 시스템 초기화 순서에 대하여 설명하라.
   1) Power-on 또는 reset switch 의하여 시스템 reset
   2) Reset handler
이동 
   3) Watch-dog
타이머를 초기화 한다.
   4)
외부의 모든 인터럽트를 받아들이지 않도록 한다.
   5) Clock
주파수, PLL등을 초기화 한다.
   6)
메모리 제어기를 초기화 
   7) SVC, USR, ABT, IRQ, FIQ, Undef
등의 stack 초기화 
   8) BSS
영역을 초기화 한다.
   9) C
함수로 분기하여 메인 프로그램을 시작.


15.컴파일러의 최적화 option에는 어떤 종류가 있으며 특징은 무엇인가
 최적화는 -O0, -O1,-O2 3단계로 나뉘어진다.
 -O0 :
최적화를 하지 않는다. 디버깅하는 경우에 유용하며, 소스레벨의 디버깅을 위해 '-g'옵션을 사용하면 선언에 무관하게 -O0 레벨이 된다
 -O1 : O0
O2 중간단계의 최적화를 수행
 -O2 :
컴파일러의 디폴트 최적화 레벨이며 코드집적도가 가장 좋다.

 또한 Speed최적화를 것인지, Space최적화를 것인지는 -Ospace, -Ospeed 옵션을 사용한다.

 

16 .Stack 어떤 용도로 언제 사용이 되는가
 배열이나 구조체를 사용하는경우, 변수의 수가 많아지는경우, 4개이상의 argument, 서브루틴의 리턴주소용으로 사용된다

 

17. C 소스에서 변수의 종류 할당되는 위치를 설명하라
 크게 Global 혹은 Static변수와 Local 변수로 나뉜다
 Global
변수는 메모리에 설정이 되고 Load/Store명령을 이용하여 데이터를 전송한다
 Local
변수는 register 사용하고 변수의 수가 많아지면 스택을 사용한다

 

18 .0Un-Aligned Access 의한 fault 피하는 방법은?
 컴파일러가 메모리 사용을 최소화 하도록 변수를 재배치한다. (packing한다)
 
변수를 packing하면 모든 access byte단위의 load/store 사용하여 access 있다.(P 8-41)

 

19. Interworking 이란 무엇인가
 Thumb명령어는 16비트를 사용하므로 Arm 명령어 보다 Code Density 높다. 하지만 Exception 발생하거나 PSR명령을 전달하거나 Coprocessor Access 하는경우에는 Arm 명령어로만 가능하다.
 
따라서 Thumb명령어와 Arm명령어를 스위칭 하는 것을 Interworking이라 한다.

 

20. Achitecture v5T에서 새롭게 추가된 Interworking 위한 명령은 무엇인가
 이전 버전에서는 Thumb명령어를 지원해야만 사용할 있었고, 코어가 지원하는 경우(T) BX(Branch with Exchange)명령으로 스위칭
 V5T
이후 버전에서는 BX명령어와 함께 BLX(Branch with Link and Exchange)명령도 지원

 

21. Inline assembler 사용하기 위한 Keyword 무엇인가
 (double underbar) -> " __asm {.........}; " (P 8-48) Inline ASM 코드에서는 C변수를 그대로 사용가능

 
신고

'Embedded > Embedded 이론' 카테고리의 다른 글

그림으로 설명한다.. 임베디드 리눅스  (0) 2008.12.29
Thumb 상태  (0) 2008.12.11
단위  (0) 2008.12.11
메모리 메핑  (0) 2008.12.11
임베 기초..  (0) 2008.05.30
임베디드 시스템 개요  (0) 2008.05.30
posted by Terapi
2008.05.30 16:41 Embedded/Embedded 이론

임베디드 시스템 개요

 

CPU (연산장치)

            cpu 구성(

                   제어장치

                   기억장치(Ram,ROM으로 구성)(이미 IC)

                   연산장치

MPU(Microprocess)   cpu IC 한것

            Microprocessor안에는 기억장치가 들어가지못함

               그래서 밖에다가 설치 

 

CPU = MPU = SoC = processor

 

기억을 한다 ó 보관을 한다

 

기억 : 데이터를 주면 처리의 과정이 없이 똑같이 나와야하는

 

process 처리를 할수 있느냐 없느냐에 따라서 …..

controller 연산장치가 없다

둘의 차이 연산장치의 유무

 

 

os 구성

 

 

사용자 삽입 이미지

부팅 과정

 

Computer부팅과정

1)power on

2)cmos(ROM) -> Bios Program

                                        -초기화 정보

3) boot loader SDRAM으로 옮기고 실행

                                        -HDD 0 Sector 있음

                                        -Kernel SDRAM으로 복사

4) kernel 실행

5) File system 인식하고 mount한다

 

Embedded system

1)    power on

2)    0번지의 bootloader 실행

-초기화

-boot loader SDRAM으로 복사

-kernel SDRAM으로 복사

3) kernel 실행

4) File system 인식하고 mount한다

 

os 설치 과정

Computer

1)    Cd_Rom 삽입

2)    Power ON

3)    CMOS

4)    CDD 있는 BootLoader SDRAM으로 복사

5)    설치 프로그램 실행

6)    Format 한다

-File System 만든다

    7) CDD 있는 Kernel HDD 복사

    8) 장치를 설정

                                                

사용자 삽입 이미지

Embedded System 설치

 

1)    boot Loader

2)    boot Loader실행

3)    kernel Flash 저장

4)    File System  Flash 저장

Flash memory HDD처럼 사용한다

사용자 삽입 이미지


========================================================================
사용자 삽입 이미지
기억장치

 

기억장치

입력한 data 출력한 data 같은 장치

같은 자리에서의 입력과 출력 data 같은장치

주기억 장치  : cpu 포함하는 기억장치

     ex) RAM, ROM, Flash ROM

 보조기억 장치: cpu 포함하지 않는 기억장치

ex) HDD, CDD

 

PROCESSOR

구분요소

1)    외형 => BUS

     DATA bus

     ADDR bus

     CONTROL bus

2)    REGISTER 구성

3)    정책

4)    Instruction Set ,Assem code

 

 

 

i386(IBM) Architecture

 ARM Architecture

 

 

2일차

 

Interrupt

예기치 못한 상황

룰이 정해져 있지 않다

화제

<처리>

1)    발생

2)    현재 진행 중인 명령을 끝까지 수행

3)    cpu 사항( Register ) sp 저장

                                   => SDRAM 저장된다 이게 중요한 거다

                                  => 속도도 저하된다

4)    Interrupt Vector (인터럽트 발생 했던 위치로 점프) 수행

5)    Interrupt Service Routine (ISR) 수행

:에러 메시지 출력

6)    SP 값을 cpu 복원

 

CPSR = Current Process State Register

: 물리적으로 1개가 존재 => USER

: CPSR 하위 5bit 대해서 상태가 변화된다

 

SPSR = Saved Process State Register

: 물리적으로 5개가 존재 => USER 제외한 나머지 모드에 존재한다.

 

Exception

예측한 상태

정상적이지 않은 상태

경미한 상황이라도 무조건 반응한다

Interrupt 경미한 상황에는 무시한다

정상적이지 않다. 미리 정해

수업시간

 


 

Decoder 해독기(선택기)

  AND GATE 사용

 

여러 개의 입력 값이 들어가서 개의 출력 신호만

(n개의 입력 -> 최대 2 n제곱개의 출력 단자)

 

명칭 => 2*4 Decoder, 3*8 Decoder, 4*16 Decoder

Encoder 부호기

OR GATE 사용

개의 입력신호 여러개 출력신호

(최대 2 n제곱의 입력단자가 n개의 출력단자)

 

키보드 ->2진값-> 부호기 ->  모니터안해독기 (해독해서 모니터에 뿌린다)

 

 

 

 

<명령어 실행순서>

1)    Instruction Fetch(인출) (명령어를 binary 가지고 온다)

2)    Instruction Decoder(해독)(해독해서 자기가 사용할 회로를 선택한다)

3)    Operand  Fetch

4)    Execute(자동적으로 실행)

 

사용자 삽입 이미지
신고

'Embedded > Embedded 이론' 카테고리의 다른 글

그림으로 설명한다.. 임베디드 리눅스  (0) 2008.12.29
Thumb 상태  (0) 2008.12.11
단위  (0) 2008.12.11
메모리 메핑  (0) 2008.12.11
임베 기초..  (0) 2008.05.30
임베디드 시스템 개요  (0) 2008.05.30
posted by Terapi
prev 1 next

티스토리 툴바