RBS
 
Loading...
Searching...
No Matches
EDT.cin File Reference

EDT ECU의 OTA 업데이트 시스템 구현 More...

Functions

 on_start ()
 시뮬레이션 시작 시 OTA 타이머 초기화
 
int writeBootloader ()
 부트로더 버전 정보를 파일에 쓰는 함수
 
void updateVersion ()
 현재 버전을 업데이트하는 함수
 
void readBootloader (int flag)
 부트로더에서 버전 정보를 읽어오는 함수
 
void sendEdtVersion ()
 EDT 버전 정보를 TMU에 전송하는 함수
 
int getFdLength (int dlc)
 CAN FD DLC에 따른 실제 데이터 길이를 반환하는 함수
 
 on_timer_otaTimer ()
 OTA 타이머 이벤트 핸들러
 
 on_message_CGW_EDT_E_OTA_START ()
 CGW에서 OTA 시작 메시지 수신 이벤트 핸들러
 
 on_message_CGW_EDT_PE_OTA_DATA ()
 CGW에서 OTA 데이터 메시지 수신 이벤트 핸들러
 
 on_message_CGW_EDT_E_OTA_ROLLBACK ()
 CGW에서 OTA 롤백 메시지 수신 이벤트 핸들러
 

Variables

msTimer otaTimer
 OTA 프로세스를 관리하는 타이머
 
message EDT_CGW_E_OTA_RESULT edtOtaResMsg
 CGW에 OTA 결과를 전송하는 메시지
 
message EDT_TMU_E_VER_INFO edtVerMsg
 TMU에 버전 정보를 전송하는 메시지
 
enum STATE edtState
 EDT 시스템 상태를 나타내는 열거형
 
dword hFile
 파일 핸들러
 
char update_ver [1]
 업데이트된 버전 정보 저장용 배열
 
char edt_cur_ver [2]
 현재 버전 정보 저장용 배열
 
int mode = 0
 부트로더 모드 상태 (0: 첫 부팅, 1: OTA 모드, 2: 기본 모드)
 
int ota_result = 0
 OTA 결과 상태
 
int cur_edt_version = 0
 현재 EDT 버전
 
int edt_num = 3
 EDT ECU 번호
 
char filename [128]
 펌웨어 파일명 저장용 배열
 
byte chunk [61]
 데이터 청크 저장용 배열
 
byte header
 헤더 정보
 
byte ecu_id = 0
 ECU ID.
 
byte version = 0
 펌웨어 버전
 
int chunk_len = 0
 청크 길이
 
int is_receiving = 0
 수신 상태 플래그
 
int frameIndex
 현재 프레임 인덱스
 
int lastFrameIndex = -1
 마지막 프레임 인덱스
 
int otaStartFlag = 0
 OTA 시작 플래그
 
int code_len = 0
 코드 길이
 
int frameCount = 0
 총 프레임 수
 
int lastFrameLength = 0
 마지막 프레임 길이
 
long payloadLen = 0
 페이로드 길이
 
double mod = 0.0
 모듈로 계산용 변수
 

Detailed Description

EDT ECU의 OTA 업데이트 시스템 구현

Function Documentation

◆ getFdLength()

int getFdLength ( int dlc)

CAN FD DLC에 따른 실제 데이터 길이를 반환하는 함수

Parameters
dlcData Length Code
Returns
실제 데이터 길이 (bytes)

CAN FD의 DLC 9-15에 대응하는 실제 데이터 길이를 매핑

Here is the caller graph for this function:

◆ on_message_CGW_EDT_E_OTA_ROLLBACK()

on_message_CGW_EDT_E_OTA_ROLLBACK ( )

CGW에서 OTA 롤백 메시지 수신 이벤트 핸들러

OTA 실패 시 이전 버전으로 롤백 수행

  • 현재 OTA 프로세스 중단
  • 백업 버전으로 복구 모드 진입

◆ on_message_CGW_EDT_E_OTA_START()

on_message_CGW_EDT_E_OTA_START ( )

CGW에서 OTA 시작 메시지 수신 이벤트 핸들러

CGW로부터 OTA 시작 명령을 받아 펌웨어 업데이트 준비

  • ECU ID 및 버전 확인
  • 코드 길이, 프레임 수, 마지막 프레임 길이 추출

