Day 1 - Build 과정

2025. 2. 24. 15:55·IDEC 교육/Embedded C

Keil에서 Build

axf / bin(optional) / hex(optional)

axf: windows에서의 exe와 같은 실행 파일(elf = Executable and Linkable Format 의 변형)

  • Code & Data (bin의 내용): .text(Code) / .ro / .rw
  • Debug 정보: 소스 코드와 기계어 코드 간의 매핑을 위한 라인 번호, 함수 이름, 변수 이름 등의 정보
  • Symbol Table: 프로그램 내의 함수와 변수의 이름 및 주소 정보를 포함
  • Section Header & MetaData: 각 섹션의 시작 주소, 크기, 속성 등 상세 정보를 제공
  • Relocation 정보(optional): 실행 시 주소 조정을 위해 필요한 경우, 코드와 데이터 위치를 재배치할 수 있는 정보

bin(optional): ROM에 기록될 데이터가 그대로 기록 되어있음, 헤더나 메타데이터 포함 X

  • Code(.text): 프로그램의 실제 명령어가 저장, 플래시 메모리(ROM)에 기록되어 직접 실행
  • RO(Read Only): 상수(Const), 문자열 리터럴, 변경 불가능한 데이터
  • RW(Read Write): 초기화된 전역 변수(.data), 초기화되지 않은 전역 변수(.bss) 포함
    • 이 변수들은 프로그램 실행 중 값이 변경될 수 있음
    • 시작시에 ROM에서 RAM으로 복사

hex(optional) : bin파일에서 시작 주소(적재 주소)및 체크섬 등이 추가된 파일

 

Map 파일에서 확인 가능한 정보

    Total RO  Size (Code + RO Data)                 2648 (   2.59kB)
    Total RW  Size (RW Data + ZI Data)              1040 (   1.02kB)
    Total ROM Size (Code + RO Data + RW Data)       2660 (   2.60kB)

 

Example

  • Linker Option "--no_remove"를 추가해야 사용 안하는 변수를 삭제안함
#include <stdio.h>
#include "ARMCM3.h"
#include "core_cm3.h"

const int cVar = 0x12345678;
int iVar = 0x55AA55AA;
int uVar;

int fputc(int c, FILE * fp){
	ITM_SendChar(c);
	return c;
}

int main(){

	printf("hello World! \r\n");
	return 0;
}

hello world!
12345678의 엔디안이 뒤집힌 데이터
55AA55AA의 엔디안이 뒤집힌 데이터
Disassembly

 

저작자표시 비영리 변경금지 (새창열림)
'IDEC 교육/Embedded C' 카테고리의 다른 글
  • Day 2 - Preprocessor
  • Day 1 - Modular(%) vs Bit-wise AND(&)
  • Day 1 - Hex 단위, Data Type
  • Day 1 - Variable의 선언 vs 정의
Zi_Yoon
Zi_Yoon
머리 속에 정리하는 곳 <전자공학>
  • Zi_Yoon
    ZY_repo
    Zi_Yoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • HDLBits (25)
        • Verilog (19)
        • Circuits (4)
        • Verification (0)
      • IDEC 교육 (1)
        • Embedded C (13)
        • Verilog HDL (8)
      • Hardware (8)
        • RISC-V Project (1)
        • Computer Architecture (0)
        • AMBA (2)
        • FPGA (0)
        • 논문 읽기 (1)
        • ETC. (4)
      • 42서울 (13)
        • 리눅스 (12)
        • 네트워크 (1)
      • 생각 (1)
      • 취업 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RISC-V
    verilator
    axi
    research rabbit
    AXI4
    verilog
    APT
    fucntion
    embedded
    ARM
    signal trap
    비대칭 키
    vm
    ssh
    IDEC
    lsblk
    hdlbits
    세션 키
    fpga
    AMBA
    debian
    c
    AppArmor
    보안 쉘
    QUARTUS
    pointer
    bit-wise and
    centos
    Keil
    charater
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Zi_Yoon
Day 1 - Build 과정
상단으로

티스토리툴바