2020. 7. 29. 15:47ㆍ💿/Firmware
지난번 시간에 개봉과 개발환경을 구축했다면, 이제 본격적인 사용을 하기 전에 테스트를 해보겠습니다.
가장 눈 여겨 봐야할 기능 중 하나인 Dual Core Processing을 간단하게 구현하겠습니다.
Portenta H7에는 core라고 불리는 두개의 처리장치 (m7 core와 m4 core)가 있는 Processor가 장착돼있습니다.이 뜻은 m7, m4가 서로 다른 일을 각각 처리할 수 있다는 뜻입니다.
간단하게 m7과 m4에 서로 다른 일을 주는 예제를 처리해 보도록 하겠습니다.
위의 이미지 클릭 시 아두이노 프로 Dual Core Processing tutorial로 이동합니다.
M7 core에 업로드해줄 코드입니다.
void setup() { LL_RCC_ForceCM4Boot(); pinMode(LEDR, OUTPUT); digitalWrite(LEDR, HIGH); } void loop() { digitalWrite(LEDR, LOW); delay(500); digitalWrite(LEDR, HIGH); delay(500); }
0.5초만큼 켜져있다가, 0.5초 만큼 꺼지는 동작을 반복하는 LED Red를 업로딩 해줍니다.
LL_RCC_ForceCM4Boot(); / M4 core 강제 부팅
Portenta H7의 부트 로더는 M7 core 만 자동으로 부팅되도록 구성돼 있습니다. 간단하게 사용할 경우 불필요한 프로그래밍을 최대한 줄여 M4를 사용하지 않게끔 하여, 전원을 공급할 필요가 없도록 전류를 최대한 줄이는 게 효율적이기 때문입니다. 그렇게 때문에 M7에는 M4의 초기화를 자동으로 처리하는 적절한 펌웨어가 없습니다.
그러니까 Dual core를 실행하기 위해선 M4를 강제로 부팅시켜 줘야 합니다.
LL_RCC_ForceCM4Boot() 명령어는 Portenta H7의 M7 스케치의 Setup단계에서 사용하여. 강제로 M4를 부팅시킬 수 있습니다.
void setup() { pinMode(LEDB, OUTPUT); digitalWrite(LEDB, HIGH); } void loop() { digitalWrite(LEDB, LOW); delay(200); digitalWrite(LEDB, HIGH); delay(200); }
M4 core에는 0.2초 주기로 켰다 꺼졌다 하는 LED Blue를 업로딩 해줍니다.
간단하게 듀얼코어 프로세싱을 구현할 수 있었습니다.
'💿 > Firmware' 카테고리의 다른 글
[Cypress] pSoc6 - CY8CKIT-062-BLE 진행 프로젝트 TopDesign (0) | 2021.09.02 |
---|---|
[F/W] 가속도 센서 / 자이로 센서 코드/ 모션 센서 / 만보계 코드/ Step count / bmi160 init / bmi160.c / bmi 160 driver / (0) | 2021.06.08 |
[STM32] Arduino Pro Portenta H7 Trouble Shooting (0) | 2020.08.07 |
[STM32] Arduino Pro Portenta H7 개봉 및 개발환경 구축 (0) | 2020.07.28 |
[PSoC6] CY8CKIT-028-TFT / PSoC63 / CY8C6347BZI-BLD53 / CYPRESS (0) | 2020.07.15 |