본문 바로가기

Hard Real-Time Task에서 Deadline에 도달하면 어떻게 될까? RTOS를 다루다보면 이러한 궁금증이 생길 때가 있다. 'RTOS를 실시간성이 보장되어야 하는 시스템 구현에 사용하게 되는데, 테스크가 데드라인 안에 작업을 수행하지 못한다면 어떻게 되지?' 정답을 말하면 그냥 넘어간다고 할 수 있다. RTOS 커널은 테스크가 Deadline 안으로 구현을 하게 해주는 매개체가 아니라 'deterministic Scheduling'을 보장하는 OS이기 때문이다. 그러므로 진부한 말이지만 실시간성을 보장하는 시스템을 만들기 위해선 시스템의 요구사양과 이에 맞게 어플리케이션을 디자인 하는 것이 핵심이라 할 수 있겠다. 더 자세한 내용은 아래 링크를 통해 공부해보자 https://stackoverflow.com/questions/45958888/what-happens-if-a..
CAN 통신의 이해 1.1 CAN이란? CAN(Controller Area Network)이란, 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격입니다. 차량 내 *ECU(Electronic control unit)들은 CAN 프로토콜을 사용하여 통신합니다. 초기에는 차량 네트워크용으로 개발되었으나 최근에는 차량뿐만 아니라 산업 전 분야에 폭넓게 적용되고 있으며, 기본적인 시스템 구성은 아래와 같습니다. 1.2 CAN 특징1.2.1 메시지 지향성 프로토콜(Message-Oriented Protocol) CAN은 노드의 주소에 의해 데이터가 교환되는 것이 아니라 메시지의 우선순위에 따라 ID(IDentifier)를 할당하고, 이 ID를 이용해 메시지를 구별하는 방식을 사용..
DMA의 동작원리 1. DMA의 개념 DMA 컨트롤러는 입출력장치와 관련된 개념입니다. 일반적으로 이러한 입출력 창치는 직접 시스템 버스에 접속되지 않습니다. 그 이유는 입출력 장치가 다양하고, 각기 전송속도의 차이가 나며, 데이터의 형식과 길이가 다르기 때문입니다. 그래서 입출력 장치를 제어하기 위해서는 입출력 제어기가 필요합니다. 그리고, 입출력 제어기는 입출력 장치의 제어와 타이밍을 조절하는 역할을 하고, CPU와 입출력 장치의 통신을 담당합니다. 또한 데이터의 버퍼링이나 오류를 검출하는 역할을 수행합니다. 물론 CPU는 해당 입출력 제어기를 통하여 입출력 동작을 수행하고요. 그런면에서 DMA는 넓은 의미에서 입출력 제어기의 범위로 이해하셔도 무방합니다. 2. 보통메모리 제어방식질문자가 말한 보통의 메모리 제어방식은..
[UML] 클래스 다이어그램 작성법 https://gmlwjd9405.github.io/2018/07/04/class-diagram.html
8비트 MCU 또는 32비트 MCU 선택 기준 매트 사운더(Matt Saunders) 실리콘랩스 마이크로컨트롤러 및 무선 사업부, 필드 마케팅 담당 이사 이 글은 8비트 MCU와 32비트 MCU를 선택하는 데 있어 버스 폭이 MCU의 선택 기준이 될 수 없는 이유에 대해 설명하고자 한다. 임베디드 개발자들은 마이크로컨트롤러에 대해 광범위한 선택을 할 수 있지만 버스 폭이 반드시 성능별로 단계적인 기준으로 적용되지 않기 때문이다. 반도체 제조업체가 32비트 아키텍처를 마이크로컨트롤러에 포팅하기 시작하면서 엔지니어링 커뮤니티에서는 8비트 디바이스가 사라질 것이라는 예측도 있었다. 사실, 8비트 디바이스가 적용된 기기의 사용은 감소해 왔으며 더 이상 시장을 주도하는 위치도 아니다. ▲ MCU 그러나 8비트가 사라지기에는 아직도 먼 이야기다. 실제 32비트..
FreeRTOS - 힙 메모리 관리 글의 맨 밑에 출처로 이동하시면 Amazon FreeRTOS 사이트에서 더 깔끔하게 보실 수 있습니다. 힙 메모리 관리 V9.0.0부터는 힙 메모리를 FreeRTOS 애플리케이션에 완전히 정적으로 할당할 수 있습니다. 이 말은 힙 메모리 관리자를 추가할 필요가 없다는 것을 의미합니다. 이번 단원에서 다루는 내용은 다음과 같습니다. ● FreeRTOS의 RAM 할당 시점 ● FreeRTOS와 함께 제공되는 5가지 메모리 할당 체계 예제 ● 각 메모리 할당 체계의 사용 사례 전제 조건 FreeRTOS를 사용하려면 C 프로그래밍에 대해 잘 알고 있어야 합니다. 특히 다음 사항에 정통해야 합니다. ● 컴파일 및 링크 단계를 포함한 C 프로젝트의 빌드 방식 ● 스택 및 힙에 대한 개념 ● 표준 C 라이브러리 ma..
구조체와 const에 관하여 25 typedef struct Hello Hello; 26 27 /*## class Hello */ 26 29 struct Hello { 30RIC_EMPTY_STRUCT 31}; 32 33 34/* User explicit entries */ /* Operations */ 38 39 /* # operation print () */ 40 void Hello print (Hello* const me); 41 42/* User implicit entries */ 43 *** 44 45 /* Constructors and destructors:*/ 46 47 48 /*## auto generated */ 49 void Hello Init (Hello* const me); 50 51 /*## auto gene..
14 FreeRTOS Tutorial: Mutex https://www.youtube.com/watch?v=rqpbQlzgws0 /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "cmsis_os.h" #include "usb_host.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "FreeRTOS.h" #include #include #include "semphr.h" /* USER CODE END Includes */ TaskHandle..