프로젝트

일반

사용자정보

FI-DIN 포팅 절차 » 이력 » 버전 3

백인호 실장, 2024/01/25 16:47

1 1 백인호 실장
h1. 1.개요
2
3
* FI-DIN의 GUI는 STMicro사의 TouchGFX 솔루션을 사용한다.
4
* FI-DIN의 TouchGFX를 위하여 다음의 HW가 적용되어 있다.
5
** STM32F767NGH6 Cortex-M7@216MHz MCU 
6
** 800x480 해상도의 5인치 RGB888 LCD
7
** I2C로 연결되는 터치센서
8
** 프레임버퍼에 할당하기 위한 16bit-width의 SDRAM
9
** TouchGFX용 GUI리소스, 즉 이미지, 폰트, 각종 데이터 등을 위한 QuadSPI NOR Flash(이하 QSPI Flash)
10
11
* FI-DIN은 NMEA2000 및 NMEA0183을 지원하기 위하여 다음의 HW가 적용되어 있다.
12
** NMEA2000을 위한 CAN 버스 인터페이스
13
** NMEA0183을 위한 UART 통신 인터페이스
14
15
16
17
h1. 2.기본 포팅
18
19
* 타겟보드를 최초 구동시키기 위하여 다음과 같은 절차를 수행한다.
20
21
22
h2. 1. 신규 프로젝트 생성
23 2 백인호 실장
24
* ToDo
25
26
h2. 2. 부트로더
27
28
* 부트로더는 부팅시 어플리케이션을 호출하거나 부트로더 상태에서 어플리케이션을 IAP를 통해 업그레이드 하는 기능을 수행한다.
29
* 부트로더는 NMEA2000 네트워크를 이용하여 바이너리를 업그레이드 할 수 있도록 자체적인 NMEA2000 통신 스택을 보유한다.
30
* 부트로더는 2개로 구성되어 있다.
31 3 백인호 실장
** boot1 : 부팅시 특정 부팅 플래그에 따라 boot2 혹은 app을 선택하여 실행할 수 있다.
32 2 백인호 실장
** boot2 : IAP와 NMEA2000 네트워크 스택이 포함되어 있다.
33 1 백인호 실장
34 3 백인호 실장
> 부트로더를 굳이 boot1과 boot2로 분리한 이유는 다음과 같다. 
35
> 부트로더에 주변장치를 제어하는 HAL함수가 많이 포함될수록 어플리케이션 진입시 알 수 없는 오류가 많이 발생한다.
36
> 따라서 부트로더는 어플리케이션으로의 정상적인 진입을 위해 가급적 단순하게 작성되어야 한다.
37
> 하지만 FI-DIN용 부트로더에는 NMEA2000과 IAP 외에도 부팅메시지를 LCD로 출력하여야 하므로 대부분의 주변장치 제어를 어플리케이션과 비슷한 수준으로 수행해야 한다.
38
> 이러한 상충되는 요구사항을 해결하기 위해 가장 단순하게 구성된 boot1과 IAP 및 NMEA2000통신을 수행할 수 있는 boot2로 부트로더를 분리하였다.
39
> boot1에서는 충돌 문제를 회피하기 위해 HAL 함수가 아닌 보다 단순한 LL함수를 사용하였다.
40
> boot2에서는 어플리케이션과 거의 동일한 수준의 HAL 함수를 사용한다.