Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

분류 전체보기 413

[FreeRTOS] Task의 스케줄링

ㅤContext-Switch에 대해서 다루는 이전 글의 내용을 이해했다면, 이제 “Task 간의 전환”은 파악했다. (야스!)그렇다면 이렇게 만들어진 Task 들에 대해서 커널은 어떻게 급한 Task가 먼저 CPU를 사용하도록 전환시키도록 하여 Real-Time의 특성을 만족시킬까?ㅤ미션 : Real-Time을 만족시켜라여러가지 방법이 있지만, FreeRTOS 에서는 기본적으로 “Preemptive with Time Slicing” 방식을 사용한다.우선순위가 낮은 Task가 실행중일 때, 우선순위가 높은 Task가 실행되고자 하면 선점한다.우선순위가 동일한 Task가 여러개 실행되고자 한다면, Time Slicing 으로 CPU 자원을 동일한 시간만큼 할당받아, 번갈아가며 처리(Round-Robin)한다..

Embedded System/MCU 2025.11.19

[FreeRTOS] RTOS의 Context Switch 과정 파헤치기

이전 글에서 Task의 생성과 구조에 대해서 알아봤으니, 이번 글에서는 “그렇다면 생성된 여러 개의 Task 들 간의 실행 흐름을 어떻게 전환하는가?” 에 대해서 알아보자. 커널은 어떻게 Task를 전환하여 Real-Time의 특성을 만족시킬까?ㅤ기본적으로 Cortex-M의 CPU는 싱글코어이기 때문에 한 번에 하나의 명령어만 실행할 수 있다. 그러니 만약 여러 Task를 한 번에 또는 특정한 Task를 먼저 실행하려고 한다면 CPU를 효율적으로 사용해줘야 한다. 이걸 어떻게 할까?ㅤ아래쪽에 PendSV 예외가 발생했을 때 어떻게 Context-Switch가 발생하는 지에 대해 기똥차게 설명해뒀다. 필요하면 해당 부분만 샥 훑어버리자. 혹시 Exception과 관련된 내용들이 궁금하다면, 이 글을 먼저 ..

Embedded System/MCU 2025.11.15

[FreeRTOS] RTOS의 System Exception

이전 글에서 Task의 생성과 구조에 대해서 알아봤으니, 이번 글에서는 “그렇다면 생성된 여러 개의 Task 들 간의 실행 흐름을 어떻게 전환하는가?” 에 대해서 알아보자. 커널은 어떻게 Task를 전환하여 Real-Time의 특성을 만족시킬까?ㅤFreeRTOS의 핵심, System ExceptionFreeRTOS에서 사용하는 System Exception은 3가지가 있다.SysTick : 주기적인 타이머PendSV : SW가 의도적으로 발생시키는 Context-Switch를 위한 익셉션SVC : SW가 호출하는 익셉션ㅤException VS Interrupt- Exception은 프로세서 내부에서 연산의 결과로 발생하는 것- Interrupt는 프로세서 외부 장치에서 비동기적으로 발생하는 것 ㅤSyst..

Embedded System/MCU 2025.11.15

[FreeRTOS] Task의 생성과 관리

FreeRTOS는 Task 단위로 기능들을 스케줄링하면서 우선순위가 높은 Task 들을 먼저 처리해 입력에 대해 정해진 시간 내에 처리하는 것을 보장한다. 벌써 키워드가 막막 나온다.Task 가 뭐냐, Task를 어떻게 관리하나?우선순위에 따라 어떻게 작업을 먼저 처리하나?우선순위가 같은 땐 어떻게 하나?이걸 누가 어떻게 처리하나? 직접 코드로 짜야하나?순서대로, 이번 글에서는 Task가 무엇인지, 어떻게 생성하고 관리하는지에 대해서 알아보자. 이후 다음에는 스케줄링을 하는 방법 + 스케줄링을 자동으로 처리해주는 커널 + Task 간의 통신 에 대해서 시리즈로 등장할 예정!Task 의 구조Task가 무엇인가?Task는 독립적으로 실행되는 작은 프로그램이자, RTOS 스케줄러가 실행시킬 코드의 단위.Tas..

Embedded System/MCU 2025.11.15

[FreeRTOS] RTOS와 FreeRTOS가 뭔데요?

임베디드 세계에 발을 들인지 어연 3개월, 지금의 단계까지 오면서 취업공고나 랩실 설명에서 RTOS라는 키워드를 굉장히 자주 마주쳤다. 그리고 나는 이게 어떠한 종류의 OS라고 생각해왔다. 그리고 드디어 이 RTOS라는게 도대체 어떤 녀석인지 공부할 단계가 되었다. 후하! 그럼 들어가보자. 글을 열심히 적다보니깐, 내용이 막 길어지는 것도 있고 하나의 글에 담기에는 어울리지 않는 내용들이 점차 불어나는 것 같아서, 글을 분리하였다. 이번 글에서는 RTOS와 FreeRTOS가 무엇인지에 대해서 간략하게 살펴보고, FreeRTOS의 구조나 사용 방법, 타고 들어가서 확인할 수 있는 레지스터나 어셈블리 코드의 동작들, 그리고 프로세스 아키텍처까지 정리하면서 다뤄보려고 한다. RTOS의 두둥등장우선 RTOS는 ..

