Arduino PORTENTA H7 Zephyr RTOS 포팅

energyun·2022년 5월 28일
0

zephyr portenta h7

목록 보기
1/3

Arduino Portenta H7

Arduino에서 stm32h7 기반 보드가 출시되었다. h7 시리즈 mcu는 듀얼코어를 지원 (cortex-m7, cortex-m4) 하고, 최대 480MHz 클럭으로 동작하기 때문에, 자동차의 인포테인먼트 데스크나 간단한 AI-Edge 어플리케이션 등 퍼포먼스가 필요한 시스템에서 사용하기 적합하다.

features of PORTENTA H7

  • cryto chip
  • sdram
  • sdmmc
  • wifi/bt
  • (external) ethernet phy
  • usb hs phy (ULPI)
  • pmic

프로젝트 시 필요한 BSP는 모두 들어있는 것 같다. 앞으로 프로젝트를 계속 진행할 때도 위의 feature에서 application에 따라 가감하는 형식으로 진행할 가능성이 높을 것 같다.

아두이노 RTOS 분석

Arduino Portenta H7의 RTOS는 mbedos 기반으로 작성되어 있다. mbedos는 C++ 기반 HAL 드라이버와 인터페이스를 제공하고 있어 기존 아두이노의 라이브러리와 비슷하다는 점에서 채택되지 않았나 싶다. 현재 공개된 소스를 보고 아두이노 RTOS에서 제공하고 있는 Peripheral을 보니 필자가 필요한 CAN-FD 드라이버가 포팅되어있지 않았다. 좀더 내부 소스 분석해보니 CAN-FD 드라이버 인터페이스가 정의 되지 않았고, classic CAN 모드만 지원한다. (mbedos에서도 CAN-FD에 대한 드라이버 인터페이스는 없음..)

Zephyr RTOS 포팅

zephyr는 이전 프로젝트에서 can-fd, ethernet feature를 사용한 디바이스를 만들었다. 성능도 만족하였고, 무엇보다 드라이버 인터페이스가 좋았던 것 같다. 기존의 devicetree compiler를 활용하여 드라이버를 정의하는 컨셉은 요즘 같이 칩변경의 수요가 많은 때에 도입하기 적절해보였다.
H7의 CAN-FD 드라이버 역시 zephyr (2.7)에는 포함되지 않아 직접 포팅해서 작업했었지만, 최근 3.0.0으로 올라오면서 feature가 추가되었다. 지속적으로 zephyr rtos 를 통해 프로젝트를 하고 싶어 Portenta h7을 포팅작업을 하려 한다.

각 포팅에 대해서는 아래 순서대로 할 생각이다.

  • arduino bootloader 분석
  • arduino bootloader 호환 test application 작성
  • devicetree 작성 및 샘플 테스트 작성 (BSP 작업 완료)
  • Application 작성

1개의 댓글

comment-user-thumbnail
2022년 6월 26일

오 ~ 상당히 유용한 정보 입니다.
Github에 소스도 공유해 주시고, 좋습니다.
감사합니다.

답글 달기