728x90

2024/12 8

DCDC 컨버터(DC-DC Converter)란?

DCDC 컨버터는 직류(DC) 전압을 다른 직류 전압으로 변환하는 전력 전차 정치로, 다양한 전자 시스템에서 배터리나 전원 공급 장치로부터 제공되는 전압을 원하는 수준으로 변환하기 위해 사용된다. 이는 입력 전압보다 높은 전압(Boost), 낮은 전압(Buck), 또는 양극성 전압으로 변환할 수 있다. 주요 유형1. Buck 컨버터 (스텝 다운)입력 전압을 더 낮은 출력 전압으로 변환.효율이 높아 저전력 시스템에서 자주 사용.2. Boost 컨버터 (스텝 업)입력 전압을 더 높은 출력 전압으로 변환.LED 드라이버나 배터리 시스템에 유용.3. Buck-Boost 컨버터입력 전압을 높이거나 낮출 수 있음.출력 전압의 극성을 반전시킬 수도 있음.4. SEPIC 컨버터Single-Ended Primary-In..

전기•전자 2024.12.20

[C언어] printf 함수 구현

`printf()` 함수란?`printf()` 함수는 C 프로그래밍에서 데이터를 출력하기 위해 가장 널리 사용되는 함수이다. 형식 지정자를 활용하여 다양한 데이터 타입을 출력할 수 있으며, 콘솔 기반 출력의 기본 도구이다. 형식 문자열과 형식 지정자`printf()` 함수는 형식 문자열을 입력받아 처리한다. 형식 문자열을 일반 텍스트와 형식 지정자로 구성되며, 형식 지정자는 `%d`, `%f`, `%s` 등으로 데이터 타입을 정의한다. 가변 인자의 처리 방법`printf()`는 가변 인자를 처리하기 위해 `stdarg.h` 에 정의된 `va_list`, `va_start`, `va_arg`, `va_end`를 사용한다. 이를 통해 함수 호출 시 전달된 인자들을 순차적으로 읽어 형식 지정자에 따라 처리한다..

C언어 2024.12.19

FreeRTOS ARM-M0 직접 포팅

5일동안 삽질하면서 ARM-M0 보드에 FreeRTOS를 포팅하는 과정과 오류를 정리하겠다.여기서 Keil 컴파일러를 사용하였지만 Keil Pack Installer에서 CMSIS-FreeRTOS를 설치하는 과정에서 오류가 생겨 직접 포팅하였다. 직접 포팅1. FreeRTOS-Kernel 다운로드 https://github.com/FreeRTOS/FreeRTOS-Kernel 에서 Kernel 파일을 가져와 프로젝트 파일에 넣어준다.Keil에서 본인 프로젝트에 Manage Project Itmes로 Kernel 파일 일부를 가져와야 된다. 2. Keil 프로젝트 구성공통 파일.\tasks.c.\list.c.\queue.c.\...(본인 선택)Keil - ARM_M0.\portable\RVDS\ARM_CM0..

MCU 2024.12.19

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

[C언어] 개행 문자

Keil 환경에서 ARM Compiler를 쓰며 마지막 줄에 개행 문자(\n)를 넣지 않으니 Waring 메시지가 떴었다. 찾아보니 C언어에서는 파일의 마지막에 개행 문자(\n)를 넣어야 한다는 규칙이 존재한다. 하지만, 실제 컴파일 환경에서 이 규칙을 무시해도 대부분의 경우 문제가 발생하지 않는다. 그렇지만 개행 문자를 마지막에 꼭 넣어야 하는지 알아보자. C 표준의 규칙C 표준(ISO C)에 따르면, 소스 파일의 마지막 줄은 반드시 개행 문자로 끝나야 한다. 그렇지 않을 경우, 컴파일러에 따라 다음과 같은 문제가 발생할 수 있다.소스 코드가 제대로 종료되지 않았다고 간주될 수 있다.다른 파일과 합칠 때 의도치 않은 문제가 생길 수 있다. 왜 개행 문자가 필요한가?1. POSIX 시스템 규칙 : POS..

C언어 2024.12.13

전압 스트레스(Voltage Stress)란?

전압 스트레스(Voltage Stress)란 전자 부품, 특히 반도체 소자에서 고전압이 가해질 때 발생하는 물리적, 전기적 영향을 의미한다. 이는 반복적으로 작동하는 시스템에서 성능 열화와 수명을 제한하는 주요 원인 중 하나이다. 전압 스트레스의 원리전압 스트레스는 반도체 소자의 구조적 특성과 동작 방식에서 비롯된다. EEPROM이나 플래시 메모리와 같은 비휘발성 메모리는 데이터를 저장하기 위해서 플로팅 게이트 트랜지스터(Floating Gate Transistor)를 사용한다. 이 트랜지스터는 전자를 저장하거나 방출하는 동작을 수행하며, 이러한 과정에서 높은 전압이 필요하다. 고전압은 전자를 플로팅 게이트에 강제로 주입하거나 방출하는 역할을 한다. 이 과정에서 산화층(Oxide Layer)이 전자 이동..

전기•전자 2024.12.13

[MCU] Startup 코드란?

Startup Code는 글자 그대로 MCU의 시작을 의미한다. MCU의 전원을 켰을 때(Power-On Reset) 시작되는 / 실행되는 코드라는 것이다. 하드웨어와 소프트웨어 환경을 초기화하여 애플리케이션 코드가 실행될 준비를 한다. 이 코드는 시스템 운영의 기초가 되며, 주로 어셈블리 언어 또는 저수준 C 코드로 작성된다. Startup Code의 일반적인 동작 순서벡터 섹션 정의모든 인터럽트 비활성화초기화된 데이터를 ROM에서 RAM으로 복사초기화되지 않은 데이터 영역을 0으로 설정스택 공간 할당 및 초기화프로세서의 스택 포인터 초기화힙 공간 생성 및 초기화인터럽트 활성화main 함수 호출이 외에도 실행될 수 있는 몇 가지 명령어를 포함할 수 있고, 이는 main 함수가 종료되는 경우에만 실행된다..

MCU 2024.12.11

Free RTOS란?

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

CS 2024.12.09
728x90