diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/README.md b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/README.md
new file mode 100644
index 0000000000..4f5a2eb5d4
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/README.md
@@ -0,0 +1,393 @@
+# Pixhawk4 Flight Controller
+
+The Pixhawk4 flight controller is sold by [Holybro](http://www.holybro.com/product/pixhawk-4)
+
+## Features
+
+ - STM32F765 microcontroller
+ - Two IMUs: ICM20689 and BMI055
+ - MS5611 SPI barometer
+ - builtin I2C IST8310 magnetometer
+ - microSD card slot
+ - 6 UARTs plus USB
+ - 14 PWM outputs
+ - Four I2C and two CAN ports
+ - External Buzzer
+ - external safety Switch
+ - voltage monitoring for servo rail and Vcc
+ - two dedicated power input ports for external power bricks
+
+## Pinout
+
+![Pixhawk4 Board](pixhawk4-pinout.jpg "Pixhawk4")
+
+## UART Mapping
+
+ - SERIAL0 -> USB
+ - SERIAL1 -> UART2 (Telem1)
+ - SERIAL2 -> UART3 (Telem2)
+ - SERIAL3 -> UART1 (GPS)
+ - SERIAL4 -> UART4 (GPS2)
+ - SERIAL5 -> UART6 (spare)
+ - SERIAL6 -> UART7 (spare, debug)
+
+The Telem1 and Telem2 ports have RTS/CTS pins, the other UARTs do not
+have RTS/CTS.
+
+The UART7 connector is labelled debug, but is available as a general
+purpose UART with ArduPilot.
+
+### TELEM1, TELEM2 ports
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ CTS |
+ +3.3V |
+
+
+ 5 (blk) |
+ RTS |
+ +3.3V |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+
+### GPS port
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SERIAL3 TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ SERIAL3 RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 5 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 6 (blk) |
+ SafetyButton |
+ +3.3V |
+
+
+ 7 (blk) |
+ SafetyLED |
+ +3.3V |
+
+
+ 8 (blk) |
+ VDD 3.3 (OUT) |
+ +3.3V |
+
+
+ 9 (blk) |
+ Buzzer |
+ +3.3V |
+
+
+ 10 (blk) |
+ GND |
+ GND |
+
+
+
+
+## RC Input
+
+RC input is configured on the port marked DSM/SBUS RC. This connector
+supports all RC protocols. Two cables are available for this port. To
+use software binding of Spektrum satellite receivers you need to use
+the Spektrum satellite cable.
+
+## PWM Output
+
+The Pixhawk4 supports up to 16 PWM outputs. First first 8 outputs (labelled
+"MAIN") are controlled by a dedicated STM32F100 IO controller. These 8
+outputs support all PWM output formats, but not DShot.
+
+The remaining 8 outputs (labelled AUX1 to AUX8) are the "auxillary"
+outputs. These are directly attached to the STM32F765 and support all
+PWM protocols. The first 6 of the auxillary PWM outputs support DShot.
+
+The 8 main PWM outputs are in 3 groups:
+
+ - PWM 1 and 2 in group1
+ - PWM 3 and 4 in group2
+ - PWM 5, 6, 7 and 8 in group3
+
+The 8 auxillary PWM outputs are in 2 groups:
+
+ - PWM 1, 2, 3 and 4 in group1
+ - PWM 5 and 6 in group2
+ - PWM 7 and 8 in group3
+
+Channels within the same group need to use the same output rate. If
+any channel in a group uses DShot then all channels in the group need
+to use DShot.
+
+## Battery Monitoring
+
+The board has two dedicated power monitor ports on 6 pin
+connectors. The correct battery setting parameters are dependent on
+the type of power brick which is connected.
+
+## Compass
+
+The Pixhawk4 has a builtin IST8310 compass. Due to potential
+interference the board is usually used with an external I2C compass as
+part of a GPS/Compass combination.
+
+## GPIOs
+
+The 6 PWM ports can be used as GPIOs (relays, buttons, RPM etc). To
+use them you need to limit the number of these pins that is used for
+PWM by setting the BRD_PWM_COUNT to a number less than 6. For example
+if you set BRD_PWM_COUNT to 4 then PWM5 and PWM6 will be available for
+use as GPIOs.
+
+The numbering of the GPIOs for PIN variables in ArduPilot is:
+
+ - AUX1 50
+ - AUX2 51
+ - AUX3 52
+ - AUX4 53
+ - AUX5 54
+ - AUX6 55
+
+## Analog inputs
+
+The Pixhawk4 has 7 analog inputs
+
+ - ADC Pin0 -> Battery Voltage
+ - ADC Pin1 -> Battery Current Sensor
+ - ADC Pin2 -> Battery Voltage 2
+ - ADC Pin3 -> Battery Current Sensor 2
+ - ADC Pin4 -> ADC port pin 2
+ - ADC Pin14 -> ADC port pin 3
+ - ADC Pin10 -> ADC 5V Sense
+ - ADC Pin11 -> ADC 3.3V Sense
+ - ADC Pin103 -> RSSI voltage monitoring
+
+## I2C Buses
+
+ - the internal I2C port is bus 0 in ArduPilot (I2C3 in hardware)
+ - the port labelled I2CA is bus 3 in ArduPilot (I2C4 in hardware)
+ - the port labelled I2CB is bus 2 in ArduPilot (I2c2 in hardware)
+ - the port labelled GPS is bus 1 in ArduPilot (I2c1 in hardware)
+
+### Pinout for I2CA
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 3 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 4 (blk) |
+ GND |
+ GND |
+
+
+
+
+### Pinout for I2CB+UART
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ SERIAL4 TX (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ SERIAL4 RX (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SCL |
+ +3.3 (pullups) |
+
+
+ 5 (blk) |
+ SDA |
+ +3.3 (pullups) |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+## CAN
+
+The Pixhawk4 has two independent CAN buses, with the following pinouts.
+
+### CAN1&2
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ VCC |
+ +5V |
+
+
+ 2 (blk) |
+ CAN_H |
+ +12V |
+
+
+ 3 (blk) |
+ CAN_L |
+ +12V |
+
+
+ 4 (blk) |
+ GND |
+ GND |
+
+
+
+
+## Debug
+
+The Pixhawk4 supports SWD debugging on the debug port
+
+
+
+
+ Pin |
+ Signal |
+ Volt |
+
+
+ 1 (red) |
+ FMU VDD 3.3 |
+ +3.3V |
+
+
+ 2 (blk) |
+ UART TX Debug (OUT) |
+ +3.3V |
+
+
+ 3 (blk) |
+ UART RX Debug (IN) |
+ +3.3V |
+
+
+ 4 (blk) |
+ SWDIO |
+ +3.3V |
+
+
+ 5 (blk) |
+ SWCLK |
+ +3.3V |
+
+
+ 6 (blk) |
+ GND |
+ GND |
+
+
+
+
+
+## Loading Firmware
+
+The board comes pre-installed with an ArduPilot compatible bootloader,
+allowing the loading of *.apj firmware files with any ArduPilot
+compatible ground station.
+
+## Acknowledgements
+
+Thanks to
+[PX4](https://docs.px4.io/en/flight_controller/pixhawk4.html) for
+images used under the [CC-BY 4.0 license](https://creativecommons.org/licenses/by/4.0/)
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/defaults.parm
new file mode 100644
index 0000000000..e11ee429e2
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/defaults.parm
@@ -0,0 +1,325 @@
+
+# Pixhawk4 does not have hw flow control on radios
+#NOTE: 2020/8/26 18:26:32 Frame : PID 1.4.4
+ACRO_BAL_PITCH 1
+ACRO_BAL_ROLL 1
+ACRO_RP_EXPO 0.3
+ACRO_RP_P 4.5
+ACRO_THR_MID 0
+ACRO_TRAINER 2
+ACRO_Y_EXPO 0
+ACRO_YAW_P 3
+ARMING_CHECK 1
+ARMING_DELAY 5
+ARMING_MIS_ITEMS 0
+ARMING_RUDDER 2
+ARMING_VPERC 90
+ATC_ACCEL_P_MAX 110000
+ATC_ACCEL_R_MAX 110000
+ATC_ACCEL_Y_MAX 27000
+ATC_ANG_LIM_TC 1
+ATC_ANG_PIT_P 4.5
+ATC_ANG_RLL_P 4.5
+ATC_ANG_YAW_P 6
+ATC_ANGLE_BOOST 1
+ATC_INPUT_TC 0.15
+ATC_RAT_PIT_D 0.0036
+ATC_RAT_PIT_FF 0
+ATC_RAT_PIT_FLTD 20
+ATC_RAT_PIT_FLTE 0
+ATC_RAT_PIT_FLTT 20
+ATC_RAT_PIT_I 0.19
+ATC_RAT_PIT_IMAX 0.5
+ATC_RAT_PIT_P 0.22
+ATC_RAT_RLL_D 0.0036
+ATC_RAT_RLL_FF 0
+ATC_RAT_RLL_FLTD 20
+ATC_RAT_RLL_FLTE 0
+ATC_RAT_RLL_FLTT 20
+ATC_RAT_RLL_I 0.19
+ATC_RAT_RLL_IMAX 0.5
+ATC_RAT_RLL_P 0.22
+ATC_RAT_YAW_D 0
+ATC_RAT_YAW_FF 0
+ATC_RAT_YAW_FLTD 0
+ATC_RAT_YAW_FLTE 2.5
+ATC_RAT_YAW_FLTT 20
+ATC_RAT_YAW_I 0.04
+ATC_RAT_YAW_IMAX 0.5
+ATC_RAT_YAW_P 0.45
+ATC_RATE_FF_ENAB 1
+ATC_RATE_P_MAX 0
+ATC_RATE_R_MAX 0
+ATC_RATE_Y_MAX 0
+ATC_SLEW_YAW 6000
+ATC_THR_MIX_MAN 0.1
+ATC_THR_MIX_MAX 0.5
+ATC_THR_MIX_MIN 0.1
+AVOID_ANGLE_MAX 1000
+AVOID_BEHAVE 0
+AVOID_DIST_MAX 1
+AVOID_ENABLE 0
+AVOID_MARGIN 7
+BATT_AMP_OFFSET 0
+BATT_AMP_PERVLT 20.7
+BATT_ARM_MAH 0
+BATT_ARM_VOLT 0
+BATT_CAPACITY 16000
+BATT_CRT_MAH 0
+BATT_CRT_VOLT 0
+BATT_CURR_PIN 1
+BATT_FS_CRT_ACT 0
+BATT_FS_LOW_ACT 2
+BATT_FS_VOLTSRC 0
+BATT_LOW_MAH 0
+BATT_LOW_VOLT 20.5
+BATT_LOW_TIMER 10
+BATT_MONITOR 4
+BATT_SERIAL_NUM -1
+BATT_VOLT_PIN 0
+BATT2_MONITOR 13
+BRD_PWM_COUNT 0
+BRD_RTC_TYPES 1
+BRD_RTC_TZ_MIN 0
+BRD_SAFETYENABLE 0
+BRD_SAFETYOPTION 3
+BRD_SBUS_OUT 0
+BRD_SD_SLOWDOWN 0
+BRD_SER1_RTSCTS 0
+BRD_SER2_RTSCTS 0
+BRD_SERIAL_NUM 0
+BRD_TYPE 24
+BRD_VBUS_MIN 4.3
+BRD_VSERVO_MIN 0
+BTN_ENABLE 0
+CAM_AUTO_ONLY 1
+CAM_DURATION 3
+CAM_FEEDBACK_PIN -1
+CAM_FEEDBACK_POL 0
+CAM_MAX_ROLL 0
+CAM_MIN_INTERVAL 0
+CAM_RELAY_ON 1
+CAM_SERVO_OFF 1100
+CAM_SERVO_ON 1900
+CAM_TRIGG_DIST 0
+CAM_TRIGG_TYPE 2
+CAM_TYPE 0
+CAN_D1_PROTOCOL 1
+CAN_D1_UC_ESC_BM 0
+CAN_D1_UC_NODE 10
+CAN_D1_UC_SRV_BM 0
+CAN_D1_UC_SRV_RT 50
+CAN_D2_PROTOCOL 1
+CAN_P1_BITRATE 1000000
+CAN_P1_DRIVER 1
+CAN_P2_BITRATE 1000000
+CAN_P2_DRIVER 1
+CAN_SLCAN_CPORT 0
+CAN_SLCAN_SERNUM -1
+CAN_SLCAN_TIMOUT 0
+CHUTE_ENABLED 0
+CIRCLE_RADIUS 1000
+CIRCLE_RATE 20
+COMPASS_USE 1
+COMPASS_USE2 0
+COMPASS_USE3 0
+DEV_OPTIONS 0
+DISARM_DELAY 2
+EK2_MAG_I_GATE 800
+EK2_YAW_I_GATE 800
+FLTMODE_CH 5
+FLTMODE1 2
+FLTMODE2 2
+FLTMODE3 5
+FLTMODE4 5
+FLTMODE5 5
+FLTMODE6 5
+FRAME_CLASS 1
+FRAME_TYPE 1
+FS_CRASH_CHECK 1
+FS_EKF_ACTION 1
+FS_EKF_THRESH 0.8
+FS_GCS_ENABLE 0
+FS_OPTIONS 0
+FS_THR_ENABLE 0
+FS_THR_VALUE 975
+FS_VIBE_ENABLE 1
+GND_EFFECT_COMP 1
+GND_EXT_BUS -1
+GND_FLTR_RNG 0
+GND_PRIMARY 0
+GND_PROBE_EXT 0
+GND_TEMP 0
+GPS_AUTO_CONFIG 1
+GPS_AUTO_SWITCH 1
+GPS_BLEND_MASK 5
+GPS_BLEND_TC 10
+GPS_DELAY_MS 0
+GPS_DELAY_MS2 0
+GPS_GNSS_MODE 0
+GPS_GNSS_MODE2 0
+GPS_HDOP_GOOD 90
+GPS_INJECT_TO 127
+GPS_MIN_DGPS 100
+GPS_MIN_ELEV -100
+GPS_NAVFILTER 8
+GPS_NUM_SW 5
+GPS_POS1_X 0
+GPS_POS1_Y 0
+GPS_POS1_Z 0
+GPS_POS2_X 0
+GPS_POS2_Y 0
+GPS_POS2_Z 0
+GPS_RATE_MS 200
+GPS_RATE_MS2 200
+GPS_RAW_DATA 0
+GPS_SAVE_CFG 2
+GPS_SBAS_MODE 2
+GPS_SBP_LOGMASK -256
+GPS_TYPE 1
+GPS_TYPE2 5
+LAND_ALT_LOW 5000
+LAND_LOCK_ALT 40
+LAND_LOCK_RPY 1
+LAND_REPOSITION 1
+LAND_SL_2ND_ALT 1500
+LAND_SL_3ND_ALT 3000
+LAND_SPEED 150
+LAND_SPEED_2ND 50
+LAND_SPEED_3ND 100
+LAND_SPEED_HIGH 0
+MOT_BAT_CURR_MAX 0
+MOT_BAT_CURR_TC 5
+MOT_BAT_IDX 0
+MOT_BAT_VOLT_MAX 0
+MOT_BAT_VOLT_MIN 0
+MOT_BOOST_SCALE 0
+MOT_HOVER_LEARN 2
+MOT_PWM_MAX 0
+MOT_PWM_MIN 0
+MOT_PWM_TYPE 0
+MOT_SAFE_DISARM 0
+MOT_SAFE_TIME 1
+MOT_SLEW_DN_TIME 0
+MOT_SLEW_UP_TIME 0
+MOT_SPIN_ARM 0.1
+MOT_SPIN_MAX 0.95
+MOT_SPIN_MIN 0.15
+MOT_SPOOL_TIME 0.5
+MOT_THST_EXPO 0.65
+MOT_THST_HOVER 0.35
+MOT_YAW_HEADROOM 200
+NTF_BUZZ_ENABLE 1
+NTF_BUZZ_ON_LVL 1
+NTF_BUZZ_PIN 0
+NTF_BUZZ_VOLUME 100
+NTF_DISPLAY_TYPE 0
+NTF_LED_BRIGHT 3
+NTF_LED_OVERRIDE 4
+NTF_LED_TYPES 38
+NTF_OREO_THEME 0
+OA_TYPE 0
+PHLD_BRAKE_ANGLE 3000
+PHLD_BRAKE_RATE 8
+PILOT_ACCEL_Z 250
+PILOT_DN2_ALT 100
+PILOT_SPEED_DN 250
+PILOT_SPEED_DN2 100
+PILOT_SPEED_UP 250
+PILOT_THR_BHV 0
+PILOT_THR_FILT 0
+PILOT_TKOFF_ALT 0
+PLND_ENABLED 0
+PRX_TYPE 4
+PRX_YAW_CORR 0
+RALLY_INCL_HOME 1
+RALLY_LIMIT_KM 0.3
+RALLY_TOTAL 0
+RC7_OPTION 9
+RC8_OPTION 0
+RC9_OPTION 4
+RELAY_PIN 50
+RELAY_PIN2 53
+RELAY_PIN3 52
+RELAY_PIN4 54
+RELAY_PIN5 -1
+RELAY_PIN6 -1
+RNGFND_GAIN 0.8
+RNGFND1_ADDR 11
+RNGFND1_FUNCTION 0
+RNGFND1_GNDCLEAR 10
+RNGFND1_MAX_CM 500
+RNGFND1_MIN_CM 20
+RNGFND1_OFFSET 0
+RNGFND1_ORIENT 25
+RNGFND1_PIN -1
+RNGFND1_POS_X 0
+RNGFND1_POS_Y 0
+RNGFND1_POS_Z 0
+RNGFND1_PWRRNG 0
+RNGFND1_RMETRIC 1
+RNGFND1_SCALING 3
+RNGFND1_STOP_PIN -1
+RNGFND1_TYPE 24
+RNGFND2_ADDR 1
+RNGFND2_FUNCTION 0
+RNGFND2_GNDCLEAR 10
+RNGFND2_MAX_CM 3500
+RNGFND2_MIN_CM 50
+RNGFND2_OFFSET 0
+RNGFND2_ORIENT 0
+RNGFND2_PIN -1
+RNGFND2_POS_X 0
+RNGFND2_POS_Y 0
+RNGFND2_POS_Z 0
+RNGFND2_PWRRNG 0
+RNGFND2_RMETRIC 1
+RNGFND2_SCALING 3
+RNGFND2_STOP_PIN -1
+RNGFND2_TYPE 24
+RTL_ALT_FINAL 1500
+RTL_CLIMB_MIN 0
+RTL_CONE_SLOPE 3
+RTL_LOIT_TIME 5000
+RTL_SPEED 0
+SCHED_DEBUG 0
+SCHED_LOOP_RATE 400
+SCR_ENABLE 0
+SERIAL_PASS1 0
+SERIAL_PASS2 -1
+SERIAL_PASSTIMO 15
+SERIAL0_BAUD 115
+SERIAL0_PROTOCOL 2
+SERIAL1_BAUD 57
+SERIAL1_OPTIONS 0
+SERIAL1_PROTOCOL 1
+SERIAL2_BAUD 115
+SERIAL2_OPTIONS 0
+SERIAL2_PROTOCOL 24
+SERIAL3_BAUD 38
+SERIAL3_OPTIONS 0
+SERIAL3_PROTOCOL 5
+SERIAL4_BAUD 115
+SERIAL4_OPTIONS 0
+SERIAL4_PROTOCOL 5
+SERIAL5_BAUD 57
+SERIAL5_OPTIONS 0
+SERIAL5_PROTOCOL -1
+SERIAL6_BAUD 57
+SERIAL6_OPTIONS 0
+SERIAL6_PROTOCOL -1
+SERIAL7_BAUD 115200
+SERIAL7_OPTIONS 0
+SERIAL7_PROTOCOL 2
+WP_YAW_BEHAVIOR 1
+WPNAV_ACCEL 100
+WPNAV_ACCEL_Z 100
+WPNAV_FAST_WP 0
+WPNAV_RADIUS 200
+WPNAV_RFND_USE 1
+WPNAV_SPEED 800
+WPNAV_SPEED_DN 150
+WPNAV_SPEED_UP 350
+ZR_RTL_DELAY 15
+ZR_TK_DELAY 5
+ZR_TK_REQ_ALT 600
\ No newline at end of file
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef-bl.dat
new file mode 100644
index 0000000000..8f84484e43
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef-bl.dat
@@ -0,0 +1,4 @@
+# hw definition file for processing by chibios_hwdef.py
+# for Pixhawk4 bootloader
+
+include ../fmuv5/hwdef-bl.dat
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat
new file mode 100644
index 0000000000..910bcac2fe
--- /dev/null
+++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat
@@ -0,0 +1,11 @@
+# hw definition file for processing by chibios_hwdef.py
+# for Holybro Pixhawk4 hardware.
+
+include ../fmuv5/hwdef.dat
+
+# setup for supplied power brick
+undef HAL_BATT_VOLT_SCALE
+define HAL_BATT_VOLT_SCALE 18.182
+undef HAL_BATT_CURR_SCALE
+define HAL_BATT_CURR_SCALE 36.364
+
diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/pixhawk4-pinout.jpg b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/pixhawk4-pinout.jpg
new file mode 100644
index 0000000000..bebe219ed2
Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/pixhawk4-pinout.jpg differ
diff --git a/zr-v4.sh b/zr-v4.sh
new file mode 100755
index 0000000000..e9d162cedc
--- /dev/null
+++ b/zr-v4.sh
@@ -0,0 +1,3 @@
+./waf configure --board pixhawk4
+./waf rover
+cp ./build/pixhawk4/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/zr-v4/wsl/zr-rover4.1.1.px4