우리 프로젝트 내에는 Cortex-M4와 Cortex-M7이 있다. 두 Core는 각각 동작하며, 코드 데이터 영역을 따로 가지고 있다. 그렇다면 두 Core 간 데이터를 주고받기 위해서는 어떻게 해야 할까? 해답은 데이터 시트에 있다. 데이터 시트를 자세히 보면, D3 Domain의 SRAM 4를 Cortex-M4와 Cortex-M7이 공유하고 있다. 이 영역을 두 프로젝트에서 Linker Script를 수정하여 영역을 잡아 주면 해결 가능하다. 나는 해당 영역을 SHARED_RAM으로 이름을 지었다. 해당 영역을 Common Folder에다가 IPC 형태의 소통 창고를 만들 것이다. 바로 아래와 같이. 위와 같이 선언하고 코드를 구현하면 Build Analyzer를 통해서 실제로 할당 된것도 ..
1ms Timer가 정상 작동 하는 것을 보았으니, Scheduler를 다시 심어보자. 이전에 다루었었던 내용이니 내용적인 부분은 넘어가도록 하겠다. https://enginbear.tistory.com/29 [Whale Car] Scheduler 만들기이번 시간에는 지난 시간 만든 1ms Timer Interrupt를 활용해서 Scheduler를 만들어 봅시다. 임베디드에서는 Scheduler가 심장이라고 해도 과언이 아닙니다. 임베디드 위에서 올라가있는 모든 로직들의 일enginbear.tistory.com 근데 한 가지 문제점이 있다. Dual Core 프로젝트의 경우에 하나의 elf가 만들어질 것이라 생각했는데, 두 개의 elf를 올리는 방식이다. 즉 그 말은 하나의 프로젝트 안에 두 개의 빌드..
지난 시간 기본적인 Setting을 마치고 '간단하게' 1ms Timer를 만들어보려 했다. 말 그대로 간단하게 1ms Timer만 만들고 종료하려고 시작을 했는데... 우선 STM32H735은 General Purpose Timer로 10개의 Timer를 가지고 있다고 한다. 나는 여기서 32-bit Timer인 2와 5를 사용할 예정이다. 각 Core에 할당하여 따로 1ms Timer를 돌리는 것이 목적이었다. STM32H7 프로젝트는 특이하게, Peripheral을 선택하면 어느 Core할당할 것인지 설정하는 부분이 있다. TIM2는 M4 Core에 TIM5는 M7 Core에 할당하였다. TIM2와 TIM5는 Manual을 보면, APB1 Bus에 물려있는 것을 볼 수 있는데 APB1은 이..