-
-
Notifications
You must be signed in to change notification settings - Fork 2
로그 프로토콜
TMA-1이 기록하는 로그는 16 byte Little Endian 규격으로 이루어져 있습니다.
TMA-1에 전원이 공급된 시점으로부터 경과된 ms 단위의 시간입니다.
로그의 레벨입니다. 다음 값을 가질 수 있습니다.
Level | value |
---|---|
FATAL | 0 |
ERROR | 1 |
WARN | 2 |
INFO | 3 |
DEBUG | 4 |
로그를 발생시킨 장비와 로그의 종류입니다. 다음 값을 가질 수 있습니다.
Source | value | Key | value | parsed |
---|---|---|---|---|
SYS | 0 | SYS_SD_INIT | 0 | |
SYS_CORE_INIT | 1 | |||
SYS_SERIAL_INIT | 2 | |||
SYS_TELEMETRY_REMOTE | 3 | |||
SYS_TELEMETRY_INIT | 4 | |||
CAN_INIT | 5 | |||
DIGITAL_INIT | 6 | |||
ANALOG_INIT | 7 | |||
PULSE_INIT | 8 | |||
ACCELEROMETER_INIT | 9 | |||
GPS_INIT | 10 | |||
SYS_READY | 11 | |||
SYS_RTC_FIX | 12 | |||
SYS_SD_FAIL | 13 | |||
CAN_ERR_CANERR | 14 | |||
CAN_ERR_RXMSGFAIL | 15 | |||
CAN_ERR_FIFOFULL | 16 | |||
CAN | 1 | CAN MSG ID & 0xFF |
CAN MSG data |
|
DIGITAL | 2 | DIGITAL_DATA | 0 |
DIN0 DIN1 DIN2 DIN3 DIN4 DIN5 DIN6 DIN7
|
ANALOG | 3 | ANALOG_SYS | 0 |
CPU_TEMP INPUT_VOLTAGE
|
ANALOG_DATA | 1 |
AIN0 AIN1 AIN2 AIN3
|
||
PULSE | 4 | PULSE_DATA | 0 |
PIN0 PIN1 PIN2 PIN3
|
ACCELEROMETER | 5 | ACCELEROMETER_DATA | 0 |
x y z
|
GPS | 6 | GPS_POS | 0 |
lat lon
|
GPS_VEC | 1 |
speed course
|
||
GPS_TIME | 2 |
utc_date utc_time
|
로그의 유효성을 검증하는 체크섬입니다.
자신을 제외한 나머지 15개 바이트를 모두 더한 합을 0xFF와 AND 연산한 값입니다.
해당 로그에 저장된 8바이트 데이터입니다.
SD 카드 초기화 기록입니다.
value | data |
---|---|
0 | success |
other | FatFs FRESULT |
TMA-1 코어 시스템(LED, RTC 동기화 인터럽트) 초기화 기록입니다.
value | data |
---|---|
0 | success |
TMA-1 시리얼 로그 출력 버퍼 초기화 기록입니다.
value | data |
---|---|
0 | success |
TMA-2 텔레메트리 서버와 연결된 기록입니다.
value | data |
---|---|
0 | server disconnected |
1 | server connected |
STM32가 ESP32와 handshake를 수행한 기록입니다.
value | data |
---|---|
0 | success |
1 | ESP not found |
2 | ESP I2C not ready |
3 | ESP handshake error |
4 | ESP handshake ruined |
CAN peripheral 초기화 기록입니다.
value | data |
---|---|
0 | success |
1 | filter config fail |
2 | CAN start fail |
3 | FIFO MSG pending notification activation fail |
4 | FIFO full notification activation fail |
5 | FIFO overrun notification activation fail |
6 | BUSOFF notification activation fail |
7 | ERROR notification activation fail |
디지털 입력 채널 초기화 기록입니다.
value | data |
---|---|
0 | success |
아날로그 입력 채널 초기화 기록입니다.
value | data |
---|---|
0 | success |
디지털 파형 주기 측정 채널 초기화 기록입니다.
value | data |
---|---|
0 | success |
가속도 센서 초기화 기록입니다.
value | data |
---|---|
0 | success |
1 | error |
2 | busy |
3 | timeout |
GPS 모듈 초기화 기록입니다.
value | data |
---|---|
0 | success |
시스템 초기화 완료 기록입니다.
value | data |
---|---|
0 | success |
TMA-1의 RTC 시간을 실제 시간과 동기화한 기록입니다.
byte | data |
---|---|
#0 | Year |
#1 | Month |
#2 | Date |
#3 | Hours |
#4 | Minutes |
#5 | Seconds |
#6 | source0 : UART1 : TELEMETRY |
TMA-1이 장비의 SD 카드를 mount / open / write / sync 하는 중에 실패한 기록입니다.
value | data |
---|---|
0 | not specified |
CAN 버스 에러가 발생한 기록입니다.
value | data |
---|---|
0 | not specified |
TMA-1이 CAN 버스로부터 메시지를 읽어오는데 실패한 기록입니다.
value | data |
---|---|
0 | not specified |
TMA-1의 CAN RX FIFO가 가득찬 기록입니다.
value | data |
---|---|
0 | not specified |
CAN 메시지 ID가 key로 저장됩니다. key가 1 byte인 관계로, 메시지 ID의 하위 8 bit만 저장됩니다. 참고: CAN 트래픽 모니터링
즉, source가 CAN인 로그의 key는 CAN 메시지 ID & 0xFF
입니다.
디지털 채널 레코드입니다. 100ms마다 한 번씩 기록합니다.
각 바이트가 0이면 해당 채널이 OFF, 1이면 ON인 상태입니다.
byte | data |
---|---|
#0 | DIN0 |
#1 | DIN1 |
#2 | DIN2 |
#3 | DIN3 |
#4 | DIN4 |
#5 | DIN5 |
#6 | DIN6 |
#7 | DIN7 |
시스템 아날로그 레코드입니다. 코어 온도와 전원 전압을 1s마다 한 번씩 기록합니다.
byte | data |
---|---|
#0 ~ #1 | STM32F4 코어 온도 * 10 |
#2 ~ #3 | VIN 입력 전압 / 8 / 3.3 * 4096 |
아날로그 채널 레코드입니다. 100ms마다 한 번씩 기록합니다.
ADC 해상도는 12 bit입니다. 로그의 각 채널은 0 ~ 4095의 값을 저장합니다.
PCB의 ANALOG 영역에 장착한 전압 분배 저항에 따라 기록되는 값이 달라집니다.
분배된 전압이 3.3V일 때 4095가 기록됩니다.
byte | data |
---|---|
#0 ~ #1 | AIN0 |
#2 ~ #3 | AIN1 |
#4 ~ #5 | AIN2 |
#6 ~ #7 | AIN3 |
디지털 파형 주기 측정 채널 레코드입니다.
100ms마다 한 번씩 측정이 활성화되며, 4개 채널 모두에서 2개 이상의 rising edge가 검출되었을 때 로그가 기록됩니다.
각 채널에서의 두 rising edge 사이의 간격이 microsecond 단위로 기록됩니다.
byte | data |
---|---|
#0 ~ #1 | PIN0 |
#2 ~ #3 | PIN1 |
#4 ~ #5 | PIN2 |
#6 ~ #7 | PIN3 |
가속도 측정 레코드입니다. 100ms마다 한 번씩 기록됩니다.
각 축 가속도 * 4 / 512
가 실제 g 단위 가속도입니다.
byte | data |
---|---|
#0 ~ #1 | x축 가속도 |
#2 ~ #3 | y축 가속도 |
#4 ~ #5 | z축 가속도 |
모든 GPS 로그는 유효한 GPS 위치 정보가 수신되었을 때만 기록됩니다. 100ms 간격으로 기록됩니다.
GPS 위치 정보 레코드입니다.
각 좌표값은 NMEA 좌표 데이터 * 10000
입니다. NMEA 좌표 데이터에서 소수점을 제거한 값과 동일합니다.
byte | data |
---|---|
#0 ~ #3 | latitude |
#4 ~ #7 | longitude |
GPS 속도 및 방향 정보 레코드입니다.
byte | data |
---|---|
#0 ~ #3 | speed(knots * 100) |
#4 ~ #7 | course angle(to true north) |
GPS 위성 시간 레코드입니다.
byte | data |
---|---|
#0 ~ #3 | date(mmddyy) |
#4 ~ #7 | time(hhmmss) |
사용하면서 문제나 궁금한 내용이 있다면 자작자동차포럼의 데이터 분석 카테고리에 question
태그를 달아 올려주세요.
If you have any problems or questions while using monolith, you can post it as a Q&A in the Discussions.