◆ on_message_CGW_EDT_PE_OTA_DATA()

on_message_CGW_EDT_PE_OTA_DATA ( )

CGW에서 OTA 데이터 메시지 수신 이벤트 핸들러

펌웨어 데이터를 청크 단위로 수신하여 파일에 저장

  • 프레임 순서 검증
  • 파일 쓰기 및 진행률 업데이트
  • 수신 완료 시 파일 이동 및 정리
Here is the call graph for this function:

◆ on_start()

on_start ( )

시뮬레이션 시작 시 OTA 타이머 초기화

Note
100ms 주기로 OTA 타이머를 설정하여 시스템 상태를 관리

◆ on_timer_otaTimer()

on_timer_otaTimer ( )

OTA 타이머 이벤트 핸들러

100ms 주기로 EDT 상태에 따라 다른 동작을 수행:

  • NORMAL_MODE: 버전별 기능 수행
  • BOOTLOADER_MODE: 부트로더 동작 처리
  • OTA_COMPLETE: OTA 완료 처리
Here is the call graph for this function:

◆ readBootloader()

void readBootloader ( int flag)

부트로더에서 버전 정보를 읽어오는 함수

Parameters
flag읽기 모드 (1: 일반 버전, 2: 백업 버전)

파일에서 버전 정보를 읽어와 현재 버전 변수에 저장

◆ sendEdtVersion()

void sendEdtVersion ( )

EDT 버전 정보를 TMU에 전송하는 함수

ECU 번호와 현재 버전을 포함한 메시지를 TMU에 전송

Here is the caller graph for this function:

◆ updateVersion()

void updateVersion ( )

현재 버전을 업데이트하는 함수

수신된 버전 정보로 현재 EDT 버전을 업데이트

Here is the caller graph for this function:

◆ writeBootloader()

int writeBootloader ( )

부트로더 버전 정보를 파일에 쓰는 함수

Returns
성공 시 1, 실패 시 0

현재 EDT 버전을 파일에 저장하여 부트로더가 참조할 수 있도록 함

Here is the caller graph for this function:

Variable Documentation

◆ chunk

byte chunk[61]

데이터 청크 저장용 배열

◆ chunk_len

int chunk_len = 0

청크 길이

◆ code_len

int code_len = 0

코드 길이

◆ cur_edt_version

int cur_edt_version = 0

현재 EDT 버전

◆ ecu_id

byte ecu_id = 0

ECU ID.

◆ edt_cur_ver

char edt_cur_ver[2]

현재 버전 정보 저장용 배열

◆ edt_num

int edt_num = 3

EDT ECU 번호

◆ edtOtaResMsg

CGW에 OTA 결과를 전송하는 메시지

◆ edtState

enum STATE edtState

EDT 시스템 상태를 나타내는 열거형

◆ edtVerMsg

TMU에 버전 정보를 전송하는 메시지

◆ filename

char filename[128]

펌웨어 파일명 저장용 배열

◆ frameCount

int frameCount = 0

총 프레임 수

◆ frameIndex

int frameIndex

현재 프레임 인덱스

◆ header

byte header

헤더 정보

◆ hFile

dword hFile

파일 핸들러

◆ is_receiving

int is_receiving = 0

수신 상태 플래그

◆ lastFrameIndex

int lastFrameIndex = -1

마지막 프레임 인덱스

◆ lastFrameLength

int lastFrameLength = 0

마지막 프레임 길이

◆ mod

double mod = 0.0

모듈로 계산용 변수

◆ mode

int mode = 0

부트로더 모드 상태 (0: 첫 부팅, 1: OTA 모드, 2: 기본 모드)

◆ ota_result

int ota_result = 0

OTA 결과 상태

◆ otaStartFlag

int otaStartFlag = 0

OTA 시작 플래그

◆ otaTimer

msTimer otaTimer

OTA 프로세스를 관리하는 타이머

◆ payloadLen

long payloadLen = 0

페이로드 길이

◆ update_ver

char update_ver[1]

업데이트된 버전 정보 저장용 배열

◆ version

byte version = 0

펌웨어 버전