전체 글 110

자료구조 - 리스트 -

리스트1. 리스트를 이용하여 스택(Stack)자료구조를 구현할 수 있습니다.2. 새로운 노드를 항상 리스트의 맨 앞(head)에 삽입하기 때문에, 출력 시 입력한 순서와 반대로 된 리스트가 만들어집니다. - 즉, 키보드로 입력된 데이터가 역순(LIFO) 으로 구성된 리스트를 형성합니다. - 이는 스택의 핵심 원리인 "Last In, First Out" 과 동일합니다.3. 리스트는 기본적으로 자기참조 구조체(Self-referential Structure) 를 사용합니다. - 구조체 내부에 자기 자신과 같은 타입의 포인터를 멤버로 포함하여, 다음 노드의 주소를 저장하고 노드 간 연결을 구현합니다. 리스트 주요 용도 용도 설명 스택 / 큐 구현 노드의 삽입 위치(앞/뒤)에 따라 스택과..

알고리즘 2026.04.20

FreeRTOS 프로젝트 6단계

이번 글에서는 FreeRTOS 구성에 대해 살펴 보겠습니다. stm32 mcu에 적용된 FreeRTOS는 stm32 mcu 시스템 클록을 받아서 동작 합니다.systick 타이머가 정상적으로 동작되는것을 확인하기 위해서는 정확한 타이밍 계산을 위한 systemcoreclock이 올바르게 업데이트 가 되어 있는지 확인이 필요 합니다. systemcoreclock 업데이트 값을 제대로 확인하기 위해서 다음의 파일을 추가해줍니다.\stm32_rtos_project\Software\stm32cubef4-v1-28-0\STM32Cube_FW_F4_V1.28.0\Projects\STM32F410xx-Nucleo\Examples\RCC\RCC_ClockConfig\Src 위 경로에 있는 system_stm32f4..

RTOS 2026.04.04

FreeRTOS 프로젝트 5단계

1. FreeRTOS 적용이제 본격적으로 FreeRTOS를 프로젝트에 적용해 보겠습니다.① 프로젝트에 다음과 같은 폴더를 생성 합니다.Middleware (Source Folder) | |-- ThirdParty (Folder) | |-- FreeRTOS (Folder) ② FreeRTOS를 다운로드 합니다.https://github.com/FreeRTOS/FreeRTOS/releases.zip 압축 파일을 다운 받으면 압축을 풀고 다음의 경로에 source 폴더를 프로젝트 FreeRTOS 폴더에 이동 합니다.source 폴더에는 FreeRTOS에 커널 소스가 있습니다. 정상적으로 추가하면 위의 그림이 보이는데 이게 FreeRTOS 소스 코드에 전체..

RTOS 2026.03.30

FreeRTOS 프로젝트 4단계

1. 프로젝트 설정 stm32cubeide를 실행합니다. ① Create / Import STM32 project를 실행합니다. ② 해당 적용 하려고 하는 MCU 이름을 Mcu Name Filter에 입력 합니다. ③ Project Name 에 본인이 원하는 프로젝트 이름을 설정 합니다. ④ 저 같은 경우는 프로젝트 이름을 RTOS-407 이라고 입력했습니다. ⑤ 위 그림을 보면 프로젝트에 메모리 레이아웃을 정의 하는 파일이 있습니다. STM32F407IGTX_FLASH.ld , STM32F407IGTX_RAM.ld ⑥ 시스템 및 파일 입출력 기능에 필요한 호출 함수가 있는 syscalls.c 파일과 heap 메모리를 관리하는 sysmem.c 파일이 있습니다. ⑦ 위 그림처럼 소..

RTOS 2026.03.29

FreeRTOS 프로젝트 3 단계

코스 1에서는 RTOS의 개념과 레이어 구조를 살펴 봤다면 코스 3에서는 stm32cubeide 환경에서 FreeRTOS 미들웨어를 실제로 이식하고 앞으로 구현할 프로젝트에 대한 소개를 진행 하겠습니다.먼저 이번 프로젝트에 진행하기 위해 사용할 MCU는 아래와 같습니다. • Core : Cortex-M4• 최대 클럭 : 168MHz• Part Name : STM32F407IGTX• Features : 1Mbyte Flash Memory SRAM 최대 192 + 4KB OTP 512bytes 외부 메모리 지원 (SRAM, NOR, NAND) 사..

RTOS 2026.03.25

스택

스택 LIFO (Last In First Out)데이터를 저장 공간의 하단 부터 차례로 쌓고 , 필요할때 상단에서 추출하는 방식 , LIFO(Last In First Out) 후입 선출의 데이터 구조 입니다. 이 그림을 참고로 해서 보면 자료를 스택에 쌓는 과정을 푸시(Push), 스택에서 추춣 하는 과정을 팝(Pop) 이라고 합니다.스택에서는 데이터가 어느 위치 까지 저장되어 있는지를 관리 하기 위해 스택 포인터 sp를 사용 #include #define STACK_SIZE 6typedef struct Stack_data { int countnumber; int Stack_Array[STACK_SIZE]; char cmd; int pushnumber; int popnumber; int stack_fl..

알고리즘 2026.03.18

FreeRTOS 프로젝트 과정(2)

프로젝트를 진행 하기전에 코스1에 있던 그림에 대해 간단하게 설명 하겠습니다.프로젝트 설정 개요• CMSIS 코어 통합• FreeRTOS 통합• FreeRTOS 구성• FreeRTOS 시작 태스크 생성 ❶ FreeRTOS 를 적용하기 전에 베이스에는 항상 각 MCU에 주변 장치 라이브러리를 추가해줘야 합니다. 코어 주변 장치에 표준 인터페이스를 제공하는 Cmsis 코어가 있습니다.❷ 프로젝트에 전체 스케줄링을 담당하는 RTOS에 동기화 메커니즘은 당연히 FreeRTOS에 속해 있습니다.❸ ❶ , ❷ 번 항복이 완벽하게 구축 되면 표시된 application 영역을 설계할수 있습니다.

RTOS 2026.03.14

FreeRTOS 프로젝트 과정 (1)

RTOS 란우리가 보통 사용하고 있는 PC나 Single Board computer (ex: Raspberry pi , jetson nano) 같은 Host 장비 같은 경우는 Window, Linux 같은 OS를 가지고 있습니다.하지만 STM32, PIC, AVR 같은 MCU(Microcontroller Unit) 는 RAM이 몇 KB밖에 안 되는 극도로 제한된 자원에 플랫폼들도 존재합니다. 피지컬 AI 나 자동차 등 여러 장비 안에는 센서, 통신, 메모리등 데이터를 처리하는 복잡도가 예전에 비해 엄청 복잡해졌고 OS같은 실시간성이 많이 요구되기 시작했습니다.모든 장비에 Window나 Linux 같은 OS를 넣게 된다면 비용적인 측면이나 하드웨어 설계 측면에서도 엄청 비효율적인 상황이 될 겁니다. 그래서..

RTOS 2026.03.14