본문 바로가기

Study_Programming

EABI란

728x90
반응형

1. ABI(Application Binary Interface)란

  • 서로 다른 binary program 간의 Interface
  • 기계어 코드 간의 호환성을 맞추기 위해 정의된 application binary interface 규격
    • 서로 다른 compiler를 통해 source code를 compile 하더라도 object 파일끼리 linking이 가능하도록 함

1.1. ABI 내용

  • ISA(Instruction Set Architecture), Register file 구조, Memory 접근 유형 등의 세부 사항
  • Processor 직접 접근 가능 기본 자료형 size, layout 및 data 구조 정렬
  • Calling convention, 함수의 입력 인자 및 return 값 전달 규칙
  • Name mangling
  • 예외 전파

1.2. API(Application Programming Interface)와의 차이

  • API는 함수의 정의 방식을, ABI는 함수의 calling convention을 정의
  • Ex) Charging_Start 함수 사용 시
void Charging_Start(int current);
  • API
    • 함수 이름
    • Parameter type
    • Header declaration
  • ABI
    • current 변수를 저장할 register
    • Stack 저장 방식
    • Return 방식

1.2.1. API

  • API는 Source code level에서의 규약 : Source code가 다른 SW component와 상호작용하는 방식을 정의
    • 즉 Harware 독립적인 Programming 관점에서의 Interface를 의미
  • 즉 해당 Library 사용 시의 코드 작성 방법을 정의한 것
  • Ex) FreeRTOS, STM32 HAL Library에서 사용하는 아래 함수들이 API임
xTaskCreate()		// FreeRTOS API
HAL_GPIO_WritePin()	// STM32 HAL Library API

1.2.2. ABI

  • ABI는 Binary level의 interface 규약 : Compile 된 binary 파일이 기계어 level에서 상호작용하는 방식을 정의
    • 즉 compile 된 코드(object)에 대한 interface를 정의
    • Compile 후 binary로 나온 결과물(object 등) 간의 연결에 중점
    • Ex) Windows 98에서 사용하는 program을 Windows XP에서도 그대로 실행 가능
    • Ex) sum 함수 사용 시, 아래와 같은 사항들을 지정
int sum(int a, int b)
{
  return a + b;
}
Item ARM EABI rule
변수 a 저장 R0
변수 b 저장 R1
return value R0
stack alignment 8 byte

 

  • 즉 compile 된 binary 파일들이 recompling 없이 함께 동작할 수 있도록 하는 방식을 정의한 것
  • EABI는 각 argument가 사용할 register를 지정하는 등의 CPU architecture에 의존적인 약속

2. EABI(Embedded ABI)란

  • Embedded System에 특화된 ABI로, Embedded System에서 사용하는 protocol
    • Host가 없는 환경에서의 GCC compiler toolchain for ARM
  • EABI를 지원하는 compiler는 다른 compiler가 생성한 코드와 호환되는 object file을 생성
    • 이를 통해 한 compiler가 생성한 library를 다른 compiler가 생성한 object file과 link 가능
  • EABI는 대상 embedded system의 제한된 resource에 대해 성능에 최적화되어있음
    • Kernel과 사용자 공간 사이의 추상화 생략 가능
    • Ex) 더 작은 실행 파일과 더 빠른 로딩을 위해 동적 linking을 피함

2.1. EABI 내용

  • 파일 형식
  • 자료형
  • Register 사용 법
  • Stack Frame 구성
  • Embedded SW Program의 함수 매개변수 전달

3. None EABI란

  • EABI가 아니라는 것이 아닌, 특정 제조사나 OS에 특화된 EABI가 아니라는 뜻
    • HW 자체에 직접 Program을 올리는 환경을 의미
  • 즉 OS 없이 Bare-metal 환경의 MCU 개발 시 사용하는 SW compile 및 build 환경
    • ARM Core 기반의 SW는 거의 arm-none-eabi-linux 혹은 arm-none-gnueabi-linux를 사용
  • Ex) Toolchain 예시
<architecture>-<vender>-<os>-<abi>
arm-none-eabi-gcc

 

 

 

 


참고 자료 :

 

728x90
반응형

'Study_Programming' 카테고리의 다른 글

Visual Studio Project 이름 변경법  (0) 2025.09.30
자료구조  (0) 2025.01.20
DLL(Dynamic Link Library)이란  (0) 2024.07.30