Merge pull request #965 from PX4/stack_fixes

Stack fixes
This commit is contained in:
Lorenz Meier
2014-05-16 03:14:42 -07:00
13 changed files with 22 additions and 17 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ then
if ver hwcmp PX4FMU_V1 if ver hwcmp PX4FMU_V1
then then
echo "Start sdlog2 at 50Hz" echo "Start sdlog2 at 50Hz"
sdlog2 start -r 50 -a -b 5 -t sdlog2 start -r 50 -a -b 4 -t
else else
echo "Start sdlog2 at 200Hz" echo "Start sdlog2 at 200Hz"
sdlog2 start -r 200 -a -b 16 -t sdlog2 start -r 200 -a -b 16 -t
+1 -1
View File
@@ -418,7 +418,7 @@ CONFIG_PREALLOC_TIMERS=50
# Stack and heap information # Stack and heap information
# #
CONFIG_IDLETHREAD_STACKSIZE=4096 CONFIG_IDLETHREAD_STACKSIZE=4096
CONFIG_USERMAIN_STACKSIZE=4096 CONFIG_USERMAIN_STACKSIZE=3500
CONFIG_PTHREAD_STACK_MIN=512 CONFIG_PTHREAD_STACK_MIN=512
CONFIG_PTHREAD_STACK_DEFAULT=2048 CONFIG_PTHREAD_STACK_DEFAULT=2048
+2
View File
@@ -53,6 +53,8 @@
#include <uORB/topics/vehicle_global_position.h> #include <uORB/topics/vehicle_global_position.h>
#include <uORB/topics/vehicle_status.h> #include <uORB/topics/vehicle_status.h>
#include <drivers/drv_hrt.h>
/* FrSky sensor hub data IDs */ /* FrSky sensor hub data IDs */
#define FRSKY_ID_GPS_ALT_BP 0x01 #define FRSKY_ID_GPS_ALT_BP 0x01
#define FRSKY_ID_TEMP1 0x02 #define FRSKY_ID_TEMP1 0x02
@@ -222,7 +222,7 @@ int frsky_telemetry_main(int argc, char *argv[])
frsky_task = task_spawn_cmd("frsky_telemetry", frsky_task = task_spawn_cmd("frsky_telemetry",
SCHED_DEFAULT, SCHED_DEFAULT,
SCHED_PRIORITY_DEFAULT, SCHED_PRIORITY_DEFAULT,
2048, 2000,
frsky_telemetry_thread_main, frsky_telemetry_thread_main,
(const char **)argv); (const char **)argv);
+2
View File
@@ -39,3 +39,5 @@ MODULE_COMMAND = frsky_telemetry
SRCS = frsky_data.c \ SRCS = frsky_data.c \
frsky_telemetry.c frsky_telemetry.c
MODULE_STACKSIZE = 1200
+4 -8
View File
@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
* *
* Copyright (C) 2013 PX4 Development Team. All rights reserved. * Copyright (c) 2013, 2014 PX4 Development Team. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@@ -56,6 +56,7 @@
#include <arch/board/board.h> #include <arch/board/board.h>
#include <drivers/drv_hrt.h> #include <drivers/drv_hrt.h>
#include <drivers/device/i2c.h> #include <drivers/device/i2c.h>
#include <systemlib/systemlib.h>
#include <systemlib/perf_counter.h> #include <systemlib/perf_counter.h>
#include <systemlib/scheduling_priorities.h> #include <systemlib/scheduling_priorities.h>
#include <systemlib/err.h> #include <systemlib/err.h>
@@ -78,12 +79,6 @@
#endif #endif
static const int ERROR = -1; static const int ERROR = -1;
#ifndef CONFIG_SCHED_WORKQUEUE
# error This requires CONFIG_SCHED_WORKQUEUE.
#endif
class GPS : public device::CDev class GPS : public device::CDev
{ {
public: public:
@@ -211,7 +206,8 @@ GPS::init()
goto out; goto out;
/* start the GPS driver worker task */ /* start the GPS driver worker task */
_task = task_create("gps", SCHED_PRIORITY_SLOW_DRIVER, 2048, (main_t)&GPS::task_main_trampoline, nullptr); _task = task_spawn_cmd("gps", SCHED_DEFAULT,
SCHED_PRIORITY_SLOW_DRIVER, 2000, (main_t)&GPS::task_main_trampoline, nullptr);
if (_task < 0) { if (_task < 0) {
warnx("task start failed: %d", errno); warnx("task start failed: %d", errno);
+2
View File
@@ -41,3 +41,5 @@ SRCS = gps.cpp \
gps_helper.cpp \ gps_helper.cpp \
mtk.cpp \ mtk.cpp \
ubx.cpp ubx.cpp
MODULE_STACKSIZE = 1200
@@ -65,6 +65,7 @@
#include <uORB/topics/optical_flow.h> #include <uORB/topics/optical_flow.h>
#include <uORB/topics/filtered_bottom_flow.h> #include <uORB/topics/filtered_bottom_flow.h>
#include <systemlib/perf_counter.h> #include <systemlib/perf_counter.h>
#include <systemlib/systemlib.h>
#include <poll.h> #include <poll.h>
#include "flow_position_estimator_params.h" #include "flow_position_estimator_params.h"
@@ -109,9 +110,9 @@ int flow_position_estimator_main(int argc, char *argv[])
thread_should_exit = false; thread_should_exit = false;
daemon_task = task_spawn_cmd("flow_position_estimator", daemon_task = task_spawn_cmd("flow_position_estimator",
SCHED_RR, SCHED_DEFAULT,
SCHED_PRIORITY_MAX - 5, SCHED_PRIORITY_MAX - 5,
4096, 4000,
flow_position_estimator_thread_main, flow_position_estimator_thread_main,
(argv) ? (const char **)&argv[2] : (const char **)NULL); (argv) ? (const char **)&argv[2] : (const char **)NULL);
exit(0); exit(0);
+1 -1
View File
@@ -2204,7 +2204,7 @@ Mavlink::start(int argc, char *argv[])
task_spawn_cmd(buf, task_spawn_cmd(buf,
SCHED_DEFAULT, SCHED_DEFAULT,
SCHED_PRIORITY_DEFAULT, SCHED_PRIORITY_DEFAULT,
2000, 1950,
(main_t)&Mavlink::start_helper, (main_t)&Mavlink::start_helper,
(const char **)argv); (const char **)argv);
+1 -1
View File
@@ -949,7 +949,7 @@ MavlinkReceiver::receive_start(Mavlink *parent)
param.sched_priority = SCHED_PRIORITY_MAX - 40; param.sched_priority = SCHED_PRIORITY_MAX - 40;
(void)pthread_attr_setschedparam(&receiveloop_attr, &param); (void)pthread_attr_setschedparam(&receiveloop_attr, &param);
pthread_attr_setstacksize(&receiveloop_attr, 3000); pthread_attr_setstacksize(&receiveloop_attr, 2900);
pthread_t thread; pthread_t thread;
pthread_create(&thread, &receiveloop_attr, MavlinkReceiver::start_helper, (void *)parent); pthread_create(&thread, &receiveloop_attr, MavlinkReceiver::start_helper, (void *)parent);
@@ -39,3 +39,5 @@ MODULE_COMMAND = position_estimator_inav
SRCS = position_estimator_inav_main.c \ SRCS = position_estimator_inav_main.c \
position_estimator_inav_params.c \ position_estimator_inav_params.c \
inertial_filter.c inertial_filter.c
MODULE_STACKSIZE = 1200
@@ -135,7 +135,7 @@ int position_estimator_inav_main(int argc, char *argv[])
thread_should_exit = false; thread_should_exit = false;
position_estimator_inav_task = task_spawn_cmd("position_estimator_inav", position_estimator_inav_task = task_spawn_cmd("position_estimator_inav",
SCHED_RR, SCHED_PRIORITY_MAX - 5, 4096, SCHED_DEFAULT, SCHED_PRIORITY_MAX - 5, 4000,
position_estimator_inav_thread_main, position_estimator_inav_thread_main,
(argv) ? (const char **) &argv[2] : (const char **) NULL); (argv) ? (const char **) &argv[2] : (const char **) NULL);
exit(0); exit(0);
+1 -1
View File
@@ -38,4 +38,4 @@
MODULE_COMMAND = nshterm MODULE_COMMAND = nshterm
SRCS = nshterm.c SRCS = nshterm.c
MODULE_STACKSIZE = 1500 MODULE_STACKSIZE = 1200