From ac21dbe551c7e894f66aded38260370d0bd09d03 Mon Sep 17 00:00:00 2001 From: Igor Biletskyy Date: Fri, 9 Sep 2022 20:13:06 -0700 Subject: [PATCH] H7: add chiplet panda support (RPv2) (#1049) * temporarily disable Jenkins * firmware * python lib * tests * .. * usb load switch to high * it is still red * usb power mode remove * Revert "temporarily disable Jenkins" This reverts commit a911cfad8daf10763489b7e7bc10107e77eef4bf. * forgot this * common periph * change name * board tick * add V2 to CI * update known bootstub --- Jenkinsfile | 2 +- board/boards/board_declarations.h | 1 + board/boards/red.h | 28 +++- board/boards/red_v2.h | 140 ++++++++++++++++++ board/stm32h7/board.h | 7 +- board/stm32h7/peripherals.h | 37 ++--- python/__init__.py | 5 +- tests/automated/helpers.py | 5 +- .../known_bootstub/bootstub.panda.bin | Bin 14164 -> 14848 bytes .../known_bootstub/bootstub.panda_h7.bin | Bin 12036 -> 12812 bytes tests/canfd/test_canfd.py | 2 +- tests/ci_reset_hw.py | 4 +- 12 files changed, 192 insertions(+), 39 deletions(-) create mode 100644 board/boards/red_v2.h diff --git a/Jenkinsfile b/Jenkinsfile index 16f65093..80a02886 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -70,7 +70,7 @@ pipeline { --volume /var/run/dbus:/var/run/dbus \ --net host \ ${env.DOCKER_IMAGE_TAG} \ - bash -c 'cd /tmp/panda && scons -j8 && JUNGLE=058010800f51363038363036 H7_PANDAS_EXCLUDE=\"080021000c51303136383232\" ./tests/canfd/test_canfd.py'" + bash -c 'cd /tmp/panda && scons -j8 && JUNGLE=058010800f51363038363036 H7_PANDAS_EXCLUDE=\"080021000c51303136383232 33000e001051393133353939\" ./tests/canfd/test_canfd.py'" } } } diff --git a/board/boards/board_declarations.h b/board/boards/board_declarations.h index 41eff37d..1a9f9ac5 100644 --- a/board/boards/board_declarations.h +++ b/board/boards/board_declarations.h @@ -49,6 +49,7 @@ struct board { #define HW_TYPE_UNO 5U #define HW_TYPE_DOS 6U #define HW_TYPE_RED_PANDA 7U +#define HW_TYPE_RED_PANDA_V2 8U // LED colors #define LED_RED 0U diff --git a/board/boards/red.h b/board/boards/red.h index 2ba2ee1e..2d17f8c6 100644 --- a/board/boards/red.h +++ b/board/boards/red.h @@ -99,13 +99,6 @@ bool red_check_ignition(void) { void red_init(void) { common_init_gpio(); - //C4,A1: OBD_SBU1, OBD_SBU2 - set_gpio_pullup(GPIOC, 4, PULL_NONE); - set_gpio_mode(GPIOC, 4, MODE_ANALOG); - - set_gpio_pullup(GPIOA, 1, PULL_NONE); - set_gpio_mode(GPIOA, 1, MODE_ANALOG); - //C10,C11 : OBD_SBU1_RELAY, OBD_SBU2_RELAY set_gpio_output_type(GPIOC, 10, OUTPUT_TYPE_OPEN_DRAIN); set_gpio_pullup(GPIOC, 10, PULL_NONE); @@ -117,6 +110,27 @@ void red_init(void) { set_gpio_mode(GPIOC, 11, MODE_OUTPUT); set_gpio_output(GPIOC, 11, 1); + // G11,B3,D7,B4: transceiver enable + set_gpio_pullup(GPIOG, 11, PULL_NONE); + set_gpio_mode(GPIOG, 11, MODE_OUTPUT); + + set_gpio_pullup(GPIOB, 3, PULL_NONE); + set_gpio_mode(GPIOB, 3, MODE_OUTPUT); + + set_gpio_pullup(GPIOD, 7, PULL_NONE); + set_gpio_mode(GPIOD, 7, MODE_OUTPUT); + + set_gpio_pullup(GPIOB, 4, PULL_NONE); + set_gpio_mode(GPIOB, 4, MODE_OUTPUT); + + // B14: usb load switch + set_gpio_pullup(GPIOB, 14, PULL_NONE); + set_gpio_mode(GPIOB, 14, MODE_OUTPUT); + + //B1: 5VOUT_S + set_gpio_pullup(GPIOB, 1, PULL_NONE); + set_gpio_mode(GPIOB, 1, MODE_ANALOG); + // Turn on USB load switch. red_set_usb_load_switch(true); diff --git a/board/boards/red_v2.h b/board/boards/red_v2.h new file mode 100644 index 00000000..d9373aa6 --- /dev/null +++ b/board/boards/red_v2.h @@ -0,0 +1,140 @@ +// ///////////////////// // +// Red Panda V2 with chiplet + Harness // +// ///////////////////// // + +// Most hardware functionality is similar to red panda + +void red_v2_enable_can_transceiver(uint8_t transceiver, bool enabled) { + switch (transceiver) { + case 1U: + set_gpio_output(GPIOG, 11, !enabled); + break; + case 2U: + set_gpio_output(GPIOB, 10, !enabled); + break; + case 3U: + set_gpio_output(GPIOD, 7, !enabled); + break; + case 4U: + set_gpio_output(GPIOB, 11, !enabled); + break; + default: + break; + } +} + +void red_v2_enable_can_transceivers(bool enabled) { + uint8_t main_bus = (car_harness_status == HARNESS_STATUS_FLIPPED) ? 3U : 1U; + for (uint8_t i=1U; i<=4U; i++) { + // Leave main CAN always on for CAN-based ignition detection + if (i == main_bus) { + red_v2_enable_can_transceiver(i, true); + } else { + red_v2_enable_can_transceiver(i, enabled); + } + } +} + +void red_v2_set_usb_load_switch(bool enabled) { + set_gpio_output(GPIOD, 3, enabled); +} + +void red_v2_init(void) { + common_init_gpio(); + + //A8, A9 : OBD_SBU1_RELAY, OBD_SBU2_RELAY + set_gpio_output_type(GPIOA, 8, OUTPUT_TYPE_OPEN_DRAIN); + set_gpio_pullup(GPIOA, 8, PULL_NONE); + set_gpio_mode(GPIOA, 8, MODE_OUTPUT); + set_gpio_output(GPIOA, 8, 1); + + set_gpio_output_type(GPIOA, 9, OUTPUT_TYPE_OPEN_DRAIN); + set_gpio_pullup(GPIOA, 9, PULL_NONE); + set_gpio_mode(GPIOA, 9, MODE_OUTPUT); + set_gpio_output(GPIOA, 9, 1); + + // G11,B10,D7,B11: transceiver enable + set_gpio_pullup(GPIOG, 11, PULL_NONE); + set_gpio_mode(GPIOG, 11, MODE_OUTPUT); + + set_gpio_pullup(GPIOB, 10, PULL_NONE); + set_gpio_mode(GPIOB, 10, MODE_OUTPUT); + + set_gpio_pullup(GPIOD, 7, PULL_NONE); + set_gpio_mode(GPIOD, 7, MODE_OUTPUT); + + set_gpio_pullup(GPIOB, 11, PULL_NONE); + set_gpio_mode(GPIOB, 11, MODE_OUTPUT); + + // D3: usb load switch + set_gpio_pullup(GPIOD, 3, PULL_NONE); + set_gpio_mode(GPIOD, 3, MODE_OUTPUT); + + //B0: 5VOUT_S + set_gpio_pullup(GPIOB, 0, PULL_NONE); + set_gpio_mode(GPIOB, 0, MODE_ANALOG); + + // Turn on USB load switch. + red_v2_set_usb_load_switch(true); + + // Initialize harness + harness_init(); + + // Initialize RTC + rtc_init(); + + // Enable CAN transceivers + red_v2_enable_can_transceivers(true); + + // Disable LEDs + red_set_led(LED_RED, false); + red_set_led(LED_GREEN, false); + red_set_led(LED_BLUE, false); + + // Set normal CAN mode + red_set_can_mode(CAN_MODE_NORMAL); + + // flip CAN0 and CAN2 if we are flipped + if (car_harness_status == HARNESS_STATUS_FLIPPED) { + can_flip_buses(0, 2); + } +} + +const harness_configuration red_v2_harness_config = { + .has_harness = true, + .GPIO_SBU1 = GPIOC, + .GPIO_SBU2 = GPIOA, + .GPIO_relay_SBU1 = GPIOA, + .GPIO_relay_SBU2 = GPIOA, + .pin_SBU1 = 4, + .pin_SBU2 = 1, + .pin_relay_SBU1 = 8, + .pin_relay_SBU2 = 9, + .adc_channel_SBU1 = 4, //ADC12_INP4 + .adc_channel_SBU2 = 17 //ADC1_INP17 +}; + +const board board_red_v2 = { + .board_type = "Red_v2", + .board_tick = unused_board_tick, + .harness_config = &red_v2_harness_config, + .has_gps = false, + .has_hw_gmlan = false, + .has_obd = true, + .has_lin = false, + .has_rtc_battery = true, + .fan_max_rpm = 0U, + .init = red_v2_init, + .enable_can_transceiver = red_v2_enable_can_transceiver, + .enable_can_transceivers = red_v2_enable_can_transceivers, + .set_led = red_set_led, + .set_gps_mode = unused_set_gps_mode, + .set_can_mode = red_set_can_mode, + .check_ignition = red_check_ignition, + .read_current = unused_read_current, + .set_fan_enabled = unused_set_fan_enabled, + .set_ir_power = unused_set_ir_power, + .set_phone_power = unused_set_phone_power, + .set_clock_source_mode = unused_set_clock_source_mode, + .set_siren = unused_set_siren +}; diff --git a/board/stm32h7/board.h b/board/stm32h7/board.h index 769e9789..108dbfd8 100644 --- a/board/stm32h7/board.h +++ b/board/stm32h7/board.h @@ -11,6 +11,8 @@ #include "stm32h7/llrtc.h" #include "drivers/rtc.h" #include "boards/red.h" +#include "boards/red_v2.h" + uint8_t board_id(void) { return detect_with_pull(GPIOF, 7, PULL_UP) | @@ -23,6 +25,9 @@ void detect_board_type(void) { if(board_id() == 0U){ hw_type = HW_TYPE_RED_PANDA; current_board = &board_red; + } else if(board_id() == 1U){ + hw_type = HW_TYPE_RED_PANDA_V2; + current_board = &board_red_v2; } else { hw_type = HW_TYPE_UNKNOWN; puts("Hardware type is UNKNOWN!\n"); @@ -32,5 +37,5 @@ void detect_board_type(void) { bool has_external_debug_serial = 0; void detect_external_debug_serial(void) { // detect if external serial debugging is present - has_external_debug_serial = detect_with_pull(GPIOA, 3, PULL_DOWN); + has_external_debug_serial = detect_with_pull(GPIOA, 3, PULL_DOWN) || detect_with_pull(GPIOE, 7, PULL_DOWN); } diff --git a/board/stm32h7/peripherals.h b/board/stm32h7/peripherals.h index e43c5939..00ef6bfa 100644 --- a/board/stm32h7/peripherals.h +++ b/board/stm32h7/peripherals.h @@ -11,6 +11,12 @@ void gpio_usart2_init(void) { set_gpio_alternate(GPIOA, 3, GPIO_AF7_USART2); } +void gpio_uart7_init(void) { + // E7,E8: UART 7 for debugging + set_gpio_alternate(GPIOE, 7, GPIO_AF7_UART7); + set_gpio_alternate(GPIOE, 8, GPIO_AF7_UART7); +} + // Common GPIO initialization void common_init_gpio(void) { /// E2,E3,E4: RGB LED @@ -36,29 +42,14 @@ void common_init_gpio(void) { set_gpio_pullup(GPIOF, 10, PULL_NONE); set_gpio_mode(GPIOF, 10, MODE_INPUT); - // G11,B3,D7,B4: transceiver enable - set_gpio_pullup(GPIOG, 11, PULL_NONE); - set_gpio_mode(GPIOG, 11, MODE_OUTPUT); + //C4,A1: OBD_SBU1, OBD_SBU2 + set_gpio_pullup(GPIOC, 4, PULL_NONE); + set_gpio_mode(GPIOC, 4, MODE_ANALOG); - // Speed was set to high by default after reset, changing to low - GPIOB->OSPEEDR = GPIO_OSPEEDR_OSPEED3; - set_gpio_pullup(GPIOB, 3, PULL_NONE); - set_gpio_mode(GPIOB, 3, MODE_OUTPUT); - - set_gpio_pullup(GPIOD, 7, PULL_NONE); - set_gpio_mode(GPIOD, 7, MODE_OUTPUT); - - set_gpio_pullup(GPIOB, 4, PULL_NONE); - set_gpio_mode(GPIOB, 4, MODE_OUTPUT); - - // B14: usb load switch - set_gpio_pullup(GPIOB, 14, PULL_NONE); - set_gpio_mode(GPIOB, 14, MODE_OUTPUT); - - //B1,F11 5VOUT_S, VOLT_S - set_gpio_pullup(GPIOB, 1, PULL_NONE); - set_gpio_mode(GPIOB, 1, MODE_ANALOG); + set_gpio_pullup(GPIOA, 1, PULL_NONE); + set_gpio_mode(GPIOA, 1, MODE_ANALOG); + //F11: VOLT_S set_gpio_pullup(GPIOF, 11, PULL_NONE); set_gpio_mode(GPIOF, 11, MODE_ANALOG); @@ -70,7 +61,7 @@ void common_init_gpio(void) { set_gpio_pullup(GPIOB, 9, PULL_NONE); set_gpio_alternate(GPIOB, 9, GPIO_AF9_FDCAN1); - + // B5,B6 (mplex to B12,B13): FDCAN2 set_gpio_pullup(GPIOB, 12, PULL_NONE); set_gpio_pullup(GPIOB, 13, PULL_NONE); @@ -80,7 +71,7 @@ void common_init_gpio(void) { set_gpio_pullup(GPIOB, 6, PULL_NONE); set_gpio_alternate(GPIOB, 6, GPIO_AF9_FDCAN2); - + // G9,G10: FDCAN3 set_gpio_pullup(GPIOG, 9, PULL_NONE); set_gpio_alternate(GPIOG, 9, GPIO_AF2_FDCAN3); diff --git a/python/__init__.py b/python/__init__.py index d1cec35b..5c54a443 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -172,6 +172,7 @@ class Panda: HW_TYPE_UNO = b'\x05' HW_TYPE_DOS = b'\x06' HW_TYPE_RED_PANDA = b'\x07' + HW_TYPE_RED_PANDA_V2 = b'\x08' CAN_PACKET_VERSION = 2 HEALTH_PACKET_VERSION = 9 @@ -179,10 +180,10 @@ class Panda: F2_DEVICES = (HW_TYPE_PEDAL, ) F4_DEVICES = (HW_TYPE_WHITE_PANDA, HW_TYPE_GREY_PANDA, HW_TYPE_BLACK_PANDA, HW_TYPE_UNO, HW_TYPE_DOS) - H7_DEVICES = (HW_TYPE_RED_PANDA, ) + H7_DEVICES = (HW_TYPE_RED_PANDA, HW_TYPE_RED_PANDA_V2) INTERNAL_DEVICES = (HW_TYPE_UNO, HW_TYPE_DOS) - HAS_OBD = (HW_TYPE_BLACK_PANDA, HW_TYPE_UNO, HW_TYPE_DOS, HW_TYPE_RED_PANDA) + HAS_OBD = (HW_TYPE_BLACK_PANDA, HW_TYPE_UNO, HW_TYPE_DOS, HW_TYPE_RED_PANDA, HW_TYPE_RED_PANDA_V2) CLOCK_SOURCE_MODE_DISABLED = 0 CLOCK_SOURCE_MODE_FREE_RUNNING = 1 diff --git a/tests/automated/helpers.py b/tests/automated/helpers.py index 6dc59a5f..a6fe0f05 100644 --- a/tests/automated/helpers.py +++ b/tests/automated/helpers.py @@ -13,7 +13,7 @@ SPEED_NORMAL = 500 SPEED_GMLAN = 33.3 BUS_SPEEDS = [(0, SPEED_NORMAL), (1, SPEED_NORMAL), (2, SPEED_NORMAL), (3, SPEED_GMLAN)] TIMEOUT = 45 -H7_HW_TYPES = [Panda.HW_TYPE_RED_PANDA] +H7_HW_TYPES = [Panda.HW_TYPE_RED_PANDA, Panda.HW_TYPE_RED_PANDA_V2] GEN2_HW_TYPES = [Panda.HW_TYPE_BLACK_PANDA, Panda.HW_TYPE_UNO] + H7_HW_TYPES GPS_HW_TYPES = [Panda.HW_TYPE_GREY_PANDA, Panda.HW_TYPE_BLACK_PANDA, Panda.HW_TYPE_UNO] PEDAL_SERIAL = 'none' @@ -55,7 +55,8 @@ test_all_types = parameterized([ param(panda_type=Panda.HW_TYPE_GREY_PANDA), param(panda_type=Panda.HW_TYPE_BLACK_PANDA), param(panda_type=Panda.HW_TYPE_UNO), - param(panda_type=Panda.HW_TYPE_RED_PANDA) + param(panda_type=Panda.HW_TYPE_RED_PANDA), + param(panda_type=Panda.HW_TYPE_RED_PANDA_V2) ]) test_all_pandas = parameterized( list(map(lambda x: x[0], _all_pandas)) # type: ignore diff --git a/tests/automated/known_bootstub/bootstub.panda.bin b/tests/automated/known_bootstub/bootstub.panda.bin index 6773fbffb9566ec015fd42b8a6eb83f2f030eeec..6f658e2de2fdd46bde874acd1a8c23bb92d5b655 100755 GIT binary patch literal 14848 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 E0dr`|wg3PC literal 14164 zcmch834Bx4*6%(;n$tFI(*Z~aO9qCNFmyl(gA$T*nl^<3bzsnsgi=XGp$z)zb)bk| zK^(4v%5YH>@v4YYG+f(Q0v6}tHX_R4fCC1odQ)1+DQ$D!f1jj^_q*?X-~0XE@1?)B z_S)0hd#}CsT5IpK+bc8r??w}0)R_MYBef@OMB9pcU`|;2(e^fD?f403pCHfKEU+KnAEXiI5CP2MhvS1~35%0Am1`1118d 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 delta 8047 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