http://terms.naver.com/entry.nhn?docId=3532979 디자인 패턴중에 매우 사용도가 높고 매우 효율적인 State 패턴은 공부를 하다보면 좀 헷갈리는 디자인 패턴입니다. 대부분의 패턴은 if 문과 같이, 유지보수나 버그를 양산하기 쉬운 코드를 없애고 쉬운 확장을 목적으로 구조를 만듭니다. State 패턴은 각 상태가 바뀔 때 마다 늘어나는 if문을 없애는 패턴입니다. 즉, 상태들 끼리 서로의 상태를 바꿔가며 동작하기 때문에 유지보수도 쉽고 확장도 용이합니다. 그러나 상태변화에 대한 명확한 이해와 구조를 어떻게 할지에 대한 고민이 필요합니다. 다소 생소하고 복잡하게 보일지 모르지만 한번 구현해 보도록 하겠습니다. 예제는 단순한 Light를 On/Off하는 기능을 State 패..
IAR 9.20.1 버전 이후 에 overriding 되어 있는 fputc() 은 더 이상 동작하지 않습니다. 자세한 내용은 아래 URL을 참조하시기 바랍니다. https://www.iar.com/kr/knowledge/support/technical-notes/compiler/migrating-projects-with-the-custom-fputc-function/ 사용자 정의 fputc() 함수로 프로젝트 마이그레이션 사용자 정의 fputc() 함수로 프로젝트 마이그레이션 기술노트 220216 아키텍처: Arm 컴포넌트: compiler 업데이트: 2022-07-05 오전 12:10 개요 사용자 정의 함수 fputc()가 있는 일부 프로젝트가 EWARM 9.20.1 이 www.iar.com 위의 Ap..
CubeIDE에서 Formatter를 이용하여, Code를 일관성 있게 만들어 봅시다. 아무런 설정을 하지 않을 경우 들여쓰기는 Tab, Braces는 Same line으로 되어 있습니다. 취향이기 한데, 저는 아래와 같이 세팅합니다. 1. 들여쓰기 - Spaces only indentation size - 2 tab size - 2 들여쓰기를 Tab으로 할 경우에, 다른 사람이 제코드를 보면 조금 다르게 보일 수 있습니다. 그건 Tab의 사이즈가 서로 다르기 때문에 나타나는 현상입니다. Spaces only 로 두면 들여쓰기는 항상 Space로 구성되어 있어 어디서나 동일한 모습으로 보입니다. (심지어 Word에서도 일관성있게 보입니다.) 들여쓰기 size는 2로 구성했습니다. 아무래도 가로로 ..
"8비트 가격으로 32비트 MCU를 구매할 수 있는 기회를 놓치지 마세요. 곧 신제품이 출시됩니다. " 위의 문구처럼 극강의 가성비 32비트 MCU가 나온다. Your next 8-bit MCU is a 32-bit. It’s called STM32C0! - STMicroelectronics 다음 8비트 MCU는 32비트입니다. STM32C0이라고 합니다. 그리고 시리즈가 확장되고 있습니다. ST의 가장 저렴한 32비트 마이크로컨트롤러인 STM32C0은 모든 개발자가 32비트 기능에 액세스할 수 있도록 해줍니다. 현재 STM32C0 시리즈는 16~32KB의 플래시 메모리와 8~48핀 범위의 패키지를 제공하는 마이크로컨트롤러를 제공합니다. 2024년에 STM32C0은 최대 64핀 패키지로 제공되는 최대 2..
Cortex®-M7 프로세서의 MPU(메모리 보호 장치)를 사용하면 영역별로 Level 1(L1) 캐시 속성(Attributes)을 수정할 수 있습니다. 캐시는 캐시 제어 레지스터에 의해 전역적으로 제어되지만 MPU는 캐시 모드와 영역에 대한 액세스를 캐시할 수 있는지 여부를 지정할 수 있습니다. 경우에 따라 캐시된 시스템은 공유 데이터를 처리할 때 코어와 주 메모리 간의 데이터 일관성을 보장해야 합니다. 이 애플리케이션 노트는 레벨 1 캐시 동작을 설명하고 L1 캐시를 사용할 때 STM32F7 시리즈 및 STM32H7 시리즈에서 데이터 일관성을 보장하는 방법을 보여주는 예를 제공합니다. MPU 및 메모리 유형 및 캐시 정책에 따라 메모리 속성을 설정하는 방법에 대한 자세한 내용은 http://w..
STM32CubeH7 패키지에는 OpenAMP 및 FreeRTOS™ 메시지 버퍼를 사용한 프로세서 간 통신을 포함하여 듀얼 코어 애플리케이션을 위한 몇 가지 예가 포함되어 있습니다. 다음 섹션에서는 OpenAMP 및 FreeRTOS™를 사용하는 몇 가지 예와 하드웨어 세마포어를 사용하는 기타 예를 설명합니다. OpenAMP 다음 그림은 CPU1을 마스터로, CPU2를 슬레이브로 정의한 예를 보여줍니다. 시스템 초기화 후 두 CPU 모두 OpenAMP 프레임워크 초기화를 담당하는 MX_OPENAMP_Init() 함수를 실행합니다. CPU2(슬레이브)는 엔드포인트 생성을 담당하며 이는 OPENAMP_create_endpoint() API를 사용하여 수행됩니다. 엔드포인트가 생성되자마자 마스터 CPU(..
경량 프로세서 간 통신 채널은 STM32H745/755 또는 STM32H747/757 장치에 내장된 사용 가능한 주변 장치를 사용하여 구현할 수 있습니다. 예를 들어, 인터럽트 라인은 이벤트를 알리거나 데이터 가용성을 전달하는 데 사용할 수 있습니다. DMA 채널과 같은 다른 주변 장치를 사용하여 데이터를 전송하고 한쪽에서 다른 쪽으로 전송 종료 알림을 생성할 수 있습니다. 이 솔루션은 맞춤형 솔루션이며 OpenAMP 또는 FreeRTOS™ 원격 메시징 구현만큼 일반적이지 않습니다. Hardware semaphore STM32 마이크로컨트롤러에 구현된 하드웨어 세마포어 주변 장치를 사용하면 두 CPU 간에 알림 및 이벤트 교환을 구현할 수 있습니다(아래 그림 참조). HSEM 주변 장치에서 CPU..
FreeRTOS message buffer and stream buffer 버전 10.0.0부터 FreeRTOS™에는 프로세서 간 통신 API를 구현되어 있습니다. 다음 섹션에서는 메시지 버퍼 및 스트림 버퍼 API에 대해 설명합니다. Message buffers 메시지 버퍼를 사용하면 인터럽트 서비스 루틴에서 작업으로 또는 한 작업에서 다른 작업으로 다양한 길이의 이산 메시지를 전달할 수 있습니다. 예를 들어, 길이가 10, 20, 123바이트인 메시지는 모두 동일한 메시지 버퍼에 쓰고 읽을 수 있습니다. 10바이트 메시지는 개별 바이트가 아닌 10바이트 메시지로만 읽을 수 있습니다. 메시지 버퍼는 스트림 버퍼 구현 위에 구축됩니다. 메시지 버퍼는 페이로드 데이터 크기를 저장하기 위해 단어가 필..