본문 바로가기

Embedded System/소프트웨어 (C,C++)20

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.
[C++] 클래스 상속(Inheritance) 개념 정리 1. 개요어느덧 C++ 클래스 설계 문법을 펌웨어 실무 (디바이스 라이브러리)에 적용하면서 익숙해져 가고 있다.최근 BSP 라이브러리와 링킹하여 사용하다가 클래스 상속과 관련된 부분에서 문제가 발생하였는데, 클래스 상속에 대한 개념을 다시한번 정리해보고자 하였다.2. 클래스 접근 제어자 (Access Specifiers) 복습C++에서는 다음과 같은 세 가지의 접근 제어 지시자를 제공한다.1. public2. private3. protected(1) public class MyClass {public: int publicVar; void publicMethod() { cout public으로 선언된 멤버는 어디에서나 접근 가능. 즉, 클래스 외부에서도 객체를 통해 직접 접근.. 2024. 10. 1.
실시간 운영체제 (RTOS) 마이크로 컨트롤러(MCU)를 다루고 프로그래밍하는 임베디드 분야에서는 사실 RTOS의 필요성을 못느낄 수도 있는데, 사실 나도 그렇다. 운영체제(Operation System)는 프로그램 실행 관리를 수행하는 소프트웨어이다. 운영체제에는 범용 운영체제와 실시간 운영체제 (Real Time Operating System, RTOS)가 있다.1. RTOS (Real Time Operating System) 개념RTOS의 목적은 정해진 시간(실시간)에 데이터 처리를 하기 위한 스케줄링 운영체제이다. 임베디드 시스템이 가지는 시간 제약에는 실행 시작 타이밍이나 언제까지 처리를 완료할 것인지가 있다. 처리를 종료시킨다는 것은 입력 Data를 받아 출력 Data를 출력하기까지의 처리를 완료시키는 것을 의미한다. 시.. 2024. 9. 4.
[모듈 제작] 전류 CT 센서 인터페이스 모듈 - RMS 취득 펌웨어 1. 개발 이슈 ( issue )(1) 오프셋(Offset) 전압오차율 0.1%의 0603 저항기와 탄탈 커패시터를 활용하여 오프셋 전압 (1.65V) 오차를 최소화 하려 노력해 보았지만, 실제 테스트 펌웨어 작업 후 약 20mV 정도의 오차를 보였다. 즉, 이상적으로는 오프셋 전압이1650mV가 유지되어야 한다. 그러나 ADS1115 ADC를 통하여 측정해본 결과는 1640~1665mV로 미세하게 오프셋 전압이 유지되지 못하는 현상이 있었다.원인은 실제로 인입되는 노이즈이거나 3.3V LDO에서 출력되는 전류에 따라 전압이 미세하게 바뀌는 특성 때문일 것이라고 추정된다. 해결하기 위해서는 오프셋 전압을 오차율이 최대한 적은 1.65V LDO를 활용해보는 것인데, 찾아본 결과 이 마저도 0.5%의 오차율.. 2024. 8. 21.
[GUI & 터치스크린] LVGL 구현 관련 정리 1. 하드웨어(H/W) 요소(1) 터치스크린 패널 종류종류특징저항막 (감압식)- 패널에 일정 압력을 가했을때(누르는 힘)에 의한 저항의 변화를 감지- 필름이 접촉될 정도의 압력을 가해야 하기 때문에, 터치 인식률이 낮음- 산업현장에서 장갑을 낀 손으로도 사용이 가능하기 때문에 산업 디스플레이에 주로 쓰임정전용량식- 패널에 전극 변화를 감지하여 인식- 터치감도가 매우 좋으며, 중소형 모델에 적용하기도 적합함- 대부분 모바일 스마트폰 터치스크린 패널에 사용되고 있음 (2) 터치스크린 보드의 구조 (LVGL 지원 보드) 터치스크린 보드 형태의 구조는 대부분 이렇다.디스플레이 컨트롤 칩은 다양하며 드라이버가 이미 라이브러리에 구현되어 있기 때문에 구현 시 소스코드에서 해당 드라이버 헤더파일 주석을 해제하여 사용.. 2024. 7. 31.
[C/C++] 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.