이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

Computer Science/Embedded Software

  • 천천히 꾸준히 조용히
[Embedded] Device Driver

[Embedded] Device Driver

2026.05.14
디바이스 드라이버는 하드웨어를 추상화하는 소프트웨어 계층.. OS 다룬 내용이랑 유사할 수 밖에 없음. Upper Half 계층과 HAL 두 계층으로 나뉜다. // GPIOHAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);// 통신 UARTHAL_UART_Transmit(&huart2, buf, len, 100);// 초음파 TIMERHAL_TIM_Base_Start_IT(&htim2);// 모터 PWMHAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); 사실 지금까지 자연스럽게 작성하던 HAL_* 함수가 모두 디바이스 드라이버임.GPIO 레지스터를 직접 조작하지 않고 함수 호출만 했고, 내부에서는 디바이스 드라이버가 작동하던 것. ..
[Embedded] Embedded Operating System

[Embedded] Embedded Operating System

2026.05.13
OS가 없으면 프로그래머가 무한루프로 직접 순서를 정해야 하지만, OS가 있으면 스케줄러가 자동으로 태스크를 실행해 멀티태스킹을 구현할 수 있다. 무한루프 + 인터럽트 구조는 OS가 없는 상황에서 사용하는 코딩 컨벤션이다.OS 가 있으면 이렇게 짤 필요가 없다. 여러 함수를 동시에 돌리는 것처럼 보이는 구조를 다룬다. 윈도우나 리눅스에서는 Process와 Thread를 나눠서 부르지만, 임베디드 OS에서는 Task라고 부른다.어차피 모든 Task가 메모리 공간을 공유하니 Process와 Thread의 구분이 중요하지 않음. OS 공부할때랑 정말 비슷한.. 임베디드 OS도 일단 근본은 OS니까.. 커널은 OS로 애플리케이션에 서비스를 제공한다. API는 OS와 라이브러리에서 제공하는 인터페이스 함수..
[Embedded] Motor

[Embedded] Motor

2026.05.13
모터는 PWM으로 속도를 조절하고 인코더로 회전 결과를 측정한다.PWM은 출력이고 인코더는 입력으로, 두 가지가 한 쌍을 이뤄야 정확한 제어가 가능함. PWM, Timer 등 지난번에 센서를 공부할 때 다뤘던 내용들이 모터에 그대로 등장한다.다만 모터의 회전을 측정하는 인코더와 보정 파라미터를 찾는 Calibration이 새로 도입됨. DC 모터는 자석에 흐르는 전류의 방향과 세기를 조절해 모터에 회전력을 발생시킨다.전류의 방향이 회전 방향을 결정하고, 전류의 세기가 회전 속도를 결정한다. 일단 전류를 어떻게 조절하는지가 핵심. 인코더는 모터의 회전 방향과 이동거리 계산을 위해 사용된다.모터에 전류를 줘서 돌리더라도, 얼마나 돌았는지 계산해야 한다. 그러니 이 측정을 인코더가 담당함. 가변 저항으..
[Embedded] Sensor

[Embedded] Sensor

2026.05.13
센서는 아날로그 현상을 디지털 값으로 바꾸는 역할을 수행한다.센서가 어떤 물리량을 어떻게 측정하는지 이해하고, 출력 신호를 MCU의 어떤 자원으로 받아들일지 결정해야 함. 핸드폰만 해도 카메라, 지문인식, 화면 회전을 위한 가속도계, 습도 및 조도 센서, GPS 등 굉장히 많은 센서가 들어있음.여기서 각 센서마다 측정하는 물리량과 용도가 다 다르다. AXLM(가속도계)와 Gyro(자이로스코프)는 항상 pair로 사용된다.자이로스코프는 축을 중심으로 한 회전운동을 의미하고, 가속도계는 축 방향으로의 직선운동을 의미한다. 핸드폰을 들고 위로 올리면 직선이동이니 가속도계가 감지하고, 손목을 비틀면 회전이니 자이로스코프가 감지한다.두 가지가 함께 사용되어야 핸드폰을 잡은 자세를 파악할 수 있음.다만 두 가지를 ..
[Embedded] Communication Programming

[Embedded] Communication Programming

2026.05.12
STM32 에서 UART를 사용하려면 4가지 단계를 거쳐야 한다. 1. GPIO를 Alternate Function으로 Multiplexing2. USART 모듈을 활성화하고 송수신 모드 설정3. Baud Rate를 계산하고 BRR 레지스터에 작성 4. TXE 및 RXNE 플래그 기반으로 송수신 STM32F429xx 에는 USART 및 UART가 8개 들어있음.두 개 모두 섞여있다. STM32는 동기 모드도 지원함.APB1과 APB2는 속도가 다름. 각각 저속, 고속을 담당하고 USART1과 USART6은 빠른 버스에 붙어 baud rate가 높음. STM32의 핀 하나는 기본 GPIO 외 16가지 Alternate Function 중 하나로 사용될 수 있음.전에 다룬 USART CAN I2C 등..
[Embedded] Communication Protocol (1)

[Embedded] Communication Protocol (1)

