FI-DIN 포팅 절차 » 이력 » 버전 5
백인호 실장, 2024/01/25 16:51
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 | h2. 1. 신규 프로젝트 생성 |
||
22 | |||
23 | 5 | 백인호 실장 | h3. 1. 참조 보드 모델 : https://www.st.com/en/evaluation-tools/32f769idiscovery.html |
24 | |||
25 | * |
||
26 | 2 | 백인호 실장 | |
27 | h2. 2. 부트로더 |
||
28 | |||
29 | * 부트로더는 부팅시 어플리케이션을 호출하거나 부트로더 상태에서 어플리케이션을 IAP를 통해 업그레이드 하는 기능을 수행한다. |
||
30 | * 부트로더는 NMEA2000 네트워크를 이용하여 바이너리를 업그레이드 할 수 있도록 자체적인 NMEA2000 통신 스택을 보유한다. |
||
31 | * 부트로더는 2개로 구성되어 있다. |
||
32 | 3 | 백인호 실장 | ** boot1 : 부팅시 특정 부팅 플래그에 따라 boot2 혹은 app을 선택하여 실행할 수 있다. |
33 | 2 | 백인호 실장 | ** boot2 : IAP와 NMEA2000 네트워크 스택이 포함되어 있다. |
34 | 1 | 백인호 실장 | |
35 | 3 | 백인호 실장 | > 부트로더를 굳이 boot1과 boot2로 분리한 이유는 다음과 같다. |
36 | > 부트로더에 주변장치를 제어하는 HAL함수가 많이 포함될수록 어플리케이션 진입시 알 수 없는 오류가 많이 발생한다. |
||
37 | > 따라서 부트로더는 어플리케이션으로의 정상적인 진입을 위해 가급적 단순하게 작성되어야 한다. |
||
38 | > 하지만 FI-DIN용 부트로더에는 NMEA2000과 IAP 외에도 부팅메시지를 LCD로 출력하여야 하므로 대부분의 주변장치 제어를 어플리케이션과 비슷한 수준으로 수행해야 한다. |
||
39 | > 이러한 상충되는 요구사항을 해결하기 위해 가장 단순하게 구성된 boot1과 IAP 및 NMEA2000통신을 수행할 수 있는 boot2로 부트로더를 분리하였다. |
||
40 | > boot1에서는 충돌 문제를 회피하기 위해 HAL 함수가 아닌 보다 단순한 LL함수를 사용하였다. |
||
41 | > boot2에서는 어플리케이션과 거의 동일한 수준의 HAL 함수를 사용한다. |