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 |
모듈로 계산용 변수 | |
EDT ECU의 OTA 업데이트 시스템 구현
CAN FD DLC에 따른 실제 데이터 길이를 반환하는 함수
dlc | Data Length Code |
CAN FD의 DLC 9-15에 대응하는 실제 데이터 길이를 매핑
on_message_CGW_EDT_E_OTA_ROLLBACK | ( | ) |
CGW에서 OTA 롤백 메시지 수신 이벤트 핸들러
OTA 실패 시 이전 버전으로 롤백 수행
on_message_CGW_EDT_E_OTA_START | ( | ) |
CGW에서 OTA 시작 메시지 수신 이벤트 핸들러
CGW로부터 OTA 시작 명령을 받아 펌웨어 업데이트 준비
on_message_CGW_EDT_PE_OTA_DATA | ( | ) |
CGW에서 OTA 데이터 메시지 수신 이벤트 핸들러
펌웨어 데이터를 청크 단위로 수신하여 파일에 저장
on_start | ( | ) |
시뮬레이션 시작 시 OTA 타이머 초기화
on_timer_otaTimer | ( | ) |
OTA 타이머 이벤트 핸들러
100ms 주기로 EDT 상태에 따라 다른 동작을 수행:
부트로더에서 버전 정보를 읽어오는 함수
flag | 읽기 모드 (1: 일반 버전, 2: 백업 버전) |
파일에서 버전 정보를 읽어와 현재 버전 변수에 저장
void sendEdtVersion | ( | ) |
EDT 버전 정보를 TMU에 전송하는 함수
ECU 번호와 현재 버전을 포함한 메시지를 TMU에 전송
void updateVersion | ( | ) |
현재 버전을 업데이트하는 함수
수신된 버전 정보로 현재 EDT 버전을 업데이트
int writeBootloader | ( | ) |
부트로더 버전 정보를 파일에 쓰는 함수
현재 EDT 버전을 파일에 저장하여 부트로더가 참조할 수 있도록 함
byte chunk[61] |
데이터 청크 저장용 배열
int chunk_len = 0 |
청크 길이
int code_len = 0 |
코드 길이
int cur_edt_version = 0 |
현재 EDT 버전
byte ecu_id = 0 |
ECU ID.
char edt_cur_ver[2] |
현재 버전 정보 저장용 배열
int edt_num = 3 |
EDT ECU 번호
message EDT_CGW_E_OTA_RESULT edtOtaResMsg |
CGW에 OTA 결과를 전송하는 메시지
message EDT_TMU_E_VER_INFO edtVerMsg |
TMU에 버전 정보를 전송하는 메시지
char filename[128] |
펌웨어 파일명 저장용 배열
int frameCount = 0 |
총 프레임 수
int frameIndex |
현재 프레임 인덱스
byte header |
헤더 정보
dword hFile |
파일 핸들러
int is_receiving = 0 |
수신 상태 플래그
int lastFrameIndex = -1 |
마지막 프레임 인덱스
int lastFrameLength = 0 |
마지막 프레임 길이
double mod = 0.0 |
모듈로 계산용 변수
int mode = 0 |
부트로더 모드 상태 (0: 첫 부팅, 1: OTA 모드, 2: 기본 모드)
int ota_result = 0 |
OTA 결과 상태
int otaStartFlag = 0 |
OTA 시작 플래그
msTimer otaTimer |
OTA 프로세스를 관리하는 타이머
long payloadLen = 0 |
페이로드 길이
char update_ver[1] |
업데이트된 버전 정보 저장용 배열
byte version = 0 |
펌웨어 버전