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

[Embedded] 싸웠으면 기록을 하자

more

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

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

MCU 2025.11.15 0

[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..

MCU 2025.11.15 0

[FreeRTOS] Task의 생성과 관리

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

MCU 2025.11.15 0

[FreeRTOS] RTOS와 FreeRTOS가 뭔데요?

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

MCU 2025.11.11 1

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

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

MCU 2025.11.09 0

[MCU] General Purpose Timer

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

MCU 2025.11.09 0

[MCU] STM32F429ZIT6의 타이머들

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

MCU 2025.11.07 0

[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..

MCU 2025.11.07 2

[MCU] SysTick 타이머

SysTick 타이머란?ARMv7-M Architecture Reference Manual 에서 SysTick의 정체에 대해서 찾을 수 있다. SysTick은메인 프로세서의 CLK을 사용하는 빠른 속도의 타이머SysTick Routine을 매 주기마다 실행하는 RTOS 타이머연결된 CLK과 Counter 값에 따라 측정 시간을 변경할 수 있는 가변 타이머등으로 활용할 수 있다.ㅤㅤ코어에 있기 때문에, HCLK과 동기화되어 CLK을 받는다고 보면 됨.ㅤSysTick은 왜 프로세서 내부에 있냐?다른 타이머들(TIM1, TIM2 같은 녀석들)은 다 프로세서 외부에 페리퍼럴로서 존재하는데, 왜 SysTick은 내부로 들고왔는지가 궁금했다.ㅤ임베디드 시스템에서 OS의 스케쥴링이나 RTOS 등에서 시간 관리를 위해..

MCU 2025.11.04 2

[MCU] Push-Pull과 Open-Drain의 장단점?

이번에 간단한 MCU 회로에 대해서 공부하면서 Push-Pull과 Open-Drain 방식의 구조 차이에 대해서 이해할 수 있었다.ㅤ그런데 공부하면서 궁금증이 생겼다. 푸시풀이랑 오픈드레인이 옵션으로 분리되어 제공되고 있다는 것은 두 방식이 각각의 장단점이 있어서라고 생각이 드는데, 푸시풀과 오픈드레인의 장점이 무엇이고 어떤 상황에서 무엇을 활용하면 좋을 지에 대해 이번 글에서 알아보고자 한다.ㅤ우선 푸시풀과 오픈 드레인의 간단 비교Push-PullPMOS + NMOS로 구성LOW 출력 : PMOS로 수행HIGH 출력 : NMOS로 수행ㅤOpen-DrainNMOS로만 구성LOW 출력 : NMOS로 수행HIGH 출력 : 외부 풀업 저항 이용 (자체 출력 불가)ㅤ스위칭 속도스위칭 속도는 푸시풀이 오픈드레인보..

MCU 2025.11.02 0

[TIL] 배웠으면 기록을 하자

more

[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 0

[251102] Day 83 - 시간이 많이 흘렀구려

들어가며맨날맨날 배운 내용들을 정리하면서 바쁘게 보냈는데, 그러느라 TIL을 못적었네.ㅤ간단하게라도 배운 내용들을 매일 기록하고 싶었는데, 간단하게 요약하기에는 너무 방대한 내용들임 + 내 스스로 아직 정리하지 못했음 이슈로 계속 TIL 적기에 실패했던 것 같다. ㅋㅋㅋㅋㅤ내일부터라도 다시 꾸준히 조금씩 적어볼까.ㅤ이번주의 키워드어쩌다보니 이번주의 키워드가 되어버렸네 ㅋㅋㅤ이번주에는 정말 중요한 컨셉들을 너무너무 많이 배웠다.GPIO 설정으로 회로 조작하기UART 통신의 개념과 실습기본 회로 이론과 GPIO를 위한 회로 옵션 (Push-Pull / Open Drain)SysTick 과 Timerㅤ아마 다음주에는 Interrupt(Exception과 NVIC), I2C, SPI, ADC(PWM) 등에 대해..

TIL 2025.11.02 0

[251021] Day 71 - 겨울이 온 것 같아요

들어가며날이 너무 춥다. 장판 틀었다. 이게 옥탑방의 추위인가 싶기도 하다. 방한이 안되어서 그런건진 몰라도 벌써부터 바닥이 챱챱한게 얼어죽겠네. 센터에 최대한 오래 남아있어야겠다. 오늘의 키워드ARM Processor Architecture Introduction월요일부터 ARM Processor 아키텍처에 대해서 공부하고 있다. 그리고 이왕 적는거 시리즈로 한 번 남겨보려고 한다. 거의 5-6년 전에 공부했던 내용들이라 가물가물하긴 한데, 내 기본기로 한 번 부딪혀보면서 해내봐야지.[ARM] ARM Processor Architcture - 0 : Introduction [ARM] ARM Processor Architcture - 0 : Introduction개인적으로 C언어를 작성하고 컴퓨터에 대한..

TIL 2025.10.22 0

[251020] Day 70 - 나 어쩌면 열심히 살았나봐

들어가며내가 이번에 C언어 중간점검을 우리 반 내에서 1등을 했다고 한다. 오호라!! (대충 신나서 엉덩이 춤추는 농담곰 이모티콘 GIF) 나 되게 틀린 문제가 많은데 (만점 44점 중에서 28점 … 100점 만점에 68점) 꽤나 좋은 점수를 받아서 내심 기분이 좋았다. 그래도 주말간 정리했던 것처럼 C에서 아직 내가 구석구석 모르는 부분들이 많이 등장하는 것 같아서 C 기초를 열심히 다져놔야겠다는 생각이 계속 든다.ㅤ강사님이랑 이번에 내 백그라운드를 얘기하면서 어떤 부분에 집중하면 좋을지에 대해서 질문을 남겼는데, 생각보다 자존감이 좀 올라가는 답변을 들었다. 기존에 내가 앱개발을 했었기 때문에 OS 위의 내용들이 나의 강점이라고 생각하는데, 그렇다면 OS 위에서 돌아가는 APP 계층의 C++로 작성되..

TIL 2025.10.20 1

최신 글

more

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

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

MCU 2025.11.15 0

[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..

MCU 2025.11.15 0

[FreeRTOS] Task의 생성과 관리

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

MCU 2025.11.15 0

[FreeRTOS] RTOS와 FreeRTOS가 뭔데요?

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

MCU 2025.11.11 1

[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 0