Actions
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. 신규 프로젝트 생성¶
1. 참조 보드 모델 : https://www.st.com/en/evaluation-tools/32f769idiscovery.html¶
*
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달 전에 변경 · 5 revisions