지식이 늘었다 68

Hook과 Debug

0. Hook Function이 뭘까? 커널 공부하다보면 Hook함수를 접하게 된다. 커널이 어떤 이벤트 포인트, 훅 포인트 에 도달 했을 때, 원래 흐름에 끼어들어custom code를 실행하도록 등록해 둔 함수를 말한다. 특정 시스템 호출을 시작, 종료하든가, 패킷이 네트워크 스택을 통과 하든가,스케쥴러가 인터럽트 루틴을 실행하거나 종료하든가..하는 지점을 hook point로 설정하고, 커널이 그 지점에 도달했을 때 커널이 호출해주는 함수이다. 1. 콜백함수를 등록해 두고, 특정 조건에 도달한다는 측면에서는인터럽트와 비슷하지만, 그럼에도 커널 훅은 동기적synchronous이다. 인터럽트가 하드웨어나 소프트웨어의 비동기적인 신호를 받아서반응하는 비동기적인 구조와 차이를 보이며인터럽트를 통해 tas..

RTOS의 인터럽트와 스케쥴러 시작

1. FreeRTOS kernel의 portable-GCC-ARM_CMX 폴더에 들어가보면port.c와 portmacro.h가 보인다. 이 port.c에서인터럽트들과 스케쥴러가 어떻게 작동하는지 확인할 수 있다. 2. ARM Cortex M시리즈에서 돌아가는 FreeRTOS Kernel interrupt에는 3가지 종류의 인터럽트가 존재한다. (1) SVC Interrupt(2) PendSV Interrupt(3) SysTick Interrupt 3. SVC Interrupt는 특정 instruction을 수행하여 SVC handler를 실행시키고,이 핸들러를 통해 very first task를 수행한다. PendSVInterrupt는PendSVHandler를 실행시키고, 태스크의 Context ..

FreeRTOS와 task creation, SRAM, 힙 메모리

0. 마이크로컨트롤러, SoC, CPU, AP칩셋..단어는 다양하지만, 모두 폰 노이만식 컴퓨터 구조를 가진 발명품들이다.CPU 밑에 캐시메모리, 주기억장치인 SRAM과 DRAM,보조 기억 장치인 하드디스크, SSD.. 임베디드 기기에서는 EEPROM이나 Flash메모리를이러한 기억장치들의 역할을 수행하는 것도 왕왕 보일 것이다. 이게 중요한 것은 아니고task를 만드는 과정에 필요한 메모리, RAM의 용량을 알아보자. 1.사용하는 보드의 데이터 시트를 보면STM32F103RB는 다음과 같은 스펙을 가진다. Flash Memory는 128KB,SRAM은 20KB가진다고 한다. 디스커버리보드는 SRAM1 112KB + SRAM2 16KB해서 토탈 용량이 128KB뉴클리오는 20KB 2. FreeRTOS..

Task란 무엇인가?, xTaskCreate, xTaskDelete

-1.스케쥴링, Concurrency와 Parallelism(Multitasking), 컨텍스트 스위칭에 관한 내용https://freertos.org/Documentation/01-FreeRTOS-quick-start/01-Beginners-guide/01-RTOS-fundamentals RTOS Fundamentals - FreeRTOS™Links to RTOS concept pagesfreertos.org Task Create API에 관한 정보https://freertos.org/Documentation/02-Kernel/04-API-references/01-Task-creation/00-TaskHandle  0. RTOS에서 돌아가는 Application은 온도를 측정해서 표시해주는 어플리케이션..

CubeIDE에서 STM32 FreeRTOS 커널 올리기

