Víctor Mayoral Vilches
ab5f1b3a24
BusTest: Fix compilation error with AP_ADC
2015-06-26 21:59:22 +10:00
mirkix
7c55689aad
AP_HAL_Linux: Fix loading Firmware
2015-06-18 10:13:49 +10:00
Andrew Tridgell
c44ab01be8
AP_HAL: use noreturn attribute on panic
...
should reduce coverity warnings
2015-06-08 21:09:08 +10:00
Andrew Tridgell
dbff6cab43
HAL_Linux: added udp example to help
2015-06-03 21:47:01 +10:00
Andrew Tridgell
dd10cbc976
AP_HAL_Linux: convert example from .pde to .cpp
2015-06-01 17:03:44 +10:00
Andrew Tridgell
7e264b44df
HAL_Linux: fixed functor comparison
2015-05-26 15:14:50 +10:00
Lucas De Marchi
4c97d92982
AP_HAL_Linux: use functor macros
...
Functor is not yet being used but let's make is macro fallback to the
previous Delegate implementation for easy of transition between the two.
2015-05-26 13:46:53 +10:00
Andrew Tridgell
0619247992
HAL_Linux: don't advance time in delay() and delay_microseconds()
...
this could cause time to go backwards in Replay. Thanks to Peter for
finding this
2015-05-19 13:17:15 +10:00
Andrew Tridgell
b09fcfc20e
HAL_Linux: cope with systems without I2C_RDRW_IOCTL_MAX_MSGS
...
such as my ubuntu 14.04 laptop :-)
2015-05-05 21:42:46 +10:00
Lucas De Marchi
d640bc8345
AP_HAL_Linux: use kernel's limit of msgs per I2C transaction
...
Instead of hardcoding 8 as the limit for I2C msgs, use whatever the
kernel exported to us. In upstream this is 42 so it means we can group
together 21 addr/data pair instead of only 8.
2015-05-05 09:56:44 +10:00
Andrew Tridgell
179e47c618
HAL_Linux: prevent time from going backwards in Replay
2015-04-20 15:12:51 +10:00
Staroselskii Georgii
dff430e136
AP_HAL_Linux: added UART port for second GPS
2015-04-14 15:59:34 +10:00
Staroselskii Georgii
da6316ed4c
AP_HAL_Linux: fixed TCP client connection in LinuxUARTDriver
2015-04-14 15:59:33 +10:00
Staroselskii Georgii
716fd56c62
AP_HAL_Linux: added support for dynamic speed configration in LinuxSPIUARTDriver
2015-04-14 10:45:49 +10:00
Staroselskii Georgii
baf2b4da4e
AP_HAL_Linux: renamed AnalogIn_Navio
2015-04-14 10:16:26 +10:00
Staroselskii Georgii
930aeaf556
AP_HAL_Linux: add RPi version runtime detection
2015-04-14 10:16:25 +10:00
Mikhail Avkhimenia
c11304ba7a
AP_HAL_Linux: change GPIO register address for Raspberry Pi 2
2015-04-14 10:16:25 +10:00
Staroselskii Georgii
641fa05028
AP_HAL_Linux: added buffering in RCOutput_Navio
2015-04-14 10:16:25 +10:00
Staroselskii Georgii
e6c2977da2
AP_HAL_Linux: fixed style in RCOutput_Navio
2015-04-14 10:16:25 +10:00
Staroselskii Georgii
024825f95a
AP_HAL_Linux: fixed PCA9685 initialization for RCOutput_Navio
2015-04-14 10:16:25 +10:00
Staroselskii Georgii
2a137b6ea9
AP_HAL_Linux: fixed RCInput initialization on NavIO
2015-04-14 10:16:24 +10:00
Andrew Tridgell
7f7d92913e
HAL_Linux: allow running as non-root
...
this is needed for Replay, plus is very useful for debugging
2015-04-14 09:25:35 +10:00
Lucas De Marchi
f049c8e4c5
AP_HAL_Linux: remove needless call to mlockall()
...
All threads share the same address space and have the same pages locked
into memory so it's not necessary to call mlockall() for each of them.
Grepping /proc/<tid>/status gives the same VmLck for all of them, even
when only the main thread locks the memory:
# for i in `seq 477 482`; do \
name=$(cat /proc/$i/comm); \
vm=$(cat /proc/$i/status |grep VmLck); \
echo -e "$name\t$vm"; \
done
ArduCopter.elf VmLck: 57868 kB
sched-timer VmLck: 57868 kB
sched-uart VmLck: 57868 kB
sched-rcin VmLck: 57868 kB
sched-tonealarm VmLck: 57868 kB
sched-io VmLck: 57868 kB
2015-04-14 09:17:21 +10:00
Lucas De Marchi
b7355dc62b
AP_HAL_Linux: set thread name for ease debug
...
Use pthread_setname_np() to set thread name so it's easier to debug
what't going on with each of them. This is the example output of the
relevant par of "ps -Leo class,rtprio,wchan,comm":
FF 12 futex_ ArduCopter.elf
FF 15 usleep sched-timer
FF 14 hrtime sched-uart
FF 13 poll_s sched-rcin
FF 11 hrtime sched-tonealarm
FF 10 hrtime sched-io
2015-04-14 09:17:21 +10:00
Lucas De Marchi
2c48434110
AP_HAL_Linux: use a table to initialize threads
...
Refactor function calls into a table and pass in the name so it can be
used in error message.
2015-04-14 09:17:21 +10:00
Lucas De Marchi
e3d78b8960
AP_HAL_Linux: fix passing callback to member function
...
It's undefined behavior to pass the callback to pthread to a class
member like we were doing. Refactor the code so the callbacks are static
members.
This fixes the following warnings:
libraries/AP_HAL_Linux/Scheduler.cpp: In member function 'virtual void Linux::LinuxScheduler::init(void*)':
/home/lucas/p/dronecode/ardupilot/libraries/AP_HAL_Linux/Scheduler.cpp:61:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
(pthread_startroutine_t)&Linux::LinuxScheduler::_timer_thread);
^
libraries/AP_HAL_Linux/Scheduler.cpp:65:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
(pthread_startroutine_t)&Linux::LinuxScheduler::_uart_thread);
^
libraries/AP_HAL_Linux/Scheduler.cpp:69:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
(pthread_startroutine_t)&Linux::LinuxScheduler::_rcin_thread);
^
libraries/AP_HAL_Linux/Scheduler.cpp:73:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
(pthread_startroutine_t)&Linux::LinuxScheduler::_tonealarm_thread);
^
libraries/AP_HAL_Linux/Scheduler.cpp:77:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
(pthread_startroutine_t)&Linux::LinuxScheduler::_io_thread);
2015-04-14 09:17:20 +10:00
Lucas De Marchi
62c2f737d5
AP_HAL_Linux: fix setting RT priorities
...
LinuxScheduler::init() was not really working as it should. This was the
result of "ps -Leo class,rtprio,wchan,comm | grep ArduCopter":
FF 12 futex_ ArduCopter.elf
FF 12 usleep ArduCopter.elf
FF 12 hrtime ArduCopter.elf
FF 12 poll_s ArduCopter.elf
FF 12 hrtime ArduCopter.elf
FF 12 hrtime ArduCopter.elf
As can be seen all the threads run with the same priority, the one of the main
thread. There were basically 2 mistakes:
1) pthread_attr_setschedpolicy() needs to be called before
pthread_attr_setschedparam(). Otherwise the latter will just return
an error and not set the priority
2) pthread_create() defaults to ignore the priority and inherit the
it from the parent thread. pthread_attr_setinheritsched() needs to
be called to change the behavior to PTHREAD_EXPLICIT_SCHED. See
pthread_attr_setinheritsched(3) for an example program to test the
behaviors.
Also, it's undefined behavior to call pthread_attr_init() several times on the
same pthread_attr_t. Although we could reutilize the same attribute without
calling pthread_attr_init() again, lets refactor the code a little bit, so all
the pthread calls are in a single place. Then also call pthread_attr_destroy()
when we are done.
2015-04-14 09:17:20 +10:00
Lucas De Marchi
29b667efdf
AP_HAL_Linux: remove useless mlock of stack
...
In Linux the default stack size is always greater than 32k, either 2MB
or 8MB depending on the architecture. There's no point in creating a
function to lock 32k.
2015-04-14 09:17:20 +10:00
mirkix
445f358839
AP_HAL_Linux: Fix compiler warning of MAX_PWMS redefinition (previously defined)
2015-04-06 15:34:50 -07:00
mirkix
d4d42599b0
AP_HAL_Linux: Add RcInput and RcOutput with only one PRU when using a BBB. BBBMINI use the RC AIO PRU firmware already
2015-03-16 09:33:54 +11:00
mirkix
a6b018eab9
AP_HAL_Linux: BBBMINI use kernel CS now
2015-03-16 09:15:06 +11:00
Staroselskii Georgii
75cd41a7c1
AP_HAL_Linux: added NavioAnalogIn
2015-02-12 12:57:45 +11:00
Staroselskii Georgii
195aa5fc6b
AP_HAL_Linux: take the semaphore in SPIUARTDriver for shorter periods of time
2015-02-12 12:52:56 +11:00
Staroselskii Georgii
64da7f0360
AP_HAL_Linux: fix macro that defines number of I/O callbacks
2015-02-12 12:52:56 +11:00
Staroselskii Georgii
5b21bd2f1d
AP_HAL_Linux: make Ublox transactions shorter
2015-02-12 12:52:56 +11:00
Staroselskii Georgii
4034004194
AP_HAL_Linux: switch NavIO to kernel CS handling
2015-02-12 12:52:56 +11:00
Andrew Tridgell
33a3254d8b
HAL_Linux: accept a smaller sync pulse width
2015-02-08 21:47:28 +11:00
Andrew Tridgell
61be4ce2d2
HAL_Linux: fixed #if for linux builds
2015-01-22 15:58:20 +11:00
Víctor Mayoral Vilches
2b74d018fe
HAL_Linux: Adjust set_system_clock
...
Do nothing for HAL_BOARD_SUBTYPE_NONE.
2015-01-22 15:43:16 +11:00
Víctor Mayoral Vilches
974f243c7e
HAL_Linux: Add set_system_clock
2015-01-22 15:43:16 +11:00
mirkix
c58a022111
AP_HAL_Linux: add support for BBBMINI, simple ArduPilot DIY Cape for the BeagleBone Black
2015-01-12 21:36:40 +13:00
Mikhail Avkhimenia
954b0795d4
HAL_Linux: Enable PCA9685 output after its setup
2015-01-09 06:38:21 +11:00
Andrew Tridgell
4da0a24887
HAL_Linux: use common RingBuffer.h
2015-01-07 08:41:14 +11:00
Staroselskii Georgii
e4a21f291d
AP_HAL_Linux: added LinuxSPIUARTDriver that can handle SPI-driven Ublox
2015-01-07 08:41:12 +11:00
Staroselskii Georgii
2b589d4604
AP_HAL_Linux: enable output for PCA9685 PWM in NavioRCOuput
2015-01-07 08:41:12 +11:00
Andrew Tridgell
193bda068c
HAL_Linux: run IO processes when we do a stop_clock()
...
this has the effect of allowing logging to progress in Replay where we
are running at much more than realtime speeds
2014-12-08 11:24:39 +11:00
John Williams
d0e467aea0
AP_HAL_Linux: Bypass manual CS assertion for SPI_CS_KERNEL mode
...
Missed from initial patch series
Signed-off-by: John Williams <john@whelanwilliams.net>
2014-11-27 15:57:12 +11:00
Mikhail Avkhimenia
955753f3f0
HAL_Linux: Optimize bandwidth for RCOutput_Navio
...
40% less bytes in I2C transactions for PCA9685.
2014-11-26 11:14:44 +11:00
Mikhail Avkhimenia
50459bdca0
HAL_Linux: Enable external clk for RCOutput_Navio
...
That should fix PWM value drifts.
2014-11-26 11:14:44 +11:00
Andrew Tridgell
22cb1c8525
HAL_Linux: tidy up SPI debugging a bit
2014-11-26 10:16:39 +11:00
John Williams
0fe3959d7e
AP_HAL_Linux: Add support for in-kernel SPI CS handling
...
Add support for /dev/spidev<bus>.<cs> in-kernel SPI CS handling, and convert
existing SPI devices over.
* Add a new member _subdev to the LinuxSPIDeviceDriver class, and initialiser
in LinuxSPIDevice constructor. Use subdev 0 for GPIO-managed CS
* Extend the _cs_pin to signed 16 bits and define SPI_CS_KERNEL (-1) for
kernel-managed CS
* Move to per-device file descriptors (required for in-kernel CS)
* Extend spidev filenames to include bus and subdevice numbers, possibly
longer than 1 digit each
* Allow support for platforms enumerating /dev/spidevNNN from non-zero bases
* Convert existing users over to the new API
Signed-off-by: John Williams <john@whelanwilliams.net>
2014-11-26 09:55:09 +11:00
Andrew Tridgell
7497b4dfb1
HAL_Linux: fixed Replay with new AP_InertialSensor library
2014-11-16 12:30:50 +11:00
bugobliterator
9d39c0407e
HAL_Linux: added ToneAlarmDriver.h
2014-11-15 21:25:55 +11:00
bugobliterator
329c1f5190
HAL_Linux:create ToneAlarmDriver as a separate class
...
ToneAlarm is now declared as a separate class instance of which is added as a private member of LinuxUtil
Some minor fixes in this patch include changing return type of tonealarm_init() to bool and use dprintf
2014-11-15 16:59:06 +11:00
bugobliterator
f058131140
HAL_Linux Scheduler: reduce the delay inside tonealarm thread
...
Since the tonealarm is now passthrough the delay inside the thread needs to be reduced for precise tune generation
2014-11-15 16:59:06 +11:00
bugobliterator
3b94cb3072
HAL_Linux: make tonealarm generation a passthrough operation
...
get rid of all delays and while loops(that may turn into infinite loop)
2014-11-15 16:59:06 +11:00
bugobliterator
e254b406d0
HAL_Linux: make rtttl tune and tune repeat flag list static members
...
instead of initialising them inside constructor
2014-11-15 16:59:06 +11:00
Andrew Tridgell
c8c822422a
HAL_Linux: give error msg on failure to start toneAlarm
2014-11-15 16:58:58 +11:00
John Williams
57d2fc1dd5
HAL_Linux: RCInput support for Zynq
2014-11-14 14:10:35 +11:00
Staroselskii Georgii
a55db1c25d
AP_HAL_Linux: fixed LinuxGPIO_RPI::read()
2014-11-14 10:28:34 +11:00
Mikhail Avkhimenia
49d3035ee5
HAL_Linux: fix types, remove printfs in GPIO_RPI
2014-11-14 10:28:34 +11:00
Mikhail Avkhimenia
6f993fe64a
HAL_Linux: add prototype RCInput code for Navio
2014-11-14 10:28:34 +11:00
Staroselskii Georgii
ef420a2544
AP_HAL_Linux: changed SPI mode for MPU9250
2014-11-14 10:28:34 +11:00
Staroselskii Georgii
bf860ee41f
AP_HAL_Linux: Ublox SPI stub
2014-11-14 10:28:34 +11:00
Víctor Mayoral Vilches
ce4c4c43dc
AP_HAL_Linux: Scheduler reboot fix
...
exit from the autpilot when reboot is commanded.
The software assumes that the code is being
launched in an infinite loop thereby an exit
will make it reboot.
2014-11-14 10:27:19 +11:00
John Williams
ae87399919
HAL_Linux: Basic Zynq Linux platform support
...
Preliminary support for Zynq/Linux on the 'ZyboPilot' HW platform.
see https://github.com/trjw/ZyboPilot-bsp for the PetaLinux / Vivado project
files.
At this stage CPPM/Pulse in and PWM out work, and in CLI mode the passthru
test works correctly.
The platform has passed minimal smoke testing in HIL mode.
ZYNQ IS NOT FLIGHT TESTED YET! FLY THIS PLATFORM AT YOUR OWN RISK!
Signed-off-by: John Williams <john@whelanwilliams.net>
2014-11-14 10:21:04 +11:00
Andrew Tridgell
00526359b0
HAL_Linux: use dprintf() instead of sprintf and write
2014-11-10 06:51:53 +11:00
bugobliterator
af203760bd
HAL_Linux: change the return type of AP_HAL::Util::tonealarm_init() to signed int8_t.
...
This is a part of a set of fixes for the bugs and typos tridge discovered and shared inside earlier commits for setting up tonealarm.
2014-11-10 06:27:48 +11:00
bugobliterator
298b27444a
HAL_Linux: Add ToneAlarm Driver to Linux_HAL
...
ToneAlarm is setup for Beaglebone Black using pwm, toneAlarm thread runs on second last priority.
2014-11-10 06:27:48 +11:00
Andrew Tridgell
02581f4c05
HAL_Linux: re-fix dirty mask bug in Storage
...
when conversion to a single parent class was done it re-introduced a
bug that was fixed a while ago
See commit d238ff7c5d
2014-11-08 11:55:55 +11:00
Andrew Tridgell
330dab2fe3
HAL_Linux: fixed some warnings
2014-11-08 11:49:09 +11:00
bugobliterator
4908e335d2
HAL_Linux: Add Storage.cpp containing common storage class member definitions
2014-11-08 11:36:12 +11:00
bugobliterator
dd6d520385
HAL_Linux:Create subclass to handle FRAM Storage under main Storage Class
2014-11-08 11:36:09 +11:00
Andrew Tridgell
14a6878bcd
HAL_Linux: fixed termios settings on BBB initial boot
...
this should fix the problem of losing the GPS in flight
2014-11-07 22:15:28 +11:00
Andrew Tridgell
8506e8b5fb
HAL_Linux: fixed linux build
2014-10-30 17:47:18 +11:00
John Williams
b9f0310b82
hal_ap_linux: Make PRU constants private to reduce #define namespace pollution.
...
Forthcoming Zynq port AP_HAL_Linux uses similar constants with different
values - move these as private member constants to avoid collisions.
Signed-off-by: John Williams <john@whelanwilliams.net>
2014-10-30 13:51:41 +11:00
Mikhail Avkhimenia
81de994fef
HAL_Linux: separate RCInput for PRU and Navio
2014-10-30 13:30:07 +11:00
Mikhail Avkhimenia
e05151f0e0
HAL_Linux: Initialize i2c before rcoutput (required by i2c pwm chips for initialization)
2014-10-30 13:30:07 +11:00
Mikhail Avkhimenia
2f0900b0a8
HAL_Linux: add GPIO driver for Raspberry Pi
2014-10-30 13:30:07 +11:00
Mikhail Avkhimenia
07ed93cea0
HAL_Linux: add PCA9685 based RCOutput for Navio
2014-10-30 13:30:07 +11:00
Alexander Mergel
14c401c0f4
AP_HAL_Linux: [Bugfix] prevent memory acces violation in process_dsm_pulse
...
When a S.Bus signal is fed into the rcin-Pin AruPlane on the BBB get's a
Segmentation fault. This patch prevents the memory acces to dsm_state.bytes[16] outside
of the array bounds. The patch should be reviewed by sombody who knows the DSM protocol,
as i don't.
2014-10-30 11:57:35 +11:00
Andrew Tridgell
39fadad7d6
HAL_Linux: fixed build warnings
2014-10-09 16:49:23 +11:00
Andrew Tridgell
c834589daa
HAL_Linux: reduce the number of times we split up UART reads
2014-10-09 12:29:25 +11:00
Andrew Tridgell
076bb1294e
HAL_Linux: improved UDP packetisation and add flow control reporting
...
report we have flow control on UDP and TCP
2014-10-09 12:29:25 +11:00
Andrew Tridgell
cebfef3ead
HAL_Linux: don't accept less than 5 input channels
2014-10-09 09:19:35 +11:00
Andrew Tridgell
a3fee16604
HAL_Linux: added DSM/Spektrum RCInput support
...
this decodes DSM using the RCIN pulses from the PRU
2014-10-08 12:50:50 +11:00
Andrew Tridgell
3e3f87188b
HAL_Linux: enable DSM power pin
2014-10-08 12:50:50 +11:00
Andrew Tridgell
50e5ae6f7a
HAL_Linux: added low level DSM decoder
...
based on dsm.c from PX4 project
2014-10-08 12:50:50 +11:00
Andrew Tridgell
9b207d029d
HAL_Linux: change ring buffer to 300 entries
2014-10-07 14:57:34 +11:00
Andrew Tridgell
b1845ed00d
HAL_Linux: initial support for parallel SBUS and PPM-SUM decoding
2014-10-07 14:57:34 +11:00
Andrew Tridgell
42e9dc3c31
HAL_Linux: added SBUS decoder from PX4 project
...
thanks Lorenz!
2014-10-07 14:57:34 +11:00
Andrew Tridgell
e0e534628b
HAL_Linux: support direct UDP output from UART drivers
...
this allows safe operation over WiFi links without MAVProxy
2014-10-06 15:13:03 +11:00
Andrew Tridgell
d238ff7c5d
HAL_Linux: fixed storage bug in Linux too
2014-09-11 18:58:54 +10:00
Andrew Tridgell
46ac52bccc
HAL_Linux: removed retry loop on UART open
...
this was there for HAL_PX4 only, and makes no sense on Linux
2014-08-27 18:31:38 +10:00
Andrew Tridgell
024d3b71e7
HAL_Linux: use a semaphore in suspend_timer_procs()
...
this is the start of multi-core aware code
2014-08-22 21:13:11 +10:00
Andrew Tridgell
ead82ee581
HAL_Linux: implement millis64() and micros64()
2014-08-20 08:00:21 +10:00
Andrew Tridgell
b9dc2335ee
HAL_Linux: run timer thread at average 1kHz without drift
...
this avoids drift in the 1kHz timer, to avoid bias in the IMU
filtering
2014-08-19 20:03:34 +10:00
Andrew Tridgell
8f280d212b
HAL_Linux: don't use usleep() in suspend_timer_procs()
...
usleep can cause a large delay with PREEMPT kernel
2014-08-19 20:03:33 +10:00
Andrew Tridgell
94e14f5dcb
HAL_Linux: split off RCOutput class to be specific to PXF and ERLE
...
this fixes the Replay tool
2014-08-19 20:03:33 +10:00
Andrew Tridgell
2ce219aeb8
HAL_Linux: split RCInput class into generic and PRU implementations
...
this will make it easier for other boards (such as NAVIO) to implement
their own RCInput mechanism
2014-08-19 20:03:33 +10:00
Andrew Tridgell
b4be93113c
HAL_Linux: prevent read past end of buffer
2014-08-19 10:08:17 +10:00
Andrew Tridgell
b40bd479c4
HAL_Linux: moved FRAM vs FS choice into HAL_Linux headers
2014-08-19 10:08:17 +10:00
Andrew Tridgell
9fccb5f5ed
HAL_Linux: clear more UART flags
...
this fixes a major timing issue caused by bad UART flags (I suspect
the echo flags) and the GPS auto detection code
2014-08-19 10:08:17 +10:00
Andrew Tridgell
c87b0adc29
HAL_Linux: the MS5611 seems to be a bit happier at higher speed
...
still getting some bogus data, but less
2014-08-19 10:08:17 +10:00
Andrew Tridgell
6cc304e486
HAL_Linux: RCOutput should default to 50Hz on all boards
2014-08-19 10:08:16 +10:00
Andrew Tridgell
9d948d5a26
HAL_Linux: fixed name space collision in RCOutput
2014-08-19 10:08:16 +10:00
Andrew Tridgell
721d349922
HAL_Linux: fixed build of BusTest
2014-08-19 10:08:16 +10:00
Andrew Tridgell
a4ef512f10
SPIDriver: fixed handling of 0 based SPI bus numbers
2014-08-19 10:08:16 +10:00
Andrew Tridgell
5fb2ad0068
HAL_Linux: fixed safety of RCInput code
...
don't loop forever waiting for pulses
2014-08-19 10:08:16 +10:00
bugobliterator
ac11d282b5
HAL_Linux: Add support for PPM input to HAL_Linux
...
rcin thread continuously scans for values inside ring buffer maintained by pru with rcinpru0 firmware.
2014-08-19 10:08:16 +10:00
bugobliterator
4b2f7cd163
HAL_Linux: Add FRAM HAL driver support for non-volatile storage
...
Support for File System starage mode is retained, appropriate Storage
mode can be set by defining USE_FS_STORAGE for File System storage
aand US_FRAM_STORAGE for FRAM storage. Note: FS storage and FRAM
storage are never synced as of now.
2014-08-19 10:08:16 +10:00
Victor Mayoral Vilches
8a71fdf092
HAL_Linux: minor syntax fix in UARTDriver
...
Typo noticed by @hcervino.
2014-08-19 10:08:16 +10:00
Silvia
b6baf78e73
HAL_Linux:duplicate `#include <sys/types<`deleted
2014-08-19 10:08:16 +10:00
Silvia
7fd0e8345d
HAL_Linux: Duplicate `#include <unistd.h>`deleted
2014-08-19 10:08:16 +10:00
Andrew Tridgell
d40d0f6aec
AP_HAL: removed old storage type read/write functions
...
not needed any more
2014-08-13 18:46:44 +10:00
Mikhail Avkhimenia
a09fbb4171
HAL_Linux: Add SPI configuration for Navio
...
This changes the SPI bus number to be zero based on Linux
2014-08-12 22:13:00 +10:00
Andrew Tridgell
03e8e5f2b9
HAL_Linux: setup for all 6 SPI devices for PXF cape
2014-07-19 13:23:37 +10:00
Andrew Tridgell
05f5d91709
HAL_Linux: fixed BusTest build
2014-07-19 12:22:06 +10:00
Andrew Tridgell
9e921719ca
HAL_Linux: added bus scanning test
2014-07-15 19:06:11 +10:00
Andrew Tridgell
bcc8768358
HAL_Linux: fixed a build warning
2014-07-15 13:56:50 +10:00
Andrew Tridgell
1b85b12738
HAL_Linux: made I2C driver more portable
...
this uses a typeof() to cope with different kernel data types for I2C
messages
2014-07-15 13:56:50 +10:00
Andrew Tridgell
224515f3eb
HAL_Linux: fixed indexing of device array for SPI
2014-07-14 11:31:55 +10:00
Andrew Tridgell
3292055af2
HAL_Linux: fixed dataflash SPI
2014-07-14 11:07:41 +10:00
Andrew Tridgell
6312b9f8c0
HAL_Linux: allow different SPI and GPIO devices on different boards
...
this fixes the Replay utility, which uses subtype NONE, and will make
it easier to port to new boards
2014-07-14 09:44:37 +10:00
bugobliterator
003806fcc1
HAL_Linux: pwmpru,HAL_Linux_RCOut code doesn't wait for magic flag to send data
...
change pwmpru code to remove frequent wrong PWM outputs
Replace pru firmware with new modified pru firmware
2014-07-14 09:44:37 +10:00
bugobliterator
8cf628e780
HAL_Linux_RCoutput:Add handler to catch SIGBUS error
2014-07-14 09:44:37 +10:00
bugobliterator
25e670d0cc
HAL_LINUX_RCOutput: Change to reading hilo_read instead of periodhi
...
use uint instead of int
2014-07-14 09:44:36 +10:00
Andrew Tridgell
a46d8dbd51
HAL_Linux: make the spi driver fd part of the manager, not device
...
it should be one connection to the kernel per bus, not one per device
2014-07-14 09:44:36 +10:00
Andrew Tridgell
9f8f27090a
HAL_Linux: MPU9250 is restricted to 1MHz for setup
...
(see datasheet)
2014-07-14 09:44:36 +10:00
Andrew Tridgell
549e08446a
HAL_Linux: use BBB pin names in SPIDriver
...
easier to find the pins on the board
2014-07-14 09:44:36 +10:00
Andrew Tridgell
8e5915ef7d
HAL_Linux: fixed some valgrind errors
2014-07-14 09:44:35 +10:00
Andrew Tridgell
130f831c1c
HAL_Linux: use MODE_3 for MPU9250
...
this fixes the MS5611 (probably due to idle state?)
2014-07-14 09:44:35 +10:00
Andrew Tridgell
fc8068adfe
HAL_Linux: use board subtypes
2014-07-14 09:44:35 +10:00
Andrew Tridgell
1bf0c4c67d
HAL_Linux: cope with different I2C headers for data
2014-07-14 09:44:34 +10:00
Andrew Tridgell
fa2a1c495e
HAL_Linux: fixed I2C driver build errors
2014-07-14 09:44:34 +10:00
Andrew Tridgell
8c4565c741
HAL_Linux: fixed a build warning
2014-07-14 09:44:34 +10:00
Andrew Tridgell
5b438471a7
HAL_Linux: added set_bus_speed() support to SPI driver
...
used by MPU6000 driver for setup registers
2014-07-14 09:44:33 +10:00
Andrew Tridgell
0b64d834c3
HAL_Linux: MS5611 and MPU6000 should be MODE3
...
this doesn't solve the MPU6000 problem, but is correct
2014-07-14 09:44:33 +10:00
Andrew Tridgell
1c89f54934
HAL_Linux: fixed SPI mode handling per-device
...
the mode must be set per-device, not per bus.
2014-07-14 09:44:33 +10:00
Víctor Mayoral Vilches
145c71c4af
HAL_Linux: Storage: Change storage folder in Linux to `/var/APM`
2014-07-14 09:44:33 +10:00
bugobliterator
ca163c292c
HAL_Linux: PRU: remove obsolete libraries/AP_HAL_Linux/PRU
2014-07-14 09:32:29 +10:00
Andrew Tridgell
72f94444c4
HAL_Linux: added basic support for RC overrides
...
this allows for easier testing of RC output by allowing
mavproxy to setup fake inputs
Pair-Programmed-With: Sid, Anuj, Victor and Philip
2014-07-14 09:32:29 +10:00
Andrew Tridgell
d0b007248f
HAL_Linux: fixed SPI semaphore, and panic on CS error
...
This adds a check for trying to assert two CS pins on the same bus
at the same time. The change involves moving the _device handles into the
DeviceManager class, and accessing via static methods.
This also moves the semaphore to be per-bus rather than per-device,
which fixes the problem with bad MS5611 transfers.
Pair-Programmed-With: Victor, Sid, Anuj and Philip
2014-07-14 09:32:29 +10:00
bugobliterator
5bcdb039e2
HAL_Linux: Make asynchronous PRU write and reduce the size of data exchange
...
Change to sending Total Period and hi Period, rather than Hi and Lo Period
Change PRU firmware accordingly
2014-07-14 09:32:29 +10:00
Víctor Mayoral Vilches
fa6c5ba80e
HAL_Linux: Remove the additional portNumber offset
...
The socket is being launched in (_base_port + portNumber) port
following SITL impl. In order to avoid confusions portNumber has
been set to 0.
2014-07-14 09:32:21 +10:00
Víctor Mayoral Vilches
02c171b19f
HAL_Linux: UART-like TCP sockets, check for ":wait"
2014-07-14 09:32:13 +10:00
Víctor Mayoral Vilches
ca80c0b8e2
HAL_Linux: config UART file descriptor as non-blocking
2014-07-14 09:31:59 +10:00
Siddharth Bharat Purohit
65fef59dfa
HAL_Linux: change initial PWM values to 490Hz, 1000us
2014-07-14 09:31:49 +10:00
Víctor Mayoral Vilches
f11f0d9f2a
HAL_Linux: Fix FRAM code
2014-07-14 09:31:41 +10:00
Víctor Mayoral Vilches
be68de20f1
HAL_Linux: UART-like TCP sockets impl. on AP_HAL_Linux
2014-07-14 09:31:30 +10:00
Víctor Mayoral Vilches
b0742fbb5b
HAL_Linux: Add FRAM SPI support.
2014-07-14 09:31:18 +10:00
Siddharth Bharat Purohit
0422695e5e
HAL_Linux: Correct error inside read method in RCOutput
2014-07-14 09:31:05 +10:00
bugobliterator
092bda9c37
HAL_Linux: Replace PRU1 firmware with a new one to support new way of controllong PRU PWM
2014-07-14 09:31:05 +10:00
bugobliterator
63560e8122
HAL_Linux: change to directly accessing shared_mem of pru in RCOutput
2014-07-14 09:30:54 +10:00
Siddharth Bharat Purohit
9999e77a74
HAL_Linux: add close(_fd) to some functions in RCOutput
2014-07-14 09:30:42 +10:00
Víctor Mayoral Vilches
95e0803880
HAL_Linux: Remove panic when invalid pin in GPIO
...
When a invalid pin is passed as a parameter
the methods return without performing anything
insted of raising a panic.
2014-07-14 09:30:25 +10:00
Víctor Mayoral Vilches
245618e298
HAL_Linux: Improve error handling SPIDriver
2014-07-14 09:30:16 +10:00
Víctor Mayoral Vilches
d330cbecb3
HAL_Linux: Make the CS variables more readable in SPIDriver
2014-07-14 09:30:06 +10:00
Víctor Mayoral Vilches
665bf4a247
HAL_Linux: BUS_SPEED selected individually in SPIDriver
2014-07-14 09:29:53 +10:00
Siddharth Bharat Purohit
d2b5a1cfac
HAL_Linux: add HAL_ prefix to GPIO_INPUT
2014-07-14 09:29:45 +10:00
bugobliterator
1f1af0b0ea
HAL_Linux: make GPIO code compact and readable
...
add hal instance to generate scheduler
change gpio/export write method
add gpio struct to LinuxDigitalSource class
change individual gpio banks to one gpio_bank array
2014-07-14 09:29:45 +10:00
Víctor Mayoral Vilches
651cb58ebc
HAL_Linux: Add CS capabilities to the SPI driver.
2014-07-14 09:29:45 +10:00
Víctor Mayoral Vilches
763c075497
HAL_Linux: spidev1.0 to SPI0 and spidev2.0 to SPI1
2014-07-14 09:29:28 +10:00
bugobliterator
fd0685cc01
HAL_Linux: change to mem access method from sysfs access method
...
This step is taken to reduce the time for gpio access substantially
2014-07-14 09:29:18 +10:00
bugobliterator
96bbe17bd3
HAL_Linux: add support for LinuxDigitalSource in AP_HAL_Linux
2014-07-14 09:29:18 +10:00
Víctor Mayoral Vilches
7652d47e6e
HAL_Linux: Add GPIO pinmux mappings
...
This will allow to request channels using the
name of the BBB headers (e.g. P8_12, P9_42).
2014-07-14 09:29:08 +10:00
bugobliterator
18d7438240
HAL_Linux: increase size of sysfs_path variables inside LinuxRCOutput's methods
...
to avoid stack smashing error
2014-07-14 09:29:08 +10:00
bugobliterator
85d10e2ce3
HAL_Linux: add export gpio during direction set if not exported during initialisation
2014-07-14 09:29:08 +10:00
bugobliterator
a7ead42f52
HAL_Linux: added initial gpio library
2014-07-14 09:29:08 +10:00
Víctor Mayoral Vilches
c4b6026d53
HAL_Linux: include readRegistersMultiple in I2CDriver
...
AP_HAL_Linux implemments this new method.
2014-07-14 09:28:42 +10:00
Víctor Mayoral Vilches
ea7dcc188b
AP_HAL_Linux: Correct SPIDriver devs
2014-07-14 09:10:23 +10:00
Víctor Mayoral Vilches
8af1b6faa7
AP_HAL_Linux: Add support for SPIDevice_LSM9DS0
...
The LSM9DS0 SPI device is connected to
SPI0, thereby SPIDriver class should return the
corresponding device.
2014-07-14 09:10:23 +10:00
bugobliterator
79fb10d9e8
HAL_Linux: correct AP_HAL_Linux::RCOutput::enable_ch method
...
change the mode of file open which was set as RDONLY mistakenly
2014-07-14 09:10:23 +10:00
bugobliterator
eb35c94a43
HAL_Linux: add rcout->init method to HAL_Linux_Class::init
2014-07-14 09:10:23 +10:00
bugobliterator
e9f5e0d6cc
HAL_Linux: add rcout->init method to HAL_Linux_Class::init method
2014-07-14 09:10:23 +10:00
bugobliterator
34ba77e048
HAL_Linux: Correct faulty RCOutput driver
...
solve compiler not looking ahead of RCOutput class for read and write methods
2014-07-14 09:10:23 +10:00
bugobliterator
26cd4ad237
HAL_Linux: Correct indentation
2014-07-14 09:10:23 +10:00
Siddharth Bharat Purohit
69a4b7d632
HAL_Linux: Correct Indentation issue
2014-07-14 09:10:23 +10:00
Siddharth Bharat Purohit
731d80e6c5
HAL_Linux: Add Steps to Manually test pwm channels
2014-07-14 09:10:13 +10:00
Siddharth Bharat Purohit
b53b3f415a
HAL_Linux: Create Readme.md adding details on manually testing pru pwm
2014-07-14 09:10:03 +10:00
bugobliterator
a7de5e3d0f
HAL_Linux: Add initial RCOutput driver
...
The functions in RCOutput.cpp are defined to access PWM over PRU sysfs
device from userspace using open, read, write and close methods.
2014-07-14 09:09:53 +10:00
Víctor Mayoral Vilches
3354fa9fc8
AP_HAL_Linux: Add support for SPIDevice_MS5611
2014-07-14 09:02:47 +10:00
Víctor Mayoral Vilches
9f5b4ffca4
AP_HAL_Linux_Class: Correct deadlock, and infinite loop in setup()
...
(credit to Mitch Miers <mmiers@mmiers.com>):
setup() is attempting to initialize the hardware, and while doing so
is attempting to output some text via the console (and maybe mavlink
data). The problem is, the output isn't going to complete once a
write buffer is full, because LinuxUARTDriver::_timer_tick() doesn't
perform work until _initialized is true. So, what happens is,
setup() (and subroutines) call LinuxUARTDriver::_write(uint8_t c),
which loops waiting for buffer space to become available (once the
write buffer is full). The buffer never gets space, because the
UART thread is waiting for initialization to complete before it
will write out data and drain the buffer, but that doesn't happen
until setup() returns (see AP_HAL_Linux_main.h).
Refer to https://groups.google.com/forum/#!topic/beaglepilot/dQlxse11JNI
2014-07-14 09:02:47 +10:00
Víctor Mayoral Vilches
27ebf790e2
AP_HAL_Linux: Add support for SPIDevice_MPU9250
...
The Invensense MPU9250 SPI device is connected to
SPI1, thereby SPIDriver class should return the
corresponding device.
2014-07-14 09:02:46 +10:00
Víctor Mayoral Vilches
815c2df2d0
AP_HAL_Linux: SPIDriver, add MPU6000 support
2014-07-14 08:52:51 +10:00
Andrew Tridgell
74ee70d463
HAL_Linux: updates for ERLE board type
2014-07-14 08:52:27 +10:00
Andrew Tridgell
b99ae63cbb
HAL_Linux: more generic fix for scheduler issues in example sketches
...
this ensures drivers can run
2014-05-16 22:40:38 +10:00
Andrew Tridgell
6eee2421cc
AP_HAL: removed RCInput valid_channels() and added new_input() and num_channels()
...
the valid_channels() method was inconsistently implemented between
boards, and served two quite different purposes. It is clearer as two
functions
2014-03-25 14:39:41 +11:00
Andrew Tridgell
3fa2207a2d
AP_HAL: allow for microsecond resolution in scheduler->stop_clock()
...
this makes 400Hz in the replay code possible
2014-02-26 19:33:39 +11:00
Andrew Tridgell
bf2dd141e9
HAL_PX4: support uartE for 2nd GPS
2014-02-26 08:18:11 +11:00
Andrew Tridgell
a273951f70
HAL_Linux: added missing Util.cpp
2014-02-24 11:59:24 +11:00
Andrew Tridgell
735c6449a1
AP_HAL: added support for commandline arguments
...
useful for log replay, specifying log file
2014-02-23 08:15:39 +11:00
Andrew Tridgell
78ff078988
HAL_Linux: fixed stopped clock delay
2014-02-15 05:48:18 +11:00
Andrew Tridgell
117b77460e
HAL_Linux: added stop_clock hack!
2014-02-15 05:28:08 +11:00
Andrew Tridgell
1849db7074
AP_HAL: added board_voltage AnalogIn method
...
this makes it easier to get the board voltage from any library,
without having to allocate another analog channel object
2014-02-14 21:25:38 +11:00
Andrew Tridgell
87cc95dd7f
AP_HAL: removed unused enable_mask and disable_mask functions
2014-01-16 17:16:17 +11:00
Andrew Tridgell
a8946a5f31
HAL_Linux: fixed build
2013-12-31 10:28:38 +11:00
Andrew Tridgell
ea649e036b
AP_HAL: added HAL_CPU_CLASS define for selecting algorithms
...
this will make it easier to select the appropiate level of algorithm
for a CPU
2013-12-31 10:28:37 +11:00
Andrew Tridgell
ecbfdfba6c
HAL_Linux: implement time_shift() API
2013-12-30 14:35:12 +11:00
Andrew Tridgell
c000a08d6f
HAL_LINUX: added uartD
2013-11-23 19:29:22 +11:00
Andrew Tridgell
5af51140a9
HAL_Linux: fixed scheduler initialisation bug in Linux HAL as well
2013-10-26 18:25:27 +11:00
Andrew Tridgell
0d682e74c1
HAL_Linux: run threads a bit more slowly
...
this was just wasting cycles
2013-10-10 07:21:38 +11:00
Andrew Tridgell
8f79a03c25
HAL_Linux: use larger UART buffers
...
might as well use the memory
2013-10-10 07:21:38 +11:00
Andrew Tridgell
28b4ae1c3a
HAL_Linux: improved latency of timed semaphores
2013-10-08 11:50:54 +11:00
Andrew Tridgell
a216e1d239
HAL_Linux: don't prevent write while timer is busy
...
the timer can block on I2C writes, which causes the main loop to run
2013-10-08 11:50:53 +11:00
Andrew Tridgell
91511e6503
HAL_Linux: better realtime setup
...
lock all memory and pre-fault the stack in all threads
2013-10-08 11:50:53 +11:00
Andrew Tridgell
07b8f45770
HAL_Linux: use CLOCK_MONOTONIC_RAW to ensure clock never goes backwards
...
this avoids ntp mucking with APM timing
2013-10-07 08:41:52 +11:00
Andrew Tridgell
b30f652cec
HAL_Linux: removed Console driver
2013-10-05 18:32:57 +10:00
Andrew Tridgell
1440c8cebd
HAL_Linux: implement a dummy console buffered write()
2013-10-03 12:21:08 +10:00
Andrew Tridgell
c9fea2c706
HAL_Linux: fixed scheduling priorities
...
need to be between 1 and 99
2013-10-01 13:05:04 +10:00
Andrew Tridgell
bbac3265b2
HAL_Linux: default to hal.console on stdout
2013-10-01 12:49:58 +10:00
Andrew Tridgell
bcc9cdbf43
HAL_Linux: make I2CDriver more portable
...
this allows it to build on the Beaglebone
2013-10-01 12:37:13 +10:00
Andrew Tridgell
51c19331a6
HAL_Linux: fixed build
2013-10-01 12:11:48 +10:00
Andrew Tridgell
f2ebb2ca87
HAL_Linux: updates for AP_HAL::MemberProc
2013-09-30 20:56:15 +10:00
Andrew Tridgell
53f66b23f4
AP_HAL_Linux: fixed APM2 build
2013-09-29 14:24:55 +10:00
Andrew Tridgell
1698e1800c
HAL_Linux: timer calls may block on HAL_Linux
...
timer calls can do SPI transfers, which can block
2013-09-29 10:48:22 +10:00
Andrew Tridgell
5102f1511b
HAL_Linux: fixed callbacks from delay()
2013-09-29 10:32:51 +10:00
Andrew Tridgell
a1ef1a9318
HAL_Linux: tweak the scheduling priorities
2013-09-29 12:04:37 +10:00
Andrew Tridgell
d3fe625742
HAL_Linux: make the SPI driver much more efficient
...
use a single transaction for multiple bytes. This makes the APM1
Oilpan driver generate only 2 interrupts per sensor read
2013-09-29 12:04:36 +10:00
Andrew Tridgell
1e786b3e20
HAL_Linux: added buffering on the UARTs
2013-09-29 12:04:36 +10:00
Andrew Tridgell
605e6c3cf7
HAL_Linux: use pthread mutexes for semaphores
2013-09-29 07:49:30 +10:00
Andrew Tridgell
884af71ef6
HAL_Linux: added SPI support
2013-09-29 00:57:13 +10:00
Andrew Tridgell
f03315237a
HAL_Linux: fixed timer scheduler
2013-09-28 21:24:03 +10:00
Andrew Tridgell
cca59ce3c9
HAL_Linux: update for new scheduler API
2013-09-28 21:24:02 +10:00
Andrew Tridgell
bcf4f48e65
HAL_Linux: switched to pthread based scheduling
2013-09-28 21:24:02 +10:00
Andrew Tridgell
58a31318ee
AP_HAL_Linux: initial I2C driver implementation
...
this works sufficiently for the HMC5883
2013-09-28 21:24:02 +10:00
Andrew Tridgell
4ba044c441
AP_HAL_Linux: initial Linux AP_HAL
2013-09-28 21:24:01 +10:00