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
Facade 패턴

Facade 패턴

디자인 패턴은 문법이 아니며 방법입니다. 하나의 패턴으로 프로그램 전체를 완성시킬 수는 없습니다. 그리고 완벽하게 룰을 지키는 것보다 유연하게 상황에 따라 여러 패턴들을 조금씩 응용해서 사용할 뿐입니다. 개인적으로 너무 복잡한 패턴을 굳이 사용할 필요가 없습니다. 오히려 유지보수 혹은 한 프로젝트에 다수의 개발자가 협업할 경우 코드를 이해하지 못하는 경우가 발생할 수 있습니다. 게다가 인수인계시에는 왜 이런 패턴을 구현했는지 잘 설명해줘야 합니다. 그렇지 않으며 좋은 구조로 잘 설계된 프로그램이 타인에 의해 조금씩 붕괴되는 광경을 목격할 수도 있습니다. 보통 알고리즘을 구현할 때 복잡한 절차가 있게 마련입니다. 대부분 메모리 할당이라든가, callback 할당, 이벤트 처리 등으로 복잡해지기 쉽습니다. ..

  • format_list_bulleted ▶ C Application/디자인 패턴
  • · 2024. 2. 12.
  • textsms
Factory method 패턴

Factory method 패턴

예제1) http://dextto.tistory.com/140 예제2) http://kingoh.tistory.com/entry/Factory-Method-%ED%8C%A8%ED%84%B4 우선 위의 두가지 예제를 통해 Java에선 어떻게 Factory method를 구현했는지 보고 오시면 더 좋을 거 같습니다. C언어에선 class라는 개념이 없기 때문에 어떻게 보면 이전 글들에서도 알게 모르게 계속해서 Factory method를 써왔습니다. 이번엔 다시 한번 Factory method를 살펴 보도록 하겠습니다. 이번 예제는 display를 구현해 보도록 하겠습니다. MCU 기반 Firmware에선 display하기 위한 데이터는 프레임 버퍼라 불리우는 메모리에 RGB color를 쌓아 놓고 한번에 ..

  • format_list_bulleted ▶ C Application/디자인 패턴
  • · 2023. 12. 23.
  • textsms
RTOS 없이 구현한 스케줄러

RTOS 없이 구현한 스케줄러