Embedded System/MCU 2025.11.11

[251110] Day 91 - 깃똥찬 프로젝트 Day

들어가며472시간 / 1000시간자주 적겠다고 선언한지 단 한 번만에 TIL을 미루고 또 미뤄버렸다. 배우게 너무 없는건 아니고, 배운게 너무 많아서 정리하느라 시간이 계속 부족했다 ;ㅅ;ㅤㅤ지난 주에 한 거라도 적어둬야겠다.지난 주의 키워드지난주에는 STM32F429ZI의 타이머와 CLK에 대해서 정리하고 있었다. 전체적으로 어떤 타이머들이 있는지, 그 다음 SysTick와 GP-Timer, Independent Watchdog 에 대해 정리하고, 앞으로 Advanced Timer와 Window Watchdog 에 대한 내용도 천천히 추가해볼 예정.https://etst.tistory.com/459 [MCU] General Purpose Timer드디어 General Purpose 타이머까지 왔다. 사..

TIL 2025.11.11

[MCU] Independent 워치독 타이머 - IWDG

펌웨어 수업을 하는 동안 계속 ‘워치독’이라는 키워드가 나왔는데, 내 머릿속에는 ‘아 그거 서비스 아닌가? 이전에 일 잠깐 할 때 슬랙으로 데이터나 에러 관련해서 알림 오는걸 본 것 같은데’ 라는 생각이 어렴풋이 계속 들었었다. 보라색의 귀여운 강아지 이미지가 연상되면서 ㅋㅋㅋ 근데 알고보니 얘는 데이터독이였다. 웁스.ㅤ다시봐도 이미지가 애기 진돗개나 골댕이 같기도 해서 좀 귀엽네 ㅎ 🐕🐶ㅤ워치독은 Independent WDG과 Window WDG로 나뉜다. 우선은 Independent WDG부터 살펴보자. 혹시 글이 길어진다면 WWDG는 따로 빠져서 작성될 수도! [당첨]ㅤIndependent Watch Dog Timer의 목적시스템 장애 감지 및 자동 복구: 소프트웨어가 무한 루프에 빠지거나 멈추..

Embedded System/MCU 2025.11.09

[MCU] General Purpose Timer

드디어 General Purpose 타이머까지 왔다. 사실 정리는 금방 해서 한 3-4일 전에 완료해뒀는데, 실습을 하면서 실제로 타이머를 사용해보느라 시간이 좀 걸린 것 같아. 실습도 내가 생각했던 시나리오를 모두 해보지는 못했지만 나중에 필요한 시점에 타이머를 생각해내서 굴려볼 수 있을 정도로는 진행한 것 같다. 후후. 그럼 출발!General Purpose Timer의 목적General Purpose Timer로 분류되는 TIM9와 TIM14는 다음의 목적을 가진다.여러가지 목적으로 사용될 수 있다. (과연 General Purpose Timer 답다)Basic Timer가 가지고 있던 출력 기능과 더불어, 외부 입력도 받을 수 있다.출력 : Waveform 출력을 만들기 위해 사용된다. (Outp..

Embedded System/MCU 2025.11.09

[MCU] STM32F429ZIT6의 타이머들

[MCU] STM32F429의 타이머STM32F429ZIT6 프로세서에는 다양한 타이머들이 탑재되어있다. 그런데 이 타이머들이 하나의 종류가 여러개가 있는게 아니라 다양한 종류의 타이머를 2-4개씩 탑재해둔 것이었다. Basic, General Purpose, Advanced 타이머로 종류가 나뉘고, 또 General Purpose Timer라고 불리는 타이머가 갑자기 하위 분류가 여러개로 나뉘어 문서에 설명이 작성되어있는 등 다양한 타이머들이 있었다. 현재 SysTick 타이머와 Basic 타이머에 대해서 한 번 톺아봤는데, 그래서 다른 타이머들은 어디에 사용하는건지 전체적인 개론을 확인하고 나서 다시 디테일한 타이머 구조로 내려가는게 좋겠다 싶어서 정리해보려고 한다. 이번 글에서는 현재 프로세서에 어..

Embedded System/MCU 2025.11.07

[MCU] Basic Timer

STM32F429ZIT6 / NUCLEO-F429ZI 보드 기준Basic Timer의 목적Basic Timer로 분류되는 TIM6과 TIM7은 다음의 특징을 가진다.시간 측정만 수행하는 아주 단순한 타이머이다. (Generic Timer!)내부적으로 DAC와 연결되어, DAC의 출력 트리거로 사용할 수 있다.Waveform 생성을 위해 사용할 수 있다. (신호 파형)ㅤ시간 측정만을 위해 사용하는 단순한 타이머인데 이게 어떻게 신호 파형을 만드는데에 사용될 수 있다는거지? → 라는 생각이 들어서 찾아봤는데, DAC의 출력 트리거로 사용될 수 있다는게 힌트였다. DAC(Digital2Analog)에서 신호의 트리거를 Basic Timer를 활용해 제어해서 Waveform을 만들어낼 수 있다!ㅤTIM6랑 DA..

Embedded System/MCU 2025.11.07