Compare commits

..

309 Commits

Author SHA1 Message Date
Daniel Agar a37a589f15 WIP: afbrs50 try SPI_LOCK 2021-07-01 10:59:51 -04:00
Daniel Agar 0aa14deb5d drivers/distance_sensor/broadcom/afbrs50: minimize IRQ_LOCK()/IRQ_UNLOCK() calls 2021-07-01 10:47:53 -04:00
Matthias Grob 62546350f1 battery: use local instead of global member battery_status message 2021-07-01 14:24:38 +02:00
Matthias Grob fa976f84b1 battery: clear interface for determineWarning() 2021-07-01 14:24:38 +02:00
Matthias Grob f41c294028 BatterySimulator: No need to explicitly mention throttle being set to zero 2021-07-01 14:24:38 +02:00
Matthias Grob b824f33ae9 battery: publish measured values also when battery not connected 2021-07-01 14:24:38 +02:00
Matthias Grob a99ddd0845 battery: don't reset on every loop iteration 2021-07-01 14:24:38 +02:00
Matthias Grob 8d74e52bb7 battery: omit separate publish() function 2021-07-01 14:24:38 +02:00
Matthias Grob 9c0c85c9e2 battery_status: naming consistency current_filtered_a -> current_average_a 2021-07-01 14:24:38 +02:00
Matthias Grob 41cc73e555 battery: simplify battery_initialized condition 2021-07-01 14:24:38 +02:00
Matthias Grob a51d47f8e8 battery: connected check outside of determineWarning() 2021-07-01 14:24:38 +02:00
Jaeyoung-Lim e45b862f1d Specify orientaiton of ADIS16448 IMU from rc.sensors
Specify orientaiton of ADIS16448 IMU for from the rc.sensors

WIP: Currently only handling one orientation
2021-06-30 09:34:12 -04:00
Daniel Agar d87cd171f4 sensors/vehicle_imu: continue integrating gyro if there's a gap in data
- minor improvement that helps to determine the sensor publication rate
as soon as possible
2021-06-30 09:13:49 -04:00
Daniel Agar 7ddcb7fe3c adis16470: disable debug 2021-06-30 01:01:07 -04:00
Daniel Agar 982692f5ed ekf2: selector handle NAN test ratios as uninitilaized
- requires https://github.com/PX4/PX4-ECL/pull/1020
2021-06-29 21:36:24 -04:00
Daniel Agar f08a22934e boards: px4_fmu-v4_test remove deleted drivers/tap_esc 2021-06-29 21:27:29 -04:00
Daniel Agar f0d8d53da6 sensors/vehicle_imu: minor IMU integration improvements
- IMU integrator set max dt based on final return size (uint16)
 - improve integration consuming gyro as needed then integrate all available accel until caught up
 - increase required number of samples for sensor rate measurement (online Welford mean)
2021-06-29 10:43:09 -04:00
Daniel Agar 3fcd323f6a drivers/imu/invensense: store offset registers on configure, trigger reset on any change
- this can catch subtle failures that occur after self hours of continuous operation on some units
2021-06-29 10:33:03 -04:00
alexklimaj 9d3e18dbe1 ARK Flow rev 2 add icm42688p 2021-06-25 09:44:45 -04:00
TSC21 a67e66000e protocol_splitter: including magic number on XOR for checksum 2021-06-25 13:05:24 +02:00
TSC21 4741ec25ce microRTPS: increase base message ID space to 179 2021-06-25 13:05:24 +02:00
Matthias Grob 5ac5399d83 Remove horizontal slow down close to ground
Because based on the numerous complaints it was disabled by default
(only velocities above 10m/s were limited)
and since then no one intentionally used it anymore. But
there were some minor investigations of drones not reaching
their maximum speed which always showed 10m/s.
2021-06-25 11:15:41 +02:00
Matthias Grob 055c9db178 state_machine_helper: allow takeoff and hold without any link 2021-06-25 10:46:43 +02:00
Matthias Grob 15096ead5f state_machine_helper: explicitly notify about rca and data link loss 2021-06-25 10:46:43 +02:00
Matthias Grob bec9eef5b0 state_machine_helper: react on link losses during takeoff
The same way like in loiter. This should be further unified in the code
but at least we can increase safety in the case the takeoff altitude is
very high and the vehicle never reaches it but looses links.
2021-06-25 10:46:43 +02:00
Matthias Grob 11556d4e9a Commander: allow disabling RC loss failsafe for mission, hold, offboard independently 2021-06-25 10:46:43 +02:00
Matthias Grob 933d31b476 commander_params: correct parameter group from Mission to Commander 2021-06-25 10:46:43 +02:00
Matthias Grob 6ee8f7be0f Commander: switch to static_cast<> for set_nav_state parameters 2021-06-25 10:46:43 +02:00
Jukka Laitinen d83033f449 Take the crypto_backend library into use in bootloader for signature verification
Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-06-25 08:35:58 +02:00
Jukka Laitinen 0d4f481035 Add simple SW implementations for crypto_backend and keystore_backend
Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-06-25 08:35:58 +02:00
Jukka Laitinen d068ae48d6 Add header file for arhitecture/implementation specific px4 crypto and
configuration for cmake

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-06-25 08:35:58 +02:00
Jukka Laitinen b3e9904df0 Add monocypher crypto library in src/lib/crypto/monocypher
This simple crypto library is used as an example default backend for the crypto
interfaces

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-06-25 08:35:58 +02:00
Jukka Laitinen 09e62f96b2 Put all the test key material into same directory
Move Tools/test_key.json and key0.pub into same directory.

key0.pub is just a hex-dump of the public key part from the test_key.json,
for easy inclusion into bootloader monocypher sw crypto

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-06-25 08:35:58 +02:00
Jukka Laitinen caed8e4b05 Fix cryptotools.py signature alignment
If the signature start address is already aligned, the tool erroneously adds 4 filling bytes

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-06-25 08:35:58 +02:00
Roman Dvořák ab0e3b6001 icm20948_i2c_passthrough: allow to configure i2c address 2021-06-25 07:50:31 +02:00
Beat Küng d79229f958 mavlink_shell.py: allow scripted use
E.g. echo free|./Tools/mavlink_shell.py

