STM32 & C언어 디자인 패턴
close
프로필 배경
프로필 로고

STM32 & C언어 디자인 패턴

  • 분류 전체보기 (171)
    • ▶ STM32 (63)
      • News (8)
      • 회로리뷰 (12)
      • Peripheral (37)
      • 개발환경 (6)
    • ▶ C Application (28)
      • 디자인 패턴 (22)
      • App 만들기 (6)
    • ▶ ARM Core (10)
    • ▶ RTOS (7)
      • RTOS 만들기 (7)
      • FreeRTOS (0)
      • ThreadX (0)
    • ▶ 일상리뷰 (3)
    • ▶ 이전글 (53)
      • C Pattern (25)
      • C Coding (7)
      • Linux (5)
      • Programming (6)
      • Book Reference (10)
  • 홈
  • 태그
  • 방명록
  • Github
RTOS - Cortex-M Core Stacking 알아보기

RTOS - Cortex-M Core Stacking 알아보기

Context 스위칭을 하기 위해서는 우선 Cortex-M Core의 Stacking에 대해서 먼저 이해해야 합니다. Stacking은 Core가 interrupt 에 진입했을 때 정해진 Stackpointer에 Core registers의 내용을 저장하는 것을 말합니다.아래 그림은 Core registers 인데 우리는 이 레지스터를 통해 CPU의 현재 상태를 알 수 있습니다. 아래 예시는 while 구문 Context 에서의 Core registers입니다. 현재 Stack pointer는 0x20007ff8 입니다. 인터럽트가 걸리면 현재의 Core register를 Stacking하게 되며 따라서 Stack pointer 값이 0x20007ff8 + (8 * 4bytes) = 0x20007fd8 ..

  • format_list_bulleted RTOS 만들기
  • · 2023. 11. 17.
  • textsms

RTOS Task

RTOS를 사용하는 이유는 여러가지 업무(Task)를 동시에 처리하기 위해서입니다. MP3 플레이어를 예를 들어 보겠습니다. MP3 플레이어의 기본적인 기능은 다음과 같습니다. MP3 파일 입/출력 처리 MP3 파일 Decoding Decoding 음원 출력 Button 입력 처리 GUI 화면 처리 배터리 모니터링 기타등등 간단한 MP3 플레이어라고 해도 꽤 많은 업무를 동시에 처리해야 합니다. 위의 업무중에서는 파일 입/출력, Decoding 과 같은 CPU의 로드가 상당히 많이 필요한 업무들이 있습니다. 이러한 업무들을 순차처리 할 경우에 CPU의 리소스를 하나의 업무에서 독점하므로 음원이 끊어지는 상황이나 Button이 간헐적으로 동작하지 않는 상황, GUI 업데이트 되지 않는 등의 문제가 발생할 ..

  • format_list_bulleted RTOS 만들기
  • · 2023. 11. 17.
  • textsms
RTOS 구현 with 임베디드 시스템 아키텍쳐

RTOS 구현 with 임베디드 시스템 아키텍쳐

에이콘 출판사에서 나온 책 "임베디드 시스템 아키텍쳐"의 내용을 토대로 STM32에 아주 기초적인 RTOS를 구현해보고자 합니다. 실제 상용제품에 이용할 수준은 아니고 다른 RTOS를 쉽게 이해하는 용도로 생각해 주시면 좋을 것 같습니다. 그리고 책 "임베디드 시스템 아키텍쳐"에는 다른 내용도 많으니 한번 읽어보시는 걸 추천드립니다(광고아님). https://product.kyobobook.co.kr/detail/S000001804798 다음 장 부터는 RTOS 커널에서 가장 중요한 Task 스케줄러 구현을 천천히 진행해 보도록 하겠습니다. 이상입니다. 임베디드 시스템 아키텍처 | 다니엘 라카메라 - 교보문고 임베디드 시스템 아키텍처 | product.kyobobook.co.kr

  • format_list_bulleted RTOS 만들기
  • · 2023. 11. 17.
  • textsms
App state machine 만들기 #5 app states switching

App state machine 만들기 #5 app states switching

app 은 하나의 상태로 명명하기로 하였습니다. 예를 들자면 안드로이드 앱의 activity 처럼 시스템의 모든 이벤트를 받고 UI를 이루며 프로그램을 동작시키는 하나의 상태라고 이해하면 될 것 같습니다. Full src : https://github.com/soloungos/h7_state_machine 위의 예제에서 app states는 세가지의 상태를 가지고 있습니다. app_first.c : 시스템이 시작할 때 최초의 상태, 그 후 합계를 구하는 알고리즘을 계속적으로 수행하다 key 입력 이벤트를 받으면 app second로 스위칭 app_second.c : 평균을 구하는 알고리즘을 계속적으로 수행하다가 key 입력 이벤트를 받으면 app third로 스위칭 app_third.c : 하는 일 없이..

  • format_list_bulleted App 만들기
  • · 2023. 11. 15.
  • textsms
App state machine 만들기 #4 main.c

