728x90

CS 13

ELF(Executable and Linkable Format)이란?

UNIX 및 유사 운영체제에서 실행 파일, 공유 라이브러리, 그리고 객체 파일을 위한 표준 파일 포맷이다. ELF는 시스템 간 이식성을 고려해 설계되었으며, 다양한 이키텍쳐에서 사용된다. ELF 파일의 주요 구조ELF 파일은 크게 헤더(Headers), 섹션(Sections), 세그먼트(Segments)로 구성된다. 1. ELF 헤더(ELF Header)파일의 전반적인 정보를 담고 있는 헤더이다.주요 필드`Magic Number` : ELF 파일임을 식별하는 마커 (`0x7F + ELF` 문자열).파일 클래스 : 32비트(ELF32) 또는 64비트(ELF64)로 구분.데이터 정렬 : 리틀 엔디안 또는 빅 엔디안.파일 타입 : 실행 파일, 재배치 가능 파일, 공유 객체, 코어 덤프.대상 아키텍쳐 : 0x8..

CS 2024.12.18

Free RTOS란?

FreeRTOS는 Real-Time Operating System(RTOS)으로, 임베디드 시스템에서 실시간 작업을 처리하기 위해 설계되었다. 작고 경량화된 커널 구조로 인해 메모리가 소형 시스템에서도 동작하며, 태스크 관리, 시간 관리, 자원 공유 등의 기능을 제공합니다. FreeRTOS의 기본 개념(1) 태스크(Task)정의 : FreeRTOS에서 실행 단위는 태스크(Task)이다. 각 태스크는 독립적인 실행 흐름을 가지며, 이를 통해 병렬 실행처럼 보이는 동작을 구현할 수 있다.구조 : 각 태스크는 사용자 정의 함수로 작성되며, FreeRTOS에 의해 스케줄링된다.우선순위 : 태스크는 생성 시 우선순위를 설정하며, 스케줄러가 이를 기반으로 실행 순서를 결정한다.(2) 스케줄러(Scheduler)역할..

CS 2024.12.09

Keil μVision5

Keil μVision5는 Arm Keil에서 제공하는 통합 개발 환경(IDE)으로, 임베디드 소프트웨어 개발을 위해 설계되었습니다. 주로 ARM Cortex-M 계열의 마이크로컨트롤러 프로그래밍에 사용되며, 다양한 마이크로컨트롤러에 대해 코드 작성, 컴파일, 디버깅 등을 모든 개발 과정을 통합된 환경에서 처리할 수 있게 한다. Keil μVision5는 Keil MDK(Microcontroller Development Kit)의 일부분으로, 특히 STM32, NXP, Freescale 등 여러 제조사의 마이크로컨트롤러를 지원한다.  주요 기능1. 코드 에디터 : 코드 자동 완성과 구문 강조 기능을 갖추고 있다.2. 디버깅 도구 : ULINK 디버거와 같은 하드웨어 디버깅 도구와 연동 가능하며, RTOS..

CS 2024.11.08

OSAL(Operating System Abstraction Layer)란?

코드를 분석하며 OSAL이라는 것이 등장해서 궁금해졌다. 한번 알아보자. OSAL은 이름 그대로 운영 체제를 추성화한 계층이다. 이 계층은 소프트웨어가 특정 운영 체제에 종속되지 않고도 다양한 플랫폼에서 동작할 수 있도록 도와준다. 운영 체제에 대한 특성을 통합하고 공통된 인터페이스를 제공하기 때문에, 소포트웨어 개발자들이 하나의 코드로 여러 운영 체제에서 호환되도록 프로그램을 작성할 수 있다. OSAL의 작동 원리OSAL은 다양한 운영 체제의 기능들을 하나의 공통된 API로 추상화한다. 예를 들어, 멀티태스킹, 메모리 관리, 타이머, 동기화 같은 운영 체제의 핵심 기능들이 OSAL을 통해 일관된 방식으로 제공된다. 개발자는 OS에 따라 각각 다른 API를 사용할 필요 없이, OSAL에서 제공하는 공통 ..

CS 2024.11.05

프리패칭(Prefetching)이란?

프리패칭이란, CPU가 메모리에서 데이터를 필요로 하기 전에 미리 데이터를 가져와 캐시에 저장하는 기술이다. 이를 통해 데이터를 실제로 필요로 할 때 메모리 접근 지연을 피하고, CPU가 기다리지 않고 빠르게 작업을 이어갈 수 있게 된다. 즉, 프리패칭은 데이터를 사전에 준비하여 CPU 대기 시간을 줄이는 기법이다. 프리패칭은 보통 순차적인 메모리 접근 패턴이 있을 때 효과적이다.센서 데이터 처리그래픽 렌더링통신 패킷 처리프리패칭을 사용하면 CPU 대기 시간을 감소시켜 전반적인 성능을 향상시킬 수 있다. 그러나 잘못된 예측으로 불필요한 데이터를 미리 가져오게 되면, 오히려 캐시 오염이 발생하여 성능이 저하될 수 있다. 임베디드 시스템에서는 자원이 한정적이기 때문에, 프리패칭의 예측 정확성을 높이는 것이 ..