RTOS를 사용하지 않는 베어메탈 Firmware의 프로그램 절차는 무한루프와 인터럽트로 이루어져 있습니다. 이번장에서는 무한루프의 구조를 어떻게 바꾸며 보다 효율적이고 좀 더 그럴듯하게 만들 수 있는지 알아보겠습니다. 우선 우리가 알고 있는 기본적인 while 무한루프입니다. /* main.c */ void main(void) { while(1) { process1(); process2(); switch(key) { case button1: break; case button2: break; case button3: break; default: break; ... } } } 위의 코드는 간단해보이지만 실제적으로는 훨씬 더 복잡해 질 가능성이 있습니다. 만약 설정(#ifdef)에 따른 process 유무가..

  • format_list_bulleted ▶ C Application/디자인 패턴
  • · 2023. 12. 9.
  • textsms
Adapter 패턴 - 2

Adapter 패턴 - 2

지난 시간에 이어 계속해서 Adapter 패턴에 대해 알아보겠습니다. 지난 시간에는 Adapter가 필요한 콘크리트 코드에 대해 살펴봤고 이번 시간에는 실제적으로 콘크리트 코드가 interface 화 될 실제 driver interface를 살펴 보도록 하겠습니다. 궁극적으로 Adapter 패턴은 기존의 콘크리트 코드가 새로운 interface에 맞지 않아 중간에 Adapter를 끼워넣어 맞추는 역할을 하게 됩니다. 이번 시간에는 그중에 새로운 interface에 대해 살펴보겠습니다. driver_id_t 를 통해 앞으로 생성될 driver들의 고유 번호를 부여합니다. 그리고 기본적인 Open, Close, Read, Write들을 구현 하도록 되어 있습니다. 필요시 더 많은 기능을 넣을 수 있습니다. ..

  • format_list_bulleted ▶ 이전글/C Pattern
  • · 2018. 2. 24.
  • textsms
C의 app 만들기 - 3 : app

C의 app 만들기 - 3 : app

지난 번에 이어 이번에는 app 자체를 만들어 보도록 하겠습니다. 이 app은 app manager에서 control 되며 각종 메시지 및 키 이벤트를 받습니다. 우선 이해를 위해 지난 시간에 main.c의 코드를 다시 보도록 하겠습니다. 우리가 이번에 만들 app은 27번째 줄 setup_app_scene_1()에서 구현 됩니다. 실제 app의 포인터를 app manager에게 전달하는 부분이지요. 여러번 반복 되었지만, setup으로 시작하는 함수는 객체 인스턴스를 반환한다고 봐도 되겠군요. new로 시작해도 되구요, init으로 시작해도 상관 없습니다면 일관성만 갖춘다면 될거 같습니다. 그럼 app scene 1의 헤더 파일을 보도록 하겠습니다. main.c에서 호출하는 setup_app_scene..

  • format_list_bulleted ▶ 이전글/C Pattern
  • · 2018. 1. 31.
  • textsms
C 언어에서 this 구현2

C 언어에서 this 구현2

시간이 지나니 이전글에서 많은 부족함이 느껴 다시 한번 글을 쓰기로 했습니다. this는 객체지향 언어에서 class 자신을 나타냅니다. 자기 자신이기 때문에 별도의 이름을 갖는 다는 것도 좀 이상하기 때문에 this라는 키워드는 정말 잘 정한 것 같습니다. 우리는 C에서 this라는 것을 활용해서 사용해보도록 하겠습니다. 다음과 같은 main.c 코드가 있습니다. uart 포인터를 얻어와 uart를 open하고, read, write, close하는 일을 절차적으로 진행하고 있습니다. 사용자의 입장에서는 사용하는 기능을 구현하는 객체의 이름을 알고 있어야 합니다. 따라서 여기서는 uart라고 명시했습니다. uart의 header 파일입니다. driver_t라는 interface를 정의하고 본체 코드에서..

  • format_list_bulleted ▶ 이전글/C Pattern
  • · 2018. 1. 27.
  • textsms
C의 app 만들기 - 1 : app manager

C의 app 만들기 - 1 : app manager

"C에서 Android의 Activity 구현하기""app은 이제껏 우리가 만든 패턴들의 집합체 입니다."그렇습니다. 여태 우리는 완성된 application의 framework를 만들기 위해 계속해서 패턴들을 학습해 오고 있었습니다. 이런 패턴들의 총아인 app을 구현해 보도록 하겠습니다.Android Java API, C# API 등 자원이 풍부한 Application 플랫폼들은 한결 같이 화면 단위 컨트롤들을 가지고 있습니다. 예를 들어 Android 에선 Activity가 생성이 되면, 레이아웃을 통해 화면에 디스플레이도 할 수 있고 각종 메시지(버튼 및 터치 포함)도 받을 수 있도록 되어 있습니다. 하나의 application에서 Activity가 없다는 것은 상상 할 수 없을 것입니다. And..

  • format_list_bulleted ▶ 이전글/C Pattern
  • · 2018. 1. 24.
  • textsms
Builder 패턴

Builder 패턴

[네이버 지식백과]builder 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주)) Builder 패턴을 공부해 봅시다. 이해하기 좀 어려울 수도 있겠는데요, 각각의 구현은 다르지만 기능은 같은 객체들을 관리하는 관리자를 만드는 패턴입니다. 사용자 즉 main 함수에서는 객체를 만들 뿐 기능을 사용하기 위해 직접 호출하지 않고 관리자를 통해서만 일 처리를 합니다. 이번에는 Key(버튼) 처리하는 기능으로 예제를 만들어 봤습니다. 언제가 꼭 해보고 싶었던 예제인데요, firmware에서는 참 많이 쓰이는 기능입니다. Key 처리 기능은 하드웨어가 바뀌면서 프로젝트마다 바뀔 소지가 있습니다. 단순 1:1 GPIO를 사용할 수도 있고 ADC를 사용할수도 있습니다. 혹은 1:N ..

  • format_list_bulleted ▶ 이전글/C Pattern
  • · 2018. 1. 17.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 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)
최근 글
인기 글
최근 댓글
태그
  • #MCU
  • #C언어
  • #디자인패턴
  • #STM32
  • #rtos
  • #디자인 패턴
  • #STM32H7
  • #STM32G4
  • #arm
  • #C언어 패턴
전체 방문자
오늘
어제
전체
Copyright © STM32 & C언어 디자인 패턴 All rights reserved.
Designed by JJuum

티스토리툴바