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
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
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
0aba12fe1f
Loopback test of HID working. Still a WIP but committing what I have to show progress.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@582 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-05-04 18:54:43 +00:00
vassilis
8c11a03129
Flight/Alarms Implemented Alarms library, now checking for stack overflow, out of memory, event and other errors (see the SystemAlarms object). All modules will be reporting their alarms using this library.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@554 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-27 01:55:28 +00:00
vassilis
7b99c3d7f0
Flight/System Restructure start-up code, now all initialization in done after the RTOS is started
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@541 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-25 02:21:03 +00:00
vassilis
5889849060
OP-4 Flight/Telemetry Various bug fixes while testing telemetry (working but not fully tested)
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@500 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-04-15 02:15:46 +00:00
pete
f1694527cc
Working on the PPM functionality. Getting there but it is still not 100% correct.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@411 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-30 04:48:15 +00:00
sambas
9490bcdb93
OP-25: GPS tested and working, using TrimbleGPS 5Hz, 5 lat/lon desimals
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@386 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-25 19:36:52 +00:00
gussy
41fd921b14
Updated BMP085 test code.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@375 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-23 04:01:11 +00:00
gussy
a03952fb5d
Small updates and clean up.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@355 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-21 00:49:48 +00:00
pete
a3486477eb
Added PPM defines and created pios_ppm.c
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@325 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-17 04:00:13 +00:00
gussy
f75fa5e567
Updated ADC to use the 3 auxillary inputs on the OpenPilot board.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@312 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-14 12:00:43 +00:00
gussy
8ba2d76cd6
OP-21: Cleaning up a few things.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@302 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-13 20:46:46 +00:00
gussy
a0a92d5a59
OP-21: Made changes to OpenPilot makefile too allow building for bootloader and non-bootloader targets. Use "USE_BOOTLOADER = YES" to build for the OpenPilot Bootloader.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@300 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-13 20:01:31 +00:00
gussy
978e07419d
Small FreeRTOS fixes.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@294 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-13 06:44:15 +00:00
gussy
6764a34285
Updated some FreeRTOS specific issues and fixed a few typos.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@292 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-12 16:22:56 +00:00
fredericg
47038af0c0
PIOS_DONT_USE_XXX => PIOS_INCLUDE_XXX
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@283 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-11 12:38:51 +00:00
dankers
e66c491942
Update to headers in the flight portion of the code. Just formatting.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@276 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-10 09:12:31 +00:00
gussy
4f5d7ae83a
PIOS_PWM now reading 8 channels properly!
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@269 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-08 10:09:30 +00:00
gussy
1ed841946c
Added "supervisor" and comments to PIOS_PWM.
...
Added timer usage diagram to pios_board.h
Removed bloat for extra optimisation in PIOS_DELAY.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@265 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-07 14:19:43 +00:00
gussy
fd889b918b
Updates to BMP085 readings.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@260 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-06 10:28:08 +00:00
gussy
0e8b618953
Updated files inside OpenPilot to use the single openpilot.h header file rather than multiple headers inside each file. This resolves a few build warnings/errors and makes the code cleaner.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@257 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-06 06:17:17 +00:00
gussy
d406232eb1
Improvement OP-3; Implemented buffer based receiving functions, untested.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@254 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-06 03:13:14 +00:00
gussy
6d67d2dab2
PIOS_ADC now non-application specific.
...
Removed "application hooks" system from PIOS_ADC.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@245 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-04 09:25:09 +00:00
gussy
09645920ee
PIOS_COM and PIOS_USART now non-application specific.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@243 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-04 07:07:27 +00:00
gussy
798ad15bba
More refactoring.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@235 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-04 05:51:11 +00:00
gussy
a5d56cd537
Small re-factorings.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@230 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-03 10:55:49 +00:00
gussy
47c5211cd4
Small changes to random files.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@227 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-03-03 07:53:15 +00:00
gussy
9953188fe2
PIOS_SYS now non-application specific.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@208 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 08:44:01 +00:00
gussy
792cfef50b
PIOS_SPI now non-application specific.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@207 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 08:34:44 +00:00
gussy
fcf47bf1f6
PIOS_USART now non-application specific.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@206 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 08:29:14 +00:00
gussy
95d068884a
PIOS_BMP085 now non-application specific.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@205 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 07:01:18 +00:00
gussy
22f02cb460
PIOS_I2C now non-application specific.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@204 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 06:57:59 +00:00
gussy
700116abd9
PIOS_LED now non-application specific.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@203 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 06:54:43 +00:00
gussy
adcd47a31b
Added ability to enable and disable PiOS modules.
...
Added PIOS_USB_COM.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@202 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 06:47:49 +00:00
gussy
7f31e3a9ff
Start of making PiOS application independent.
...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@201 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-28 06:30:45 +00:00
vassilis
9899ac29e7
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@191 ebee16cc-31ac-478f-84a7-5cbb03baadba
2010-02-13 20:33:58 +00:00