ArduPlane, ArduCopter, ArduRover, ArduSub source
Go to file
Andrew Tridgell 52169f25da HAL_ChibiOS: replace volatile bools with mutexes
this replaces the two booleans used to mediate TX and RX buffer
protection with mutexes.

The booleans were a hangover from the very early HAL_ChibiOS code, and
can lead to a deadlock. The sequence is as follows:

 - a very high CAN bus bandwidth usage, triggered by MissionPlanner
   requesting CAN_FORWARD on a CAN serial port. That causes a
   "infinite" number of CAN_FRAME messages which saturates the bus,
   and leads to the DroneCAN thread looping with no pause

 - a serial port configured as GPS type AUTO, auto-probing for a GPS
   that isn't there. This calls begin() periodically

 - the UART TX thread assocated with that UART not making progress as
   the TX thread priority is below the DroneCAN thread priority

 - this causes the begin() in main thread waiting for _in_tx_timer to
   loop forever, which triggers a watchdog
2024-10-01 09:54:26 +10:00
.github .github: adjust problem-matcher to catch individual failed tests 2024-10-01 09:15:33 +10:00
.vscode vscode: set lua version to 5.3 2024-02-07 18:44:56 +11:00
AntennaTracker Tracker: 4.5.7-beta1 release notes 2024-09-27 14:31:00 +09:00
ArduCopter Copter: Set the message buffer size to twice the message size 2024-09-27 21:33:56 +10:00
ArduPlane Plane: fixed bug in pullup code 2024-10-01 07:15:44 +10:00
ArduSub ArduSub: re-order initialiser lines so -Werror=reorder will work 2024-09-24 22:50:28 +10:00
Blimp Blimp: only send airspeed when enabled 2024-09-23 18:53:27 +10:00
Rover Rover: remove handling of prearm empty-string case 2024-10-01 08:40:44 +09:00
Tools autotest: add autotest for invalid battery backend checks 2024-10-01 09:48:13 +10:00
benchmarks
docs treewide: fix shebangs - /bin/bash -> /usr/bin/env bash 2024-02-13 11:36:23 +11:00
libraries HAL_ChibiOS: replace volatile bools with mutexes 2024-10-01 09:54:26 +10:00
modules DroneCAN: update libcanard 2024-09-27 11:06:20 +10:00
tests AP_gtest: enable testing for exit conditions, SITL unit tests 2021-09-28 09:11:48 +10:00
.dir-locals.el emacs: add a .dir-locals.el 2016-10-24 09:41:31 -02:00
.dockerignore Tools: fix junit report and add firmware version on report 2023-11-22 18:32:19 +11:00
.editorconfig .editorconfig: Update for more standards aware editors 2023-05-23 09:56:28 +10:00
.flake8 Tools: Improved flake8 speed, ignore, and exclude 2022-06-28 13:16:24 +10:00
.git-blame-ignore-revs .git-blame: Ignore reformat in ROS2 2024-09-06 21:28:25 +10:00
.gitattributes .gitattributes: mark bin, elf and hex as binary 2021-05-20 11:45:02 +10:00
.gitignore AP_HAL_ESP32: Migration of ESP32 targets from idf 4.4 to 5.3 consisting of: 2024-10-01 09:25:35 +10:00
.gitmodules lwip: remove ext/lwip and add as modules/lwip 2024-01-03 12:14:47 +11:00
.pre-commit-config.yaml pre-commit: remove check for dds_xrce_profile.xml 2024-05-29 17:47:52 +10:00
.pydevproject
.valgrind-suppressions Valgrind: add supressions file and .valgrindrc using it 2019-07-18 16:49:11 +10:00
.valgrindrc Valgrind: add supressions file and .valgrindrc using it 2019-07-18 16:49:11 +10:00
BUILD.md docker: add usage instructions to BUILD.md 2024-05-29 08:31:11 +09:00
CODE_OF_CONDUCT.md Add developer code of coduct 2022-02-08 10:53:35 +11:00
COPYING.txt
Dockerfile docker: fix docker detection in install-prereqs-ubuntu.sh 2024-05-29 08:31:11 +09:00
Doxyfile.in cfg: Fix typos 2016-05-13 19:20:07 -03:00
Makefile Make: use https:// scheme for ardupilot URLs 2019-12-10 07:53:46 +11:00
README.md README: add Navigator maintainer attribution 2024-06-27 00:06:38 -03:00
Vagrantfile Vagrant: add support for Ubuntu Noble, 24.04 2024-05-10 10:20:34 +10:00
pyproject.toml global: add skip-string-normalization to black config 2022-07-26 21:23:42 +10:00
waf waf: use python3 even if /usr/bin/python is v2 2023-05-06 10:09:04 +10:00
wscript waf: allow any custom build option to be specified in waf configure 2024-09-11 16:11:22 +10:00

README.md

ArduPilot Project

Discord

Test Copter Test Plane Test Rover Test Sub Test Tracker

Test AP_Periph Test Chibios Test Linux SBC Test Replay

Test Unit Teststest size

Test Environment Setup

Cygwin Build Macos Build

Coverity Scan Build Status

Test Coverage

Autotest Status

ArduPilot is the most advanced, full-featured, and reliable open source autopilot software available. It has been under development since 2010 by a diverse team of professional engineers, computer scientists, and community contributors. Our autopilot software is capable of controlling almost any vehicle system imaginable, from conventional airplanes, quad planes, multi-rotors, and helicopters to rovers, boats, balance bots, and even submarines. It is continually being expanded to provide support for new emerging vehicle types.

The ArduPilot project is made up of:

User Support & Discussion Forums

Developer Information

Top Contributors

How To Get Involved

License

The ArduPilot project is licensed under the GNU General Public License, version 3.

Maintainers

ArduPilot is comprised of several parts, vehicles and boards. The list below contains the people that regularly contribute to the project and are responsible for reviewing patches on their specific area.