CS 2024.11.04

부동소수점에 대해서

부동소수점은 컴퓨터에서 실수를 표현하고 연산하기 위해 사용하는 방법이다. 정수는 소수점 없이 정확히 표현할 수 있지만, 실수는 소수점 아래 많은 자릿수를 가지며 매우 크거나 매우 작은 값을 포함할 수 있다.  C언어에서 부동소수점은 주로 float와 double형으로 표현된다. float형은 단정도 부동소수점 방식으로, 32비트를 사용해 숫자를 저장한다. 이는 소수점 이하 약 7자리 정도를 표현 할 수 있으며, 크기가 작은 실수를 다룰 때 유용하다. 부동소수점에는 한 가지 중요한 특징이 있다. 그것은 숫자를 근사값으로 표현한다는 것이다. 컴퓨터는 유한한 메모리를 사용하기 때문에 실수의 모든 자릿수를 정확히 표현할 수 없다. 이 때문에 오차가 발생할 수 있다. 부동소수점의 구조는 세 가지로 이루어져 있다...

CS 2024.11.01

루프 언롤링(Loop Unrolling)이란?

컴퓨터 프로그램의 성능을 최적화하는 중요한 기법 중 하나이다. 반복문을 수동으로 변경하여 반복 횟수를 줄이고, 코드의 성능을 높이는 방법이다. 주로 오버헤드를 줄이고 캐시 효율을 높이는 데 사용된다. 다음과 같은 반복문이 있을 때for (int i = 0; i  루프 언롤링을 적용하면 아래와 같다.for (int i = 0; i 위와 같이 루프 언롤링하면 반복 횟수가 줄어들어 오버헤드 감소가 가능하다.

CS 2024.10.23

2의 보수(Two's complement)란?

2의 보수를 알기 전에 1의 보수를 알아야 한다.1의 보수란 모든 비트를 반전시켜 양수를 음수로 변환하는 방법이다. 즉, 0을 1로, 1을 0으로 바꾸는 것이다.예를 들어, 8비트로 양수 10을 표현하면 00001010이 되는데, 이를 1의 보수로 변환하면 11110101이 된다. 이 방식은 음수를 나타내는 간단한 방법이지만, 덧셈을 수행할 때 문제가 발생할 수 있다. 특히, 1의 보수를 사용한 경우 결과에 대해 캐리 비트를 따로 처리해야 하는 문제가 있다. 2의 보수는 1의 보수를 이용해 음수를 표현하는 좀 더 발전된 방법이다. 1의 보수를 구한 후, 여기에 1을 더하면 2의 보수를 얻을 수 있다. 똑같이 8비트로 양수를 10을 표현한 00001010의 1의 보수는 11110101이며, 여기에 1을 더..

CS 2024.10.23

ISO 파일이란?

ISO 파일은 디스크 이미지 파일 형식이다. CD, DVD, 블루레이 디스크의 모든 내용을 하나의 파일로 압축한 형태이다. 파일 구조와 콘텐츠를 그대로 보존하여 디스크의 정확한 복제본 역할을 한다.ISO 파일은 .iso 확장자를 가지며, 가상 드라이브에 마운트 하거나 물리적 디스크로 굽지 않고도 사용할 수 있다. 예를 들어, 특정 소프트웨어 설치 프로그램을 ISO 파일로 제공하여 사용자들이 가상 드라이브에서 직접 설치할 수 있다. ISO 파일의 주요 특징디스크의 완전한 이미지: 디스크의 모든 데이터를 포함하여 파일 시스템 구조와 부트 정보를 유지한다.다양한 용도: 소프트웨어 설치, 백업, 디스크 복제 등 다양한 용도로 활용할 수 있다.부팅 가능: 운영체제 설치를 위해 부팅 가능한 USB나 DVD로 ISO..

CS 2024.10.14

인터럽트(Interrupt)란?

인터럽트는 시스템에서 예기치 않은 이벤트가 발생했을 때, 현재 실행 중인 작업을 잠시 중단하고, 해당 이벤트를 처리하는 기능을 의미한다. 쉽게 말해 끼어들기이다. 인터럽트가 발생하면, CPU는 현재 상태를 저장하고 인터럽트 서비스 루틴(ISR)을 실행하여 해당 이벤트를 처리한 후, 다시 이전 작업으로 복귀한다. 이를 통해 시스템은 중요한 이벤트에 빠르게 반응할 수 있다. 운영체제(OS)에서의 인터럽트운영체제에서 인터럽트는 CPU가 외부 장치나 내부 이벤트에 즉각적으로 반응할 수 있도록 하는 중요한 메커니즘이다. 인터럽트를 통해 CPU는 외부의 요청(예: 키보드 입력, 마우스 클릭)이나 하드웨어 장치의 상태 변화를 빠르게 처리할 수 있다. OS에서의 인터럽트 종류하드웨어 인터럽트: 하드웨어 장치에서 발생하..

CS 2024.10.10
728x90