1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-30 08:24:11 +01:00
Commit Graph

636 Commits

Author SHA1 Message Date
stac
514d46f5b6 freertos: fix RTOS API calls from interrupt level
FreeRTOS has a strict requirement that even interrupt-safe API calls (ie.
those ending in "FromISR") can only be called from ISRs that are at lesser
or equal priorities to configMAX_SYSCALL_INTERRUPT_PRIORITY.  See the
"configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY"
section at:
  http://www.freertos.org/a00110.html

The interrupt numbers used on the Cortex-M3 CPU has a somewhat backward
representation of the interrupt numbers so 255 = lowest priority and
0 = highest priority.

The calculation is further complicated by the STM32 implementation only using
the upper 4 bits of the priority value.  Only 0x00, 0x10, 0x20, ..., 0xE0, 0xF0
represent useful interrupt priorities.

FreeRTOS requires that MAX_SYSCALL and KERNEL interrupt priorities are expressed
as raw unshifted 8-bit values to be programmed directly into the BASEPRI register.

The priority values passed to the NVIC initialization, however, are expected
to be 4-bit values and are shifted up by 4 within NVIC_Init() for you.

The end result is that we need this arrangement:

[highest priority]
   NVIC_0 (Non-maskable-interrupt)
   NVIC_1
   NVIC_2
[Must NOT call FreeRTOS APIs above here]
   configMAX_SYSCALL_INTERRUPT_PRIORITY (now at 48 = 0x30 = NVIC_3)
   PIOS_IRQ_PRIO_HIGHEST (cur. NVIC_4)
   PIOS_IRQ_PRIO_HIGH    (cur. NVIC_5)
   PIOS_IRQ_PRIO_MID     (cur. NVIC_8)
   PIOS_IRQ_PRIO_LOW     (cur. NVIC_12)
   configKERNEL_INTERRUPT_PRIORITY (240 = 0xF0 = NVIC_15)
[lowest priority]

The previous config had configMAX_SYSCALL_INTERRUPT_PRIORITY set at
191 (0xBF) which is effectively NVIC_11.  This was allowing all of
the MID, HIGH and HIGHEST interrupt handlers to preempt the OS in
its critical sections.  Since some of these ISRs were calling
FreeRTOS APIs, this would result in corrupting internal data structures
within the OS.

It should be ok to move the configKERNEL_INTERRUPT_PRIORITY to a higher
priority as long as it is less than configMAX_SYSCALL_INTERRUPT_PRIORITY.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@637 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-18 04:50:38 +00:00
stac
f6de7ff54f gdb: Add pre/post hooks to fix stepi
This fixes the gdb stepi command to allow the M3 core to make
forward progress even when interrupts are pending.  M3 Core interrupts
are masked/unmasked in pre and post command hooks.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@636 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-18 04:50:36 +00:00
edouard
8aadaf4a2b Added Actuator and ManualControl system health indicators. All currently defined alarms are supported at this stage.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@635 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-17 19:12:31 +00:00
ephy
ca1ad2fbcf OP-9 GCS/uavobjectbrowser: Tiny update to ui form.
Commit one-oh-oh for me. :)

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@634 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-17 17:11:36 +00:00
vassilis
d2dfb1fdea OP-32 GCS/Objects Initial release of ManualControl (ServoIn) and Actuator (ServoOut) related objects. Still work in progress.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@633 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-17 02:03:15 +00:00
vassilis
6b6740109e OP-32 Flight Initial release of Actuator (ServoOut) and ManualControl (ServoIn) modules, still work in progress (not fully tested).
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@632 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-17 01:58:38 +00:00
FredericG
3f79770f7f More debug state info
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@631 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-16 18:07:41 +00:00
sambas
66fa56a1da OP-22 Flight/PiOS: Spektrum simple decoder works, getting seven working channels with my DX7 tx
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@630 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-16 10:04:07 +00:00
sambas
76cd72915d OP-22 Flight/PiOS: first tests done with spektrum satellite, I can read binded receiver serial stream
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@629 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-16 08:35:38 +00:00
stac
56f1e8b547 uavobjects: Move generated python classes
Moved the generated python classes from the flight directory to the
ground directory since they are only used on the host, not the
embedded targets.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@628 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-16 03:05:10 +00:00
vassilis
41d60a00fa GCS/ObjectGenerator Implement field initialization for arrays
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@627 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-15 21:28:22 +00:00
sambas
26aecf720d OP-22 Flight/PiOS: Spektrum satellite protocol started
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@626 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-15 18:22:03 +00:00
gussy
5991a93739 Added GPIO functions for accelerometer full-scale selection.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@625 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-15 15:27:52 +00:00
gussy
73b5e29e02 Finalised and verified PIOS_HMC5843 library.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@624 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-15 12:50:05 +00:00
stac
e05f4cf068 uavobjects: Added support for generating python classes
The uavobjectgenerator can now generate python classes for each
UAVObject definition.  This is useful for writing simple test
applications in python that can exercise the UAVObject handling
code on the embedded boards.

This is a work in progress so the structure of the generated
classes is likely to change.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@623 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-14 04:32:30 +00:00
stac
0e3a5550ba gdb: Add pre/post hooks to fix step, next, finish
The gdb commands step, next and finish on the M3 core would
never make forward progress since there is almost always an
interrupt pending.  This is a known problem on the M3, and is
fixed by adding pre and post command hooks which mask and unmask
all ISRs on the M3 core.

Step, next and finish now work as expected, but care should be
taken when using these commands across any part of the code that
actually _needs_ the interrupts in order to make forward progress.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@622 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-14 04:32:17 +00:00
stac
a43f579265 Add AHRS firmware build to the "all" target + misc
Add the AHRS firmware to the "all" target since it is once again
compiling successfully.