App state machine 만들기 #4 main.c

지난 포스트에서 app controller, app state들을 만들어 app의 역할 및 동작 방식에 대해 알아 보았습니다. 이번 포스팅에서는 main.c의 infinite loop에서 app initial 과 app의 loop등을 어떻게 호출하는지 확인해 보도록 하겠습니다. 아래 main.c의 일부분을 보도록 하겠습니다. int main(void) { ... /* USER CODE BEGIN 2 */ app_first_init(); app_second_init(); app_third_init(); app_start_app(APP_first); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { app_pro..

  • format_list_bulleted App 만들기
  • · 2023. 11. 15.
  • textsms
App state machine 만들기 #3 app_first.c

App state machine 만들기 #3 app_first.c

이번 포스트에서는 app state 중에 첫번째 first app을 만들도록 하겠습니다. 지난번에 말씀드린 대로 앞으로 만들어질 app states 들은 모두 app controller(app.c)에 등록되어 제어가 될 예정입니다. 그 중에 오늘은 첫번째 app이라서 의미가 있습니다. 사실 첫번째 app 만 이해한다면 두번째, 세번째는 비슷하기 때문에 별도의 설명이 필요없습니다. 지난 시간에 우리는 아래 코드 처럼 이미 세개의 app을 만들기 위해 app_id를 app.h에 미리 선언했었습니다. /* app.h */ typedef enum { APP_first, APP_second, APP_third, APP_COUNT, APP_NONE, }app_id_t; APP_first는 첫번째 app의 id가 되..

  • format_list_bulleted App 만들기
  • · 2023. 11. 15.
  • textsms
App state machine 만들기 #1 app.h

App state machine 만들기 #1 app.h

이전 포스트에서 설명한 state machine 은 현재 application의 상태를 상황에 맞게 active app state를 변경하여 해당 상태에 있을 경우 들어오는 이벤트, 메시지 처리, 이외 요청들을 처리하도록 만듭니다. 또한 원한다면 현재 상태(state)에서 다른 상태(state)로 전환을 할 수도 있습니다. ​ C언어에서는 몇가지 코딩의 제약이 있지만 간단하게 state machine을 만들 수 있으며 우리는 이것을 app state(혹은 app)이라고 편하게 부르도록 하겠습니다. ​ app state 들은 간략하게 다음의 필수 요건이 있습니다. app을 생성,삭제, 전환등을 할 controller 필요 app은 이벤트를 받을 수 있음 app끼리 전환 할 수 있음 app은 하나만 동작 가..

  • format_list_bulleted App 만들기
  • · 2023. 11. 15.
  • textsms
App state machine 개요

App state machine 개요

펌웨어를 처음 개발할 때 수많은 절차와 처리들을 어떻게 일목요연하고 보기 쉽게 코딩해야하는지 막막하게 느껴집니다. 이럴 때 보통 디자인 패턴이라는 프로그래밍의 오래된 습관 혹은 관습을 이용하여 해결할 수 있습니다. ​ state machine은 이런 디자인 패턴중에 하나로 아주 사용하기 쉽고 유용하며 소프트웨어 개발자라면 꼭 알아야 할 디자인 패턴 기법입니다. ​ single core 안에서 동작 중인 application은 반드시 하나의 상태(state)안에 있습니다. 각각의 이벤트나 어떠한 처리는 state 안에서 이루어 지며 여러개의 state 끼리 서로 전환하며 프로그램이 동작하게 됩니다. ​ 아래 다이어그램에서 우리가 만들 app state machine 을 좀 더 구체적으로 알아보겠습니다. a..

  • format_list_bulleted App 만들기
  • · 2023. 11. 14.
  • textsms
  • navigate_before
  • 1
  • ···
  • 8
  • 9
  • 10
  • 11
  • 12
  • navigate_next
공지사항
  • [2023.11.15] App State machine 글 게재
  • [2023.11.3] 티스토리 다시 시작합니다
전체 카테고리
  • 분류 전체보기 (171)
    • ▶ STM32 (63)
      • News (8)
      • 회로리뷰 (12)
      • Peripheral (37)
      • 개발환경 (6)
    • ▶ C Application (28)
      • 디자인 패턴 (22)
      • App 만들기 (6)
    • ▶ ARM Core (10)
    • ▶ RTOS (7)
      • RTOS 만들기 (7)
      • FreeRTOS (0)
      • ThreadX (0)
    • ▶ 일상리뷰 (3)
    • ▶ 이전글 (53)
      • C Pattern (25)
      • C Coding (7)
      • Linux (5)
      • Programming (6)
      • Book Reference (10)
최근 글
인기 글
최근 댓글
태그
  • #arm
  • #디자인 패턴
  • #STM32G4
  • #MCU
  • #STM32H7
  • #C언어 패턴
  • #디자인패턴
  • #rtos
  • #C언어
  • #STM32
전체 방문자
오늘
어제
전체
Copyright © STM32 & C언어 디자인 패턴 All rights reserved.
Designed by JJuum

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.