본문 바로가기
공부/임베디드

약어/용어

by 개발자5 2023. 2. 16.

ABT mode (Abort)

ARM모드 중 하나.
Access하려는 주소가 access 할 수 없는 주소이거나 Instruction fetch를 못해온 경우.

  • 예) MMU나 MPU 사용하는 예에서 access protection 걸려있는 주소 접근 시 발생가능


ADS (ARM Developer's Suit)

ARM사의 cross compiler

AHB (Advanced High Performance Bus)

AMBA Bus interface 중 하나로 속도가 중요한 burst mode의 data전송에 이용.
Multiplex bus기반으로, 주소라인/제어라인/데이터라인 모두 공유. 처음에 주소를 쏴주고 데이터들을 쏴주는 burst전송 기법 사용.

ASB(Advanced System Bus)는 주소/제어/데이터라인 모두 분리. 양방향 버스구조. 주소와 데이터를 번갈아 쏴주는 구조로 burst로 data전송하는것은 어려움.

ARM (Advanced RISC Machine)


AMBA (Advanced Microcontroller Bus Architecture)
ARM사가 내부 IP들끼리 Bus를 통해 서로 잘 통신할 수 있도록 Bus protocol을 제안. 효율적이며 free임.
결국 ARM SoC 내부에서는 AMBA protocol을 통해 intercommunication함.

  • Bus interface는 3종류로 나뉨.
    1. AHB (Advanced High Performance Bus) - burst mode data전송에 이용
    2. ASB (Advanced System Bus)
    3. APB (Advanced Peripheral Bus) - 빠르지않은 전송 속도를 필요로하는 주변장치에 연결
    다른종류의 bus사이에는 다른 속도와 다른 protocol을 맞춰주기 위해 bridge가 존재
    AHB or ASB와 APB, 브릿지로 구성됨
    AXI라는 AMBA 3.0스펙도 나옴.
    4. AXI (Advanced eXtensible Interface) - burst기반. Write response channel 추가됨. rw동시가능. ARM11 이상 코어를 사용하는 MCU의 backbone bus로 사용.
  • Arbiter
    각 IP들이 Master(Slave 에게 rw요청)도 되고 Slave(rw 및 응답)도 되는데 이러한 bus system의 bus사용 여부에 대한 결정권을 갖는 것이 arbiter임.

 

axf

ARM eXcutable Format

Elf의 .debug 정보 부분에 DWARF2.0 규격을 따르는 format. 즉, Elf header나 나머지 .text, .data, .bss는 같지만 .debug 부분은 DWARF2.0 규격을 따름.

Banked register
FIQ의 r8~14, Fiq/Svc/Abt/IRQ/Und의 r13,14, SPSR이 해당.
이것들만 ARM모드별로 따로있고 나머진 공통으로 사용

Barrel Shifter
Shift(왼/오), rotation(오)을 실행할 32비트 워드와 shift수를 입력받아 출력하는 특별한 회로. 산술연산 시 유용.

Compile

  1. source file(.c)들을 C compiler (armcc, tcc)를 이용해 어셈블리(.s)로 만듦 - 이때 전처리를 수행(#define, #include 등을 잘 끼워넣어 c형식의 .i 파일을 생성)
  2. Assembler (armasm)를 이용하여 elf형식의 object file(.o)을 만듦
  3. Linker(armlink) 를 통해 object 파일들 및 library 파일들이  linking됨. 이때 output으로 object file( .o), executive image(.elf), .map, .sys 파일 생성
  4. fromelf라는 유틸리티 의해 .bin 생성

map, sys 파일은 옵션설정 시 생성
C compiler는 preprocessing, compiling, assembling을 한번에 해줌.
linking 시에 사용되는 .scl파일(scatter loading)은 바이너리 생성 시 메모리 주소 구성을 원하는대로 할 수 있도록하는 script 파일

Control Hazard
branch에 의해 이미 fetch해 놓은 것을 버려야할 때 pipe lining 이 깨짐

CPSR (Current Program Status Register)

31:28 - NZCV (Negatice, Zero, Carry, oVerflow) Condition flag
ARM코어는 opcode를 메모리에서 가져오자마자(fetch)무조건 실행하는 것이아니라 이 flag를 보고 실행여부 결정


Cross compile
실제 타겟에서 돌아갈 바이너리 이미지를 PC상에서 컴파일 할 수 있게 해주는 환경

Data Hazard
Execute 단계에서 어떤 register 값을 조작했는데 동시에 다음 opcode의 decode에서 조작중인 register값을 가져와야할 때 pipe lining 이 깨짐.

DDR SDRAM
Double Data Rate
System bus와의 동기는 System bus의 clock으로 맞출 수 있는데 이 bus clock의 rising edge와 falling edge에서 모두 동작함으로써 데이터가 2배로 빨리 전송

DPC (Deferred Procedure Call)
인터럽트 발생 시 중요한 용건을 처리하고 ISR을 끝낸 후에 소프트웨어에게 다 못끝낸 일을 나중에 처리할 수 있도록 미뤄놓는 것.
APC(Asynchronous Procedure Call) 이라고도 함.

 

ELF (Executable and Linking Format)

tcc -c XXX.c (-c 옵션으로 컴파일 하면 elf 형식을 따르는 XXX.o파일이 생성됨)

readelf -h XXX.o (elf header를 사용자가 알기쉬운 형태로 출력해줌)

 

ICD (In Circuit Debugger)

Trace32같은 디버거


IP (Intellectual Property)
전자회로의 기능 block
SoC측면에서 각각의 기능을 가진 device를 각각의 block으로 만들고 이를 재사용 가능하도록 모듈화함.
이러한 각각의 기능을 가진 SoC내부의 block을 IP라고 부름.
Serial port, External Bus Interface, I/O, PLL, Trace JTag, UART, DMA, Timer등이 있음

IR (Instruction Register)
프로세서 내부 기억장소인 register 중 하나로, PC가 가리키는 주소에서 읽어온 instructon을 담아두는 기억장소

LSB (Least Significant Bit)
하위 bit

 

Linker

실제 함수 정의부의 위치와 전역변수들의 위치를 library file과 object file에서 차례대로 조사한 후에 모두 table로 간직하고 있다가 link시에 그 주소를 함수호출 코드 부분에 기록해 넣는 일을 함.

 

Load View / Execution View

  • Load View : software가 실행되기 전에 저장캐체에 담겨있을 때의 모습. 즉, Flash에 실행 image가 담겨있을 때의 모습.
  • Execution View : software가 실행될 때의 모습. 즉, 실제 image가 실행될 때의 모습.

 


MCP (Multi Chip Package)
Flash memory와 RAM을 한칩에 집적

  • 예) NAND + (DDR) SDRAM


MCU (Micro Controller Unit)
ARM Core와 IP들의 묶음

MMU (Memory Management Unit)

Virtual address를 physical address로 변환시킴

Cache / Non cache, Write bufferable / Non write bufferable / Readoly 설정 가능

MPU (Memory Protection Unit)

MSB (Most Significant Bit)
상위 bit. 상위2bit 지칭 시 MSB 2bit 이라고 함.

PC (Program Counter)

PCS (Procedure Call Standard)
함수를 부를때 register는 어떻게 사용하는지, return 값은 어떻게 돌려주는지, stack은 어떻게 사용되는지 등에 대한 약속. 이 약속에 따라 컴파일러는 기계어를 만들어냄

  • APCS : ARM Procedure Call Standard (구버전)
  • TPCS : Thumb Procedure Call Standard (구버전)
  • ATPCS : ARM-Thumb Procedure Call Standard
  • AAPCS : Procedure Call Standard for ARM Architecture (현재 최신)


Pipe line

  • ARM7 : Fetch - Decode - Execute (3)
  • ARM9 : Fetch - Decode - Execute - Memory - Write (5)
  • ARM10 : Fetch - Issue - Decode - Execute - Memory - Write (6)

PC는 항상 fetch하는 곳을 가리킴. 즉, ARM의 경우 PC는 항상 +8앞서감.


RISC (Reduced Instruction Set Computer)

 

Scatter loading file

Linker script로(Linker의 input으로 사용 됨), 원하는 영역에 symbol들을 특성에 따라 위치시킬 수 있음.

.scl 파일

 

SoC (System on Chip)
ARM코어를 바탕으로 웬만한 device들(PLL, Timer, JTag, Serial port...)을 block화 해서 한 칩에 넣음.

SPSR (Saved Program Status Register)
CPSR 백업용. ARM모드가 바뀔때 사용

SVC
Supervisor 모드. ARM의 default mode

 

Symbol

Linker가 알아볼 수 있는 기본단위. 자신만의 주소를 갖게되는 특별한 단위로, 전역변수의 이름이나 함수이름, static 변수 등이 symbol이 됨.

Elf object 파일 내에는 symbol table이 있으며, 소스코드에서 참조되는 symbol들의 이름과 위치정보가 들어있음.

Linker만이 symbol을 참조하며, 모든 symbol들을 주소로 변환하여 binary를 생성

UND mode (Undefined)
Instruction을 fetch 했는데 ARM이 모는 경우 진입

  • 예1) Memory corruption
  • 예2) ARM이 사용하지 않는 코드를 일부러 삽입하여 UND vector주소로 jump하게 만들어 디버깅코드 등 의도된 일을 할 수 있음

Write Back / Through

Data를 쓸 때 memory에는 write하지 않고 cache만 update 함 / Cache와 memory에 모두 update 함.


XIP (eXecution In Place)
소프트웨어를 메모리에 로드하여 실행하는 대신 플래시에서 직접 수행

 

.bss

Block Started by Symbol

초기값이 없는 전역 변수 or 초기값이 0인 전역변수 (ZI)

 

.constdata

const로 선언된 전역변수 (RO)

 

.data

초기값이 있는 전역변수. (RW)

 

.scl (file)

scatter loading file = linker description script

 

.text

함수 등의 코드 (RO)

 

 

'공부 > 임베디드' 카테고리의 다른 글

VS Code 단축키  (0) 2023.03.14