프로젝트

일반

사용자정보

Actions

FI-DIN 포팅 절차 » 이력 » 개정판 3

« 뒤로 | 개정판 3/5 (비교(diff)) | 다음 »
백인호 실장, 2024/01/25 16:47


1.개요

  • FI-DIN의 GUI는 STMicro사의 TouchGFX 솔루션을 사용한다.
  • FI-DIN의 TouchGFX를 위하여 다음의 HW가 적용되어 있다.
    • STM32F767NGH6 Cortex-M7@216MHz MCU
    • 800x480 해상도의 5인치 RGB888 LCD
    • I2C로 연결되는 터치센서
    • 프레임버퍼에 할당하기 위한 16bit-width의 SDRAM
    • TouchGFX용 GUI리소스, 즉 이미지, 폰트, 각종 데이터 등을 위한 QuadSPI NOR Flash(이하 QSPI Flash)
  • FI-DIN은 NMEA2000 및 NMEA0183을 지원하기 위하여 다음의 HW가 적용되어 있다.
    • NMEA2000을 위한 CAN 버스 인터페이스
    • NMEA0183을 위한 UART 통신 인터페이스

2.기본 포팅

  • 타겟보드를 최초 구동시키기 위하여 다음과 같은 절차를 수행한다.

1. 신규 프로젝트 생성

  • ToDo

2. 부트로더

  • 부트로더는 부팅시 어플리케이션을 호출하거나 부트로더 상태에서 어플리케이션을 IAP를 통해 업그레이드 하는 기능을 수행한다.
  • 부트로더는 NMEA2000 네트워크를 이용하여 바이너리를 업그레이드 할 수 있도록 자체적인 NMEA2000 통신 스택을 보유한다.
  • 부트로더는 2개로 구성되어 있다.
    • boot1 : 부팅시 특정 부팅 플래그에 따라 boot2 혹은 app을 선택하여 실행할 수 있다.
    • boot2 : IAP와 NMEA2000 네트워크 스택이 포함되어 있다.

부트로더를 굳이 boot1과 boot2로 분리한 이유는 다음과 같다.
부트로더에 주변장치를 제어하는 HAL함수가 많이 포함될수록 어플리케이션 진입시 알 수 없는 오류가 많이 발생한다.
따라서 부트로더는 어플리케이션으로의 정상적인 진입을 위해 가급적 단순하게 작성되어야 한다.
하지만 FI-DIN용 부트로더에는 NMEA2000과 IAP 외에도 부팅메시지를 LCD로 출력하여야 하므로 대부분의 주변장치 제어를 어플리케이션과 비슷한 수준으로 수행해야 한다.
이러한 상충되는 요구사항을 해결하기 위해 가장 단순하게 구성된 boot1과 IAP 및 NMEA2000통신을 수행할 수 있는 boot2로 부트로더를 분리하였다.
boot1에서는 충돌 문제를 회피하기 위해 HAL 함수가 아닌 보다 단순한 LL함수를 사용하였다.
boot2에서는 어플리케이션과 거의 동일한 수준의 HAL 함수를 사용한다.

백인호 실장이(가) 10달 전에 변경 · 3 revisions