Fix reinstall of QT SDK, Create placeholder for uavobjects.
Reinstall of the QT SDK prompted to remove the read-only license
file.  Use rm -rf to avoid the prompt.

The uavobjects target now creates a directory in the build tree.
This will eventually hold the generated .c/.h/.cpp/.py files that
are generated from the UAVObjects xml files.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@621 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-14 04:31:52 +00:00
stac
e3d59b8c90 gitignore: ignore some of the GUI config directories
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@620 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-14 04:31:49 +00:00
gussy
f9256b22d0 AHRS basic sensor test code revision.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@619 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-13 09:40:00 +00:00
gussy
22fbd8e4bd ADC Updates.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@618 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-12 12:09:35 +00:00
gussy
ff73ab5a80 More updates to cross-target compatibility.
Added PIOS_I2C into AHRS code.
Added PIOS_HMC5843 Module.




git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@617 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-12 08:18:49 +00:00
gussy
fe9aa9e38f Small USART scalability fix.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@616 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-12 01:56:00 +00:00
gussy
8f3c2dbafb Changes to PiOS to be compatible with the AHRS.
Updates to AHRS code.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@615 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-11 13:36:13 +00:00
sambas
1bb32e78f1 Flight/telemetry: Missed one 38400 relates stuff
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@614 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 16:47:12 +00:00
sambas
9922df3524 Added 38400 for my XBEE
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@613 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 16:22:41 +00:00
edouard
0ba3e0abd4 EventSystem-OK was missing.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@612 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 15:01:20 +00:00
stac
2d761647f0 Added ignores for tools, build, downloads created by top-level Makefile.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@611 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 14:27:07 +00:00
edouard
b6c2b30445 Updated System Health diagram supporting Telemetry & System Even alarms, so now all currently defined alarms are supported.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@610 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 12:06:29 +00:00
vassilis
8eab65a17b OP-4 GCS/Telemetry Add connection timeout detection
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@609 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 04:11:25 +00:00
vassilis
6dfd8caffb OP-4 Flight/Telemetry Add connection timeout detection
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@608 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 04:11:03 +00:00
vassilis
a31215293d Flight\Telemetry Implement telemetry settings object, added functions for changing the baud rate in PiOS
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@607 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 02:44:26 +00:00
vassilis
9c800f6007 GCS\Telemetry Implement telemetry settings object
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@606 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 02:43:26 +00:00
vassilis
a337de22c7 OP-4 Flight/Telemetry Flush telemetry queues while connection is not yet established (to remove stale data)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@605 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 00:22:07 +00:00
vassilis
85e5d74710 OP-4 GCS/Telemetry Flush telemetry queues while connection is not yet established (to remove stale data)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@604 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-08 00:21:49 +00:00
edouard
dafdac14e2 The System Health gagdet now works: load the system-health-path.svg file from the config dialog, and send system alarms to it!
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@603 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 22:19:27 +00:00
edouard
f9c5ca21a1 System Health diagram for the GCS gadget, functional version for most existing system alarms.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@602 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 22:17:33 +00:00
edouard
e965ee0771 First connection of System Health plugin to system alarms. Only debug code for now.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@601 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 16:01:49 +00:00
edouard
bc9f3f72ec Updated system health diagram (for GCS plugin)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@600 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 16:00:23 +00:00
ephy
ea108813ab OP-9 GCS/uavobjectbrowser: Refactoring.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@599 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 07:03:28 +00:00
vassilis
23ed286883 GCS/UAVObjects: Merged all UAVObjectFields into a single class using a QVariant for the data, updated UAVObjectBrowser and fixed a bug with array fields, added isNumeric() and isText() functions to UAVObjectField
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@598 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 01:49:38 +00:00
stac
0826af11e5 Add startup script for gdb for openpilot board
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@597 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 01:44:57 +00:00
stac
5275b794a0 Add top-level Makefile
- manages QT and ARM toolchain installation on Linux
 - manages OpenOCD build and installation on Linux
 - downloaded install packages are placed in <top>/downloads
 - defaults tool installs to be under <top>/tools directory
 - builds both the GCS and the openpilot firmware
 - build targets to regenerate the UAVObjects synthetic files
 - builds are placed in <top>/builds

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@596 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-07 01:44:56 +00:00
gussy
7544aab7fe Comment out testing task.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@595 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 17:24:39 +00:00
edouard
df419e281a Added system health plugin
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@594 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 16:10:29 +00:00
edouard
bb21f6c6b9 Start of System Health plugin. Only displays the mainboard components for now, does nothing more. Waiting for more info on system alarms before continuing. This gadget can in theory display alarms from any subsystem given the right SVG source file.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@593 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 16:09:37 +00:00
edouard
db5c938d11 System Health diagram which works with the system health plugin. the XML IDs of each part of the SVG (will) match system alarms, so that no specific configuration is needed in the plugin itself.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@592 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 16:00:29 +00:00
edouard
2b6ffc8bb0 Fixed the small display bug in the linear dial. Display code is now OK, what is missing is: writing numeric value, connecting to input (either uavobject or other abstraction level)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@591 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 13:20:57 +00:00
edouard
19b6c70588 Configuration now works, much better way to display the zones - explanations to come in the wiki concerning dial design. Remaining display bug of index, will fix later.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@590 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 12:17:10 +00:00
edouard
bba2582bd3 Final(?) update for linear dial master.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@589 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 12:15:35 +00:00
ephy
35437220a2 GCS/Lineardial: Compile fix for Linux (case sensitive)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@588 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-05 10:05:24 +00:00