-1. 요약 https://freertos.org/Documentation/02-Kernel/03-Supported-devices/01-FreeRTOS-porting-guide freeRTOS의 공식문서에 있는 porting guide를 따라cubeIDE에서 커스텀커널을 추가하는 과정을 기록한 글입니다. 제대로 된 정보는 위 문서를 참조 0. RTOS를 배우기 위해서STM32 보드를 많이 사용하고는 한다.다만 25년 현재 시점을 기준으로..디바이스마트나, 다른 전자부품 판매처에서STM32 Discovery 보드보다는 STM32 Nucleo보드를 국내에 비축해두고 있어서..NUF103RB 제품명을 가진 뉴클리오 보드를 구매했다. 1. ARM에서 제공하는 CMSIS API를 이용하면,간단하게 커널을 올릴..

RTOS의 인터페이스 - CMSIS

0. https://arm-software.github.io/CMSIS_5/RTOS/html/genRTOSIF.html Generic RTOS InterfaceThe CMSIS-RTOS API is a generic RTOS interface for Arm® Cortex®-M processor-based devices. CMSIS-RTOS provides a standardized API for software components that require RTOS functionality and gives therefore serious benefits to the users and the software iarm-software.github.io 1. 컴퓨터공학에서 모듈화, 분리, 캡슐화 등의 전략은복잡..

RTOS의 포팅이란?

0. 여러가지 MCU를 접하다보면 운영체제의 포팅Porting이라는 과정을 거쳐야 하는 것을 알 수 있다.freetros.org에서 커널을 다운로드 받아 실행하는 과정에서RTOS의 포팅이 무엇인지 알고 가야겠다 싶어 메모해둔다.. 1. RTOS의 포팅이란, 특정 RTOS가 기존에 지원하지 않던새로운 보드나 아키텍처 위에서 동작하도록 만드는 작업이다.지원되지 않는 새로운 하드웨어에 위에서 RTOS 커널이 동작하게 하려면,커널 내부의 코드에서- 스케줄링, 인터럽트 처리방식, 타이머 처리방식등을 해당 하드웨어의 상황에 맞게수정하고 보수해줘야 한다. 2. 이러한 포팅 과정에는 크게 ASP 포팅과 BSP 포팅이 있다. (1) ASP 포팅 - Architecture Support Package(x86과 ARM, R..

RTOS란 무엇인가? (1)

(0)참고자료Learn Running/Porting FreeRTOS Real Time Operating System on STM32F4x and ARM cortex M based Mircocontrollers(https://www.udemy.com/course/mastering-rtos-hands-on-with-freertos-arduino-and-stm32fx/) (1) STM32, FreeRTOS를 이용하여 RTOS에 대해서 배워보자. (2) - RTOS란 무엇인가?RTOS란, Real-Time Operating System의 두문자어이다.Real-time 이라는 단어 때문에 실시간으로 빠른 처리가 된다는 오해를 받으나, 빠른 것(throughput)과는 크게 관련이 없다. - Real time sy..

(일기장) GPU이외의 다른 행렬 연산 수단을 GPT에게 질문해봄

0. 밑바닥부터 시작하는 뉴럴넷? 보면서 딥러닝 공부를 다시하고 있다.파이토치 튜토리얼과 3B1B영상보다가갑자기 이 뉴럴넷 연산을 더 효율적으로 하게 해줄 다른 하드웨어들이 이미 연구가 되고 있겠거니 의문이 들어서 GPT에게 물어봤다.  1.딥러닝 모델을 만드는 과정에서 수많은 행렬계산이 필요했어.하지만 생물의 세포나, 화학반응이나 빛의 경로와 같이퍼셉트론을 구현할 수 있는 방법은 그 이외에도 다양할것만 같은 생각이 들어. 네 생각은 어때? 2초 동안 이성 처리 완료물론입니다. 전통적으로 우리가 딥러닝 모델을 구현할 때는 전자회로 상에서 행렬 곱셈을 수행하는 형태(즉, CPU/GPU/TPU 등 디지털 컴퓨팅)로 생각하기 쉽지만, 실제로는 다양한 물리적·화학적·생물학적 시스템이 “가중치 × 입력 + 활성화..