Or creating a virtual nsh console:
socat pty,rawer,link=/tmp/fmu_nsh_pts exec:"mavlink_shell.py 0.0.0.0\\:14550,pty,rawer"
2021-06-24 15:18:06 +02:00
Sander Swart aa60d76963 camera trigger: don't keep triggering while enabled but paused 2021-06-24 06:56:58 +02:00
achim 6b356068cb boards: mro_x21-777 board.h fix SPI 2 SCK pin
- SPI 2 had the wrong SCK PIN -> PB10 instead of PB13 -> accidentally the kill pin
could be probably wrong on other mro boards
2021-06-23 15:00:20 -04:00
Mathieu Bresciani 9cedb169fc HTE: relax validity condition when already valid (#17783)
The condition to get valid requires a low variance and test ratio. but
to stay valid, only the variance is required.

Co-authored-by: Daniel Agar <daniel@agar.ca>
2021-06-23 07:33:11 +02:00
Hamish Willee 74cc1d901d Thoneflow - fix up links to docs 2021-06-22 13:43:53 -04:00
Matthias Grob 0dee7af81f ekf2_params: enable baro ground effect compensation by default 2021-06-22 10:32:54 +02:00
Thomas a264541861 explicitly set param2 to 0 in existing *DO_VTOL_TRANSITION commands. add a guard against NaNs. 2021-06-21 22:39:54 +02:00
TSC21 0c5f2d3b8c microRTPS: add missing header for PRIu32 and PRIu16 macros
Co-authored-by: squizz617 <seulbae@gatech.edu>
2021-06-21 16:36:44 +02:00
TSC21 9fb53d4276 microRTPS: add option to build the microRTPS agent after its generation 2021-06-21 16:36:44 +02:00
TSC21 084a992572 microRTPS: agent: only allow to whitelist the localhost when using FastDDS as the rmw 2021-06-21 16:36:44 +02:00
TSC21 79f7986715 apply ROS2 default memory management and publish mode QoS policies; make sure that SharedMemory is only used with FastDDS as the rmw 2021-06-21 16:36:44 +02:00
Igor Mišić 39909128ec micrortps_client: increased stack size by 250B
Co-authored-by: Nuno Marques <n.marques21@hotmail.com>
2021-06-21 16:36:44 +02:00
TSC21 d3a23cee40 microRTPS: agent: fix double free memory problem on SIGINT
It fixes also some minor issues when exiting the agent, including the printed stats
2021-06-21 16:36:44 +02:00
TSC21 6d5f12d2a2 microRTPS: client: add TX rate limiter 2021-06-21 16:36:44 +02:00
TSC21 ac2b38603c microRTPS: client: add missing "-p" option for the UART poll timeout and use microsecs for the send/rcv thread sleeps 2021-06-21 16:36:44 +02:00
TSC21 0cc79f3e48 microRTPS: client: show diagnostic of current bandwidth usage on the 'status' option 2021-06-21 16:36:44 +02:00
TSC21 d6ee15596d microRTPS: client: show diagnostic of average bandwidth usage on the 'status' option 2021-06-21 16:36:44 +02:00
TSC21 40462bfc1f microRTPS: client: reduce name set by pthread_setname_np since Linux requires names (with NUL) to fit in 16 chars, otherwise returns ERANGE (34) 2021-06-21 16:36:44 +02:00
TSC21 145e7387fb posix: start the microRTPS client in sim every time the module is available 2021-06-21 16:36:44 +02:00
TSC21 773d81f208 microRTPS: client: fix send per allocated topic 2021-06-21 16:36:44 +02:00
TSC21 f2fad6d966 microRTPS: by default, when FastDDS >= 2.0, enable Shared Memory transport for the agent participants when the localhost network is enabled 2021-06-21 16:36:44 +02:00
TSC21 320b414511 microRTPS: client: match the code style from the PX4 Firmware 2021-06-21 16:36:44 +02:00
TSC21 63571b3e3f microRTPS: agent: match the code style from the PX4 Firmware 2021-06-21 16:36:44 +02:00
TSC21 323ce797f8 microRTPS: allow communications only in the localhost network when ROS_LOCALHOST_ONLY env variable is set 2021-06-21 16:36:44 +02:00
TSC21 578e426e9e microRTPS: set trajectory_waypoint to be sent only, as this is outgoing data with vehicle_trajectory_waypoint_desired 2021-06-21 16:36:44 +02:00
Pieter-Jan Dewitte 155d3c7d36 FW pos control: fix airspeed input constaining 2021-06-21 10:55:21 +02:00
Claudio Micheli b1829e5766 Predict and use braking distance when Pausing auto modes (for multicopters) (#17269) 2021-06-18 10:45:03 +02:00
Daniel Agar 76a8617529 sensors: fix IMU init race condition
- IMU init requires valid published data (device ids, etc)
 - orb_group_count will include advertised instances before data is published, so this can't be used to throttle IMU init attempts
2021-06-17 10:38:33 -04:00
Peter van der Perk b2742658b7 UAVCANv1 port unset fixes and deinitialization 2021-06-17 10:02:17 -04:00
Beat Küng 1c3f30be01 protocol_splitter: tcflush() uart before closing it 2021-06-17 09:40:57 -04:00
Beat Küng 14ec7a0d93 mavlink: tcflush() uart before closing it
On NuttX with flow control, if no one was reading from the uart, the
close() call would block indefinitely waiting for data to be sent.
2021-06-17 09:40:57 -04:00
honglang 074ed24d02 nora:fixed syntax error 2021-06-17 09:37:04 -04:00
Daniel Agar 500c45e798 uORB: Subscription check if uORB::Manager instance is valid
- this is necessary if uORB::Subscription is used with static storage
duration
2021-06-17 08:07:24 +02:00
David Sidrane a728431e43 spracing_h7extreme:Track NuttX assert changes 2021-06-16 17:07:47 +02:00
David Sidrane b399b8d5ea protocol_splitter:Track NuttX assert changes 2021-06-16 17:07:47 +02:00
David Sidrane 61f80c087a px4io:Fix Type 2021-06-16 17:07:47 +02:00
David Sidrane 18960f0b82 RoboClaw:Fix Types 2021-06-16 17:07:47 +02:00
David Sidrane 9377b02c58 Track NuttX Timer changes 2021-06-16 17:07:47 +02:00
David Sidrane 05bdef867d Track NuttX syslog change 2021-06-16 17:07:47 +02:00
David Sidrane 028ae9561d logger:watchdog Track NuttX file reorg 2021-06-16 17:07:47 +02:00
David Sidrane eea1477e80 FakeImu:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 37d93320eb uavcan_v1:Uavcan: Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 026d36dee8 microRTPS:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane fd68fd2933 tests:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane f3624c172c kinetis pinirq:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 93c37e4e0c syslink:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 8d078eb02e vtol_att_control:Fix type 2021-06-16 17:07:47 +02:00
David Sidrane bec5d6de9b vmount:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 350e43f02c dataman:fix types 2021-06-16 17:07:47 +02:00
David Sidrane 77082188d8 temperature_calibration:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane d73f842151 sensors:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 274c55a4ae navigator:mission Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 65d026d45c mavlink:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 5faa116681 logger:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 3b725e5525 gyro_fft:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 07fbf8681d gyro_calibration:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 85f4f13e8a flight_mode_manager:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 9a423e222b ekf2:Use inttypes and fix types 2021-06-16 17:07:47 +02:00
David Sidrane ed474794cc commander:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane a3593d7d07 analog_battery:Use inttytpes 2021-06-16 17:07:47 +02:00
David Sidrane 9c87766021 sensor_calibration:Use inttytpes 2021-06-16 17:07:47 +02:00
David Sidrane 4bc7f1f3f3 lib/perf:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane f50b238c78 lib/parameters:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane b4ebc68a40 lib/drivers/nuttx/ I2C SPI:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane ff2748ba53 PX4Gyroscope:Fix types 2021-06-16 17:07:47 +02:00
David Sidrane 42e51b0215 PX4Accelerometer:Fix types 2021-06-16 17:07:47 +02:00
David Sidrane 17502da493 lib/battery:Fix types 2021-06-16 17:07:47 +02:00
David Sidrane 42e4ea86b1 uavcannode_gps_demo:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 616401190c UavcanNode:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 71f3a02c65 uavcan:use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane a07390a2d7 iridiumsbd:use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 2af9934f1c pcf8583:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 4ecda97fc1 roboclaw:Fix types 2021-06-16 17:07:47 +02:00
David Sidrane 4aa7bff8c6 rc_input:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane e7406bbd46 px4io:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 3747d0bc80 px4io:Fix types 2021-06-16 17:07:47 +02:00
David Sidrane 9443dd6345 pwm_out:use inttypes, match signature 2021-06-16 17:07:47 +02:00
David Sidrane bd511e1074 dShot: Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 810e9e174f distance_sensor: Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane c12a3330b8 camera_trigger: Use proper types 2021-06-16 17:07:47 +02:00
David Sidrane 7b2a1d4742 drivers:camera_trigger Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane b6435bb7f2 drivers:camera_capture Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 3a0770499a drivers:batt_smbus Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 05007944f1 drivers:barometer Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 824dbce941 drivers:ADC Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 6e5a86b6fe dshot:Matched signature to drv_pwm_output.h 2021-06-16 17:07:47 +02:00
David Sidrane dc23c85085 px4/common:mtd Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 1b80018f30 systemcmds:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 62fd132047 boards:Use inttypes
nxp_ucans32k146:Fix constant

spracing_h7extreme:Use inttypes
2021-06-16 17:07:47 +02:00
David Sidrane 84dd8839a2 i2c_spi_buses:Track NuttX change to getopts avoid name collision
NuttX #defined optarg and getopt to move to TLS. This fixes the
  name collision.
2021-06-16 17:07:47 +02:00
David Sidrane 64db89ab20 px_generate_uorb_topic_helper: Use inttypes 2021-06-16 17:07:47 +02:00
AlexKlimaj dddd2c3297 drivers/distance_sensor: New Broadcom AFBR-S50LV85D distance sensor driver
* Basic Broadcom AFBR-S50 driver using vendor API and binary blob https://github.com/Broadcom/AFBR-S50-API
* fix ARK Flow paw3902 rotation
2021-06-15 12:12:24 -04:00
Julian Oes e828ba4288 commander: send parachute command on termination (#17564)
* commander: send parachute command on termination

This sends the DO_PARACHUTE command to parachute component.

* commander: fix lying comments and printf

* commander: use one flag for termination triggered

This merges the duplicate flags _flight_termination_triggered and
_flight_flight_termination_printed.

* commander: correct variable name

* commander: always send tune with parachute

* commander: fix target_component for parachute cmd

The previous changes were wrong in that all commands were now sent to
the parachute component which doesn't make any sense. Of course only the
parachute command should be sent there.
2021-06-15 11:50:30 +02:00
Jukka Laitinen b550ad22b9 EKF2: Always publish global position
For historical reasons, there is a check in EKF2 to only publish global
position if it has moved for 1mm.

This is no longer necessary, and also this if doesn't save any cpu cycles
in real conditions where GPS errors are always much bigger that this.

When using simulated or fake GPS, based on some other positioning
system, the GPS coordinate input can be very accurate due to quantization
or true accuracy. In this case this check bites and perfectly valid position
doesn't get published.

Just removed this if.

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-06-15 10:55:39 +02:00
Julian Oes 8415692f2a commander: enable user override when GPS is lost
When user override using the RC sticks is allowed, I would expect this
feature to also work in the case where GPS is lost and the vehicle goes
into a blind land/descent.

Without this commit, the vehicle would switch to Land mode and a pilot
could not take over control unless they switch to Altitude control in
a ground station.

With this commit, user override works as I would expect it and it will
switch to Altitude control allowing a pilot to recover in this
situation.
2021-06-15 10:36:11 +02:00
TSC21 749f213ca5 make_list: check if file exists before the other operations 2021-06-14 11:54:05 +02:00
TSC21 c4d54d983b mavsdk_tests: bump MAVSDK version to 0.40.0 2021-06-14 09:23:38 +02:00
Daniel Agar 0c303f03f4 Update submodule mavlink v2.0 to latest Mon Jun 14 00:39:13 UTC 2021 2021-06-13 21:30:10 -04:00
Hamish Willee d6f69ef2a0 aion robotic frame - fix broken link to R1 UGV docs 2021-06-12 11:58:26 -04:00
TSC21 0f47ae8e7b update submodule Tools/sitl_gazebo 2021-06-12 11:57:17 -04:00
David Sidrane 9c8e95db8d NuttX w/NXP contrib for FlexCAN fixes 2021-06-12 06:22:01 -07:00
David Sidrane 5b9201e5b4 cuav:Nora X7 Pro:Camera trigger is on 13/14 2021-06-11 15:13:23 +02:00
David Sidrane e0fab172a4 camera_trigger:Support more than 8 channles 2021-06-11 15:13:23 +02:00
Beat Küng 615e1f3e29 mavlink: fix module doc for broadcast 2021-06-11 09:01:41 +02:00
Beat Küng 468aea9409 cmake: enable --ethernet to generate common param metadata
This will add the MAV_x_BROADCAST params.
2021-06-11 09:01:41 +02:00
Peter van der Perk 8c4b900f9a uavcan_v1: Correct transmission deadline check & fix SocketCAN tx deadline 2021-06-10 02:26:28 +00:00
Julian Oes ca86416ce6 mavlink: don't read garbage target sysid/compid
This fixes a tricky bug that we discovered in MAVSDK:
https://github.com/mavlink/MAVSDK/pull/1464

It turns out the target_system and target_component fields can
potentially be:
1. at the end of a message payload,
2. and zero,

and therefore they get trimmed. When you then try to read it you
potentially read some garbage from the CRC fields.
2021-06-09 15:40:46 -04:00
echoG 6bc09138c1 Adding BatMon smart battery as a module and refactoring SMBUS based SBS 1.1 spec to a library 2021-06-09 12:17:45 -04:00
Julian Oes 8be1034346 workflows: fixes typo on python package name (#17740)
The previous PR was merged optimistically.
2021-06-09 09:11:28 -07:00
bresch 514845592b en-/disable mc position controller using explicit control mode flag 2021-06-09 18:10:22 +02:00
Julian Oes 17ea92bb54 workflows: add missing dependency for mypy (#17736) 2021-06-09 08:52:21 -07:00
Daniel Agar 328c5cb1cf mavlink: properly cleanup instance on exit 2021-06-09 10:58:34 -04:00
Hamish Willee 9f87702074 px4moduledoc/markdownout.py - source links to PX4-Autopilot 2021-06-09 11:11:08 +02:00
Hamish Willee 665d2ea74e markdownout for parameters - makes link internal 2021-06-09 11:09:48 +02:00
Hamish Willee f9201811b4 airframes markdownout.py - fix link to not open file for editing 2021-06-09 11:08:37 +02:00
JacobCrabill 0931ff10d5 uavcan_v1: Clean up handling of invalid port IDs
Always convert 'invalid' port ID values (e.g., the default PX4 port-ID
parameter value of -1) to CANARD_PORT_ID_UNSET in all comparisons.
2021-06-08 20:13:19 -04:00
JacobCrabill 73ef22ae77 uavcan_v1: Fix heartbeat pub timestamp
The hrt_abstime value used to control the 1s pub rate was the value of
the timestamp_usec of the CanardTransfer, which has a timeout of 100ms
added to it.

Since hrt_abstime is an unsigned datatype, if the hrt_elapsed_time()
check was called <100ms apart, the negative value would result in a
large hrt_elapsed_time, and the bus would be spammed with Heartbeat
messages (or error messages from canardTxPush).
2021-06-08 20:13:19 -04:00
Daniel Agar 251f1a069b ekf2: update message lost error messages to perf counters
- only allocate these perf counters if data source is present
2021-06-08 20:12:17 -04:00
bresch 841914462d MC pos control: use vz<->z_deriv blending in pure vel mode only
This logic was introduced to avoid large altitude drifts in velocity
mode (altitude not controlled) due to potential velocity estimate bias
in case of IMU problems (see PR #8445). After some refactorings,
the logic started to be used in altitude-controlled modes as well, which is not needed.
2021-06-08 14:58:14 +02:00
Daniel Agar 47b9016f5e I2CSPIDriverBase: print rotation and i2c address if set 2021-06-08 09:27:21 +02:00
CUAV_gitfishup c61c1a15ee cuav/x7pro: fix syntax error in rc.board_sensors 2021-06-08 09:18:20 +02:00
honglang 8b1d2b8551 change fmu-v5's uavcan timer5 to timer6 2021-06-07 20:07:03 +02:00
achim 00229c4fd2 drv_pwm_output.h: increase highest max pwm limit from 2150 to 2500
- servo linkages in vtol often need further travel of the servos to cover the full tilt travel
2021-06-07 09:13:39 -04:00
Daniel Agar 578c003c13 ekf2: selector handle uninitalized test ratios
- choose the best instance regardless of tilt or yaw alignment
2021-06-07 08:56:37 -04:00
Matthias Grob ed62ae0e4f mavlink: add actuator_armed header to heartbeat 2021-06-07 08:55:49 -04:00
Julian Oes 446598d003 mc_pos_control: omit initial warning 2021-06-07 08:54:19 -04:00
Daniel Agar 4f850c7cd0 sensors: preserve all valid calibration parameters even if sensor currently missing
- mark calibration slots active for first N sensors found
 - calibration procedure don't bother resetting unused slots
2021-06-07 08:50:32 -04:00
Daniel Agar 2ccd86102b ekf2: add command line option to manually select instance 2021-06-07 08:47:17 -04:00
achim 66dbc1e25f Update rc.board_arch_defaults
logger doesn't start at all up to 4k buffer
2021-06-05 11:46:30 -04:00
achim fd2161b6bf Update rc.board_arch_defaults
logger doesn't start at all up to 4k buffer
2021-06-05 11:46:10 -04:00
achim 1ab7943940 Update rc.board_arch_defaults
Logger doesn´t start at all with 4k buffer
2021-06-05 11:45:53 -04:00
Daniel Agar 4f8f1a5f7e mavlink: streams HEARTBEAT fix code style 2021-06-04 20:43:25 -04:00
Daniel Agar d31a45a62d github actions SITL test run standard_vtol with address sanitizer 2021-06-04 13:27:42 -04:00
Matthias Grob faabe2d431 mavlink: make sure heartbeat reports flight termination 2021-06-04 12:48:22 -04:00
achim 6fb1ba7583 Update rcS
remove sd index file spoofing
2021-06-04 11:43:17 -04:00
Matthias Grob 70050ae4f5 mc_pos_control_params: correct MPC_POS_MODE docs since 1 is depracated 2021-06-04 09:32:03 -04:00
Peter van der Perk 9756c70491 UAVCANv1 Iteration, dynamic subscribers and decoupling (#17624)
* Update to use libcanard callback
Reworked param system with lambda

* Use callback instead of lambda saves 500 bytes of flash

* [UAVCANv1] Added ServiceRequest class, subscribers decoupled

* PX4 UAVCANv1 portID param default CANARD_PORT_ID_UNSET (65535U)

* [UAVCANv1] uORB sensor_gps modify timestamp for now untill we've got timesync working

* UAVCANv1 update parameter definition to use -1 as unset
2021-06-04 09:30:17 -04:00
Daniel Agar 470c3cfa6e mavlink: streams HEARTBEAT fix vehicle_control_mode copy 2021-06-04 15:19:34 +02:00
CUAVmengxiao 98fb373590 mavlink: 14S battery support 2021-06-04 09:15:40 -04:00
RomanBapst ad9288536b TECS: enable direct height-rate control
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-06-04 14:51:27 +02:00
RomanBapst f6de99d42e FixedWingPositionControl: control only height rate when using pitch stick
in manual altitude controlled modes

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-06-04 14:51:27 +02:00
Silvan Fuhrer 3d87bfcc0a rename FW_T_CLIMB_R_SP to FW_T_CLMB_R_SP
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-06-04 14:51:27 +02:00
RomanBapst 19449a4e75 FixedWingPositionControl: use target climb/sink rate parameters as maximum
rates in manual altitude controlled modes

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-06-04 14:51:27 +02:00
RomanBapst a5cc449e69 tecs: propagate altitude setpoint based on target climb/sink rate
- avoids tecs always climbing and sinking and max rates and allows to fine tune these rates
- avoid numerical calculation of feedforward velocity using derivative, this
 was prone to jitter in dt

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-06-04 14:51:27 +02:00
RomanBapst 4b7416c05b FixedWingPosControlL1: added target climb and sink rate parameters
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-06-04 14:51:27 +02:00
Travis Bottalico 861e15be4c - update CDCAM_PRODUCTID to match bootloader 2021-06-03 21:38:53 -04:00
bresch 8ad0f36f48 pwm: specific fail/disarm parameters should default to global value 2021-06-03 21:26:13 -04:00
Daniel Agar db1657fa84 sensors/vehicle_magnetometer: apply current compensation regardless of arming state
- simplify update on mag compensation type change
2021-06-03 10:08:19 -04:00
Julian Oes 60235f8474 mavlink: properly initialize vehicle_command queue
This makes sure that the vehicle_command topic is properly
initialized from the beginning.

orb_exists returns -1 or 0 and not a bool as one would expect.
2021-06-03 08:53:39 -04:00
Hamish Willee 00cc1323ea gpio.cpp: Add backticks around gpio command docs 2021-06-03 12:37:48 +02:00
alexklimaj 3e9b295c22 Add watchdog_init to ark boards to ensure watchdog pauses during debugging 2021-06-03 00:54:57 -04:00
Daniel Agar 284375efc3 px4io: only update PWM MAX/MIN/DIS/FAIL/REV once
- Updating PWM params on param change was interfering with VTOL
parameter settings (e.g. PWM_MIN is set by VTOL at init, and
was then overwritten here after an arbitrary param change).
2021-06-03 00:52:05 -04:00
Silvan Fuhrer 697d713faf pwm out: disable PWM parameter update on param change
Only update PWM params on initialisation.
Updating PWM params on param change was interfering with VTOL
parameter settings (e.g. PWM_MIN is set by VTOL at init, and
was then overwritten here after an arbitrary param change).

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-06-03 00:52:05 -04:00
Daniel Agar c6d5bd868e boards: px4_fmu-v6x_default disable LPE to save flash 2021-06-02 09:12:24 -04:00
honglang 5672af4299 CUAV X7pro and Nora: use icm42688p instead of bmi088 2021-06-02 09:11:37 -04:00
Julian Oes 1b67187770 navigator: protect against 0 acceptance radius
This seems to slip in e.g. as part of the VTOL_LAND command.
2021-06-02 07:28:19 +02:00
Julian Oes ab23a44b99 navigator: fix acceptance radius for multicopter
This fixes a regression introduced in
https://github.com/PX4/PX4-Autopilot/pull/16646
which meant that the acceptance radius was no longer used at all for
multicopter, and instead only the NAV_ACC_RAD param was used.

With this change we use the acceptance radius of the mission item again
if it is actually set (and not NAN) which we did not do before, and we
only do that for multicopter.
2021-06-02 07:28:19 +02:00
Daniel Agar 5f775b508f boards: enable CONFIG_OTG_ID_GPIO_DISABLE on all F7/H7 2021-06-01 15:19:15 -04:00
David Sidrane 32e92ba817 Revert:Pull downs - bad levels cause motor spins 2021-06-01 15:18:47 -04:00
Beat Küng dfa5964719 Accelerometer: fix thermal calibration index 2021-06-01 10:01:36 -04:00
Daniel Agar d430e13401 sensors: wait for real sample rate to initialize LowPassFilter2p 2021-06-01 08:58:10 -04:00
Daniel Agar 438b0abc7a mathlib: Biquad filters use internal fields for parameter update 2021-06-01 08:58:10 -04:00
Daniel Agar 9661eddef8 mathlib: LowPassFilter2p initialize b0 to 1 for safety 2021-06-01 08:58:10 -04:00
Daniel Agar e52c0ceca5 Update submodule mavlink v2.0 to latest Tue Jun 1 00:39:07 UTC 2021 2021-05-31 21:11:01 -04:00
RomanBapst b06b46b224 log raw airspeed derivative, pitch setpoint and airspeed innovation for TECS
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-05-31 23:56:23 +02:00
Daniel Agar 806b462935 px4_work_queue: increase UART stack 2021-05-31 14:49:40 -04:00
Daniel Agar 5831494164 boards: px4_fmu-v2_default disable gyro_calibration module to save flash
- this doesn't impact regular gyro calibration
2021-05-31 12:11:53 -04:00
Daniel Agar 90e106ede3 boards: cuav_x7pro_test disable LPE to save flash 2021-05-31 10:26:45 -04:00
Daniel Agar 5493d96d17 mathlib: merge LowPassFilter2p, LowPassFilter2pArray, and LowPassFilter2pVector3f
- fix reset for direct form 2
 - push NAN checks out to filter users
2021-05-31 10:26:45 -04:00
Daniel Agar 2a792ca201 gyro_fft: add simple SNR requirement and reduce number of peaks 2021-05-31 10:26:45 -04:00
Daniel Agar 3269ee8df1 sensors/vehicle_angular_velocity: accumualted notch filtering and reset improvements
- apply sensor scaling immediately to keep things simple (FIFO vs regular)
 - inline filter helpers (minor performance improvement)
 - dynamic notch filtering
    - reorder by axis (applied per axis)
    - don't remove notch filters immediately if ESC or FFT data times out
    - constrain notch filter frequency and bandwidth to safe range (minimum bandwidth for flaot precision, Nyquist, etc)
 - add safe constraint on dt
2021-05-31 10:26:45 -04:00
Daniel Agar 561cfca4f9 fake_imu: add fake ESC status for testing dynamic notch filters 2021-05-31 10:26:45 -04:00
Daniel Agar f25a70a674 mathlib: Notchfilter updates
- merge NotchFilterArray into regular NotchFilter (apply vs applyArray)
 - only use direct form 1 to prevent reset confusion
 - safe default field initialization
 - update VehicleAngularVelocity usage
2021-05-31 10:26:45 -04:00
Daniel Agar 055b5404c3 sensors/vehicle_imu: switch to WelfordMean library and other improvements
- use WelfordMean library to determine sensor sample rate average
 - if gyro samples exceeds queue depth, instead round to nearest even integer to ease scheduling
 - force update if publication latency is falling behind
 - remove redundant sample interval perf counters
 - status print accel & gyro interval standard deviation
2021-05-31 10:05:10 -04:00
Daniel Agar 3340fca332 sensors/vehicle_imu: move accel & gyro updates to separate methods 2021-05-31 10:05:10 -04:00
Daniel Agar a5979e16be sensors/vehicle_imu: move publish to separate method 2021-05-31 10:05:10 -04:00
Daniel Agar 0b9e4a5902 sensors/vehicle_imu: Integrator simplify and make header only 2021-05-31 10:05:10 -04:00
Silvan Fuhrer cf5e6e4133 Sensors: subscribe to differential_pressure in vehicle_air_data to calculate air density
-constrain range to -20..35°C
-do not use temperature readings if exactly 0 (as likley not filled by driver at all in this case)

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-31 09:53:47 +02:00
David Sidrane 973068ebfe holybro_can-gps-v1:Rev to RC9 HW
holybro_can-gps-v1:Fix LEDs

holybro_can-gps-v1:Only CAN1

holybro_can-gps-v1:ncp5623c at 0x39
2021-05-29 10:53:27 -04:00
Daniel Agar 51f738e54c boards: bootloader.cmake trivial whitespace cleanup 2021-05-28 23:56:20 -04:00
modaltb e25cfaaa2f boards: Add ModalAI Flight Core v2 initial support 2021-05-28 22:26:40 -04:00
Jukka Laitinen 34de392425 Add compiler cmake files for RISC-V (rv64gc) targets
This adds the basic support for riscv64-unknown-elf compiler amd rv64gc ISA

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-05-28 22:22:57 -04:00
Jukka Laitinen 935253357a nuttx compilation: Don't assume "arm" to enable risc-v compilation
Replace "arm" by "${CONFIG_ARCH}"

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-05-28 22:22:57 -04:00
Jukka Laitinen 12f33524fa fix legacy data types again
Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-05-28 17:55:02 -04:00
Peter van der Perk ed0b5a7c1a FMUK66 update socketcan configs 2021-05-28 08:03:58 -07:00
Jukka Laitinen 0de0709be3 Fix github url for uavcan_v1/legacy_data_types
The URL is spelled wrong, it should be capital "PX4"

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-05-28 10:36:30 -04:00
Julian Oes 1da4e2f441 vmount: fix param limit 2021-05-28 14:46:40 +02:00
Silvan Fuhrer 4b42a1639b TECS: in airspeed-less mode, set airspeed estimate to cruise airspeed
In airspeed-less mode, instead of the average of min/max airspeed, take the cruise
airspeed (from param) for current airspeed estimate. A diff of the airspeed setpoint
from this value results in increased enegery demand (incerase of throttle) even
in airspeed-less mode.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-28 14:25:53 +02:00
Nuno Marques f9fe0e3746 ROS2/microRTPS: Add support for ROS2 Galactic and ROS2 Rolling (#17664)
microRTPS: generate_microRTPS_bridge: add support for ROS2 versions
* Galactic
* Rolling
2021-05-27 09:32:16 -07:00
Daniel Agar ad534561d3 commander: only play safety change tunes if initialized 2021-05-27 10:13:49 +02:00
Daniel Agar af71b2e3ab commander: fix COM_DISARM_PRFLT parameter description typos 2021-05-26 21:48:41 -04:00
Jukka Laitinen 675a5a2b2c bootloader: change flash_cache addresses to uintptr_t
To fix comilation errors on 64 bit platforms

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-05-26 12:57:37 -07:00
Jukka Laitinen 071eaef884 Adjust paths to bootloader include files for boards
Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-05-26 12:57:37 -07:00
Jukka Laitinen 64d264b49a bootloader: Move chip specific things under chip specific folders
- move systick.c under chip specific sources
- move do_jump into chip specific main.c as arch_do_jump
- wrap flash writes to "arch_flash_write" and implement in chip specific main.c
- add bootloader TOC check
- sync image_toc.h with the version currently in use with old bootloader

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2021-05-26 12:57:37 -07:00
David Sidrane 3e18fa12d6 px4_fmu-v5x:Remove vcm1193l 2021-05-26 13:41:10 -04:00
David Sidrane 2feb096fb9 vtrantech Rename to match V1.1 vcm5883->vcm1193l 2021-05-26 11:24:11 -04:00
Daniel Agar b264577daa sensors/vehicle_acceleration: require valid sample rate before running
- this fixes a minor edge case when you only have a single accelerometer and haven't made any parameter changes, the sensor sample rate (used for filtering) might not have been updated from default
2021-05-24 21:39:42 -04:00
Daniel Agar 22838f491a ekf2: replace mag missed error message with perf count
- this error is primarily useful when significant gaps in magnetometer are present, otherwise the occasional gaps at startup, etc are distracting in regular usage
2021-05-24 20:52:07 -04:00
PX4 BuildBot 187297653a Update submodule ecl to latest Mon May 24 12:39:12 UTC 2021
- ecl in PX4/Firmware (17da6293aa8e32a0e41c8fe10b8ffbf4e3e922b3): https://github.com/PX4/PX4-ECL/commit/e57af44d71dea2da62055076f186b3d15278ae7e
    - ecl current upstream: https://github.com/PX4/PX4-ECL/commit/71fc1b81612fa9b5184d5abb93b69d109e9d0e4b
    - Changes: https://github.com/PX4/PX4-ECL/compare/e57af44d71dea2da62055076f186b3d15278ae7e...71fc1b81612fa9b5184d5abb93b69d109e9d0e4b

    71fc1b8 2021-05-20 bresch - airspeed fusion: use yaw from 312 sequence when pitch is close to 90deg
2021-05-24 18:59:56 -04:00
Daniel Agar 0fc98b2793 move IMU_GYRO_FFT_EN parameter to developer category
- these need more work and testing before we should encourage wider usage
2021-05-24 18:59:32 -04:00
Daniel Agar e18b1c0355 mpu9250: tolerate missing/mismatching FIFO samples if I2C slave mag active
- when the mpu9250 mag is active it disrupts IMU sampling
 - this change modifies the simple mpu9250 FIFO integrity checks (comparing duplicate accel samples) to tolerate these samples that don't match if the mag is active
 - fixes #17615
2021-05-24 11:22:13 -04:00
Daniel Agar 6549017993 navigator: GeofenceBreachAvoidance remove duplicate type alias 2021-05-23 17:51:08 -04:00
Daniel Agar 8327335fa4 Update submodule mavlink v2.0 to latest Sat May 22 00:38:27 UTC 2021 2021-05-22 13:35:50 -04:00
PX4 BuildBot a6148d6320 Update submodule libcanard to latest Sat May 22 12:39:12 UTC 2021
- libcanard in PX4/Firmware (e2ba4858a3285fe7ff0f2888d8b1ce5dbda589a1): https://github.com/UAVCAN/libcanard/commit/38796831f9083c0f0674319543d8d10813429eb5
    - libcanard current upstream: https://github.com/UAVCAN/libcanard/commit/2a116170285fb47fcaae150ad21c2ccde0756a5f
    - Changes: https://github.com/UAVCAN/libcanard/compare/38796831f9083c0f0674319543d8d10813429eb5...2a116170285fb47fcaae150ad21c2ccde0756a5f

    2a11617 2021-05-20 Pavel Kirienko - Update the changelog
a1efa3a 2021-05-20 Peter van der Perk - Expose CanardRxSubscription fields for read-only use (#167)
2021-05-22 13:35:03 -04:00
PX4 BuildBot 142d6f3dbc Update submodule ecl to latest Sat May 22 12:39:15 UTC 2021
- ecl in PX4/Firmware (2a18b8feeb24dcb07c2dd141e6097e211f83e6bd): https://github.com/PX4/PX4-ECL/commit/85f5a935fe6095f585bfb12b584e0813126cbc2a
    - ecl current upstream: https://github.com/PX4/PX4-ECL/commit/e57af44d71dea2da62055076f186b3d15278ae7e
    - Changes: https://github.com/PX4/PX4-ECL/compare/85f5a935fe6095f585bfb12b584e0813126cbc2a...e57af44d71dea2da62055076f186b3d15278ae7e

    e57af44 2021-05-18 Bazooka Joe - set parameters that doesn't change with const attribute, for clearification
2021-05-22 13:34:31 -04:00
PX4 BuildBot 68e386cf2d Update submodule sitl_gazebo to latest Sat May 22 00:38:23 UTC 2021
- sitl_gazebo in PX4/Firmware (61e972ba35): https://github.com/PX4/PX4-SITL_gazebo/commit/f10ccb7ec34e35842254fe969d49beea699a8ffb
    - sitl_gazebo current upstream: https://github.com/PX4/PX4-SITL_gazebo/commit/5c248898524cb670df496149de5e4692e16e69dc
    - Changes: https://github.com/PX4/PX4-SITL_gazebo/compare/f10ccb7ec34e35842254fe969d49beea699a8ffb...5c248898524cb670df496149de5e4692e16e69dc

    5c24889 2021-05-20 Andrew Voznytsa - Use cmake to find and link to gstreamer-app-1.0
2021-05-22 06:48:03 +02:00
Daniel Agar 61e972ba35 px_uploader.py remove special pyserial checks that fail on some platforms 2021-05-21 08:56:12 +02:00
Julian Oes 518222bae4 navigator: fix home altitude feasibility check
This includes the following:
- Remove warning/throw_error flag as it is always !home_alt_valid.
- Remove impossible code path when home_alt_valid = false and
  throw_error = false.
- Add home_alt_valid check in second check before using home_alt.
- Only use warning for the second check to allow waypoints below home.
- Don't return early when only warning.
2021-05-20 10:50:54 -04:00
Julian Oes 90a33d59e4 commander: blink red on invalid mission
It doesn't make sense to blink green when something is not good.
2021-05-20 10:50:54 -04:00
Julian Oes 4ccc60e2b0 commander: neutral beep on mission with warning
When a mission is uploaded we should beep consistenly:
- valid -> positive
- warn -> neutral
- invalid -> negative

Before this, it was:
- valid -> positive
- warn -> negative
- invalid -> negative
2021-05-20 10:50:54 -04:00
Julian Oes b7890529b2 navigator: reset mission feasibility warning flag
Without reseting the warning flag commander would complain about a
warning but still allow arming and flying the mission which was weird.
2021-05-20 10:50:54 -04:00
Daniel Agar 9969edfabc mavlink: STATUSTEXT stream use perf count for missed messages
- don't send stale messages
 - process all queued messages until tx buffer is full
2021-05-20 10:39:11 -04:00
Julian Oes 1f40a65210 mavlink: improve command param5/6, x/y handling
This adds support to handle INT32_MAX for COMMAND_INT.x/y by converting
it to NAN internally.

It also adds paranoid checks to prevent:
- NAN being used sent by a COMMAND_INT by mistake.
- INT32_MAX being used sent by a COMMAND_LONG by mistake.
2021-05-20 09:26:30 +02:00
PX4 BuildBot 4bb53e2afc Update submodule libcanard to latest Wed May 19 00:39:15 UTC 2021
- libcanard in PX4/Firmware (7c7657e6a0254b62959ea6b908b89815f0cfee5a): https://github.com/UAVCAN/libcanard/commit/55938c51cf7da3096679933302693c9dae7a2b33
    - libcanard current upstream: https://github.com/UAVCAN/libcanard/commit/38796831f9083c0f0674319543d8d10813429eb5
    - Changes: https://github.com/UAVCAN/libcanard/compare/55938c51cf7da3096679933302693c9dae7a2b33...38796831f9083c0f0674319543d8d10813429eb5

    3879683 2021-05-18 Pavel Kirienko - Add canardRxAccept2(), fix #163 (#164)
2021-05-19 00:24:00 -04:00
CUAVcaijie ffe9f8a942 boards: CUAV Nora/X7Pro ICM20649 on SPI6 bus will be replaced by ICM20689 2021-05-18 18:49:25 -04:00
Daniel Agar 10f33cdd35 boards: px4_fmu-v6x_default re-enable top and free up flash 2021-05-18 16:22:02 -04:00
Daniel Agar e498023d0f ist8308: improve configuration
- disable noise suppression filter
 - select more appropriate dynamic range
 - carefully set and clear all ODR, DR, and OSRCNTL bits
 - retry in probe multiple times
2021-05-18 13:20:21 -04:00
David Sidrane 4acc18ca60 Add VCM5883 Magnetometer
Fix LSB/G
2021-05-18 12:57:46 -04:00
Daniel Agar 820a442fe3 drivers/imu/analog_devices/adis16448: minor fixes and compatibility with older model
- increase SPI stall time slightly
 - tolerate mag self test failure (could be due to local magnetic field)
 - register configuration compatible with older ADIS16448AMLZ
 - don't publish duplicate accel/gyro
 - only allocate CRC perf counter if using CRC
2021-05-18 12:44:37 -04:00
PX4 BuildBot eee08601af Update submodule sitl_gazebo to latest Tue May 18 00:50:37 UTC 2021
- sitl_gazebo in PX4/Firmware (c3884b5bc1): https://github.com/PX4/PX4-SITL_gazebo/commit/402897d22505a13505c19adca23c03a47224175f
    - sitl_gazebo current upstream: https://github.com/PX4/PX4-SITL_gazebo/commit/f10ccb7ec34e35842254fe969d49beea699a8ffb
    - Changes: https://github.com/PX4/PX4-SITL_gazebo/compare/402897d22505a13505c19adca23c03a47224175f...f10ccb7ec34e35842254fe969d49beea699a8ffb

    f10ccb7 2021-05-17 grahamjamesaddis - Fix non unique name warning in tailsitter.sdf.jinja (#756)
05b8625 2021-05-13 Andrew Voznytsa - Fix gstreamer timestamps; Use push mode all the way; Avoid duplicated frame encoding; Cleanup a bit there and here
9ec04cc 2021-05-16 Graham James Addis - Tidy rotor colours Grey/Blue.
493c5dc 2021-05-16 Graham James Addis - Minimal conversion to jinja format.
2021-05-17 23:03:51 -04:00
Daniel Agar db3c89b1e3 Update submodule mavlink v2.0 to latest Tue May 18 00:50:40 UTC 2021 2021-05-17 21:53:36 -04:00
PX4 BuildBot 319cab6c2c Update submodule ecl to latest Tue May 18 00:50:43 UTC 2021
- ecl in PX4/Firmware (4668ea5c32075aca28fd813881a349f765ad8d2a): https://github.com/PX4/PX4-ECL/commit/29243ac5cbb5d27ac71744e88afcd786df6f748d
    - ecl current upstream: https://github.com/PX4/PX4-ECL/commit/85f5a935fe6095f585bfb12b584e0813126cbc2a
    - Changes: https://github.com/PX4/PX4-ECL/compare/29243ac5cbb5d27ac71744e88afcd786df6f748d...85f5a935fe6095f585bfb12b584e0813126cbc2a

    85f5a93 2021-05-11 bresch - [AUTO COMMIT] update change indication
f7c687e 2021-05-11 bresch - GNSS yaw unit test: test fallback to non yaw aiding mode
a4fe2b1 2021-05-11 bresch - yaw_align: let the mag control logic do the alignement and resets
2cc0230 2021-05-11 bresch - mag control: select mag mode before doing the reset
fe943cf 2021-05-11 bresch - mag reset: force align in MC custom mode (aka. indoor mode)
cadcc58 2021-05-11 bresch - mag reset: do not stop the fusion from inside the reset function
6248646 2021-05-11 bresch - EV yaw: move EV yaw reset out of resetMagHeading function
48722a2 2021-05-07 bresch - control: inhibit EV yaw from restarting when GPS aid wants to start
a685987 2021-05-07 bresch - GNSS yaw: unset yaw_align if fusion stops before takeoff
7ee6970 2021-05-04 bresch - GNSS yaw: add test case when measurement jumps
7a11871 2021-05-04 bresch - GNSS yaw tests: adjust timing
51197a5 2021-05-03 bresch - GNSS yaw selection logic refactor
2021-05-17 21:52:00 -04:00
Daniel Agar c3884b5bc1 fake_imu (formally fake_gyro) updates for testing gyro filtering
- fake_imu now publishes sine sweeps over 10 seconds
 - accel is also published so that fake IMU can be selected when the only option
2021-05-17 20:26:25 -04:00
Daniel Agar 39c90c8fc9 Update submodule GPSDrivers to latest Mon May 17 12:38:15 UTC 2021 2021-05-17 19:25:45 -04:00
Daniel Agar 87b861d0f0 IMU_GYRO_CUTOFF and IMU_DGYRO_CUTOFF increase default slightly 2021-05-17 17:37:52 +02:00
Peter van der Perk 60a083b662 canbootloader clear pending systick interrupts 2021-05-17 05:05:24 -07:00
Daniel Agar 3a3cc33d69 drivers/optical_flow/paw3902: require >= 10 valid consecutive readings before deciding mode changes
- improve mode change requirements comments
 - reduce verified read/write retries (these are mostly wasting time)
2021-05-16 20:29:06 -04:00
PX4 BuildBot 9d54b7b64e Update submodule jMAVSim to latest Sun May 16 12:39:03 UTC 2021
- jMAVSim in PX4/Firmware (5f14ee2a97): https://github.com/PX4/jMAVSim/commit/2b610caab81726ab79019de0f2fa8cff5e341bd5
    - jMAVSim current upstream: https://github.com/PX4/jMAVSim/commit/0a816d8100e9860a031ccfccfb9941bcd6eedc81
    - Changes: https://github.com/PX4/jMAVSim/compare/2b610caab81726ab79019de0f2fa8cff5e341bd5...0a816d8100e9860a031ccfccfb9941bcd6eedc81

    0a816d8 2021-05-12 Beat Küng - mavlink: update message definitions to latest master
2021-05-16 17:23:40 -04:00
PX4 BuildBot 093854d29b Update submodule public_regulated_data_types to latest Sun May 16 12:39:17 UTC 2021
- public_regulated_data_types in PX4/Firmware (b0b812007a76a7d3cfb3e1d2d32f245a681800d7): https://github.com/UAVCAN/public_regulated_data_types/commit/1337b1c86fee5bd3f3c3c0f1027bcf19e5c08aae
    - public_regulated_data_types current upstream: https://github.com/UAVCAN/public_regulated_data_types/commit/0a773b93ce5c94e1d2791b180058cb9897fab7e1
    - Changes: https://github.com/UAVCAN/public_regulated_data_types/compare/1337b1c86fee5bd3f3c3c0f1027bcf19e5c08aae...0a773b93ce5c94e1d2791b180058cb9897fab7e1

    0a773b9 2021-05-10 Kalyan Sriram - reg/drone: remove redundant timestamp in Velocity3Var (#117)
2021-05-16 17:23:01 -04:00
PX4 BuildBot 723e803ab9 Update submodule public_regulated_data_types to latest Sun May 16 12:39:14 UTC 2021
- public_regulated_data_types in PX4/Firmware (b00f416229a5bcef2bdad4ec29c90e4846c701af): https://github.com/UAVCAN/public_regulated_data_types/commit/1337b1c86fee5bd3f3c3c0f1027bcf19e5c08aae
    - public_regulated_data_types current upstream: https://github.com/UAVCAN/public_regulated_data_types/commit/0a773b93ce5c94e1d2791b180058cb9897fab7e1
    - Changes: https://github.com/UAVCAN/public_regulated_data_types/compare/1337b1c86fee5bd3f3c3c0f1027bcf19e5c08aae...0a773b93ce5c94e1d2791b180058cb9897fab7e1

    0a773b9 2021-05-10 Kalyan Sriram - reg/drone: remove redundant timestamp in Velocity3Var (#117)
2021-05-16 17:22:40 -04:00
Daniel Agar 904f827df0 Jenkins: increase timeout and build history 2021-05-16 15:59:56 -04:00
AlexKlimaj 4a93f7cea1 Add ARK CAN GPS Board Config 2021-05-16 13:21:44 -04:00
Damien SIX e4f235001b fix timesync for timestamp sample (including SFINAE detection) 2021-05-16 13:15:37 -04:00
Daniel Agar ecf2cd3afb CAN node STM32F7 support and Freefly RTK GPS CAN node 2021-05-16 13:10:02 -04:00
Beat Küng 1ad25369e7 Makefile: ensure 'clean' does not fail if build directory does not exist 2021-05-16 13:01:20 -04:00
Beat Küng 5114158090 px4/fmu-v6x: disable dumpfile (reduce flash) 2021-05-16 13:01:20 -04:00
Beat Küng 9fbbcc9c73 mavlink ATTITUDE_TARGET: send also if vehicle_attitude_setpoint is not updated
This is the case in MC acro
2021-05-16 13:01:20 -04:00
Beat Küng 2a84afb6a2 mavlink: avoid 'stream xy not found' warnings on CONSTRAINED_FLASH targets
e.g.:
WARN  [mavlink] stream ADSB_VEHICLE not found
WARN  [mavlink] stream GIMBAL_DEVICE_ATTITUDE_STATUS not found
WARN  [mavlink] stream GIMBAL_MANAGER_STATUS not found
WARN  [mavlink] stream GIMBAL_DEVICE_SET_ATTITUDE not found
WARN  [mavlink] stream GPS2_RAW not found
WARN  [mavlink] stream UTM_GLOBAL_POSITION not found
ERROR [mavlink] configure_streams_to_default() failed
2021-05-16 13:01:20 -04:00
PX4 BuildBot 9e352e92bd Update submodule sitl_gazebo to latest Sun May 16 12:39:08 UTC 2021
- sitl_gazebo in PX4/Firmware (7cb3ed98b61c514d01fc9a68ba87445f8b9aa142): https://github.com/PX4/PX4-SITL_gazebo/commit/2496b85dd22d2f9c1c1281d5ef77dfb86ef604a3
    - sitl_gazebo current upstream: https://github.com/PX4/PX4-SITL_gazebo/commit/402897d22505a13505c19adca23c03a47224175f
    - Changes: https://github.com/PX4/PX4-SITL_gazebo/compare/2496b85dd22d2f9c1c1281d5ef77dfb86ef604a3...402897d22505a13505c19adca23c03a47224175f

    402897d 2021-05-09 Jaeyoung-Lim - Update mavsdk version scripts
2021-05-16 12:55:28 -04:00
Jonas Vautherin 5f14ee2a97 busy -> invalid item 2021-05-13 12:22:16 +02:00
Daniel Agar ad0482155e ROMFS: reduce LOGGER_BUF default to 8 kB on older boards 2021-05-12 17:06:33 +02:00
Beat Küng d300a879f1 cmake: remove romfs content before tar extraction
This avoids incremental build errors when switching between branches with
a different set of airframes.

E.g:
Aborting due to missing @type tag in file: 'Firmware/build/px4_fmu-v5_default/etc/init.d/airframes/13030_generic_vtol_quad_tiltrotor'
2021-05-11 13:14:42 -04:00
Beat Küng e77b4418a5 fix logger: use free() instead of 'delete[]' for _buffer
The allocation got changed to px4_cache_aligned_alloc
2021-05-11 18:12:56 +02:00
Igor Mišić 05a2d4d5a9 gps: updated submodule to fix for heading 2021-05-11 08:34:23 +02:00
Igor Mišić d9e31d67aa gps: Updated timeout time for the rover with moving base
The MB rover will wait as long as possible to compute a navigation solution, possibly lowering the navigation rate all the way to 1 Hz while doing so.
2021-05-11 08:34:23 +02:00
Silvan Fuhrer b7e563bdbe Airspeed selector: fix in_air_fixed_wing condition
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-10 13:43:05 +02:00
Silvan Fuhrer 596da5b7d3 Airspeed selector: use module params for FW_AIRSPD_STALL
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-10 13:43:05 +02:00
Silvan Fuhrer 2f73115b54 translate ASPD_STALL to FW_AIRSPD_STALL
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-10 13:43:05 +02:00
Silvan Fuhrer bf311ed77d addressed review comments (fixes in error message and comments)
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-10 13:43:05 +02:00
Silvan Fuhrer 63a53d48e7 FW Position controller: improve parameter sanity checks (provide more feedback)
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-10 13:43:05 +02:00
Silvan Fuhrer c8ec6b3d08 Airspeed selector: remove ASPD_STALL and replace by FW_AIRSPD_STALL
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-10 13:43:05 +02:00
RomanBapst 3b27864e53 vehicle_status: added field for geofence violation
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-05-10 10:46:49 +03:00
RomanBapst 3ac8c23dd0 commander: added prearm check for geofence violation
- if geofence action is not none, then don't allow arming outside of geofence

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-05-10 10:46:49 +03:00
RomanBapst 6215e6c7ec navigator: do not emit geofence warnings if system is not armed
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2021-05-10 10:46:49 +03:00
David Sidrane e87a6c755d px4_fmu-v5x:Add support for Revision 2 FMUM HW using ICM20649 not BMI088 2021-05-10 09:11:50 +02:00
David Sidrane 69e0c2fc10 px4:platform support SPI configuration selection on HW REV 2021-05-10 09:11:50 +02:00
Julian Oes e4ee7c7d98 sitl_gazebo: update submodule
This fixes the simulation stalling after 30mins due to an int overflow.
2021-05-09 15:17:25 +02:00
David Sidrane 541697d193 NuttX Backports Fixing SDIO/SDMMC Data Timeouts
stm32, F7 and H7
2021-05-08 04:40:54 -07:00
Daniel Agar c49c8932de commander: mag_calibration fail immediately if no mags available 2021-05-08 13:03:42 +02:00
Peter van der Perk 0c926250a2 UAVCANv1 cleanup and uORB over UAVCANV1 move to own subclass 2021-05-08 13:03:02 +02:00
Daniel Agar dfb4ec56b1 Makefile: clean and distclean updates
- update clean to recurse all build directories and use build system clean
 - git clean is used to remove submodule generated build artifacts that
are left in the source tree
 - distclean now discards all build directories and any gitignored
filess that were generated in source directories (but not top level)
2021-05-08 12:29:16 +02:00
Daniel Agar f15eefcc95 ekf2: selector increase status rate before potential instance change 2021-05-07 22:38:47 -04:00
Julian Oes 29730e30fa ekf2: don't timeout in HITL mode
Otherwise ekf2 might not start if HITL isn't started within 30 seconds.
2021-05-07 22:38:03 -04:00
Julian Oes ac97b5520c commander: assume power is fine for HITL
This means that the preflight check indicator in QGC is green for HITL.
2021-05-07 22:38:03 -04:00
Julian Oes 648a21f11d commander: ignore calibration in HITL
The calibration is not found in HITL mode. Therefore, I suggest to
ignore this step and assume the calibration is fine.

This mostly fixes the preflight check indicator in QGC, arming was (for
some reason?) already possible.
2021-05-07 22:38:03 -04:00
Hamish Willee d3fd03a014 airspeed calibration: instruct to blow into front of pitot
... rather than across it
2021-05-07 21:34:53 -04:00
David Sidrane b1e0702657 px4_fmuv2:Save Flash CONFIG_LIBC_STRERROR=n 2021-05-07 11:50:38 -07:00
David Sidrane 8d82560308 NuttX Backports
[BACKPORT] binnfmt:Fix return before close ELF fd
   stm32h7: serial: use dma tx semaphore as resource holder
   [BACKPORT] stm32h7:Serial Add RX and TX DMA
   [BACKPORT] drivers/serial: fix Rx interrupt enable for cdcacm
   [BACKPORT] stm32h7:Allow for reuse of the OTG_ID GPIO
   [BACKPORT] stm32f7:Allow for reuse of the OTG_ID GPIO
2021-05-07 11:50:38 -07:00
PX4 BuildBot e265ebabc5 Update submodule ecl to latest Thu May 6 12:39:12 UTC 2021
- ecl in PX4/Firmware (a300d32523e24df3f366a0d564b764261e1c1909): https://github.com/PX4/PX4-ECL/commit/a7b8afe420f438554ad90bcba0f1f4872325e75b
    - ecl current upstream: https://github.com/PX4/PX4-ECL/commit/29243ac5cbb5d27ac71744e88afcd786df6f748d
    - Changes: https://github.com/PX4/PX4-ECL/compare/a7b8afe420f438554ad90bcba0f1f4872325e75b...29243ac5cbb5d27ac71744e88afcd786df6f748d

    29243ac 2021-05-05 bresch - yaw_reset: reduce minimum vector length to compute yaw error
aad4840 2021-05-02 Kabir Mohammed - EKF: increase allowed difference between flow and gyro ODRs
2021-05-06 13:53:40 -04:00
Daniel Agar 9419f9c5e8 Update submodule mavlink v2.0 to latest Thu May 6 12:39:02 UTC 2021 2021-05-06 13:52:43 -04:00
Silvan Fuhrer 08dab18a8b vtol_type: in FW, set min PWM to PWM_DEFAULT_MIN instead of PWM_MOTOR_OFF
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-05-06 10:20:24 +02:00
benjinne 099c2d13f6 dshot: add 3D capability 2021-05-06 08:12:07 +02:00
Daniel Agar 177ee4cbca drivers/optical_flow/paw3902: properly discard samples after mode change
- respect mode 2 shutter requirements from datasheet (should not operate with Shutter < 0x01F4 in Mode 2)
 - sensor reset is handled by mode change
2021-05-05 21:48:01 -04:00
Daniel Agar b1ebd16c61 ekf2: improve selector reset handling
- handle reset count rollover (uint8_t)
 - compute full reset delta if primary estimator instance has changed or if we missed a reset
2021-05-05 21:45:13 -04:00
796 changed files with 27122 additions and 5413 deletions
+4 -1
View File
@@ -48,6 +48,8 @@ pipeline {
"cuav_x7pro_default",
"cubepilot_cubeorange_default",
"cubepilot_cubeyellow_default",
"freefly_can-rtk-gps_canbootloader",
"freefly_can-rtk-gps_default",
"holybro_can-gps-v1_canbootloader",
"holybro_can-gps-v1_default",
"holybro_durandal-v1_default",
@@ -55,6 +57,7 @@ pipeline {
"holybro_pix32v5_default",
"modalai_fc-v1_default",
"modalai_fc-v1_rtps",
"modalai_fc-v2_default",
"mro_ctrl-zero-f7_default",
"mro_ctrl-zero-f7-oem_default",
"mro_ctrl-zero-h7_default",
@@ -155,7 +158,7 @@ pipeline {
}
options {
buildDiscarder(logRotator(numToKeepStr: '5', artifactDaysToKeepStr: '14'))
timeout(time: 60, unit: 'MINUTES')
timeout(time: 90, unit: 'MINUTES')
}
}
+13 -49
View File
@@ -73,13 +73,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -149,13 +146,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -225,13 +219,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -301,13 +292,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -377,13 +365,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -453,13 +438,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -533,13 +515,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -609,13 +588,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -689,13 +665,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -769,9 +742,6 @@ pipeline {
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -842,13 +812,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -918,13 +885,10 @@ pipeline {
}
stage("reset") {
steps {
cleanupFTDI();
cleanupFTDI()
}
}
}
options {
timeout(time: 90, unit: 'MINUTES')
}
} // stage test
}
}
@@ -937,8 +901,8 @@ pipeline {
CI = true
}
options {
buildDiscarder(logRotator(numToKeepStr: '20', artifactDaysToKeepStr: '40'))
timeout(time: 90, unit: 'MINUTES')
buildDiscarder(logRotator(numToKeepStr: '30', artifactDaysToKeepStr: '60'))
timeout(time: 120, unit: 'MINUTES')
skipDefaultCheckout()
}
}
+1
View File
@@ -23,6 +23,7 @@ jobs:
"shellcheck_all",
"NO_NINJA_BUILD=1 px4_fmu-v5_default",
"NO_NINJA_BUILD=1 px4_sitl_default",
"BUILD_MICRORTPS_AGENT=1 px4_sitl_rtps",
"airframe_metadata",
"module_documentation",
"parameters_metadata",
+6
View File
@@ -19,6 +19,9 @@ jobs:
ark_can-flow_canbootloader,
ark_can-flow_debug,
ark_can-flow_default,
ark_can-gps_canbootloader,
ark_can-gps_debug,
ark_can-gps_default,
av_x-v1_default,
bitcraze_crazyflie21_default,
bitcraze_crazyflie_default,
@@ -32,6 +35,8 @@ jobs:
cubepilot_cubeyellow_default,
cubepilot_cubeyellow_test,
cubepilot_io-v2_default,
freefly_can-rtk-gps_canbootloader,
freefly_can-rtk-gps_default,
holybro_can-gps-v1_canbootloader,
holybro_can-gps-v1_debug,
holybro_can-gps-v1_default,
@@ -40,6 +45,7 @@ jobs:
holybro_pix32v5_default,
modalai_fc-v1_default,
modalai_fc-v1_rtps,
modalai_fc-v2_default,
mro_ctrl-zero-f7-oem_default,
mro_ctrl-zero-f7_default,
mro_ctrl-zero-h7-oem_default,
@@ -17,6 +17,7 @@ jobs:
config: [
ark_can-flow_default,
cuav_can-gps-v1_default,
freefly_can-rtk-gps_default,
holybro_can-gps-v1_default,
#nxp_ucans32k146_default,
px4_fmu-v4_cannode
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
- name: Install Python3
run: sudo apt-get install python3 python3-setuptools python3-pip -y
- name: Install tools
run: pip3 install --user mypy flake8
run: pip3 install --user mypy types-requests flake8
- name: Check MAVSDK test scripts with mypy
run: $HOME/.local/bin/mypy --strict test/mavsdk_tests/*.py
- name: Check MAVSDK test scripts with flake8
+5 -4
View File
@@ -15,10 +15,11 @@ jobs:
fail-fast: false
matrix:
config:
- {latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo", model: "iris" } # Alaska
- {latitude: "-38.071235", longitude: "145.281220", altitude: "31", build_type: "RelWithDebInfo", model: "standard_vtol" } # Australia
- {latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo", model: "tailsitter" } # Florida
- {latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage", model: "standard_vtol" } # Zurich
- {latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo", model: "iris" } # Alaska
- {latitude: "-38.071235", longitude: "145.281220", altitude: "31", build_type: "AddressSanitizer", model: "standard_vtol" } # Australia
- {latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo", model: "tailsitter" } # Florida
- {latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage", model: "standard_vtol" } # Zurich
container:
image: px4io/px4-dev-simulation-focal:2021-04-29
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
+2
View File
@@ -108,3 +108,5 @@ src/systemcmds/topic_listener/listener_generated.cpp
# SITL
dataman
eeprom/
!src/drivers/distance_sensor/broadcom/afbrs50/Lib/*
+4 -1
View File
@@ -65,5 +65,8 @@
url = https://github.com/UAVCAN/libcanard.git
[submodule "src/drivers/uavcan_v1/legacy_data_types"]
path = src/drivers/uavcan_v1/legacy_data_types
url = https://github.com/px4/public_regulated_data_types/
url = https://github.com/PX4/public_regulated_data_types.git
branch = legacy
[submodule "src/lib/crypto/monocypher"]
path = src/lib/crypto/monocypher
url = https://github.com/PX4/Monocypher.git
+25
View File
@@ -66,6 +66,16 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: ark_can-flow_canbootloader
ark_can-gps_default:
short: ark_can-gps_default
buildType: MinSizeRel
settings:
CONFIG: ark_can-gps_default
ark_can-gps_canbootloader:
short: ark_can-gps_canbootloader
buildType: MinSizeRel
settings:
CONFIG: ark_can-gps_canbootloader
av_x-v1_default:
short: av_x-v1
buildType: MinSizeRel
@@ -106,6 +116,16 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: emlid_navio2_default
freefly_can-rtk-gps_default:
short: freefly_can-rtk-gps_default
buildType: MinSizeRel
settings:
CONFIG: freefly_can-rtk-gps_default
freefly_can-rtk-gps_canbootloader:
short: freefly_can-rtk-gps_canbootloader
buildType: MinSizeRel
settings:
CONFIG: freefly_can-rtk-gps_canbootloader
holybro_can-gps-v1_canbootloader:
short: holybro_can-gps-v1_canbootloader
buildType: MinSizeRel
@@ -126,6 +146,11 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: modalai_fc-v1_default
modalai_fc-v2_default:
short: modalai_fc-v2
buildType: MinSizeRel
settings:
CONFIG: modalai_fc-v2_default
mro_ctrl-zero-f7_default:
short: mro_ctrl-zero-f7
buildType: MinSizeRel
Vendored
+2 -2
View File
@@ -374,7 +374,7 @@ pipeline {
GIT_COMMITTER_NAME = "PX4BuildBot"
}
options {
buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '20'))
timeout(time: 60, unit: 'MINUTES')
buildDiscarder(logRotator(numToKeepStr: '20', artifactDaysToKeepStr: '30'))
timeout(time: 90, unit: 'MINUTES')
}
}
+14 -8
View File
@@ -63,7 +63,7 @@ all: px4_sitl_default
space := $(subst ,, )
define make_list
$(shell cat .github/workflows/compile_${1}.yml | sed -E 's|[[:space:]]+(.*),|check_\1|g' | grep check_${2})
$(shell [ -f .github/workflows/compile_${1}.yml ] && cat .github/workflows/compile_${1}.yml | sed -E 's|[[:space:]]+(.*),|check_\1|g' | grep check_${2})
endef
# Parsing
@@ -165,6 +165,11 @@ ifdef PYTHON_EXECUTABLE
CMAKE_ARGS += -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
endif
# Check if the microRTPS agent is to be built
ifdef BUILD_MICRORTPS_AGENT
CMAKE_ARGS += -DBUILD_MICRORTPS_AGENT=ON
endif
# Functions
# --------------------------------------------------------------------
# describe how to build a cmake config
@@ -468,26 +473,27 @@ validate_module_configs:
.PHONY: clean submodulesclean submodulesupdate gazeboclean distclean
clean:
@rm -rf "$(SRC_DIR)"/build
@git submodule foreach git clean -df
@[ ! -d "$(SRC_DIR)/build" ] || find "$(SRC_DIR)/build" -mindepth 1 -maxdepth 1 -type d -exec sh -c "echo {}; cmake --build {} -- clean || rm -rf {}" \; # use generated build system to clean, wipe build directory if it fails
@git submodule foreach git clean -dX --force # some submodules generate build artifacts in source
submodulesclean:
@git submodule foreach --quiet --recursive git clean -ff -x -d
@git submodule update --quiet --init --recursive --force || true
@git submodule sync --recursive
@git submodule update --init --recursive --force
@git submodule update --init --recursive --force --jobs 4
submodulesupdate:
@git submodule update --quiet --init --recursive || true
@git submodule update --quiet --init --recursive --jobs 4 || true
@git submodule sync --recursive
@git submodule update --init --recursive
@git submodule update --init --recursive --jobs 4
gazeboclean:
@rm -rf ~/.gazebo/*
distclean: gazeboclean
@git submodule deinit -f .
@git clean -ff -x -d -e ".cproject" -e ".idea" -e ".project" -e ".settings" -e ".vscode"
@git submodule deinit --force $(SRC_DIR)
@rm -rf "$(SRC_DIR)/build"
@git clean --force -X "$(SRC_DIR)/msg/" "$(SRC_DIR)/platforms/" "$(SRC_DIR)/posix-configs/" "$(SRC_DIR)/ROMFS/" "$(SRC_DIR)/src/" "$(SRC_DIR)/test/" "$(SRC_DIR)/Tools/"
# Help / Error
# --------------------------------------------------------------------
+1
View File
@@ -115,6 +115,7 @@ add_custom_command(
set(romfs_extract_stamp ${CMAKE_CURRENT_BINARY_DIR}/romfs_extract.stamp)
add_custom_command(
OUTPUT ${romfs_extract_stamp}
COMMAND ${CMAKE_COMMAND} -E remove_directory ${romfs_gen_root_dir}/*
COMMAND ${CMAKE_COMMAND} -E tar xf ${romfs_tar_file}
COMMAND ${CMAKE_COMMAND} -E touch ${romfs_extract_stamp}
WORKING_DIRECTORY ${romfs_gen_root_dir}
@@ -1,8 +0,0 @@
#!/bin/sh
#
# @name 3DR Iris Quadrotor SITL (RTPS)
#
# @type Quadrotor Wide
#
. ${R}etc/init.d-posix/airframes/10016_iris
@@ -1,4 +0,0 @@
#!/bin/sh
# shellcheck disable=SC2154
micrortps_client start -t UDP -r $((2019+2*px4_instance)) -s $((2020+2*px4_instance))
@@ -14,7 +14,8 @@
param set-default EKF2_ARSP_THR 8
param set-default EKF2_FUSE_BETA 1
param set-default ASPD_STALL 10.0
param set-default FW_AIRSPD_STALL 8
param set-default FW_P_RMAX_NEG 20.0
param set-default FW_P_RMAX_POS 60.0
@@ -46,8 +46,6 @@ px4_add_romfs_files(
1014_solo
1015_iris_obs_avoid
1015_iris_obs_avoid.post
1016_iris_rtps
1016_iris_rtps.post
1017_iris_opt_flow_mockup
1018_iris_vision_velocity
1019_iris_dual_gps
+6
View File
@@ -225,6 +225,12 @@ sensors start
commander start
navigator start
# Try to start the micrortps_client with UDP transport if module exists
if px4-micrortps_client status > /dev/null 2>&1
then
# shellcheck disable=SC2154
micrortps_client start -t UDP $((2019+2*px4_instance)) -s $((2020+2*px4_instance))
fi
if param greater -s MNT_MODE_IN -1
then
@@ -71,7 +71,6 @@ param set-default MPC_JERK_AUTO 4
param set-default MPC_LAND_SPEED 1
param set-default MPC_MAN_TILT_MAX 25
param set-default MPC_MAN_Y_MAX 40
param set-default MPC_POS_MODE 3
param set-default MPC_SPOOLUP_TIME 1.5
param set-default MPC_THR_HOVER 0.45
param set-default MPC_TILTMAX_AIR 25
@@ -2,7 +2,7 @@
#
# @name Aion Robotics R1 UGV
#
# @url http://docs.aionrobotics.com/en/latest/r1-ugv.html
# @url https://www.aionrobotics.com/r1
#
# @type Rover
# @class Rover
+14 -1
View File
@@ -26,6 +26,12 @@ then
batt_smbus start -X
fi
# Start batmon driver if enabled using BATMON_DRIVER_EN
if param compare -s BATMON_DRIVER_EN 1
then
batmon start -X #start on external bus
fi
# Sensors on the PWM interface bank
if param compare -s SENS_EN_LL40LS 1
then
@@ -111,7 +117,14 @@ fi
# ADIS16448 spi external IMU
if param compare -s SENS_EN_ADIS164X 1
then
adis16448 -S start
if param compare -s SENS_OR_ADIS164X 0
then
adis16448 -S start
fi
if param compare -s SENS_OR_ADIS164X 4
then
adis16448 -S start -R 4
fi
fi
# probe for optional external I2C devices
+22 -40
View File
@@ -30,7 +30,7 @@ set FRC /fs/microsd/etc/rc.txt
set IOFW "/etc/extras/px4_io-v2_default.bin"
set IO_PRESENT no
set LOGGER_ARGS ""
set LOGGER_BUF 14
set LOGGER_BUF 8
set MAV_TYPE none
set MIXER none
set MIXER_AUX none
@@ -81,33 +81,6 @@ then
hardfault_log reset
fi
fi
# Prevent MacOS and Ubuntu from creating unnecessary temporary files on the microSD card
# block MacOS Spotlight indexing (.Spotlight-V100 folder)
if [ ! -f "/fs/microsd/.metadata_never_index" ]; then
cat > /fs/microsd/.metadata_never_index
fi
# block MacOS trashes
if [ ! -f "/fs/microsd/.Trashes" ]; then
cat > /fs/microsd/.Trashes
fi
# block MacOS logging of filesystem events
if [ ! -d "/fs/microsd/.fseventsd" ]; then
mkdir /fs/microsd/.fseventsd
fi
if [ ! -f "/fs/microsd/.fseventsd/no_log" ]; then
cat > /fs/microsd/.fseventsd/no_log
fi
# block Ubuntu trash
if [ ! -f "/fs/microsd/.Trash-1000" ]; then
cat > /fs/microsd/.Trash-1000
fi
else
# tune SD_INIT
set STARTUP_TUNE 14 # tune 14 = SD_INIT
@@ -404,21 +377,30 @@ else
if param greater -s TRIG_MODE 0
then
# We ONLY support trigger on pins 5+6 or 7+8 when simultanously using AUX for actuator output.
if param compare TRIG_PINS 56
if param compare TRIG_PINS_EX 0
then
# clear pins 5 and 6
set FMU_MODE pwm4
set AUX_MODE pwm4
else
if param compare TRIG_PINS 78
# We ONLY support trigger on pins 5+6 or 7+8 when simultanously using AUX for actuator output.
if param compare TRIG_PINS 56
then
# clear pins 7 and 8
set FMU_MODE pwm6
set AUX_MODE pwm6
# clear pins 5 and 6
set FMU_MODE pwm4
set AUX_MODE pwm4
else
set FMU_MODE none
set AUX_MODE none
if param compare TRIG_PINS 78
then
# clear pins 7 and 8
set FMU_MODE pwm6
set AUX_MODE pwm6
else
set FMU_MODE none
set AUX_MODE none
fi
fi
else
if param compare TRIG_PINS_EX 12288
then
set FMU_MODE pwm12
set AUX_MODE pwm12
fi
fi
@@ -22,4 +22,5 @@ exec find boards msg src platforms test \
-path src/modules/micrortps_bridge/micro-CDR -prune -o \
-path src/modules/micrortps_bridge/microRTPS_client -prune -o \
-path test/mavsdk_tests/catch2 -prune -o \
-path src/lib/crypto/monocypher -prune -o \
-type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) | grep $PATTERN
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -e
SCRIPT_DIR=$0
if [[ ${SCRIPT_DIR:0:1} != '/' ]]; then
SCRIPT_DIR=$(dirname $(realpath -s "$PWD/$0"))
fi
PX4_DIR=$(cd "$(dirname $(dirname $SCRIPT_DIR))" && pwd)
if [ -d $PX4_DIR/build/*_rtps ]; then
cd $PX4_DIR/build/*_rtps/src/modules/micrortps_bridge/micrortps_agent/
cmake -Bbuild
cmake --build build -j$(nproc --all)
fi
+4 -3
View File
@@ -81,7 +81,8 @@ def sign(bin_file_path, key_file_path=None, generated_key_file=None):
# Align to 4 bytes. Signature always starts at
# 4 byte aligned address, but the signee size
# might not be aligned
signee_bin += bytearray(b'\xff')*(4-len(signee_bin)%4)
if len(signee_bin)%4 != 0:
signee_bin += bytearray(b'\xff')*(4-len(signee_bin)%4)
try:
with open(key_file_path,mode='r') as f:
@@ -133,7 +134,7 @@ if(__name__ == "__main__"):
parser.add_argument("signee", help=".bin file to add signature", nargs='?', default=None)
parser.add_argument("signed", help="signed output .bin", nargs='?', default=None)
parser.add_argument("--key", help="key.json file", default="Tools/test_keys.json")
parser.add_argument("--key", help="key.json file", default="Tools/test_keys/test_keys.json")
parser.add_argument("--rdct", help="binary R&D certificate file", default=None)
parser.add_argument("--genkey", help="new generated key", default=None)
args = parser.parse_args()
@@ -152,7 +153,7 @@ if(__name__ == "__main__"):
sys.exit(1)
# Issue a warning when signing with testing key
if args.key=='Tools/test_keys.json':
if args.key=='Tools/test_keys/test_keys.json':
print("WARNING: Signing with PX4 test key")
# Sign the binary
+1 -1
View File
@@ -20,7 +20,7 @@ function spawn_model() {
X=${X:=0.0}
Y=${Y:=$((3*${N}))}
SUPPORTED_MODELS=("iris" "iris_rtps" "plane" "standard_vtol" "rover" "r1_rover" "typhoon_h480")
SUPPORTED_MODELS=("iris" "plane" "standard_vtol" "rover" "r1_rover" "typhoon_h480")
if [[ " ${SUPPORTED_MODELS[*]} " != *"$MODEL"* ]];
then
echo "ERROR: Currently only vehicle model $MODEL is not supported!"
+27 -12
View File
@@ -12,6 +12,7 @@ import sys, select
import termios
from timeit import default_timer as timer
from argparse import ArgumentParser
import os
try:
from pymavlink import mavutil
@@ -135,15 +136,20 @@ def main():
mav_serialport.write('\n') # make sure the shell is started
# setup the console, so we can read one char at a time
# disable echo & avoid buffering on stdin
fd_in = sys.stdin.fileno()
old_attr = termios.tcgetattr(fd_in)
new_attr = termios.tcgetattr(fd_in)
new_attr[3] = new_attr[3] & ~termios.ECHO # lflags
new_attr[3] = new_attr[3] & ~termios.ICANON
try:
old_attr = termios.tcgetattr(fd_in)
new_attr = termios.tcgetattr(fd_in)
new_attr[3] = new_attr[3] & ~termios.ECHO # lflags
new_attr[3] = new_attr[3] & ~termios.ICANON
termios.tcsetattr(fd_in, termios.TCSANOW, new_attr)
except termios.error:
# tcgetattr can fail if stdin is not a tty
old_attr = None
ubuf_stdin = os.fdopen(fd_in, 'rb', buffering=0)
try:
termios.tcsetattr(fd_in, termios.TCSANOW, new_attr)
cur_line = ''
command_history = []
cur_history_index = 0
@@ -156,11 +162,19 @@ def main():
next_heartbeat_time = timer()
while True:
quit_time = None
while quit_time is None or quit_time > timer():
while True:
i, o, e = select.select([sys.stdin], [], [], 0)
i, o, e = select.select([ubuf_stdin], [], [], 0)
if not i: break
ch = sys.stdin.read(1)
ch = ubuf_stdin.read(1).decode('utf8')
if len(ch) == 0: # EOF
if quit_time is None:
# run a bit longer to read the response (we could also
# read until we get a prompt)
quit_time = timer() + 1
break
# provide a simple shell with command history
if ch == '\n':
@@ -182,8 +196,8 @@ def main():
cur_line = cur_line[:-1]
sys.stdout.write(ch)
elif ord(ch) == 27:
ch = sys.stdin.read(1) # skip one
ch = sys.stdin.read(1)
ch = ubuf_stdin.read(1).decode('utf8') # skip one
ch = ubuf_stdin.read(1).decode('utf8')
if ch == 'A': # arrow up
if cur_history_index > 0:
cur_history_index -= 1
@@ -223,7 +237,8 @@ def main():
mav_serialport.close()
finally:
termios.tcsetattr(fd_in, termios.TCSADRAIN, old_attr)
if old_attr:
termios.tcsetattr(fd_in, termios.TCSADRAIN, old_attr)
if __name__ == '__main__':
+1 -1
View File
@@ -6,7 +6,7 @@ import html
class MarkdownTablesOutput():
def __init__(self, groups, board, image_path):
result = ("# Airframes Reference\n"
"> **Note** **This list is [auto-generated](https://github.com/PX4/Firmware/edit/master/Tools/px4airframes/markdownout.py) from the source code**.\n"
"> **Note** **This list is [auto-generated](https://github.com/PX4/PX4-Autopilot/blob/master/Tools/px4airframes/markdownout.py) from the source code**.\n"
"> \n"
"> **AUX** channels may not be present on some flight controllers.\n"
"> If present, PWM AUX channels are commonly labelled **AUX OUT**.\n"
+2 -2
View File
@@ -28,7 +28,7 @@ available commands, and in most cases `command help` will print the usage.
Since this is generated from source, errors must be reported/fixed
in the [PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) repository.
The documentation pages can be generated by running the following command from
the root of the Firmware directory:
the root of the PX4-Autopilot directory:
```
make module_documentation
```
@@ -66,7 +66,7 @@ The generated files will be written to the `modules` directory.
result = ''
for module in module_list:
result += "## %s\n" % module.name()
result += "Source: [%s](https://github.com/PX4/Firmware/tree/master/src/%s)\n\n" % (module.scope(), module.scope())
result += "Source: [%s](https://github.com/PX4/PX4-Autopilot/tree/master/src/%s)\n\n" % (module.scope(), module.scope())
doc = module.documentation()
if len(doc) > 0:
result += "%s\n" % doc
+10 -24
View File
@@ -56,7 +56,6 @@ from __future__ import print_function
import sys
import argparse
import binascii
import serial
import socket
import struct
import json
@@ -68,6 +67,16 @@ import os
from sys import platform as _platform
try:
import serial
except ImportError as e:
print("Failed to import serial: " + str(e))
print("")
print("You may need to install it using:")
print(" pip3 install --user pyserial")
print("")
sys.exit(1)
# Detect python version
if sys.version_info[0] < 3:
runningPython3 = False
@@ -726,29 +735,6 @@ def main():
print("WARNING: You should uninstall ModemManager as it conflicts with any non-modem serial device (like Pixhawk)")
print("==========================================================================================================")
# We need to check for pyserial because the import itself doesn't
# seem to fail, at least not on macOS.
pyserial_installed = False
try:
if serial.__version__:
pyserial_installed = True
except:
pass
try:
if serial.VERSION:
pyserial_installed = True
except:
pass
if not pyserial_installed:
print("Error: pyserial not installed!")
print("")
print("You may need to install it using:")
print(" pip3 install --user pyserial")
print("")
sys.exit(1)
# Load the firmware file
fw = firmware(args.firmware)
+1 -1
View File
@@ -15,7 +15,7 @@ pygments
wheel>=0.31.1
pymavlink
pyros-genmsg
pyserial>=3.0
pyserial
pyulog>=0.5.0
pyyaml
requests
+5
View File
@@ -0,0 +1,5 @@
//Public key to verify signed binaries
0x4d, 0xb0, 0xc2, 0x1, 0x5, 0x55, 0x2a, 0x3c,
0xd7, 0xfb, 0xaf, 0x5c, 0xba, 0x7a, 0xb0, 0x81,
0x1b, 0x36, 0x63, 0xdb, 0x28, 0x52, 0x5e, 0xdb,
0x14, 0x36, 0xf2, 0x57, 0x8d, 0x2, 0xb7, 0xfd,
+2 -1
View File
@@ -46,6 +46,7 @@ px4_add_board(
rc_input
roboclaw
rpm
smart_battery/batmon
telemetry # all available telemetry drivers
tone_alarm
uavcan
@@ -117,7 +118,7 @@ px4_add_board(
work_queue
EXAMPLES
fake_gps
#fake_gyro
#fake_imu
#fake_magnetometer
#fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
#hello
+1
View File
@@ -53,6 +53,7 @@
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/board.h>
#include <nuttx/spi/spi.h>
+4 -3
View File
@@ -12,7 +12,9 @@ px4_add_board(
UAVCAN_INTERFACES 1
DRIVERS
bootloaders
distance_sensor/broadcom/afbrs50
imu/bosch/bmi088
imu/invensense/icm42688p
optical_flow/paw3902
uavcannode
MODULES
@@ -20,14 +22,13 @@ px4_add_board(
load_mon
#sensors
SYSTEMCMDS
mft
mtd
param
perf
reboot
system_time
top
topic_listener
#topic_listener
uorb
ver
work_queue
)
+3 -2
View File
@@ -13,7 +13,9 @@ px4_add_board(
UAVCAN_INTERFACES 1
DRIVERS
bootloaders
distance_sensor/broadcom/afbrs50
imu/bosch/bmi088
imu/invensense/icm42688p
optical_flow/paw3902
uavcannode
MODULES
@@ -21,14 +23,13 @@ px4_add_board(
#load_mon
#sensors
SYSTEMCMDS
mft
mtd
param
#perf
#reboot
#system_time
#top
#topic_listener
#uorb
#ver
#work_queue
)
+9 -3
View File
@@ -4,6 +4,12 @@
#------------------------------------------------------------------------------
# Internal SPI
paw3902 -s start -Y 90
bmi088 -A -s -R 4 start
bmi088 -G -s -R 4 start
paw3902 -s start -Y 180
if ! icm42688p -R 0 -s start
then
bmi088 -A -s -R 4 start
bmi088 -G -s -R 4 start
fi
afbrs50 start
@@ -133,8 +133,8 @@
#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1
#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1
#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1
#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_1
#define GPIO_SPI2_SCK GPIO_SPI2_SCK_1
#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1 /* PB14 */
#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_1 /* PB15 */
#define GPIO_SPI2_SCK GPIO_SPI2_SCK_1 /* PB10 */
#endif /* __ARCH_BOARD_BOARD_H */
@@ -40,6 +40,4 @@
// DMA2 Channel/Stream Selections
//--------------------------------------------//---------------------------//----------------
#define DMACHAN_SPI1_RX DMAMAP_SPI1_RX_2 // DMA2, Stream 2, Channel 3
#define DMACHAN_SPI2_RX DMAMAP_SPI2_RX // DMA2, Stream 3, Channel 0
#define DMACHAN_SPI2_TX DMAMAP_SPI2_TX // DMA2, Stream 4, Channel 0
#define DMACHAN_SPI1_TX DMAMAP_SPI1_TX_1 // DMA2, Stream 5, Channel 3
@@ -144,8 +144,6 @@ CONFIG_STM32_SPI1=y
CONFIG_STM32_SPI1_DMA=y
CONFIG_STM32_SPI1_DMA_BUFFER=1024
CONFIG_STM32_SPI2=y
CONFIG_STM32_SPI2_DMA=y
CONFIG_STM32_SPI2_DMA_BUFFER=1024
CONFIG_STM32_SPI_DMA=y
CONFIG_STM32_TIM8=y
CONFIG_STM32_USART2=y
+7
View File
@@ -56,6 +56,13 @@
#define GPIO_nLED_RED /* PB3 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN3)
#define GPIO_nLED_BLUE /* PA8 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN8)
#define BROADCOM_AFBR_S50_S2PI_SPI_BUS 2
#define BROADCOM_AFBR_S50_S2PI_CS /* PB12 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN12)
#define BROADCOM_AFBR_S50_S2PI_IRQ /* PB4 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN4|GPIO_EXTI)
#define BROADCOM_AFBR_S50_S2PI_CLK /* PB10 */ GPIO_SPI2_SCK_1
#define BROADCOM_AFBR_S50_S2PI_MOSI /* PB15 */ GPIO_SPI2_MOSI_1
#define BROADCOM_AFBR_S50_S2PI_MISO /* PB14 */ GPIO_SPI2_MISO_1
#define BOARD_HAS_CONTROL_STATUS_LEDS 1
#define BOARD_OVERLOAD_LED LED_RED
#define BOARD_ARMED_STATE_LED LED_BLUE
+4
View File
@@ -49,6 +49,7 @@
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/board.h>
@@ -60,6 +61,7 @@
#include <drivers/drv_hrt.h>
#include <drivers/drv_board_led.h>
#include <drivers/drv_watchdog.h>
#include <systemlib/px4_macros.h>
@@ -87,6 +89,8 @@ __END_DECLS
__EXPORT void stm32_boardinitialize(void)
{
watchdog_init();
// Configure CAN interface
stm32_configgpio(GPIO_CAN1_RX);
stm32_configgpio(GPIO_CAN1_TX);
+1
View File
@@ -39,6 +39,7 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
initSPIBus(SPI::Bus::SPI1, {
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}),
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortA, GPIO::Pin4}, SPI::DRDY{GPIO::PortB, GPIO::Pin0}),
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortA, GPIO::Pin4}, SPI::DRDY{GPIO::PortB, GPIO::Pin0}),
initSPIDevice(DRV_FLOW_DEVTYPE_PAW3902, SPI::CS{GPIO::PortB, GPIO::Pin5}, SPI::DRDY{GPIO::PortB, GPIO::Pin2}),
}),
initSPIBus(SPI::Bus::SPI2, {
+13
View File
@@ -0,0 +1,13 @@
include (${CMAKE_CURRENT_LIST_DIR}/uavcan_board_identity)
px4_add_board(
PLATFORM nuttx
VENDOR ark
MODEL can-gps
LABEL canbootloader
TOOLCHAIN arm-none-eabi
ARCHITECTURE cortex-m4
CONSTRAINED_MEMORY
DRIVERS
bootloaders
)
+38
View File
@@ -0,0 +1,38 @@
include (${CMAKE_CURRENT_LIST_DIR}/uavcan_board_identity)
px4_add_board(
PLATFORM nuttx
VENDOR ark
MODEL can-gps
LABEL debug
TOOLCHAIN arm-none-eabi
ARCHITECTURE cortex-m4
CONSTRAINED_MEMORY
ROMFSROOT cannode
UAVCAN_INTERFACES 1
DRIVERS
barometer/bmp388
bootloaders
gps
imu/invensense/icm42688p
magnetometer/bosch/bmm150
safety_button
tone_alarm
uavcannode
MODULES
#ekf2
#load_mon
#sensors
SYSTEMCMDS
i2cdetect
led_control
param
perf
reboot
top
topic_listener
tune_control
uorb
ver
work_queue
)
+38
View File
@@ -0,0 +1,38 @@
include (${CMAKE_CURRENT_LIST_DIR}/uavcan_board_identity)
px4_add_board(
PLATFORM nuttx
VENDOR ark
MODEL can-gps
LABEL default
TOOLCHAIN arm-none-eabi
ARCHITECTURE cortex-m4
#CONSTRAINED_FLASH
CONSTRAINED_MEMORY
ROMFSROOT cannode
UAVCAN_INTERFACES 1
DRIVERS
barometer/bmp388
bootloaders
gps
imu/invensense/icm42688p
magnetometer/bosch/bmm150
safety_button
tone_alarm
uavcannode
MODULES
#ekf2
#load_mon
#sensors
SYSTEMCMDS
#mft
#mtd
param
#perf
#reboot
#system_time
#top
#topic_listener
#ver
#work_queue
)
+13
View File
@@ -0,0 +1,13 @@
{
"board_id": 81,
"magic": "PX4FWv1",
"description": "Firmware for the ARK gps board",
"image": "",
"build_time": 0,
"summary": "ARKGPS",
"version": "0.1",
"image_size": 0,
"image_maxsize": 2080768,
"git_identity": "",
"board_revision": 0
}
@@ -0,0 +1,9 @@
#!/bin/sh
#
# board specific defaults
#------------------------------------------------------------------------------
param set-default CBRK_IO_SAFETY 0
safety_button start
tone_alarm start
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
#
# board sensors init
#------------------------------------------------------------------------------
gps start -d /dev/ttyS0 -p ubx
icm42688p -R 0 -s start
bmp388 -I -b 2 start
bmm150 -I -b 1 start
@@ -0,0 +1,68 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD_CUSTOM=y
CONFIG_ARCH_BOARD_CUSTOM_DIR="../nuttx-config"
CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
CONFIG_ARCH_BOARD_CUSTOM_NAME="px4"
CONFIG_ARCH_CHIP="stm32"
CONFIG_ARCH_CHIP_STM32=y
CONFIG_ARCH_CHIP_STM32F412CE=y
CONFIG_ARCH_INTERRUPTSTACK=4096
CONFIG_ARMV7M_MEMCPY=y
CONFIG_ARMV7M_USEBASEPRI=y
CONFIG_BINFMT_DISABLE=y
CONFIG_BOARD_LOOPSPERMSEC=16717
CONFIG_C99_BOOL8=y
CONFIG_CLOCK_MONOTONIC=y
CONFIG_DEBUG_FULLOPT=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEFAULT_SMALL=y
CONFIG_DISABLE_MOUNTPOINT=y
CONFIG_DISABLE_MQUEUE=y
CONFIG_DISABLE_PTHREAD=y
CONFIG_EXPERIMENTAL=y
CONFIG_FDCLONE_DISABLE=y
CONFIG_FDCLONE_STDIO=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=4096
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
CONFIG_LIB_BOARDCTL=y
CONFIG_MAX_TASKS=0
CONFIG_MM_REGIONS=2
CONFIG_NAME_MAX=0
CONFIG_NUNGET_CHARS=0
CONFIG_NXFONTS_DISABLE_16BPP=y
CONFIG_NXFONTS_DISABLE_1BPP=y
CONFIG_NXFONTS_DISABLE_24BPP=y
CONFIG_NXFONTS_DISABLE_2BPP=y
CONFIG_NXFONTS_DISABLE_32BPP=y
CONFIG_NXFONTS_DISABLE_4BPP=y
CONFIG_NXFONTS_DISABLE_8BPP=y
CONFIG_PREALLOC_TIMERS=0
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_RAM_SIZE=262144
CONFIG_RAM_START=0x20010000
CONFIG_RAW_BINARY=y
CONFIG_SDCLONE_DISABLE=y
CONFIG_SIG_DEFAULT=y
CONFIG_SIG_SIGALRM_ACTION=y
CONFIG_SIG_SIGUSR1_ACTION=y
CONFIG_SIG_SIGUSR2_ACTION=y
CONFIG_STACK_COLORATION=y
CONFIG_START_DAY=30
CONFIG_START_MONTH=11
CONFIG_STDIO_DISABLE_BUFFERING=y
CONFIG_STM32_NOEXT_VECTORS=y
CONFIG_STM32_TIM8=y
CONFIG_TASK_NAME_SIZE=0
CONFIG_USEC_PER_TICK=1000
CONFIG_USERMAIN_STACKSIZE=4096
@@ -0,0 +1,152 @@
/************************************************************************************
* configs/px4fmu/include/board.h
* include/arch/board/board.h
*
* Copyright (C) 2009 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
************************************************************************************/
#include "board_dma_map.h"
#ifndef __ARCH_BOARD_BOARD_H
#define __ARCH_BOARD_BOARD_H
#include <nuttx/config.h>
#ifndef __ASSEMBLY__
# include <stdint.h>
#endif
#include <stm32.h>
/* HSI - 8 MHz RC factory-trimmed
* LSI - 32 KHz RC
* HSE - 8 MHz Crystal
* LSE - not installed
*/
#define STM32_BOARD_USEHSE 1
#define STM32_BOARD_XTAL 8000000
#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL
#define STM32_HSI_FREQUENCY 16000000ul
#define STM32_LSI_FREQUENCY 32000
/* Main PLL Configuration */
#define STM32_PLLCFG_PLLM RCC_PLLCFG_PLLM(8)
#define STM32_PLLCFG_PLLN RCC_PLLCFG_PLLN(384)
#define STM32_PLLCFG_PLLP RCC_PLLCFG_PLLP_4
#define STM32_PLLCFG_PLLQ RCC_PLLCFG_PLLQ(8)
#define STM32_PLLCFG_PLLR RCC_PLLCFG_PLLR(2)
#define STM32_RCC_PLLI2SCFGR_PLLI2SM RCC_PLLI2SCFGR_PLLI2SM(16)
#define STM32_RCC_PLLI2SCFGR_PLLI2SN RCC_PLLI2SCFGR_PLLI2SN(192)
#define STM32_RCC_PLLI2SCFGR_PLLI2SQ RCC_PLLI2SCFGR_PLLI2SQ(2)
#define STM32_RCC_PLLI2SCFGR_PLLI2SR RCC_PLLI2SCFGR_PLLI2SR(2)
#define STM32_RCC_PLLI2SCFGR_PLLI2SSRC RCC_PLLI2SCFGR_PLLI2SSRC(0) /* HSE or HSI depending on PLLSRC of PLLCFGR*/
#define STM32_RCC_DCKCFGR2_CK48MSEL RCC_DCKCFGR2_CK48MSEL_PLL
#define STM32_RCC_DCKCFGR2_FMPI2C1SEL RCC_DCKCFGR2_FMPI2C1SEL_APB
#define STM32_RCC_DCKCFGR2_SDIOSEL RCC_DCKCFGR2_SDIOSEL_48MHZ
#define STM32_SYSCLK_FREQUENCY 96000000ul
/* AHB clock (HCLK) is SYSCLK (96MHz) */
#define STM32_RCC_CFGR_HPRE RCC_CFGR_HPRE_SYSCLK /* HCLK = SYSCLK / 1 */
#define STM32_HCLK_FREQUENCY STM32_SYSCLK_FREQUENCY
#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* Same as above, to satisfy compiler */
/* APB1 clock (PCLK1) is HCLK/2 (48MHz) */
#define STM32_RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */
#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2)
/* Timers driven from APB1 will be twice PCLK1 (see page 112 of reference manual) */
#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY)
#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY)
#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY)
#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY)
#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY)
#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY)
#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY)
/* APB2 clock (PCLK2) is HCLK (96MHz) */
#define STM32_RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_HCLK /* PCLK2 = HCLK */
#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY)
/* Timers driven from APB2 will be PCLK2 since no prescale division */
#define STM32_APB2_TIM1_CLKIN (STM32_PCLK2_FREQUENCY)
#define STM32_APB2_TIM8_CLKIN (STM32_PCLK2_FREQUENCY)
#define STM32_APB2_TIM9_CLKIN (STM32_PCLK2_FREQUENCY)
#define STM32_APB2_TIM10_CLKIN (STM32_PCLK2_FREQUENCY)
#define STM32_APB2_TIM11_CLKIN (STM32_PCLK2_FREQUENCY)
/* Timer Frequencies, if APBx is set to 1, frequency is same to APBx otherwise frequency is 2xAPBx. */
#define BOARD_TIM2_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
#define BOARD_TIM3_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
#define BOARD_TIM4_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
#define BOARD_TIM5_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
#define BOARD_TIM6_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
#define BOARD_TIM7_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
#define BOARD_TIM8_FREQUENCY (2 * STM32_PCLK2_FREQUENCY)
/* Alternate function pin selections ************************************************/
/* UARTs */
#define GPIO_USART1_RX GPIO_USART1_RX_2
#define GPIO_USART1_TX GPIO_USART1_TX_3
#define GPIO_USART2_RX GPIO_USART2_RX_1
#define GPIO_USART2_TX GPIO_USART2_TX_1
/* CAN */
#define GPIO_CAN1_RX GPIO_CAN1_RX_1
#define GPIO_CAN1_TX GPIO_CAN1_TX_1
/* I2C */
#define GPIO_MCU_I2C1_SCL
#define GPIO_MCU_I2C1_SDA
#define GPIO_I2C1_SCL GPIO_I2C1_SCL_1
#define GPIO_I2C1_SDA GPIO_I2C1_SDA_1
#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6)
#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7)
#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1
#define GPIO_I2C2_SDA GPIO_I2C2_SDA_4
#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN9)
#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN10)
/* SPI */
#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1
#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1
#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1
#endif /* __ARCH_BOARD_BOARD_H */
@@ -0,0 +1,43 @@
/****************************************************************************
*
* Copyright (c) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
#pragma once
// DMA1 Channel/Stream Selections
//--------------------------------------------//---------------------------//----------------
// DMA2 Channel/Stream Selections
//--------------------------------------------//---------------------------//----------------
#define DMACHAN_SPI1_RX DMAMAP_SPI1_RX_2 // DMA2, Stream 2, Channel 3
#define DMACHAN_SPI1_TX DMAMAP_SPI1_TX_1 // DMA2, Stream 5, Channel 3
@@ -0,0 +1,164 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_DISABLE_OS_API is not set
# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
# CONFIG_NSH_DISABLEBG is not set
# CONFIG_NSH_DISABLESCRIPT is not set
# CONFIG_NSH_DISABLE_DF is not set
# CONFIG_NSH_DISABLE_EXEC is not set
# CONFIG_NSH_DISABLE_EXIT is not set
# CONFIG_NSH_DISABLE_GET is not set
# CONFIG_NSH_DISABLE_ITEF is not set
# CONFIG_NSH_DISABLE_LOOPS is not set
# CONFIG_NSH_DISABLE_SEMICOLON is not set
# CONFIG_NSH_DISABLE_TIME is not set
# CONFIG_STM32_DMACAPABLE is not set
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD_CUSTOM=y
CONFIG_ARCH_BOARD_CUSTOM_DIR="../nuttx-config"
CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
CONFIG_ARCH_BOARD_CUSTOM_NAME="px4"
CONFIG_ARCH_CHIP="stm32"
CONFIG_ARCH_CHIP_STM32=y
CONFIG_ARCH_CHIP_STM32F412CE=y
CONFIG_ARCH_INTERRUPTSTACK=512
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARMV7M_MEMCPY=y
CONFIG_ARMV7M_USEBASEPRI=y
CONFIG_BOARDCTL_RESET=y
CONFIG_BOARD_LOOPSPERMSEC=16717
CONFIG_BOARD_RESET_ON_ASSERT=2
CONFIG_BUILTIN=y
CONFIG_C99_BOOL8=y
CONFIG_CLOCK_MONOTONIC=y
CONFIG_DEBUG_FULLOPT=y
CONFIG_DEBUG_HARDFAULT_ALERT=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEFAULT_SMALL=y
CONFIG_DEV_FIFO_SIZE=0
CONFIG_DEV_PIPE_MAXSIZE=1024
CONFIG_DEV_PIPE_SIZE=70
CONFIG_FDCLONE_STDIO=y
CONFIG_FS_BINFS=y
CONFIG_FS_CROMFS=y
CONFIG_FS_FAT=y
CONFIG_FS_FATTIME=y
CONFIG_FS_PROCFS=y
CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y
CONFIG_FS_PROCFS_REGISTER=y
CONFIG_FS_ROMFS=y
CONFIG_GRAN=y
CONFIG_GRAN_INTR=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
CONFIG_MEMSET_64BIT=y
CONFIG_MEMSET_OPTSPEED=y
CONFIG_MM_REGIONS=2
CONFIG_MTD=y
CONFIG_MTD_BYTE_WRITE=y
CONFIG_MTD_PARTITION=y
CONFIG_MTD_RAMTRON=y
CONFIG_NAME_MAX=40
CONFIG_NFILE_DESCRIPTORS=12
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_ARCHROMFS=y
CONFIG_NSH_ARGCAT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_CMDPARMS=y
CONFIG_NSH_CROMFSETC=y
CONFIG_NSH_DISABLE_IFCONFIG=y
CONFIG_NSH_DISABLE_IFUPDOWN=y
CONFIG_NSH_DISABLE_MB=y
CONFIG_NSH_DISABLE_MH=y
CONFIG_NSH_DISABLE_MW=y
CONFIG_NSH_DISABLE_TELNETD=y
CONFIG_NSH_LINELEN=128
CONFIG_NSH_MAXARGUMENTS=15
CONFIG_NSH_NESTDEPTH=8
CONFIG_NSH_QUOTE=y
CONFIG_NSH_ROMFSETC=y
CONFIG_NSH_ROMFSSECTSIZE=128
CONFIG_NSH_STRERROR=y
CONFIG_NSH_VARS=y
CONFIG_PIPES=y
CONFIG_PREALLOC_TIMERS=50
CONFIG_PRIORITY_INHERITANCE=y
CONFIG_PTHREAD_MUTEX_ROBUST=y
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_RAMTRON_SETSPEED=y
CONFIG_RAMTRON_WRITEWAIT=y
CONFIG_RAM_SIZE=262144
CONFIG_RAM_START=0x20000000
CONFIG_RAW_BINARY=y
CONFIG_RTC_DATETIME=y
CONFIG_SCHED_ATEXIT=y
CONFIG_SCHED_HPWORK=y
CONFIG_SCHED_HPWORKPRIORITY=249
CONFIG_SCHED_HPWORKSTACKSIZE=1280
CONFIG_SCHED_INSTRUMENTATION=y
CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y
CONFIG_SCHED_LPWORK=y
CONFIG_SCHED_LPWORKPRIORITY=50
CONFIG_SCHED_LPWORKSTACKSIZE=1632
CONFIG_SCHED_WAITPID=y
CONFIG_SEM_NNESTPRIO=8
CONFIG_SEM_PREALLOCHOLDERS=0
CONFIG_SERIAL_TERMIOS=y
CONFIG_SIG_DEFAULT=y
CONFIG_SIG_SIGALRM_ACTION=y
CONFIG_SIG_SIGUSR1_ACTION=y
CONFIG_SIG_SIGUSR2_ACTION=y
CONFIG_SIG_SIGWORK=4
CONFIG_STACK_COLORATION=y
CONFIG_START_DAY=30
CONFIG_START_MONTH=11
CONFIG_STDIO_BUFFER_SIZE=32
CONFIG_STM32_ADC1=y
CONFIG_STM32_DISABLE_IDLE_SLEEP_DURING_DEBUG=y
CONFIG_STM32_DMA1=y
CONFIG_STM32_DMA2=y
CONFIG_STM32_FLASH_PREFETCH=y
CONFIG_STM32_FLOWCONTROL_BROKEN=y
CONFIG_STM32_I2C1=y
CONFIG_STM32_I2C2=y
CONFIG_STM32_JTAG_SW_ENABLE=y
CONFIG_STM32_PWR=y
CONFIG_STM32_RTC=y
CONFIG_STM32_RTC_HSECLOCK=y
CONFIG_STM32_RTC_MAGIC=0xfacefeee
CONFIG_STM32_RTC_MAGIC_REG=1
CONFIG_STM32_RTC_MAGIC_TIME_SET=0xfacefeef
CONFIG_STM32_SERIALBRK_BSDCOMPAT=y
CONFIG_STM32_SERIAL_DISABLE_REORDERING=y
CONFIG_STM32_SPI1=y
CONFIG_STM32_SPI1_DMA=y
CONFIG_STM32_SPI1_DMA_BUFFER=1024
CONFIG_STM32_SPI_DMA=y
CONFIG_STM32_TIM8=y
CONFIG_STM32_USART1=y
CONFIG_STM32_USART2=y
CONFIG_STM32_USART_BREAKS=y
CONFIG_STM32_WWDG=y
CONFIG_SYSTEM_NSH=y
CONFIG_TASK_NAME_SIZE=24
CONFIG_USART1_BAUD=57600
CONFIG_USART1_RXBUFSIZE=600
CONFIG_USART1_TXBUFSIZE=1100
CONFIG_USART2_BAUD=57600
CONFIG_USART2_RXBUFSIZE=600
CONFIG_USART2_SERIAL_CONSOLE=y
CONFIG_USART2_TXBUFSIZE=1100
CONFIG_USEC_PER_TICK=1000
CONFIG_USERMAIN_STACKSIZE=2624
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -0,0 +1,134 @@
/****************************************************************************
* nuttx-config/scripts/canbootloader_script.ld
*
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/* The STM32F412 has 512Kb of FLASH beginning at address 0x0800:0000 and
* 256Kb of SRAM. SRAM is split up into three blocks:
*
* 1) 112Kb of SRAM beginning at address 0x2000:0000
* 2) 16Kb of SRAM beginning at address 0x2001:c000
* 3) 64Kb of SRAM beginning at address 0x2002:0000
* 4) 64Kb of TCM SRAM beginning at address 0x1000:0000
*
* When booting from FLASH, FLASH memory is aliased to address 0x0000:0000
* where the code expects to begin execution by jumping to the entry point in
* the 0x0800:0000 address range.
*
* The first 0x10000 of flash is reserved for the bootloader.
*/
MEMORY
{
flash (rx) : ORIGIN = 0x08000000, LENGTH = 32K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 192K
}
OUTPUT_ARCH(arm)
ENTRY(__start) /* treat __start as the anchor for dead code stripping */
EXTERN(_vectors) /* force the vectors to be included in the output */
/*
* Ensure that abort() is present in the final object. The exception handling
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
*/
EXTERN(abort)
SECTIONS
{
.text : {
_stext = ABSOLUTE(.);
*(.vectors)
*(.text .text.*)
*(.fixup)
*(.gnu.warning)
*(.rodata .rodata.*)
*(.gnu.linkonce.t.*)
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
} > flash
/*
* Init functions (static constructors and the like)
*/
.init_section : {
_sinit = ABSOLUTE(.);
KEEP(*(.init_array .init_array.*))
_einit = ABSOLUTE(.);
} > flash
.ARM.extab : {
*(.ARM.extab*)
} > flash
__exidx_start = ABSOLUTE(.);
.ARM.exidx : {
*(.ARM.exidx*)
} > flash
__exidx_end = ABSOLUTE(.);
_eronly = ABSOLUTE(.);
.data : {
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.gnu.linkonce.d.*)
CONSTRUCTORS
_edata = ABSOLUTE(.);
} > sram AT > flash
.bss : {
_sbss = ABSOLUTE(.);
*(.bss .bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
} > sram
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
}
@@ -0,0 +1,146 @@
/****************************************************************************
* scripts/ld.script
*
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/* The STM32F412 has 512Kb of FLASH beginning at address 0x0800:0000 and
* 256Kb of SRAM. SRAM is split up into three blocks:
*
* 1) 112Kb of SRAM beginning at address 0x2000:0000
* 2) 16Kb of SRAM beginning at address 0x2001:c000
* 3) 64Kb of SRAM beginning at address 0x2002:0000
* 4) 64Kb of TCM SRAM beginning at address 0x1000:0000
*
* When booting from FLASH, FLASH memory is aliased to address 0x0000:0000
* where the code expects to begin execution by jumping to the entry point in
* the 0x0800:0000 address range.
*
* The first 0x10000 of flash is reserved for the bootloader.
*/
MEMORY
{
flash (rx) : ORIGIN = 0x08010000, LENGTH = 448K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 192K
}
OUTPUT_ARCH(arm)
ENTRY(__start) /* treat __start as the anchor for dead code stripping */
EXTERN(_vectors) /* force the vectors to be included in the output */
/*
* Ensure that abort() is present in the final object. The exception handling
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
*/
EXTERN(abort)
EXTERN(_bootdelay_signature)
SECTIONS
{
.text : {
_stext = ABSOLUTE(.);
*(.vectors)
. = ALIGN(8);
/*
* This section positions the app_descriptor_t used
* by the make_can_boot_descriptor.py tool to set
* the application image's descriptor so that the
* uavcan bootloader has the ability to validate the
* image crc, size etc
*/
KEEP(*(.app_descriptor))
*(.text .text.*)
*(.fixup)
*(.gnu.warning)
*(.rodata .rodata.*)
*(.gnu.linkonce.t.*)
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
} > flash
/*
* Init functions (static constructors and the like)
*/
.init_section : {
_sinit = ABSOLUTE(.);
KEEP(*(.init_array .init_array.*))
_einit = ABSOLUTE(.);
} > flash
.ARM.extab : {
*(.ARM.extab*)
} > flash
__exidx_start = ABSOLUTE(.);
.ARM.exidx : {
*(.ARM.exidx*)
} > flash
__exidx_end = ABSOLUTE(.);
_eronly = ABSOLUTE(.);
.data : {
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.gnu.linkonce.d.*)
CONSTRUCTORS
_edata = ABSOLUTE(.);
} > sram AT > flash
.bss : {
_sbss = ABSOLUTE(.);
*(.bss .bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
} > sram
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
}
+68
View File
@@ -0,0 +1,68 @@
############################################################################
#
# Copyright (c) 2020 PX4 Development Team. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name PX4 nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
if("${PX4_BOARD_LABEL}" STREQUAL "canbootloader")
add_library(drivers_board
boot_config.h
boot.c
led.c
led.h
)
target_link_libraries(drivers_board
PRIVATE
nuttx_arch
nuttx_drivers
canbootloader
)
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/canbootloader)
else()
add_library(drivers_board
can.c
i2c.cpp
init.c
led.c
spi.cpp
)
target_link_libraries(drivers_board
PRIVATE
arch_spi
drivers__led # drv_led_start
nuttx_arch
nuttx_drivers
px4_layer
arch_io_pins
)
endif()
+115
View File
@@ -0,0 +1,115 @@
/****************************************************************************
*
* Copyright (c) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* @file board_config.h
*
* board internal definitions
*/
#pragma once
#include <px4_platform_common/px4_config.h>
#include <nuttx/compiler.h>
#include <stdint.h>
/* BUTTON */
#define GPIO_BTN_SAFETY /* PB15 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTB|GPIO_PIN15)
/* Safety LED */
#define GPIO_LED_SAFETY /* PA1 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN1)
/* Tone alarm output. */
#define TONE_ALARM_TIMER 2 /* timer 2 */
#define TONE_ALARM_CHANNEL 1 /* channel 1 */
#define GPIO_TONE_ALARM_IDLE /* PA0 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN0)
#define GPIO_TONE_ALARM /* PA0 */ (GPIO_ALT|GPIO_AF1|GPIO_SPEED_2MHz|GPIO_PUSHPULL|GPIO_PORTA|GPIO_PIN0)
/* CAN Silent mode control */
#define GPIO_CAN1_SILENT_S0 /* PB12 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN12)
/* CAN termination software control */
#define GPIO_CAN1_TERMINATION /* PB13 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN13)
/* ICM42688p FSYNC */
#define GPIO_42688P_FSYNC /* PB8 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN8)
/* Boot config */
#define GPIO_BOOT_CONFIG /* PC15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN15|GPIO_EXTI)
/* LEDs are driven with open drain to support Anode to 5V or 3.3V */
#define GPIO_TIM1_CH1 /* PA8 */ (GPIO_TIM1_CH1_1|GPIO_OPENDRAIN|GPIO_SPEED_2MHz)
#define GPIO_TIM1_CH2 /* PA9 */ (GPIO_TIM1_CH2_1|GPIO_OPENDRAIN|GPIO_SPEED_2MHz)
#define GPIO_TIM1_CH3 /* PA10 */ (GPIO_TIM1_CH3_1|GPIO_OPENDRAIN|GPIO_SPEED_2MHz)
#define GPIO_I2C1_SCL_RESET /* PB6 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN6)
#define GPIO_I2C1_SDA_RESET /* PB7 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN7)
#define GPIO_I2C2_SCL_RESET /* PB10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN10)
#define GPIO_I2C2_SDA_RESET /* PB9 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN9)
#define FLASH_BASED_PARAMS
/* High-resolution timer */
#define HRT_TIMER 3 /* use timer 3 for the HRT */
#define HRT_TIMER_CHANNEL 4 /* use capture/compare channel 4 */
#define PX4_GPIO_INIT_LIST { \
GPIO_BTN_SAFETY, \
GPIO_LED_SAFETY, \
GPIO_I2C1_SCL_RESET, \
GPIO_I2C1_SDA_RESET, \
GPIO_I2C2_SCL_RESET, \
GPIO_I2C2_SDA_RESET, \
GPIO_42688P_FSYNC, \
GPIO_BOOT_CONFIG, \
GPIO_CAN1_TX, \
GPIO_CAN1_RX, \
GPIO_CAN1_SILENT_S0, \
GPIO_CAN1_TERMINATION, \
}
__BEGIN_DECLS
#define BOARD_HAS_N_S_RGB_LED 1
#define BOARD_MAX_LEDS BOARD_HAS_N_S_RGB_LED
#ifndef __ASSEMBLY__
extern void stm32_spiinitialize(void);
#include <px4_platform_common/board_common.h>
#endif /* __ASSEMBLY__ */
__END_DECLS
+188
View File
@@ -0,0 +1,188 @@
/****************************************************************************
*
* Copyright (c) 2021 PX4 Development Team. All rights reserved.
* Author: Ben Dyer <ben_dyer@mac.com>
* Pavel Kirienko <pavel.kirienko@zubax.com>
* David Sidrane <david_s5@nscdg.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <px4_config.h>
#include <stdint.h>
#include "boot_config.h"
#include "board.h"
#include <debug.h>
#include <string.h>
#include <arch/board/board.h>
#include <nuttx/board.h>
#include "led.h"
/************************************************************************************
* Name: stm32_boardinitialize
*
* Description:
* All STM32 architectures must provide the following entry point. This entry point
* is called early in the initialization -- after all memory has been configured
* and mapped but before any devices have been initialized.
*
************************************************************************************/
__EXPORT void stm32_boardinitialize(void)
{
putreg32(getreg32(STM32_RCC_APB1ENR) | RCC_APB1ENR_CAN1EN, STM32_RCC_APB1ENR);
stm32_configgpio(GPIO_CAN1_RX);
stm32_configgpio(GPIO_CAN1_TX);
stm32_configgpio(GPIO_CAN1_SILENT_S0);
stm32_configgpio(GPIO_CAN1_TERMINATION);
putreg32(getreg32(STM32_RCC_APB1RSTR) | RCC_APB1RSTR_CAN1RST, STM32_RCC_APB1RSTR);
putreg32(getreg32(STM32_RCC_APB1RSTR) & ~RCC_APB1RSTR_CAN1RST, STM32_RCC_APB1RSTR);
#if defined(OPT_WAIT_FOR_GETNODEINFO_JUMPER_GPIO)
stm32_configgpio(GPIO_GETNODEINFO_JUMPER);
#endif
}
/************************************************************************************
* Name: board_deinitialize
*
* Description:
* This function is called by the bootloader code prior to booting
* the application. Is should place the HW into an benign initialized state.
*
************************************************************************************/
void board_deinitialize(void)
{
putreg32(getreg32(STM32_RCC_APB1RSTR) | RCC_APB1RSTR_CAN1RST, STM32_RCC_APB1RSTR);
}
/****************************************************************************
* Name: board_get_product_name
*
* Description:
* Called to retrieve the product name. The returned value is a assumed
* to be written to a pascal style string that will be length prefixed
* and not null terminated
*
* Input Parameters:
* product_name - A pointer to a buffer to write the name.
* maxlen - The maximum number of charter that can be written
*
* Returned Value:
* The length of characters written to the buffer.
*
****************************************************************************/
uint8_t board_get_product_name(uint8_t *product_name, size_t maxlen)
{
DEBUGASSERT(maxlen > UAVCAN_STRLEN(HW_UAVCAN_NAME));
memcpy(product_name, HW_UAVCAN_NAME, UAVCAN_STRLEN(HW_UAVCAN_NAME));
return UAVCAN_STRLEN(HW_UAVCAN_NAME);
}
/****************************************************************************
* Name: board_get_hardware_version
*
* Description:
* Called to retrieve the hardware version information. The function
* will first initialize the the callers struct to all zeros.
*
* Input Parameters:
* hw_version - A pointer to a uavcan_hardwareversion_t.
*
* Returned Value:
* Length of the unique_id
*
****************************************************************************/
size_t board_get_hardware_version(uavcan_HardwareVersion_t *hw_version)
{
memset(hw_version, 0, sizeof(uavcan_HardwareVersion_t));
hw_version->major = HW_VERSION_MAJOR;
hw_version->minor = HW_VERSION_MINOR;
return board_get_mfguid(*(mfguid_t *) hw_version->unique_id);
}
/****************************************************************************
* Name: board_indicate
*
* Description:
* Provides User feedback to indicate the state of the bootloader
* on board specific hardware.
*
* Input Parameters:
* indication - A member of the uiindication_t
*
* Returned Value:
* None
*
****************************************************************************/
#define led(n, code, r , g , b, h) {.red = (r),.green = (g), .blue = (b),.hz = (h)}
typedef begin_packed_struct struct led_t {
uint8_t red;
uint8_t green;
uint8_t blue;
uint8_t hz;
} end_packed_struct led_t;
static const led_t i2l[] = {
led(0, off, 0, 0, 0, 0),
led(1, reset, 128, 128, 128, 30),
led(2, autobaud_start, 0, 128, 0, 1),
led(3, autobaud_end, 0, 128, 0, 2),
led(4, allocation_start, 0, 0, 64, 2),
led(5, allocation_end, 0, 128, 64, 3),
led(6, fw_update_start, 32, 128, 64, 3),
led(7, fw_update_erase_fail, 32, 128, 32, 3),
led(8, fw_update_invalid_response, 64, 0, 0, 1),
led(9, fw_update_timeout, 64, 0, 0, 2),
led(a, fw_update_invalid_crc, 64, 0, 0, 4),
led(b, jump_to_app, 0, 128, 0, 10),
};
void board_indicate(uiindication_t indication)
{
rgb_led(i2l[indication].red,
i2l[indication].green,
i2l[indication].blue,
i2l[indication].hz);
}
+130
View File
@@ -0,0 +1,130 @@
/****************************************************************************
*
* Copyright (c) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/*
* @file boot_config.h
*
* bootloader definitions that configures the behavior and options
* of the Boot loader
* This file is relies on the parent folder's boot_config.h file and defines
* different usages of the hardware for bootloading
*/
#pragma once
/************************************************************************************
* Included Files
************************************************************************************/
/* Bring in the board_config.h definitions
* todo:make this be pulled in from a targed's build
* files in nuttx*/
#include "board_config.h"
#include "uavcan.h"
#include <nuttx/compiler.h>
#include <stdint.h>
#include <stm32_flash.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define OPT_PREFERRED_NODE_ID ANY_NODE_ID
//todo:wrap OPT_x in in ifdefs for command line definitions
#define OPT_TBOOT_MS 5000
#define OPT_NODE_STATUS_RATE_MS 800
#define OPT_NODE_INFO_RATE_MS 50
#define OPT_BL_NUMBER_TIMERS 7
/*
* This Option set is set to 1 ensure a provider of firmware has an
* opportunity update the node's firmware.
* This Option is the default policy and can be overridden by
* a jumper
* When this Policy is set, the node will ignore tboot and
* wait indefinitely for a GetNodeInfo request before booting.
*
* OPT_WAIT_FOR_GETNODEINFO_JUMPER_GPIO_INVERT is used to allow
* the polarity of the jumper to be True Active
*
* wait OPT_WAIT_FOR_GETNODEINFO OPT_WAIT_FOR_GETNODEINFO_JUMPER_GPIO
* Jumper
* yes 1 0 x
* yes 1 1 Active
* no 1 1 Not Active
* no 0 0 X
* yes 0 1 Active
* no 0 1 Not Active
*
*/
#define OPT_WAIT_FOR_GETNODEINFO 0
#define OPT_WAIT_FOR_GETNODEINFO_JUMPER_GPIO 1
#define OPT_WAIT_FOR_GETNODEINFO_JUMPER_GPIO_INVERT 0
#define OPT_ENABLE_WD 1
#define OPT_RESTART_TIMEOUT_MS 20000
/* Reserved for the Booloader */
#define OPT_BOOTLOADER_SIZE_IN_K (1024*64)
/* Reserved for the application out of the total
* system flash minus the BOOTLOADER_SIZE_IN_K
*/
#define OPT_APPLICATION_RESERVER_IN_K 0
#define OPT_APPLICATION_IMAGE_OFFSET OPT_BOOTLOADER_SIZE_IN_K
#define OPT_APPLICATION_IMAGE_LENGTH (FLASH_SIZE-(OPT_BOOTLOADER_SIZE_IN_K+OPT_APPLICATION_RESERVER_IN_K))
#define FLASH_BASE STM32_FLASH_BASE
#define FLASH_SIZE STM32_FLASH_SIZE
#define APPLICATION_LOAD_ADDRESS (FLASH_BASE + OPT_APPLICATION_IMAGE_OFFSET)
#define APPLICATION_SIZE (FLASH_SIZE-OPT_APPLICATION_IMAGE_OFFSET)
#define APPLICATION_LAST_8BIT_ADDRRESS ((uint8_t *)((APPLICATION_LOAD_ADDRESS+APPLICATION_SIZE)-sizeof(uint8_t)))
#define APPLICATION_LAST_32BIT_ADDRRESS ((uint32_t *)((APPLICATION_LOAD_ADDRESS+APPLICATION_SIZE)-sizeof(uint32_t)))
#define APPLICATION_LAST_64BIT_ADDRRESS ((uint64_t *)((APPLICATION_LOAD_ADDRESS+APPLICATION_SIZE)-sizeof(uint64_t)))
/* If this board uses big flash that have large sectors */
#define OPT_USE_YIELD
/* Bootloader Option*****************************************************************
*
*/
#define GPIO_GETNODEINFO_JUMPER (GPIO_BOOT_CONFIG & ~GPIO_EXTI)
+130
View File
@@ -0,0 +1,130 @@
/****************************************************************************
*
* Copyright (C) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* @file can.c
*
* Board-specific CAN functions.
*/
/************************************************************************************
* Included Files
************************************************************************************/
#include <px4_platform_common/px4_config.h>
#include <errno.h>
#include <debug.h>
#include <nuttx/can/can.h>
#include <arch/board/board.h>
#include "chip.h"
#include "arm_arch.h"
#include "stm32.h"
#include "stm32_can.h"
#include "board_config.h"
#ifdef CONFIG_CAN
/************************************************************************************
* Pre-processor Definitions
************************************************************************************/
/* Configuration ********************************************************************/
#if defined(CONFIG_STM32_CAN1) && defined(CONFIG_STM32_CAN2)
# warning "Both CAN1 and CAN2 are enabled. Assuming only CAN1."
# undef CONFIG_STM32_CAN2
#endif
#ifdef CONFIG_STM32_CAN1
# define CAN_PORT 1
#else
# define CAN_PORT 2
#endif
/************************************************************************************
* Private Functions
************************************************************************************/
/************************************************************************************
* Public Functions
************************************************************************************/
int can_devinit(void);
/************************************************************************************
* Name: can_devinit
*
* Description:
* All STM32 architectures must provide the following interface to work with
* examples/can.
*
************************************************************************************/
int can_devinit(void)
{
static bool initialized = false;
struct can_dev_s *can;
int ret;
/* Check if we have already initialized */
if (!initialized) {
/* Call stm32_caninitialize() to get an instance of the CAN interface */
can = stm32_caninitialize(CAN_PORT);
if (can == NULL) {
canerr("ERROR: Failed to get CAN interface\n");
return -ENODEV;
}
/* Register the CAN driver at "/dev/can0" */
ret = can_register("/dev/can0", can);
if (ret < 0) {
canerr("ERROR: can_register failed: %d\n", ret);
return ret;
}
/* Now we are initialized */
initialized = true;
}
return OK;
}
#endif
+39
View File
@@ -0,0 +1,39 @@
/****************************************************************************
*
* Copyright (C) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
#include <px4_arch/i2c_hw_description.h>
constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = {
initI2CBusInternal(1),
initI2CBusInternal(2),
};
+148
View File
@@ -0,0 +1,148 @@
/****************************************************************************
*
* Copyright (c) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* @file init.c
*
* board specific early startup code. This file implements the
* board_app_initialize() function that is called early by nsh during startup.
*
* Code here is run before the rcS script is invoked; it should start required
* subsystems and perform board-specific initialization.
*/
#include <px4_platform_common/px4_config.h>
#include <px4_platform_common/tasks.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/board.h>
#include <stm32.h>
#include "board_config.h"
#include <stm32_uart.h>
#include <arch/board/board.h>
#include <drivers/drv_hrt.h>
#include <drivers/drv_board_led.h>
#include <drivers/drv_watchdog.h>
#include <systemlib/px4_macros.h>
#include <px4_platform_common/init.h>
#include <px4_platform/gpio.h>
# if defined(FLASH_BASED_PARAMS)
# include <parameters/flashparams/flashfs.h>
#endif
/************************************************************************************
* Name: stm32_boardinitialize
*
* Description:
* All STM32 architectures must provide the following entry point. This entry point
* is called early in the initialization -- after all memory has been configured
* and mapped but before any devices have been initialized.
*
************************************************************************************/
__EXPORT void stm32_boardinitialize(void)
{
watchdog_init();
/* configure pins */
const uint32_t gpio[] = PX4_GPIO_INIT_LIST;
px4_gpio_init(gpio, arraySize(gpio));
// Configure SPI all interfaces GPIO & enable power.
stm32_spiinitialize();
}
/****************************************************************************
* Name: board_app_initialize
*
* Description:
* Perform application specific initialization. This function is never
* called directly from application code, but only indirectly via the
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
*
* Input Parameters:
* arg - The boardctl() argument is passed to the board_app_initialize()
* implementation without modification. The argument has no
* meaning to NuttX; the meaning of the argument is a contract
* between the board-specific initalization logic and the the
* matching application logic. The value cold be such things as a
* mode enumeration value, a set of DIP switch switch settings, a
* pointer to configuration data read from a file or serial FLASH,
* or whatever you would like to do with it. Every implementation
* should accept zero/NULL as a default configuration.
*
* Returned Value:
* Zero (OK) is returned on success; a negated errno value is returned on
* any failure to indicate the nature of the failure.
*
****************************************************************************/
__EXPORT int board_app_initialize(uintptr_t arg)
{
px4_platform_init();
#if defined(FLASH_BASED_PARAMS)
static sector_descriptor_t params_sector_map[] = {
{2, 16 * 1024, 0x08008000},
{3, 16 * 1024, 0x0800C000},
{0, 0, 0},
};
/* Initialize the flashfs layer to use heap allocated memory */
int result = parameter_flashfs_init(params_sector_map, NULL, 0);
if (result != OK) {
syslog(LOG_ERR, "[boot] FAILED to init params in FLASH %d\n", result);
return -ENODEV;
}
#endif // FLASH_BASED_PARAMS
/* Configure the HW based on the manifest */
px4_platform_configure();
return OK;
}
+124
View File
@@ -0,0 +1,124 @@
/****************************************************************************
*
* Copyright (c) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* @file led.c
*
* LED backend.
*/
#include <px4_platform_common/px4_config.h>
#include <stdbool.h>
#include "chip.h"
#include "stm32_gpio.h"
#include "board_config.h"
#include <nuttx/board.h>
#include <arch/board/board.h>
#include "led.h"
#define TMR_BASE STM32_TIM1_BASE
#define TMR_FREQUENCY STM32_APB2_TIM1_CLKIN
#define TMR_REG(o) (TMR_BASE+(o))
void rgb_led(int r, int g, int b, int freqs)
{
long fosc = TMR_FREQUENCY;
long prescale = 2048;
long p1s = fosc / prescale;
long p0p5s = p1s / 2;
uint16_t val;
static bool once = 0;
if (!once) {
once = 1;
/* Enabel Clock to Block */
modifyreg32(STM32_RCC_APB2ENR, 0, RCC_APB2ENR_TIM1EN);
/* Reload */
val = getreg16(TMR_REG(STM32_BTIM_EGR_OFFSET));
val |= ATIM_EGR_UG;
putreg16(val, TMR_REG(STM32_BTIM_EGR_OFFSET));
/* Set Prescaler STM32_TIM_SETCLOCK */
putreg16(prescale, TMR_REG(STM32_BTIM_PSC_OFFSET));
/* Enable STM32_TIM_SETMODE*/
putreg16(ATIM_CR1_CEN | ATIM_CR1_ARPE, TMR_REG(STM32_BTIM_CR1_OFFSET));
putreg16((ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) | ATIM_CCMR1_OC1PE |
(ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC2M_SHIFT) | ATIM_CCMR1_OC2PE, TMR_REG(STM32_GTIM_CCMR1_OFFSET));
putreg16((ATIM_CCMR_MODE_PWM1 << ATIM_CCMR2_OC3M_SHIFT) | ATIM_CCMR2_OC3PE, TMR_REG(STM32_GTIM_CCMR2_OFFSET));
putreg16(ATIM_CCER_CC3E | ATIM_CCER_CC3P |
ATIM_CCER_CC2E | ATIM_CCER_CC2P |
ATIM_CCER_CC1E | ATIM_CCER_CC1P, TMR_REG(STM32_GTIM_CCER_OFFSET));
stm32_configgpio(GPIO_TIM1_CH1);
stm32_configgpio(GPIO_TIM1_CH2);
stm32_configgpio(GPIO_TIM1_CH3);
/* master output enable = on */
putreg16(ATIM_BDTR_MOE, (TMR_REG(STM32_ATIM_BDTR_OFFSET)));
}
long p = freqs == 0 ? p1s : p1s / freqs;
putreg32(p, TMR_REG(STM32_BTIM_ARR_OFFSET));
p = freqs == 0 ? p1s + 1 : p0p5s / freqs;
putreg32((r * p) / 255, TMR_REG(STM32_GTIM_CCR1_OFFSET));
putreg32((g * p) / 255, TMR_REG(STM32_GTIM_CCR2_OFFSET));
putreg32((b * p) / 255, TMR_REG(STM32_GTIM_CCR3_OFFSET));
val = getreg16(TMR_REG(STM32_BTIM_CR1_OFFSET));
if (freqs == 0) {
val &= ~ATIM_CR1_CEN;
} else {
val |= ATIM_CR1_CEN;
}
putreg16(val, TMR_REG(STM32_BTIM_CR1_OFFSET));
}
+37
View File
@@ -0,0 +1,37 @@
/****************************************************************************
*
* Copyright (C) 2015 PX4 Development Team. All rights reserved.
* Author: David Sidrane<david_s5@nscdg.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
__BEGIN_DECLS
void rgb_led(int r, int g, int b, int freqs);
__END_DECLS
+44
View File
@@ -0,0 +1,44 @@
/****************************************************************************
*
* Copyright (C) 2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
#include <px4_arch/spi_hw_description.h>
#include <drivers/drv_sensor.h>
#include <nuttx/spi/spi.h>
constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
initSPIBus(SPI::Bus::SPI1, {
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortB, GPIO::Pin0}, SPI::DRDY{GPIO::PortB, GPIO::Pin1}),
}),
};
static constexpr bool unused = validateSPIConfig(px4_spi_buses);
+17
View File
@@ -0,0 +1,17 @@
# UAVCAN boot loadable Module ID
set(uavcanblid_sw_version_major 0)
set(uavcanblid_sw_version_minor 1)
add_definitions(
-DAPP_VERSION_MAJOR=${uavcanblid_sw_version_major}
-DAPP_VERSION_MINOR=${uavcanblid_sw_version_minor}
)
set(uavcanblid_hw_version_major 0)
set(uavcanblid_hw_version_minor 81)
set(uavcanblid_name "\"org.ark.can-gps\"")
add_definitions(
-DHW_UAVCAN_NAME=${uavcanblid_name}
-DHW_VERSION_MAJOR=${uavcanblid_hw_version_major}
-DHW_VERSION_MINOR=${uavcanblid_hw_version_minor}
)
+1
View File
@@ -54,6 +54,7 @@ px4_add_board(
pwm_out_sim
qshell/posix
rc_input
smart_battery/batmon
#telemetry # all available telemetry drivers
MODULES
airspeed_selector
+1
View File
@@ -53,6 +53,7 @@ px4_add_board(
pwm_out_sim
qshell/posix
rc_input
smart_battery/batmon
#telemetry # all available telemetry drivers
MODULES
airspeed_selector
+2 -1
View File
@@ -45,6 +45,7 @@ px4_add_board(
rc_input
roboclaw
rpm
smart_battery/batmon
telemetry # all available telemetry drivers
#tone_alarm
uavcan
@@ -114,7 +115,7 @@ px4_add_board(
work_queue
EXAMPLES
fake_gps
#fake_gyro
#fake_imu
#fake_magnetometer
#fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
#hello
@@ -143,6 +143,7 @@ CONFIG_NSH_STRERROR=y
CONFIG_NSH_TELNET=y
CONFIG_NSH_TELNET_LOGIN=y
CONFIG_NSH_VARS=y
CONFIG_OTG_ID_GPIO_DISABLE=y
CONFIG_PIPES=y
CONFIG_PREALLOC_TIMERS=50
CONFIG_PRIORITY_INHERITANCE=y
+2 -1
View File
@@ -52,6 +52,7 @@
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/config.h>
#include <nuttx/board.h>
@@ -90,7 +91,7 @@ static int configure_switch(void);
__EXPORT void board_on_reset(int status)
{
for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) {
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT_PULL_DOWN(io_timer_channel_get_as_pwm_input(i)));
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i)));
}
if (status >= 0) {
+2 -1
View File
@@ -33,6 +33,7 @@ px4_add_board(
magnetometer/hmc5883
pwm_out_sim
rc_input
smart_battery/batmon
#telemetry # all available telemetry drivers
MODULES
airspeed_selector
@@ -95,7 +96,7 @@ px4_add_board(
EXAMPLES
dyn_hello # dynamically loading modules example
fake_gps
fake_gyro
fake_imu
fake_magnetometer
fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
hello
+1
View File
@@ -53,6 +53,7 @@
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/board.h>
#include <nuttx/analog/adc.h>
@@ -286,9 +286,6 @@ Syslink::task_main()
_memory = new SyslinkMemory(this);
_memory->init();
_battery.reset();
// int ret;
/* Open serial port */
@@ -441,7 +438,7 @@ Syslink::handle_message(syslink_message_t *msg)
px4_sem_post(&memory_sem);
} else {
PX4_INFO("GOT %d", msg->type);
PX4_INFO("GOT %" PRIu8, msg->type);
}
//Send queued messages
@@ -609,7 +606,7 @@ Syslink::handle_raw_other(syslink_message_t *sys)
if (c->port == CRTP_PORT_LOG) {
PX4_INFO("Log: %d %d", c->channel, c->data[0]);
PX4_INFO("Log: %" PRIu8 " %" PRIu8, c->channel, c->data[0]);
if (c->channel == 0) { // Table of Contents Access
@@ -632,7 +629,7 @@ Syslink::handle_raw_other(syslink_message_t *sys)
uint8_t cmd = c->data[0];
PX4_INFO("Responding to cmd: %d", cmd);
PX4_INFO("Responding to cmd: %" PRIu8, cmd);
c->data[2] = 0; // Success
c->size = 3 + 1;
@@ -673,7 +670,7 @@ Syslink::handle_raw_other(syslink_message_t *sys)
}
} else {
PX4_INFO("Got raw: %d", c->port);
PX4_INFO("Got raw: %" PRIu8, c->port);
}
}
@@ -772,13 +769,13 @@ void status()
printf("%i: ROM ID: ", i);
for (int idi = 0; idi < idlen; idi++) {
printf("%02X", id[idi]);
printf("%02" PRIX8, id[idi]);
}
deck_descriptor_t desc;
read(deckfd, &desc, sizeof(desc));
printf(", VID: %02X , PID: %02X\n", desc.header, desc.vendorId, desc.productId);
printf("HDR:%02" PRIx8 ", VID: %02" PRIx8 " , PID: %02" PRIx8 "\n", desc.header, desc.vendorId, desc.productId);
// Print pages of memory
for (size_t di = 0; di < sizeof(desc); di++) {
@@ -786,7 +783,7 @@ void status()
printf("\n");
}
printf("%02X ", ((uint8_t *)&desc)[di]);
printf("%02" PRIX8 " ", ((uint8_t *)&desc)[di]);
}
+1
View File
@@ -53,6 +53,7 @@
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/board.h>
#include <nuttx/analog/adc.h>
+1
View File
@@ -53,6 +53,7 @@
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/board.h>
#include <nuttx/i2c/i2c_master.h>
+3 -1
View File
@@ -35,6 +35,7 @@ px4_add_board(
imu/invensense/icm20649
imu/invensense/icm20689
imu/invensense/icm20948 # required for ak09916 mag
imu/invensense/icm42688p
irlock
lights # all available light drivers
lights/rgbled_pwm
@@ -51,6 +52,7 @@ px4_add_board(
roboclaw
rpm
safety_button
smart_battery/batmon
telemetry # all available telemetry drivers
tone_alarm
uavcan
@@ -122,7 +124,7 @@ px4_add_board(
work_queue
EXAMPLES
fake_gps
#fake_gyro
#fake_imu
#fake_magnetometer
#fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
#hello
+3
View File
@@ -17,5 +17,8 @@ param set-default BAT2_A_PER_V 24
# Enable IMU thermal control
param set-default SENS_EN_THERMAL 1
# Set Camera trigger pins to 13/14
param set-default TRIG_PINS_EX 12288
rgbled_pwm start
safety_button start
+8 -2
View File
@@ -12,11 +12,17 @@ rm3100 -s -b 2 start
# SPI4
bmi088 -s -b 4 -A -R 2 start
bmi088 -s -b 4 -G -R 2 start
if ! bmi088 -s -b 4 -G -R 2 start
then
icm42688p -R 2 -s start
fi
ms5611 -s -b 4 start
# SPI6
icm20649 -s -b 6 -R 2 start
if ! icm20649 -s -b 6 -R 2 start
then
icm20689 -s -b 6 -R 2 start
fi
ms5611 -s -b 6 start
# External compass on GPS1/I2C1: standard CUAV GPS/compass puck (with lights, safety button, and buzzer)
+1 -1
View File
@@ -41,7 +41,7 @@ if("${PX4_BOARD_LABEL}" STREQUAL "bootloader")
nuttx_drivers
bootloader
)
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader)
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common)
else()
add_library(drivers_board
+3 -1
View File
@@ -43,6 +43,8 @@
#include "board_config.h"
#include <syslog.h>
#include <nuttx/config.h>
#include <nuttx/board.h>
#include <nuttx/sdio.h>
@@ -106,7 +108,7 @@ __EXPORT void board_peripheral_reset(int ms)
__EXPORT void board_on_reset(int status)
{
for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) {
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT_PULL_DOWN(io_timer_channel_get_as_pwm_input(i)));
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i)));
}
if (status >= 0) {
+2
View File
@@ -46,6 +46,7 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
initSPIBus(SPI::Bus::SPI4, {
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin3}, SPI::DRDY{GPIO::PortB, GPIO::Pin15}),
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin4}, SPI::DRDY{GPIO::PortB, GPIO::Pin14}),
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortB, GPIO::Pin15}),
initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortG, GPIO::Pin10}),
}),
initSPIBusExternal(SPI::Bus::SPI5, {
@@ -55,6 +56,7 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
}),
initSPIBus(SPI::Bus::SPI6, {
initSPIDevice(DRV_IMU_DEVTYPE_ICM20649, SPI::CS{GPIO::PortI, GPIO::Pin12}, SPI::DRDY{GPIO::PortH, GPIO::Pin5}),
initSPIDevice(DRV_IMU_DEVTYPE_ICM20689, SPI::CS{GPIO::PortE, GPIO::Pin15}, SPI::DRDY{GPIO::PortH, GPIO::Pin5}),
initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortI, GPIO::Pin8}),
}),
};
+1
View File
@@ -41,6 +41,7 @@
#include <nuttx/usb/usbdev.h>
#include <nuttx/usb/usbdev_trace.h>
#include <stm32_otg.h>
#include <debug.h>
/************************************************************************************
* Name: stm32_usbsuspend
+1 -1
View File
@@ -125,7 +125,7 @@ px4_add_board(
work_queue
EXAMPLES
fake_gps
#fake_gyro
#fake_imu
#fake_magnetometer
#fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
#hello
+3 -1
View File
@@ -36,6 +36,7 @@ px4_add_board(
imu/invensense/icm20649
imu/invensense/icm20689
imu/invensense/icm20948 # required for ak09916 mag
imu/invensense/icm42688p
irlock
lights # all available light drivers
lights/rgbled_pwm
@@ -52,6 +53,7 @@ px4_add_board(
roboclaw
rpm
safety_button
smart_battery/batmon
telemetry # all available telemetry drivers
tone_alarm
uavcan
@@ -123,7 +125,7 @@ px4_add_board(
work_queue
EXAMPLES
fake_gps
#fake_gyro
#fake_imu
#fake_magnetometer
#fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
#hello
+4
View File
@@ -17,5 +17,9 @@ param set-default BAT2_A_PER_V 24
# Enable IMU thermal control
param set-default SENS_EN_THERMAL 1
# Set Camera trigger pins to 13/14
param set-default TRIG_PINS_EX 12288
rgbled_pwm start
safety_button start
+8 -2
View File
@@ -15,11 +15,17 @@ rm3100 -s -b 2 start
# SPI4
bmi088 -s -b 4 -A -R 2 start
bmi088 -s -b 4 -G -R 2 start
if ! bmi088 -s -b 4 -G -R 2 start
then
icm42688p -R 2 -s start
fi
ms5611 -s -b 4 start
# SPI6
icm20649 -s -b 6 -R 2 start
if ! icm20649 -s -b 6 -R 2 start
then
icm20689 -s -b 6 -R 2 start
fi
ms5611 -s -b 6 start
# External compass on GPS1/I2C1: standard CUAV GPS/compass puck (with lights, safety button, and buzzer)
+1 -1
View File
@@ -41,7 +41,7 @@ if("${PX4_BOARD_LABEL}" STREQUAL "bootloader")
nuttx_drivers
bootloader
)
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader)
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common)
else()
add_library(drivers_board
+3 -1
View File
@@ -43,6 +43,8 @@
#include "board_config.h"
#include <syslog.h>
#include <nuttx/config.h>
#include <nuttx/board.h>
#include <nuttx/sdio.h>
@@ -106,7 +108,7 @@ __EXPORT void board_peripheral_reset(int ms)
__EXPORT void board_on_reset(int status)
{
for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) {
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT_PULL_DOWN(io_timer_channel_get_as_pwm_input(i)));
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i)));
}
if (status >= 0) {
+2
View File
@@ -47,6 +47,7 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
initSPIBus(SPI::Bus::SPI4, {
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin3}, SPI::DRDY{GPIO::PortB, GPIO::Pin15}),
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin4}, SPI::DRDY{GPIO::PortB, GPIO::Pin14}),
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortB, GPIO::Pin15}),
initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortG, GPIO::Pin10}),
}),
initSPIBusExternal(SPI::Bus::SPI5, {
@@ -56,6 +57,7 @@ constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = {
}),
initSPIBus(SPI::Bus::SPI6, {
initSPIDevice(DRV_IMU_DEVTYPE_ICM20649, SPI::CS{GPIO::PortI, GPIO::Pin12}, SPI::DRDY{GPIO::PortH, GPIO::Pin5}),
initSPIDevice(DRV_IMU_DEVTYPE_ICM20689, SPI::CS{GPIO::PortE, GPIO::Pin15}, SPI::DRDY{GPIO::PortH, GPIO::Pin5}),
initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortI, GPIO::Pin8}),
}),
};
+1
View File
@@ -41,6 +41,7 @@
#include <nuttx/usb/usbdev.h>
#include <nuttx/usb/usbdev_trace.h>
#include <stm32_otg.h>
#include <debug.h>
/************************************************************************************
* Name: stm32_usbsuspend
+3 -3
View File
@@ -59,7 +59,7 @@ px4_add_board(
uavcan
MODULES
airspeed_selector
attitude_estimator_q
#attitude_estimator_q
battery_status
camera_feedback
commander
@@ -75,7 +75,7 @@ px4_add_board(
land_detector
landing_target_estimator
load_mon
local_position_estimator
#local_position_estimator
logger
mavlink
mc_att_control
@@ -126,7 +126,7 @@ px4_add_board(
work_queue
EXAMPLES
fake_gps
#fake_gyro
#fake_imu
#fake_magnetometer
#fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
#hello
+2 -1
View File
@@ -49,6 +49,7 @@ px4_add_board(
px4io
roboclaw
rpm
smart_battery/batmon
telemetry # all available telemetry drivers
tone_alarm
uavcan
@@ -120,7 +121,7 @@ px4_add_board(
work_queue
EXAMPLES
fake_gps
#fake_gyro
#fake_imu
#fake_magnetometer
#fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control
#hello
@@ -117,6 +117,7 @@ CONFIG_NSH_ROMFSETC=y
CONFIG_NSH_ROMFSSECTSIZE=128
CONFIG_NSH_STRERROR=y
CONFIG_NSH_VARS=y
CONFIG_OTG_ID_GPIO_DISABLE=y
CONFIG_PIPES=y
CONFIG_PREALLOC_TIMERS=50
CONFIG_PRIORITY_INHERITANCE=y
@@ -116,6 +116,7 @@ CONFIG_NSH_ROMFSETC=y
CONFIG_NSH_ROMFSSECTSIZE=128
CONFIG_NSH_STRERROR=y
CONFIG_NSH_VARS=y
CONFIG_OTG_ID_GPIO_DISABLE=y
CONFIG_PIPES=y
CONFIG_PREALLOC_TIMERS=50
CONFIG_PRIORITY_INHERITANCE=y
@@ -41,7 +41,7 @@ if("${PX4_BOARD_LABEL}" STREQUAL "bootloader")
nuttx_drivers
bootloader
)
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader)
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common)
else()
add_library(drivers_board
+3 -1
View File
@@ -43,6 +43,8 @@
#include "board_config.h"
#include <syslog.h>
#include <nuttx/config.h>
#include <nuttx/board.h>
#include <nuttx/sdio.h>
@@ -97,7 +99,7 @@ __EXPORT void board_peripheral_reset(int ms)
__EXPORT void board_on_reset(int status)
{
for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) {
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT_PULL_DOWN(io_timer_channel_get_as_pwm_input(i)));
px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i)));
}
if (status >= 0) {

Some files were not shown because too many files have changed in this diff Show More