본문 바로가기

임베디드 소프트웨어/펌웨어 구현13

LVGL GUI 라이브러리 1. LVGL이란?https://lvgl.io/ LVGL — Light and Versatile Embedded Graphics LibraryWe‘ve been using LVGL for our embedded graphics needs, and it has been used in a huge number of devices. We are very happy with its performance and its lightweight nature. We also highly appreciate the collaboration with LVGL‘s open source community.lvgl.io다양한 MCU와 디스플레이에 GUI 개발을 돕는 대형 라이브러리이다. 임베디드 개발자를 위해 다양한 MCU를 지.. 2024. 7. 10.
[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.
[F/W] 펌웨어와 부트로더(BootLoader) 1. 펌웨어 개념정리펌웨어(Firmware)는 하드웨어와 밀접하게 관련되어 동작하는 소프트웨어를 의미한다.펌웨어와 임베디드 소프트웨어는 용어는 혼용되고 있는데구분하자면 OS가 포팅되어 PC가 아닌 시스템에 여러 프로세스가 동시에 실행 되는 환경의 소프트웨어는 임베디드 소프트웨어로 분류 된다. 펌웨어는 하나의 프로세스로 구성되어 순차적인 동작을 하는 소프트웨어의 종류라고 볼 수 있겠다. (프로세스란 프로그램이 메모리를 할당 받아 실행 되고 있는 것을 의미함)펌웨어와 임베디드 소프트웨어는 하드웨어에 직접적으로 접근하여 컨트롤한다는 면에서는 동일하다.하드웨어에 직접 접근하지 않는 웹,엑셀,워드 등의 소프트웨어는 응용 소프트웨어 또는 어플리케이션이라고 한다. 간편하게 OS 없이 하드웨어를 직접 제어하는 프로그램.. 2023. 8. 23.
Wire 라이브러리 1.  I2C 통신 구현 라이브러리아두이노에서는 I2C 통신을 쉽게 할 수 있도록 Wire 라는 객체를 제공한다.I2C 통신을 모른다면.... 아래 게시물 참조https://machinejw.tistory.com/44 I2C 통신I2C 통신은 I Two C 또는 I Square C 라고 하며, Inter IC Bus의 약자이다. 이전에 공부했듯이 시리얼 통신 중에서도 동기식(데이터를 언제 주고받을지 규약됨) 통신 이며, I2C 통신의 경우 SCL(Serial Clock Line)machinejw.tistory.com2.  Wire 객체 함수 사용법#include // Wire 객체는 Wire.h 파일에 선언되어 있다.Wire 는 아두이노 기본 제공 라이브러리이다.(1) beginWire.begin();W.. 2023. 4. 19.