본문 바로가기

임베디드 SW/디자인 패턴7

통신 펌웨어 구현 가이드 메모리 및 데이터 처리(1) 메모리  MSB와 LSBMSB(Most Significant Bit/Byte)는 비트단위에서 최상위 비트를 의미하고, 바이트 단위에서는 최상위 바이트를 의미LSB(Least Significant Bit/Byte)는 비트 단위에서 최하위 비트를 의미하고, 바이트 단위에서 최하위 비트를 의미MSB, LSB 용어는 시리얼 통신 구현 뿐만  아니라 모든 통신에서 LSB 부터 전송할 것인가 MSB부터 전송할 것인가와 같은 규약 (프로토콜)을 정할 때 사용된다. (2) 메모리 데이터 저장 타입, 리틀 엔디안과 빅 엔디안CPU는 데이터를 메모리에 MSB 부터 저장할 것 인지, LSB 부터 저장할 것 인지에 따른 저장 순서에 의해 리틀 엔디안(Little Endian)과 빅 엔디안(Big .. 2025. 3. 15.
FreeRTOS 사용하기 1. FreeRTOS 개념RTOS는 임베디드 마이크로컨트롤러(MCU)에 올라가는 커널 운영체제의 일종이다. RTOS 개념과 왜 사용해야하는지에 대해서는 이미 정리한바 있으니 본 블로그의 포스팅을 참고바란다.https://www.freertos.org/ FreeRTOS™ - FreeRTOS™ freertos.orgFreeRTOS 운영체제 공식사이트에서 자세한 내용을 확인할 수 있다.주요특징으로는오픈 소스이며 무료이다. (GPL)각종 의료기기나 자동차 ECU 또한 FreeRTOS 커널을 통해 임베디드 S/W로 사용되어 진다.ARM, AVR, PIC, INTEL, ESP32 등 35개의 마이크로컨트롤러(MCU)에 이미 포팅되어 있으며 컴파일러에도 이식되어 있다.https://github.com/FreeRTOS.. 2024. 10. 16.
실시간 운영체제 (RTOS) 마이크로 컨트롤러(MCU)를 다루고 프로그래밍하는 임베디드 분야에서는 사실 RTOS의 필요성을 못느낄 수도 있는데, 사실 나도 그렇다. 운영체제(Operation System)는 프로그램 실행 관리를 수행하는 소프트웨어이다.운영체제에는 범용 운영체제와 실시간 운영체제 (Real Time Operating System, RTOS)가 있다.1. RTOS (Real Time Operating System) 개념RTOS의 목적은 정해진 시간(실시간)에 데이터 처리를 하기 위한 스케줄링 운영체제이다.임베디드 시스템이 가지는 시간 제약에는 실행 시작 타이밍이나 언제까지 처리를 완료할 것인지가 있다.처리를 종료시킨다는 것은 입력 Data를 받아 출력 Data를 출력하기까지의 처리를 완료시키는 것을 의미한다.시간제약은.. 2024. 9. 4.
[F/W] 펌웨어 구현 시 메모리 관리 펌웨어란 하드웨어를 직접 접근하고 제어하는 밀접한 관계를 가지고 동작하는 소프트웨어의 일종이다.그렇기 때문에 일반적인 어플리케이션 소프트웨어와는 다르게 조금 더 신경 써줘야한다고 생각한다. 수정: 스택은 컴파일러가 정해주고 힙은 런타임(프로그램 실행 중 동적으로 바뀜)1 .스택 오버플로우 (Stack Overflow) 예방펌웨어의 크기가 커질수록 또는 최적화해야 할 필요가 있다면, 자신에 시스템에 맞는 스택과 힙의 크기를 결정해야 한다.스택은 메모리 최상단에 위치하여 데이터가 추가될 수록 아래로 커지는 자료구조힙은 반대로 데이터가 추가될 수록 위로 커지는 자료구조스택 여유 공간 확인 (모니터링) : FreeRTOS 테스크를 사용중이라면 각 태스크의 스택 사용량을 확인 할 수 있다. 또는 런타임 시 스택의.. 2024. 6. 25.
[F/W] CPU 구조 및 동작 CPU의 구성과 동작 원리는 펌웨어 개발에 도움이 많이 될 것 같아서 정리해본다.CPU는 논리회로의 집합체이다. 개인적으로 생각으로는 이런 CPU를 만들어내는 것이 진정한 반도체 기술이라고 생각한다. (우리는 이미 만들어진 CPU를 사용하여 또 다른 회로를 만든다... ) CPU에 구성된 pin들에 신호를 주게되면, 그에 대한 일을 수행하는 원리이다. 예를 들어 8bit CPU에서 0~7번 까지의 약속된 신호를 주게 되면 CPU는 그에 해당하는 일을 하게 된다. 당연하게도 CPU제조사 마다 구성은 다르기에 핀을 굳이 외우고 다닐 필요까진 없고1. CU (Control Unit, 제어 유닛)제어 유닛인 CU는 ALU과 REGISTER 등의 주변 유닛을 제어하여 기계어 명령을 읽고 어떤 동작을 해야하는 해석.. 2024. 6. 18.
[F/W] 메모리 영역 (스택, 힙) 보통은 MCU 제조사에서 제공하는 통합 개발 환경 (IDE)툴에서는 기본 코드의 기본값(Default)으로 되어 있는 스택의 크기와 힙 영역의 크기를 변경하지 않고 사용한다.하지만, 펌웨어의 크기가 커질수록 또는 최적화해야 할 필요가 있다면, 자신의 시스템에 맞는 스택(Stack)과힙(Heap)의 크기를 결정해야한다.1. 메모리복습의 차원에서 메모리는 여러 종류로 나뉠 수 있지만, ROM과 RAM의 차이 정도만 알아도 될 것 같다.ROM의 경우 비휘발성, 전원이 꺼져도 사라지지 않는 데이터가 사라지지 않는 메모리.RAM은 전원이 꺼지면 데이터가 사라지는 메모리이다.그래서 보통 부트로더, 프로그램 코드 데이터는 플래시 메모리에 저장되고, 프로그램 사용시에SRAM을 사용한다.뭐 당연하게도 MCU마다 어떤 메.. 2023. 8. 24.