FI-DIN 포팅 절차 » 이력 » 개정판 4
개정판 3 (백인호 실장, 2024/01/25 16:47) → 개정판 4/5 (백인호 실장, 2024/01/25 16:48)
h1. 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 통신 인터페이스 h1. 2.기본 포팅 * 타겟보드를 최초 구동시키기 위하여 다음과 같은 절차를 수행한다. h2. 1. 신규 프로젝트 생성 * ToDo h2. 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 함수를 사용한다.