feat: update CAN integration and T2G seat firmware

This commit is contained in:
vee
2026-08-01 15:55:21 +08:00
parent 8cda026ac2
commit 4aded5c21d
1443 changed files with 1007122 additions and 4978 deletions
+53 -21
View File
@@ -1,6 +1,10 @@
version: 1.1.0
status: hil_verified_partial
version: 2.0.0
status: hil_verified
domain: seat
source:
firmware_store_format: SMV8
verified_on: 2026-07-30
test_status: ../../../firmware/t2g/Seat_Controller_demo/Docs/HIL_TEST_STATUS_2026-07-30.md
protocol:
version: 1
bitrate: 500000
@@ -9,42 +13,70 @@ protocol:
absolute_position_opcode: 1
timed_duty_opcode: 3
stop_all_opcode: 9
default_duty_percent: 50
stop_all_motor_selector: 0
home_known_range_opcode: 11
home_known_range_key: 19282
normalized_position_max: 10000
# A full M0 stroke takes more than the firmware's legacy 12 s default.
# Always send this override with Opcode 1 so every calibrated axis has
# enough time to reach either endpoint on the physical bench.
absolute_position_timeout_ms: 30000
# The currently deployed SMV8 image commits Work Flash as soon as an axis
# stops. Give that blocking persistence step time to finish before the next
# axis command; the updated image additionally batches the four-axis save.
inter_axis_settle_ms: 2000
default_duty_percent: 90
timed_duty_level_scale: 10
timed_duty_min_duration_ms: 300
timed_duty_max_duration_ms: 8000
increase_direction: 1
decrease_direction: 2
axes:
seat.set_legrest_extension:
seat.set_longitudinal_position:
motor_selector: 0
physical_mode: 0
physical_name: horizontal_fore_aft
physical_unit: mm
maximum_value_x100: 10200
physical_full_scale_x100: 21500
default_max_hall_count: 480
timed_duty_ms_per_pct: 175
default_timeout_ms: 12000
timed_duty_ms_per_pct: 120
max_uncalibrated_relative_pct: 15
hardware_verified: true
seat.set_legrest_height:
seat.set_cushion_tilt:
motor_selector: 1
physical_unit: degree
maximum_value_x100: 8500
default_max_hall_count: 790
timed_duty_ms_per_pct: 440
physical_mode: 1
physical_name: seat_pan_oblique_height
physical_unit: percent
physical_full_scale_x100: 10000
horizontal_full_scale_x100: 5100
vertical_full_scale_x100: 5600
default_max_hall_count: 374
default_timeout_ms: 8000
timed_duty_ms_per_pct: 80
max_uncalibrated_relative_pct: 15
hardware_verified: true
seat.set_backrest_recline:
motor_selector: 2
physical_mode: 2
physical_name: backrest_recline
physical_unit: degree
maximum_value_x100: 9000
default_max_hall_count: 1590
timed_duty_ms_per_pct: 500
physical_full_scale_x100: 6800
display_zero_degree_x100: 9500
default_max_hall_count: 917
default_timeout_ms: 12000
timed_duty_ms_per_pct: 120
max_uncalibrated_relative_pct: 15
hardware_verified: true
seat.set_longitudinal_position:
seat.set_legrest_height:
motor_selector: 3
physical_unit: mm
maximum_value_x100: 24000
default_max_hall_count: 960
timed_duty_ms_per_pct: 175
physical_mode: 3
physical_name: legrest_lift
physical_unit: degree
physical_full_scale_x100: 7200
display_zero_degree_x100: 9500
default_max_hall_count: 647
default_timeout_ms: 10000
timed_duty_ms_per_pct: 100
max_uncalibrated_relative_pct: 15
hardware_verified: false
enable_env: COGNITIVE_AGENT_ENABLE_UNVERIFIED_LONGITUDINAL
hardware_verified: true
@@ -0,0 +1,64 @@
version: 1.0.0
status: imported_reference
source:
workbook: 座椅功能模式配置表.xlsx
imported_on: 2026-07-31
note: Values are embedded here so runtime execution never depends on the desktop workbook.
coordinate_system:
longitudinal:
unit: mm
range: [0, 215]
max_hall_count: 480
cushion_tilt:
unit: percent
range: [0, 100]
max_hall_count: 374
backrest_recline:
unit: degree_relative_to_zero
range: [0, 68]
absolute_display_zero_deg: 95
max_hall_count: 917
legrest_height:
unit: degree_relative_to_vertical_zero
range: [0, 72]
absolute_display_zero_deg: 95
max_hall_count: 647
modes:
zero_gravity:
targets: {longitudinal_mm: 215, cushion_pct: 100, backrest_deg: 55, legrest_deg: 68}
hall_counts: {longitudinal: 480, cushion_tilt: 374, backrest_recline: 742, legrest_height: 611}
cruise_sofa:
targets: {longitudinal_mm: 110, cushion_pct: 30, backrest_deg: 30, legrest_deg: 38}
hall_counts: {longitudinal: 246, cushion_tilt: 112, backrest_recline: 405, legrest_height: 342}
leisure_lounger:
targets: {longitudinal_mm: 110, cushion_pct: 30, backrest_deg: 45, legrest_deg: 55}
hall_counts: {longitudinal: 246, cushion_tilt: 112, backrest_recline: 607, legrest_height: 494}
nap:
targets: {longitudinal_mm: 215, cushion_pct: 100, backrest_deg: 55, legrest_deg: 68}
hall_counts: {longitudinal: 480, cushion_tilt: 374, backrest_recline: 742, legrest_height: 611}
easy_entry_exit:
stages:
door_open:
targets: {longitudinal_mm: 215, cushion_pct: 0, backrest_deg: 0, legrest_deg: 0}
hall_counts: {longitudinal: 480, cushion_tilt: 0, backrest_recline: 0, legrest_height: 0}
door_closed:
targets: {longitudinal_mm: 110, cushion_pct: 0, backrest_deg: 0, legrest_deg: 0}
hall_counts: {longitudinal: 246, cushion_tilt: 0, backrest_recline: 0, legrest_height: 0}
baby_nap:
targets: {longitudinal_mm: 175, cushion_pct: 30, backrest_deg: 28, legrest_deg: 0}
hall_counts: {longitudinal: 391, cushion_tilt: 112, backrest_recline: 378, legrest_height: 0}
office:
targets: {longitudinal_mm: 155, cushion_pct: 22, backrest_deg: 15, legrest_deg: 15}
hall_counts: {longitudinal: 346, cushion_tilt: 83, backrest_recline: 202, legrest_height: 135}
meditation_space:
targets: {longitudinal_mm: 215, cushion_pct: 44, backrest_deg: 30, legrest_deg: 42}
hall_counts: {longitudinal: 480, cushion_tilt: 165, backrest_recline: 405, legrest_height: 377}
electric_beach_chair:
targets: {longitudinal_mm: 215, cushion_pct: 0, backrest_deg: 68, legrest_deg: 43}
hall_counts: {longitudinal: 480, cushion_tilt: 0, backrest_recline: 917, legrest_height: 386}
queen_passenger_driving:
targets: {longitudinal_mm: 155, cushion_pct: 37.5, backrest_deg: 30, legrest_deg: 22}
hall_counts: {longitudinal: 346, cushion_tilt: 140, backrest_recline: 405, legrest_height: 198}
calf_decompression_float:
targets: {longitudinal_mm: 110, cushion_pct: 75, backrest_deg: 0, legrest_deg: 72}
hall_counts: {longitudinal: 246, cushion_tilt: 280, backrest_recline: 0, legrest_height: 647}
+64 -46
View File
@@ -1,4 +1,4 @@
VERSION "T2G seat bench 1.1"
VERSION "T2G seat bench 2.0 (2026-07-30)"
NS_ :
NS_DESC_
@@ -9,76 +9,94 @@ NS_ :
BS_:
BU_: HOST T2G_THERMAL T2G_MOVE
BU_: HOST T2G_SEAT
BO_ 670 T2G_Seat_Thermal_Control_29E: 8 HOST
SG_ Driver_Seat_Ventilation_On : 0|2@1+ (1,0) [0|3] "" T2G_THERMAL
SG_ Driver_Seat_Ventilation_Mode : 2|2@1+ (1,0) [0|3] "" T2G_THERMAL
SG_ Driver_Seat_Heating_On : 4|2@1+ (1,0) [0|3] "" T2G_THERMAL
SG_ Driver_Seat_Ventilation_Gear : 16|4@1+ (1,0) [0|5] "level" T2G_THERMAL
SG_ Driver_Seat_Heating_Gear : 20|4@1+ (1,0) [0|5] "level" T2G_THERMAL
SG_ Driver_Seat_Ventilation_On : 0|2@1+ (1,0) [0|3] "" T2G_SEAT
SG_ Driver_Seat_Ventilation_Mode : 2|2@1+ (1,0) [0|3] "" T2G_SEAT
SG_ Driver_Seat_Heating_On : 4|2@1+ (1,0) [0|3] "" T2G_SEAT
SG_ Driver_Seat_Ventilation_Gear : 16|4@1+ (1,0) [0|3] "level" T2G_SEAT
SG_ Driver_Seat_Heating_Gear : 20|4@1+ (1,0) [0|3] "level" T2G_SEAT
BO_ 974 T2G_Seat_Thermal_Mode_3CE: 8 HOST
SG_ Driver_Seat_Thermal_Mode : 4|2@1+ (1,0) [0|3] "" T2G_THERMAL
SG_ Driver_Seat_Thermal_Mode : 4|2@1+ (1,0) [0|3] "" T2G_SEAT
BO_ 1274 T2G_Seat_Thermal_Status_4FA: 8 T2G_THERMAL
BO_ 1274 T2G_Seat_Thermal_Status_4FA: 8 T2G_SEAT
SG_ Driver_Seat_Ventilation_Status : 0|3@1+ (1,0) [0|7] "level" HOST
SG_ Driver_Seat_Heating_Status : 3|3@1+ (1,0) [0|7] "level" HOST
BO_ 768 T2G_Seat_Move_Command_300: 8 HOST
SG_ Opcode : 0|8@1+ (1,0) [0|255] "" T2G_MOVE
SG_ Motor_Selector : 8|2@1+ (1,0) [0|3] "" T2G_MOVE
SG_ Direction : 10|2@1+ (1,0) [0|3] "" T2G_MOVE
SG_ Protocol_Version : 12|2@1+ (1,0) [0|3] "" T2G_MOVE
SG_ Sequence : 16|16@1+ (1,0) [0|65535] "" T2G_MOVE
SG_ Param_A : 32|16@1+ (1,0) [0|65535] "" T2G_MOVE
SG_ Param_B : 48|16@1+ (1,0) [0|65535] "" T2G_MOVE
SG_ Opcode : 0|8@1+ (1,0) [0|255] "" T2G_SEAT
SG_ Motor_Selector : 8|2@1+ (1,0) [0|3] "" T2G_SEAT
SG_ Direction : 10|2@1+ (1,0) [0|3] "" T2G_SEAT
SG_ Protocol_Version : 12|2@1+ (1,0) [0|3] "" T2G_SEAT
SG_ Sequence : 16|16@1+ (1,0) [0|65535] "" T2G_SEAT
SG_ Param_A : 32|16@1+ (1,0) [0|65535] "" T2G_SEAT
SG_ Param_B : 48|16@1+ (1,0) [0|65535] "" T2G_SEAT
BO_ 769 T2G_Seat_Move_System_Status_301: 8 T2G_MOVE
SG_ Ack : 0|3@1+ (1,0) [0|7] "" HOST
SG_ Reject_Reason : 3|3@1+ (1,0) [0|7] "" HOST
SG_ Shutdown_Inhibit : 6|1@1+ (1,0) [0|1] "" HOST
SG_ Safety_Inhibit : 7|1@1+ (1,0) [0|1] "" HOST
SG_ Last_Opcode : 8|4@1+ (1,0) [0|15] "" HOST
SG_ Active_Mask : 12|4@1+ (1,0) [0|15] "" HOST
BO_ 769 T2G_Seat_Move_System_Status_301: 8 T2G_SEAT
SG_ Ack : 0|4@1+ (1,0) [0|15] "" HOST
SG_ System_State : 4|4@1+ (1,0) [0|15] "" HOST
SG_ Reject_Reason : 8|8@1+ (1,0) [0|255] "" HOST
SG_ Last_Sequence : 16|16@1+ (1,0) [0|65535] "" HOST
SG_ Retry_Mask : 32|4@1+ (1,0) [0|15] "" HOST
SG_ Record_Clean : 36|1@1+ (1,0) [0|1] "" HOST
SG_ Watchdog_Reset : 37|1@1+ (1,0) [0|1] "" HOST
SG_ Record_Valid : 38|1@1+ (1,0) [0|1] "" HOST
SG_ Safety_Fault : 40|8@1+ (1,0) [0|255] "" HOST
SG_ Config_Sequence : 48|16@1+ (1,0) [0|65535] "" HOST
SG_ Last_Opcode : 32|8@1+ (1,0) [0|255] "" HOST
SG_ Active_Mask : 40|4@1+ (1,0) [0|15] "" HOST
SG_ Safety_Inhibit : 44|1@1+ (1,0) [0|1] "" HOST
SG_ Calibration_Busy : 46|1@1+ (1,0) [0|1] "" HOST
SG_ Fault_Summary : 47|1@1+ (1,0) [0|1] "" HOST
SG_ Faulted_Mask : 48|4@1+ (1,0) [0|15] "" HOST
SG_ Position_Valid_Mask : 52|4@1+ (1,0) [0|15] "" HOST
SG_ Alive : 56|4@1+ (1,0) [0|15] "" HOST
SG_ Firmware_Revision : 60|4@1+ (1,0) [0|15] "" HOST
BO_ 770 T2G_Seat_Move_Motor_Status_302: 8 T2G_MOVE
BO_ 770 T2G_Seat_Move_Motor_Status_302: 8 T2G_SEAT
SG_ Motor_Sub_ID : 0|8@1+ (1,0) [0|3] "" HOST
SG_ Task_State : 8|4@1+ (1,0) [0|15] "" HOST
SG_ Result : 12|4@1+ (1,0) [0|15] "" HOST
SG_ Direction : 16|2@1+ (1,0) [0|3] "" HOST
SG_ Motor_Direction : 16|2@1+ (1,0) [0|3] "" HOST
SG_ Active : 18|1@1+ (1,0) [0|1] "" HOST
SG_ Retried : 19|1@1+ (1,0) [0|1] "" HOST
SG_ Position_Valid : 20|1@1+ (1,0) [0|1] "" HOST
SG_ Position_Valid : 19|1@1+ (1,0) [0|1] "" HOST
SG_ Near_Endpoint : 20|1@1+ (1,0) [0|1] "" HOST
SG_ Far_Endpoint : 21|1@1+ (1,0) [0|1] "" HOST
SG_ Stall : 22|1@1+ (1,0) [0|1] "" HOST
SG_ Driver_Fault : 23|1@1+ (1,0) [0|1] "" HOST
SG_ Motor_Sequence : 24|16@1+ (1,0) [0|65535] "" HOST
SG_ Value_X100 : 40|16@1+ (1,0) [0|65535] "" HOST
SG_ Value_X100 : 40|16@1+ (1,0) [0|10000] "0.01%" HOST
SG_ Duty_Percent : 56|8@1+ (1,0) [0|100] "%" HOST
BO_ 771 T2G_Seat_Move_Diagnostic_303: 8 T2G_MOVE
BO_ 771 T2G_Seat_Move_Diagnostic_303: 8 T2G_SEAT
SG_ Motor_Sub_ID : 0|8@1+ (1,0) [0|3] "" HOST
SG_ Last_Motor_Event : 8|4@1+ (1,0) [0|15] "" HOST
SG_ Fault_Flags : 12|4@1+ (1,0) [0|15] "" HOST
SG_ Hall_Count : 16|16@1+ (1,0) [0|65535] "pulse" HOST
SG_ Max_Hall_Count : 32|16@1+ (1,0) [0|65535] "pulse" HOST
SG_ Max_Speed_Pps_X100 : 48|16@1+ (1,0) [0|65535] "pulse/s*100" HOST
SG_ Hall_Speed_Half_Pps : 48|8@1+ (0.5,0) [0|127.5] "pulse/s" HOST
SG_ Retry_Count : 56|4@1+ (1,0) [0|15] "" HOST
SG_ Diagnostic_Alive : 60|4@1+ (1,0) [0|15] "" HOST
BO_ 772 T2G_Seat_Firmware_Identity_Request_304: 8 HOST
SG_ Identity_Magic : 0|32@1+ (1,0) [0|4294967295] "" T2G_MOVE
SG_ Required_Protocol : 32|8@1+ (1,0) [0|255] "" T2G_MOVE
BO_ 772 T2G_Seat_Move_Current_Diagnostic_304: 8 T2G_SEAT
SG_ Motor_Sub_ID : 0|8@1+ (1,0) [0|3] "" HOST
SG_ Current_Sample_Valid : 8|1@1+ (1,0) [0|1] "" HOST
SG_ Current_Baseline_Valid : 9|1@1+ (1,0) [0|1] "" HOST
SG_ High_Current : 10|1@1+ (1,0) [0|1] "" HOST
SG_ Hall_Activity_Low : 11|1@1+ (1,0) [0|1] "" HOST
SG_ Current_Calibrating : 12|1@1+ (1,0) [0|1] "" HOST
SG_ Current_Raw : 16|16@1+ (1,0) [0|4095] "raw" HOST
SG_ Current_Baseline_Raw : 32|16@1+ (1,0) [0|4095] "raw" HOST
SG_ Stall_Current_Delta_Threshold_Raw : 48|16@1+ (1,0) [0|65535] "raw" HOST
BO_ 773 T2G_Seat_Firmware_Identity_Response_305: 8 T2G_MOVE
SG_ Identity_Magic : 0|32@1+ (1,0) [0|4294967295] "" HOST
SG_ Firmware_Major : 32|8@1+ (1,0) [0|255] "" HOST
SG_ Firmware_Minor : 40|8@1+ (1,0) [0|255] "" HOST
SG_ Firmware_Patch : 48|8@1+ (1,0) [0|255] "" HOST
SG_ Capability_Mask : 56|8@1+ (1,0) [0|255] "" HOST
BO_ 773 T2G_Seat_Thermal_Current_Diagnostic_305: 8 T2G_SEAT
SG_ Fan_Current_Sample_Valid : 0|1@1+ (1,0) [0|1] "" HOST
SG_ Heater_Current_Sample_Valid : 1|1@1+ (1,0) [0|1] "" HOST
SG_ Fan_Running : 8|1@1+ (1,0) [0|1] "" HOST
SG_ Heater_Level : 9|2@1+ (1,0) [0|3] "level" HOST
SG_ Fan_Current_Raw : 16|16@1+ (1,0) [0|4095] "raw" HOST
SG_ Heater_Current_Raw : 32|16@1+ (1,0) [0|4095] "raw" HOST
SG_ Fan_Adc_Error_Count : 48|8@1+ (1,0) [0|255] "" HOST
SG_ Heater_Adc_Error_Count : 56|8@1+ (1,0) [0|255] "" HOST
VAL_ 670 Driver_Seat_Ventilation_On 0 "invalid" 1 "on" 2 "off" 3 "reserved" ;
VAL_ 670 Driver_Seat_Heating_On 0 "invalid" 1 "on" 2 "off" 3 "reserved" ;
VAL_ 769 Ack 0 "idle" 1 "accepted" 2 "rejected" 3 "conflict" 4 "inhibited" 5 "storage_error" ;
VAL_ 769 Ack 0 "none" 1 "accepted" 2 "rejected" 3 "duplicate" 4 "stop_all_accepted" ;
VAL_ 770 Task_State 0 "idle" 1 "accepted" 2 "position_run" 3 "timed_run" 4 "calibration" 5 "stopping" 6 "complete" 7 "fault" ;
VAL_ 770 Result 0 "none" 1 "running" 2 "ok" 3 "stopped_by_cmd" 4 "endpoint_reached" 5 "stall" 6 "timeout" 7 "driver_fault" 8 "hall_fault" 9 "invalid_cmd" 10 "interlocked" 11 "calibration_failed" ;
+2 -2
View File
@@ -3,8 +3,8 @@ kind: PlatformManifest
metadata:
id: t2g-seat-bench-platform
name: T2G CYT4BFBCJE seat hardware bench
version: 1.1.0
description: HIL bench using the unified Seat_Controller_demo firmware derived from the three verified seat demos.
version: 2.0.0
description: HIL bench using the self-contained 2026-07-30 Seat_Controller_demo firmware and four-axis calibration.
spec:
platform: t2g_seat_bench
execution_enabled: true