2026.05.12
웹은 HTTP 기반으로 통신한다.HTTP 만 쓰는건 아니긴 함. HTTP 위에 Websocket도 올려서 쓰고.. gRPC 쓰기도 하고.. Thrift 쓰기도 하고..다만 웹에서의 웬만한 통신 프로토콜은 모두 HTTP 기반임. 웹은 물리 계층이 추상화되어 모든 웹 통신은 결국 TCP/IP -> 이더넷/Wi-Fi 패킷으로 내려간다.그리고 물리적 전송은 OS및 NIC 드라이버가 알아서 처리해줌. 그러니 개발자는 HTTP 위에서 뭘 할지만 고민하면 됨. 임베디드는 물리 계층을 직접 다루니 웹에서의 통신과는 좀 다름. 같은 PCB 보드 위 칩 간 통신은 SPIPC와 보드 사이 케이블은 UART핀이 부족하니 절약해야 한다. 센서를 여러 개 묶는건 I2C자동차 전체는 차동 신호가 필요하니 CAN등등... 임베디드 ..
[Embedded] ARM Assembly

[Embedded] ARM Assembly

2026.05.10
ARMv4 시절 32비트 ARM은 명령어 하나하나가 4바이트라 임베디드 환경에서 너무 무거웠다.그래서 Thumb이 나왔지만 표현력이 부족해 자주 32비트 ARM 모드로 돌아가야 했고, 그 때 마다 ISA를 갈아끼우는 비용이 발생함. Thumb-2에서는 단일 ISA에서 16비트와 32비트를 혼합해서 해결한다. (Instruction Set Architecture)모드 전환이 사라지고, 컴파일러가 알아서 적절한 크기를 고름.그리고 Cortex-M4에서는 Thumb-2를 사용하기에 ARM ISA같은 모든 명령어 조건부 실행이 불가능. IT 블록으로 흉내낸다. 프로세서의 레지스터는 모두 32비트이다. (R0 ~ R15)즉, 8비트나 16비트를 다룰 때도 32비트 레지스터에 담기게 된다. 그러니 남는 공간이 생..
[Embedded] General Purpose Input Output

[Embedded] General Purpose Input Output

2026.04.30
GPIO는 General Purpose Input Output의 약자로 범용적으로 사용할 수 있는 프로세서의 표준 인터페이스이다.핀들을 Input / Ouput / Alternate Function / Analog 등으로 설정해서 사용할 수 있음. GPIO 핀 하나를 제어하려면 클럭을 켜고, 레지스터로 모드를 설정하고, 데이터 레지스터로 읽기 쓰기 작업을 수행해야 함. STM32F429는 Cortex-M4 코어를 사용하는 SoC로, 버스가 두 종류로 나뉜다.AHB 버스는 고속으로 CPU와 메모리 사이를 중개하고, APB 버스는 저속으로 CPU와 주변장치를 중개함. 메모리는 CPU와 같은 속도로 돌아야 하지만 UART 같은 주변장치는 대충 돌아도 된다. (이미 외부 통신 속도가 정해짐)당연히 같은..
[Embedded] Interrupt

[Embedded] Interrupt

2026.03.31
Cortex-M4에서는 하드웨어 컨트롤러 NVIC가 사건을 통합 관리하고, 각 사건은 우선순위와 PK를 가진다.사건은 벡터 테이블에 등록된 핸들러로 자동 분기됨. 예외가 좀 커다란 카테고리고, 인터럽트는 예외의 한 종류.모든 인터럽트 신호는 NVIC(Nested Vectored Interrupt Controller)를 거쳐서 프로세서 코어로 들어가고, 주변 장치는 코어를 깨울 수 없다. (NMI는 예외. NVIC를 거치지 않고 들어간다) 스프링의 Dispatcher Servlet과 유사함. 우선순위 비교, Masking, Pending 관리를 한 곳에서 처리한다. USART로 시리얼 데이터 한 글자가 도착했다고 하자.Cortex-M4 칩 안에 USART 시리얼 통신 모듈이 있고, 외부에서 이 모듈..
[Embedded] Cortex-M4 Processor

[Embedded] Cortex-M4 Processor

2026.03.18
임베디드 시스템은 일반 PC와 다르게 하나의 기능에 최적화 되어 있다.그냥 설계부터가 다름.임베디드 시스템에서는 주변의 아날로그 환경과 상호작용하는 입출력 신호가 굉장히 중요하다. Flash는 프로그램을 저장하고, SDRAM은 실행 중 데이터를 처리한다.GPIO는 디지털 I/O를 처리하고, ADC/DAC와 UART는 통신을 처리한다. 저 모든 구성요소들이 하나의 System On a Chip으로 집적된 형태로 구성됨. SoC가 하나의 프로세서라고 보면 된다. SRAM (Static RAM) 은 전원이 공급될 때는 데이터가 계속 유지되니 주기적인 리프레쉬가 불필요하다.속도가 가장 중요한 영역에 배치됨. SDRAM (Synchronous DRAM) 은 데이터를 유지하기 위해 주기적으로 Refres..
  • 최신
    • 1
  • 다음

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (707)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (163)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Data Science (11)
      • Embedded Software (10)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (12)
    • 💬 기록 (12)
    • 📚 논문 (7)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / AXZ. Copyright © i3months.

티스토리툴바