aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2015-01-26 12:31:27 +0100
committerThomas Gubler <thomasgubler@gmail.com>2015-01-26 12:35:05 +0100
commit0ac294db170c5e929d61fc5e2e3f4ae3dbc562d1 (patch)
tree69974721878110113c52eecb834b6e0d44b2429f
parentecc44c263c76fee88e0c2c3137f1b02c97ba76be (diff)
parentb1b1ad9393add9294d800e533b0b6201c3b70aa5 (diff)
downloadpx4-firmware-0ac294db170c5e929d61fc5e2e3f4ae3dbc562d1.tar.gz
px4-firmware-0ac294db170c5e929d61fc5e2e3f4ae3dbc562d1.tar.bz2
px4-firmware-0ac294db170c5e929d61fc5e2e3f4ae3dbc562d1.zip
Merge remote-tracking branch 'upstream/nuttx_bringup' into ros_messagelayer_merge_attctl_stdbind_nuttx_bringup
Conflicts: NuttX makefiles/config_px4fmu-v2_default.mk
-rw-r--r--.travis.yml37
-rw-r--r--Debug/Nuttx.py88
-rwxr-xr-xDebug/poor-mans-profiler.sh260
-rw-r--r--Documentation/px4_block_diagram.odgbin0 -> 42200 bytes
-rw-r--r--Makefile27
m---------NuttX0
-rw-r--r--ROMFS/px4fmu_common/init.d/rcS2
-rw-r--r--makefiles/config_px4fmu-v1_default.mk3
-rw-r--r--makefiles/config_px4fmu-v2_default.mk20
-rw-r--r--makefiles/config_px4fmu-v2_test.mk5
-rw-r--r--makefiles/setup.mk11
-rw-r--r--makefiles/toolchain_gnu-arm-eabi.mk33
-rw-r--r--nuttx-configs/aerocore/nsh/Make.defs6
-rw-r--r--nuttx-configs/aerocore/nsh/appconfig42
-rw-r--r--nuttx-configs/aerocore/nsh/defconfig22
-rw-r--r--nuttx-configs/px4fmu-v1/nsh/Make.defs6
-rw-r--r--nuttx-configs/px4fmu-v1/nsh/defconfig565
-rw-r--r--nuttx-configs/px4fmu-v2/Kconfig22
-rwxr-xr-xnuttx-configs/px4fmu-v2/include/board.h163
-rw-r--r--nuttx-configs/px4fmu-v2/nsh/Make.defs224
-rw-r--r--nuttx-configs/px4fmu-v2/nsh/appconfig52
-rw-r--r--nuttx-configs/px4fmu-v2/nsh/defconfig546
-rwxr-xr-xnuttx-configs/px4fmu-v2/nsh/setenv.sh12
-rw-r--r--nuttx-configs/px4fmu-v2/scripts/ld.script10
-rw-r--r--nuttx-configs/px4fmu-v2/src/Makefile27
-rw-r--r--nuttx-configs/px4io-v1/nsh/Make.defs6
-rw-r--r--nuttx-configs/px4io-v1/nsh/appconfig32
-rwxr-xr-xnuttx-configs/px4io-v1/nsh/defconfig1388
-rw-r--r--nuttx-configs/px4io-v2/nsh/Make.defs6
-rw-r--r--nuttx-configs/px4io-v2/nsh/appconfig32
-rwxr-xr-xnuttx-configs/px4io-v2/nsh/defconfig1415
-rwxr-xr-xnuttx-patches/Fixed-Shadow-wanings.patch62
-rw-r--r--nuttx-patches/math.h.patch583
-rw-r--r--src/drivers/batt_smbus/batt_smbus.cpp24
-rw-r--r--src/drivers/boards/aerocore/aerocore_init.c25
-rw-r--r--src/drivers/boards/aerocore/aerocore_spi.c2
-rw-r--r--src/drivers/boards/aerocore/module.mk6
-rw-r--r--src/drivers/boards/px4fmu-v1/module.mk6
-rw-r--r--src/drivers/boards/px4fmu-v1/px4fmu_init.c77
-rw-r--r--src/drivers/boards/px4fmu-v1/px4fmu_spi.c5
-rw-r--r--src/drivers/boards/px4fmu-v2/module.mk7
-rw-r--r--src/drivers/boards/px4fmu-v2/px4fmu2_init.c61
-rw-r--r--src/drivers/boards/px4fmu-v2/px4fmu_spi.c2
-rw-r--r--src/drivers/boards/px4io-v1/module.mk6
-rw-r--r--src/drivers/boards/px4io-v2/module.mk6
-rw-r--r--src/drivers/device/spi.h2
-rw-r--r--src/drivers/px4io/px4io.cpp13
-rw-r--r--src/drivers/px4io/px4io_serial.cpp8
-rw-r--r--src/drivers/px4io/px4io_uploader.cpp1
-rw-r--r--src/drivers/stm32/tone_alarm/tone_alarm.cpp2
-rw-r--r--src/modules/attitude_estimator_ekf/module.mk2
-rw-r--r--src/modules/px4iofirmware/px4io.c17
-rw-r--r--src/modules/px4iofirmware/px4io.h2
-rw-r--r--src/modules/px4iofirmware/sbus.c4
-rw-r--r--src/modules/sdlog2/sdlog2.c6
-rw-r--r--src/modules/systemlib/px4_macros.h101
-rw-r--r--src/modules/systemlib/up_cxxinitialize.c14
-rw-r--r--src/modules/uavcan/actuators/esc.cpp7
-rw-r--r--src/modules/uavcan/module.mk6
-rw-r--r--src/modules/uavcan/uavcan_main.cpp26
-rw-r--r--src/modules/uavcan/uavcan_main.hpp18
-rw-r--r--src/systemcmds/esc_calib/esc_calib.c3
-rw-r--r--src/systemcmds/mtd/24xxxx_mtd.c2
-rw-r--r--src/systemcmds/mtd/mtd.c4
-rw-r--r--src/systemcmds/pwm/pwm.c4
-rw-r--r--src/systemcmds/tests/test_adc.c2
-rw-r--r--src/systemcmds/tests/test_hrt.c2
-rw-r--r--src/systemcmds/tests/test_jig_voltages.c2
-rw-r--r--src/systemcmds/tests/test_sensors.c2
-rw-r--r--src/systemcmds/tests/test_servo.c2
-rw-r--r--src/systemcmds/tests/tests_main.c2
71 files changed, 4378 insertions, 1810 deletions
diff --git a/.travis.yml b/.travis.yml
index 9386ddaa3..a994d3471 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -52,20 +52,17 @@ script:
- echo -en 'travis_fold:end:script.3\\r'
- zip Firmware.zip Images/*.px4
-# We use an encrypted env variable to ensure this only executes when artifacts are uploaded.
-#after_script:
-# - echo "Branch $TRAVIS_BRANCH (pull request: $TRAVIS_PULL_REQUEST) ready for flight testing." >> $PX4_REPORT
-# - git log -n1 > $PX4_REPORT
-# - echo " " >> $PX4_REPORT
-# - echo "Files available at:" >> $PX4_REPORT
-# - echo "https://px4-travis.s3.amazonaws.com/PX4/Firmware/$TRAVIS_BUILD_NUMBER/$TRAVIS_BUILD_NUMBER.1/Firmware.zip" >> $PX4_REPORT
-# - echo "Description of desired tests is available at:" >> $PX4_REPORT
-# - echo "https://github.com/PX4/Firmware/pull/$TRAVIS_PULL_REQUEST" >> $PX4_REPORT
-# - echo " " >> $PX4_REPORT
-# - echo "Thanks for testing!" >> $PX4_REPORT
-# - echo " " >> $PX4_REPORT
-# - /usr/bin/mail -s "$SUBJECT ($TRAVIS_COMMIT)" "$PX4_EMAIL" < "$PX4_REPORT"
-# - s3cmd put --acl-public --guess-mime-type --config=.s3cfg Firmware.zip s3://s3-website-us-east-1.amazonaws.com/#$TRAVIS_JOB_ID/
+after_script:
+ - git clone git://github.com/PX4/CI-Tools.git
+ - ./CI-Tools/s3cmd-configure
+# upload newest build for this branch with s3 index
+ - ./CI-Tools/s3cmd-put Images/px4*.px4 CI-Tools/directory/index.html Firmware/$TRAVIS_BRANCH/
+# archive newest build by date with s3 index
+ - ./CI-Tools/s3cmd-put Firmware.zip archives/Firmware/$TRAVIS_BRANCH/`date "+%Y-%m-%d"`-$TRAVIS_BUILD_ID/
+ - ./CI-Tools/s3cmd-put CI-Tools/directory/index.html archives/Firmware/$TRAVIS_BRANCH/
+# upload top level index.html and timestamp.html
+ - ./CI-Tools/s3cmd-put CI-Tools/index.html index.html
+ - ./CI-Tools/s3cmd-put CI-Tools/timestamp.html timestamp.html
deploy:
provider: releases
@@ -78,18 +75,6 @@ deploy:
all_branches: true
repo: PX4/Firmware
-addons:
- artifacts:
- paths:
- - "Firmware.zip"
- key:
- secure: j4y9x9KXUiarGrnpFBLPIkEKIH8X6oSRUO61TwxTOamsE0eEKnIaCz1Xq83q7DoqzomHBD3qXAFPV9dhLr1zdKEPJDIyV45GVD4ClIQIzh/P3Uc7kDNxKzdmxY12SH6D0orMpC4tCf1sNK7ETepltWfcnjaDk1Rjs9+TVY7LuzM=
- secret:
- secure: CJC7VPGtEhJu8Pix85iPF8xUvMPZvTgnHyd9MrSlPKCFFMrlgz9eMT0WWW/TPQ+s4LPwJIfEQx2Q0BRT5tOXuvsTLuOG68mplVddhTWbHb0m0qTQErXFHEppvW4ayuSdeLJ4TjTWphBVainL0mcLLRwQfuAJJDDs/sGan3WrG+Y=
- bucket: px4-travis
- region: us-east-1
- endpoint: s3-website-us-east-1.amazonaws.com
-
notifications:
webhooks:
urls:
diff --git a/Debug/Nuttx.py b/Debug/Nuttx.py
index cf86dd668..826e12c97 100644
--- a/Debug/Nuttx.py
+++ b/Debug/Nuttx.py
@@ -1,7 +1,10 @@
# GDB/Python functions for dealing with NuttX
+from __future__ import print_function
import gdb, gdb.types
+parse_int = lambda x: int(str(x), 0)
+
class NX_register_set(object):
"""Copy of the registers for a given context"""
@@ -155,7 +158,7 @@ class NX_task(object):
result = []
for i in range(pidhash_type.range()[0],pidhash_type.range()[1]):
entry = pidhash_value[i]
- pid = int(entry['pid'])
+ pid = parse_int(entry['pid'])
if pid is not -1:
result.append(pid)
return result
@@ -184,7 +187,7 @@ class NX_task(object):
self.__dict__['stack_used'] = 0
else:
stack_limit = self._tcb['adj_stack_size']
- for offset in range(0, int(stack_limit)):
+ for offset in range(0, parse_int(stack_limit)):
if stack_base[offset] != 0xff:
break
self.__dict__['stack_used'] = stack_limit - offset
@@ -244,7 +247,7 @@ class NX_task(object):
filearray = filelist['fl_files']
result = dict()
for i in range(filearray.type.range()[0],filearray.type.range()[1]):
- inode = int(filearray[i]['f_inode'])
+ inode = parse_int(filearray[i]['f_inode'])
if inode != 0:
result[i] = inode
return result
@@ -299,7 +302,7 @@ class NX_show_task (gdb.Command):
super(NX_show_task, self).__init__("show task", gdb.COMMAND_USER)
def invoke(self, arg, from_tty):
- t = NX_task.for_pid(int(arg))
+ t = NX_task.for_pid(parse_int(arg))
if t is not None:
my_fmt = 'PID:{pid} name:{name} state:{state}\n'
my_fmt += ' stack used {stack_used} of {stack_limit}\n'
@@ -435,12 +438,12 @@ class NX_tcb(object):
first_tcb = tcb_ptr.dereference()
tcb_list.append(first_tcb);
next_tcb = first_tcb['flink'].dereference()
- while not self.is_in(int(next_tcb['pid']),[int(t['pid']) for t in tcb_list]):
+ while not self.is_in(parse_int(next_tcb['pid']),[parse_int(t['pid']) for t in tcb_list]):
tcb_list.append(next_tcb);
old_tcb = next_tcb;
next_tcb = old_tcb['flink'].dereference()
- return [t for t in tcb_list if int(t['pid'])<2000]
+ return [t for t in tcb_list if parse_int(t['pid'])<2000]
def getTCB(self):
list_of_listsnames = ['g_pendingtasks','g_readytorun','g_waitingforsemaphore','g_waitingforsignal','g_inactivetasks']
@@ -469,12 +472,12 @@ class NX_check_stack_order(gdb.Command):
first_tcb = tcb_ptr.dereference()
tcb_list.append(first_tcb);
next_tcb = first_tcb['flink'].dereference()
- while not self.is_in(int(next_tcb['pid']),[int(t['pid']) for t in tcb_list]):
+ while not self.is_in(parse_int(next_tcb['pid']),[parse_int(t['pid']) for t in tcb_list]):
tcb_list.append(next_tcb);
old_tcb = next_tcb;
next_tcb = old_tcb['flink'].dereference()
- return [t for t in tcb_list if int(t['pid'])<2000]
+ return [t for t in tcb_list if parse_int(t['pid'])<2000]
def getTCB(self):
list_of_listsnames = ['g_pendingtasks','g_readytorun','g_waitingforsemaphore','g_waitingforsignal','g_inactivetasks']
@@ -488,7 +491,7 @@ class NX_check_stack_order(gdb.Command):
def getSPfromTask(self,tcb):
regmap = NX_register_set.v7em_regmap
a =tcb['xcp']['regs']
- return int(a[regmap['SP']])
+ return parse_int(a[regmap['SP']])
def find_closest(self,list,val):
tmp_list = [abs(i-val) for i in list]
@@ -525,8 +528,8 @@ class NX_check_stack_order(gdb.Command):
for t in tcb:
p = [];
#print(t.name,t._tcb['stack_alloc_ptr'])
- p.append(int(t['stack_alloc_ptr']))
- p.append(int(t['adj_stack_ptr']))
+ p.append(parse_int(t['stack_alloc_ptr']))
+ p.append(parse_int(t['adj_stack_ptr']))
p.append(self.getSPfromTask(t))
stackadresses[str(t['name'])] = p;
address = int("0x30000000",0)
@@ -594,12 +597,12 @@ class NX_search_tcb(gdb.Command):
first_tcb = tcb_ptr.dereference()
tcb_list.append(first_tcb);
next_tcb = first_tcb['flink'].dereference()
- while not self.is_in(int(next_tcb['pid']),[int(t['pid']) for t in tcb_list]):
+ while not self.is_in(parse_int(next_tcb['pid']),[parse_int(t['pid']) for t in tcb_list]):
tcb_list.append(next_tcb);
old_tcb = next_tcb;
next_tcb = old_tcb['flink'].dereference()
- return [t for t in tcb_list if int(t['pid'])<2000]
+ return [t for t in tcb_list if parse_int(t['pid'])<2000]
def invoke(self,args,sth):
list_of_listsnames = ['g_pendingtasks','g_readytorun','g_waitingforsemaphore','g_waitingforsignal','g_inactivetasks']
@@ -612,7 +615,7 @@ class NX_search_tcb(gdb.Command):
# filter for tasks that are listed twice
tasks_filt = {}
for t in tasks:
- pid = int(t['pid']);
+ pid = parse_int(t['pid']);
if not pid in tasks_filt.keys():
tasks_filt[pid] = t['name'];
print('{num_t} Tasks found:'.format(num_t = len(tasks_filt)))
@@ -653,62 +656,49 @@ class NX_my_bt(gdb.Command):
tcb_ptr = addr_value.cast(gdb.lookup_type('struct tcb_s').pointer())
return tcb_ptr.dereference()
- def print_instruction_at(self,addr,stack_percentage):
+ def resolve_file_line_func(self,addr,stack_percentage):
gdb.write(str(round(stack_percentage,2))+":")
str_to_eval = "info line *"+hex(addr)
#gdb.execute(str_to_eval)
res = gdb.execute(str_to_eval,to_string = True)
# get information from results string:
words = res.split()
- valid = False
- if words[0] == 'No':
- #no line info...
- pass
- else:
- valid = True
+ if words[0] != 'No':
line = int(words[1])
- idx = words[3].rfind("/"); #find first backslash
- if idx>0:
- name = words[3][idx+1:];
- path = words[3][:idx];
- else:
- name = words[3];
- path = "";
block = gdb.block_for_pc(addr)
func = block.function
if str(func) == "None":
func = block.superblock.function
-
- if valid:
- print("Line: ",line," in ",path,"/",name,"in ",func)
- return name,path,line,func
-
-
-
+ return words[3].strip('"'), line, func
def invoke(self,args,sth):
- addr_dec = int(args[2:],16)
- _tcb = self.get_tcb_from_address(addr_dec)
+ try:
+ addr_dec = parse_int(args) # Trying to interpret the input as TCB address
+ except ValueError:
+ for task in NX_task.tasks(): # Interpreting as a task name
+ if task.name == args:
+ _tcb = task._tcb
+ break
+ else:
+ _tcb = self.get_tcb_from_address(addr_dec)
+
print("found task with PID: ",_tcb["pid"])
- up_stack = int(_tcb['adj_stack_ptr'])
- curr_sp = int(_tcb['xcp']['regs'][0]) #curr stack pointer
- other_sp = int(_tcb['xcp']['regs'][8]) # other stack pointer
- stacksize = int(_tcb['adj_stack_size']) # other stack pointer
+ up_stack = parse_int(_tcb['adj_stack_ptr'])
+ curr_sp = parse_int(_tcb['xcp']['regs'][0]) #curr stack pointer
+ other_sp = parse_int(_tcb['xcp']['regs'][8]) # other stack pointer
+ stacksize = parse_int(_tcb['adj_stack_size']) # other stack pointer
print("tasks current SP = ",hex(curr_sp),"stack max ptr is at ",hex(up_stack))
- if curr_sp == up_stack:
- sp = other_sp
- else:
- sp = curr_sp;
-
- while(sp < up_stack):
+ item = 0
+ for sp in range(other_sp if curr_sp == up_stack else curr_sp, up_stack, 4):
mem = self.readmem(sp)
#print(hex(sp)," : ",hex(mem))
if self.is_in_bounds(mem):
# this is a potential instruction ptr
stack_percentage = (up_stack-sp)/stacksize
- name,path,line,func = self.print_instruction_at(mem,stack_percentage)
- sp = sp + 4; # jump up one word
+ filename,line,func = self.resolve_file_line_func(mem, stack_percentage)
+ print('#%-2d ' % item, '0x%08x in ' % mem, func, ' at ', filename, ':', line, sep='')
+ item += 1
NX_my_bt()
diff --git a/Debug/poor-mans-profiler.sh b/Debug/poor-mans-profiler.sh
new file mode 100755
index 000000000..ab06a1b66
--- /dev/null
+++ b/Debug/poor-mans-profiler.sh
@@ -0,0 +1,260 @@
+#!/bin/bash
+#
+# Poor man's sampling profiler for NuttX.
+#
+# Usage: Install flamegraph.pl in your PATH, configure your .gdbinit, run the script with proper arguments and go
+# have a coffee. When you're back, you'll see the flamegraph. Note that frequent calls to GDB significantly
+# interfere with normal operation of the target, which means that you can't profile real-time tasks with it.
+#
+# Requirements: ARM GDB with Python support
+#
+
+set -e
+root=$(dirname $0)/..
+
+function die()
+{
+ echo "$@"
+ exit 1
+}
+
+function usage()
+{
+ echo "Invalid usage. Supported options:"
+ cat $0 | sed -n 's/^\s*--\([^)\*]*\).*/\1/p' # Don't try this at home.
+ exit 1
+}
+
+which flamegraph.pl > /dev/null || die "Install flamegraph.pl first"
+
+#
+# Parsing the arguments. Read this section for usage info.
+#
+nsamples=0
+sleeptime=0.1 # Doctors recommend 7-8 hours a day
+taskname=
+elf=$root/Build/px4fmu-v2_default.build/firmware.elf
+append=0
+fgfontsize=10
+fgwidth=1900
+
+for i in "$@"
+do
+ case $i in
+ --nsamples=*)
+ nsamples="${i#*=}"
+ ;;
+ --sleeptime=*)
+ sleeptime="${i#*=}"
+ ;;
+ --taskname=*)
+ taskname="${i#*=}"
+ ;;
+ --elf=*)
+ elf="${i#*=}"
+ ;;
+ --append)
+ append=1
+ ;;
+ --fgfontsize=*)
+ fgfontsize="${i#*=}"
+ ;;
+ --fgwidth=*)
+ fgwidth="${i#*=}"
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ shift
+done
+
+#
+# Temporary files
+#
+stacksfile=/tmp/pmpn-stacks.log
+foldfile=/tmp/pmpn-folded.txt
+graphfile=/tmp/pmpn-flamegraph.svg
+gdberrfile=/tmp/pmpn-gdberr.log
+
+#
+# Sampling if requested. Note that if $append is true, the stack file will not be rewritten.
+#
+cd $root
+
+if [[ $nsamples > 0 ]]
+then
+ [[ $append = 0 ]] && (rm -f $stacksfile; echo "Old stacks removed")
+
+ echo "Sampling the task '$taskname'..."
+
+ for x in $(seq 1 $nsamples)
+ do
+ if [[ "$taskname" = "" ]]
+ then
+ arm-none-eabi-gdb $elf --batch -ex "set print asm-demangle on" -ex bt \
+ 2> $gdberrfile \
+ | sed -n 's/\(#.*\)/\1/p' \
+ >> $stacksfile
+ else
+ arm-none-eabi-gdb $elf --batch -ex "set print asm-demangle on" \
+ -ex "source $root/Debug/Nuttx.py" \
+ -ex "show mybt $taskname" \
+ 2> $gdberrfile \
+ | sed -n 's/0\.0:\(#.*\)/\1/p' \
+ >> $stacksfile
+ fi
+ echo -e '\n\n' >> $stacksfile
+ echo -ne "\r$x/$nsamples"
+ sleep $sleeptime
+ done
+
+ echo
+ echo "Stacks saved to $stacksfile"
+else
+ echo "Sampling skipped - set 'nsamples' to re-sample."
+fi
+
+#
+# Folding the stacks.
+#
+[ -f $stacksfile ] || die "Where are the stack samples?"
+
+cat << 'EOF' > /tmp/pmpn-folder.py
+#
+# This stack folder correctly handles C++ types.
+#
+from __future__ import print_function, division
+import fileinput, collections, os, sys
+
+def enforce(x, msg='Invalid input'):
+ if not x:
+ raise Exception(msg)
+
+def split_first_part_with_parens(line):
+ LBRACES = {'(':'()', '<':'<>', '[':'[]', '{':'{}'}
+ RBRACES = {')':'()', '>':'<>', ']':'[]', '}':'{}'}
+ QUOTES = set(['"', "'"])
+ quotes = collections.defaultdict(bool)
+ braces = collections.defaultdict(int)
+ out = ''
+ for ch in line:
+ out += ch
+ # escape character cancels further processing
+ if ch == '\\':
+ continue
+ # special cases
+ if out.endswith('operator>') or out.endswith('operator>>') or out.endswith('operator->'): # gotta love c++
+ braces['<>'] += 1
+ if out.endswith('operator<') or out.endswith('operator<<'):
+ braces['<>'] -= 1
+ # switching quotes
+ if ch in QUOTES:
+ quotes[ch] = not quotes[ch]
+ # counting parens only when outside quotes
+ if sum(quotes.values()) == 0:
+ if ch in LBRACES.keys():
+ braces[LBRACES[ch]] += 1
+ if ch in RBRACES.keys():
+ braces[RBRACES[ch]] -= 1
+ # sanity check
+ for v in braces.values():
+ enforce(v >= 0, 'Unaligned braces: ' + str(dict(braces)))
+ # termination condition
+ if ch == ' ' and sum(braces.values()) == 0:
+ break
+ out = out.strip()
+ return out, line[len(out):]
+
+def parse(line):
+ def take_path(line, output):
+ line = line.strip()
+ if line.startswith('at '):
+ line = line[3:].strip()
+ if line:
+ output['file_full_path'] = line.rsplit(':', 1)[0].strip()
+ output['file_base_name'] = os.path.basename(output['file_full_path'])
+ output['line'] = int(line.rsplit(':', 1)[1])
+ return output
+
+ def take_args(line, output):
+ line = line.lstrip()
+ if line[0] == '(':
+ output['args'], line = split_first_part_with_parens(line)
+ return take_path(line.lstrip(), output)
+
+ def take_function(line, output):
+ output['function'], line = split_first_part_with_parens(line.lstrip())
+ return take_args(line.lstrip(), output)
+
+ def take_mem_loc(line, output):
+ line = line.lstrip()
+ if line.startswith('0x'):
+ end = line.find(' ')
+ num = line[:end]
+ output['memloc'] = int(num, 16)
+ line = line[end:].lstrip()
+ end = line.find(' ')
+ enforce(line[:end] == 'in')
+ line = line[end:].lstrip()
+ return take_function(line, output)
+
+ def take_frame_num(line, output):
+ line = line.lstrip()
+ enforce(line[0] == '#')
+ end = line.find(' ')
+ num = line[1:end]
+ output['frame_num'] = int(num)
+ return take_mem_loc(line[end:], output)
+
+ return take_frame_num(line, {})
+
+stacks = collections.defaultdict(int)
+current = ''
+
+stack_tops = collections.defaultdict(int)
+num_stack_frames = 0
+
+for idx,line in enumerate(fileinput.input()):
+ try:
+ line = line.strip()
+ if line:
+ inf = parse(line)
+ fun = inf['function']
+ current = (fun + ';' + current) if current else fun
+
+ if inf['frame_num'] == 0:
+ num_stack_frames += 1
+ stack_tops[fun] += 1
+ elif current:
+ stacks[current] += 1
+ current = ''
+ except Exception, ex:
+ print('ERROR (line %d):' % (idx + 1), ex, file=sys.stderr)
+
+for s, f in sorted(stacks.items(), key=lambda (s, f): s):
+ print(s, f)
+
+print('Total stack frames:', num_stack_frames, file=sys.stderr)
+print('Top consumers (distribution of the stack tops):', file=sys.stderr)
+for name,num in sorted(stack_tops.items(), key=lambda (name, num): num, reverse=True)[:10]:
+ print('% 5.1f%% ' % (100 * num / num_stack_frames), name, file=sys.stderr)
+EOF
+
+cat $stacksfile | python /tmp/pmpn-folder.py > $foldfile
+
+echo "Folded stacks saved to $foldfile"
+
+#
+# Graphing.
+#
+cat $foldfile | flamegraph.pl --fontsize=$fgfontsize --width=$fgwidth > $graphfile
+echo "FlameGraph saved to $graphfile"
+
+# On KDE, xdg-open prefers Gwenview by default, which doesn't handle interactive SVGs, so we need a browser.
+# The current implementation is hackish and stupid. Somebody, please do something about it.
+opener=xdg-open
+which firefox > /dev/null && opener=firefox
+which google-chrome > /dev/null && opener=google-chrome
+
+$opener $graphfile
diff --git a/Documentation/px4_block_diagram.odg b/Documentation/px4_block_diagram.odg
new file mode 100644
index 000000000..95b6f600b
--- /dev/null
+++ b/Documentation/px4_block_diagram.odg
Binary files differ
diff --git a/Makefile b/Makefile
index c727c9a69..1f50770a5 100644
--- a/Makefile
+++ b/Makefile
@@ -161,7 +161,7 @@ $(foreach config,$(FMU_CONFIGS),$(eval $(call FMU_DEP,$(config))))
#
NUTTX_ARCHIVES = $(foreach board,$(BOARDS),$(ARCHIVE_DIR)$(board).export)
.PHONY: archives
-archives: $(NUTTX_ARCHIVES)
+archives: nuttxpatches $(NUTTX_ARCHIVES)
# We cannot build these parallel; note that we also force -j1 for the
# sub-make invocations.
@@ -183,6 +183,29 @@ $(NUTTX_ARCHIVES): $(ARCHIVE_DIR)%.export: $(NUTTX_SRC)
$(Q) $(COPY) $(NUTTX_SRC)nuttx-export.zip $@
$(Q) (cd $(NUTTX_SRC)/configs && $(RMDIR) $(board))
+NUTTX_PATCHES := $(wildcard $(PX4_NUTTX_PATCH_DIR)*.patch)
+NUTTX_PATCHED = $(NUTTX_SRC).patchedpx4common
+
+.PHONY: nuttxpatches
+nuttxpatches:
+ $(Q) -if [ ! -f $(NUTTX_PATCHED) ]; then \
+ for patch in $(NUTTX_PATCHES); \
+ do \
+ $(PATCH) -p0 -N < $$patch >/dev/null; \
+ done \
+ fi
+ $(Q) $(TOUCH) $(NUTTX_PATCHED)
+
+.PHONY: cleannuttxpatches
+cleannuttxpatches:
+ $(Q) -if [ -f $(NUTTX_PATCHED) ]; then \
+ for patch in $(NUTTX_PATCHES); \
+ do \
+ $(PATCH) -p0 -N -R -r - < $$patch >/dev/null; \
+ done \
+ fi
+ $(Q) $(REMOVE) $(NUTTX_PATCHED)
+
#
# The user can run the NuttX 'menuconfig' tool for a single board configuration with
# make BOARDS=<boardname> menuconfig
@@ -273,7 +296,7 @@ clean:
$(Q) $(REMOVE) $(IMAGE_DIR)*.px4
.PHONY: distclean
-distclean: clean
+distclean: cleannuttxpatches clean
@echo > /dev/null
$(Q) $(REMOVE) $(ARCHIVE_DIR)*.export
$(Q) $(MAKE) -C $(NUTTX_SRC) -r $(MQUIET) distclean
diff --git a/NuttX b/NuttX
-Subproject e4c914e261d2647e44d05222afa7aa3cc90d3c6
+Subproject d6d68d7d117318c7e1eadf40e989e28cba57941
diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS
index 2c9387ff0..043e0bc17 100644
--- a/ROMFS/px4fmu_common/init.d/rcS
+++ b/ROMFS/px4fmu_common/init.d/rcS
@@ -214,7 +214,7 @@ then
if px4io forceupdate 14662 $IO_FILE
then
- usleep 500000
+ usleep 10000
if px4io checkcrc $IO_FILE
then
echo "PX4IO CRC OK after updating" >> $LOG_FILE
diff --git a/makefiles/config_px4fmu-v1_default.mk b/makefiles/config_px4fmu-v1_default.mk
index 7eb090d73..bd601aad3 100644
--- a/makefiles/config_px4fmu-v1_default.mk
+++ b/makefiles/config_px4fmu-v1_default.mk
@@ -153,4 +153,5 @@ endef
# command priority stack entrypoint
BUILTIN_COMMANDS := \
$(call _B, sercon, , 2048, sercon_main ) \
- $(call _B, serdis, , 2048, serdis_main )
+ $(call _B, serdis, , 2048, serdis_main ) \
+ $(call _B, cu, , 2048, cu_main )
diff --git a/makefiles/config_px4fmu-v2_default.mk b/makefiles/config_px4fmu-v2_default.mk
index 2ce738844..a48b3115e 100644
--- a/makefiles/config_px4fmu-v2_default.mk
+++ b/makefiles/config_px4fmu-v2_default.mk
@@ -27,15 +27,15 @@ MODULES += drivers/l3gd20
MODULES += drivers/hmc5883
MODULES += drivers/ms5611
MODULES += drivers/mb12xx
-# MODULES += drivers/sf0x
+MODULES += drivers/sf0x
MODULES += drivers/ll40ls
-# MODULES += drivers/trone
+MODULES += drivers/trone
MODULES += drivers/gps
-# MODULES += drivers/hil
-# MODULES += drivers/hott
-# MODULES += drivers/hott/hott_telemetry
-# MODULES += drivers/hott/hott_sensors
-# MODULES += drivers/blinkm
+MODULES += drivers/hil
+MODULES += drivers/hott
+MODULES += drivers/hott/hott_telemetry
+MODULES += drivers/hott/hott_sensors
+MODULES += drivers/blinkm
MODULES += drivers/airspeed
MODULES += drivers/ets_airspeed
MODULES += drivers/meas_airspeed
@@ -77,7 +77,7 @@ MODULES += modules/land_detector
# Estimation modules (EKF/ SO3 / other filters)
#
MODULES += modules/attitude_estimator_ekf
-# MODULES += modules/ekf_att_pos_estimator
+MODULES += modules/ekf_att_pos_estimator
MODULES += modules/position_estimator_inav
#
@@ -116,7 +116,6 @@ MODULES += lib/geo
MODULES += lib/geo_lookup
MODULES += lib/conversion
MODULES += lib/launchdetection
-MODULES += platforms/nuttx
#
# OBC challenge
@@ -164,4 +163,5 @@ endef
# command priority stack entrypoint
BUILTIN_COMMANDS := \
$(call _B, sercon, , 2048, sercon_main ) \
- $(call _B, serdis, , 2048, serdis_main )
+ $(call _B, serdis, , 2048, serdis_main ) \
+ $(call _B, cu, , 2048, cu_main )
diff --git a/makefiles/config_px4fmu-v2_test.mk b/makefiles/config_px4fmu-v2_test.mk
index 48c3b64ff..f14372f0b 100644
--- a/makefiles/config_px4fmu-v2_test.mk
+++ b/makefiles/config_px4fmu-v2_test.mk
@@ -32,6 +32,8 @@ MODULES += systemcmds/tests
MODULES += systemcmds/nshterm
MODULES += systemcmds/mtd
MODULES += systemcmds/ver
+MODULES += systemcmds/param
+MODULES += systemcmds/top
#
# System commands
@@ -112,4 +114,5 @@ endef
# command priority stack entrypoint
BUILTIN_COMMANDS := \
$(call _B, sercon, , 2048, sercon_main ) \
- $(call _B, serdis, , 2048, serdis_main )
+ $(call _B, serdis, , 2048, serdis_main ) \
+ $(call _B, cu, , 2048, cu_main )
diff --git a/makefiles/setup.mk b/makefiles/setup.mk
index 435c240bf..5a4c68b96 100644
--- a/makefiles/setup.mk
+++ b/makefiles/setup.mk
@@ -55,6 +55,7 @@ export ROMFS_SRC = $(abspath $(PX4_BASE)/ROMFS)/
export IMAGE_DIR = $(abspath $(PX4_BASE)/Images)/
export BUILD_DIR = $(abspath $(PX4_BASE)/Build)/
export ARCHIVE_DIR = $(abspath $(PX4_BASE)/Archives)/
+export PX4_NUTTX_PATCH_DIR = $(abspath $(PX4_BASE)/nuttx-patches)/
#
# Default include paths
@@ -68,20 +69,22 @@ export INCLUDE_DIRS := $(PX4_MODULE_SRC) \
#
# Tools
#
-export MKFW = $(PX4_BASE)/Tools/px_mkfw.py
+export MKFW = $(PX4_BASE)/Tools/px_mkfw.py
export UPLOADER = $(PX4_BASE)/Tools/px_uploader.py
-export COPY = cp
+export COPY = cp
export COPYDIR = cp -Rf
export REMOVE = rm -f
export RMDIR = rm -rf
export GENROMFS = genromfs
export TOUCH = touch
export MKDIR = mkdir
-export FIND = find
-export ECHO = echo
+export FIND = find
+export ECHO = echo
export UNZIP_CMD = unzip
export PYTHON = python
export OPENOCD = openocd
+export PATCH = patch
+export GREP = grep
#
# Host-specific paths, hacks and fixups
diff --git a/makefiles/toolchain_gnu-arm-eabi.mk b/makefiles/toolchain_gnu-arm-eabi.mk
index c35a23ff1..d96c21197 100644
--- a/makefiles/toolchain_gnu-arm-eabi.mk
+++ b/makefiles/toolchain_gnu-arm-eabi.mk
@@ -80,13 +80,31 @@ ARCHCPUFLAGS_CORTEXM3 = -mcpu=cortex-m3 \
-march=armv7-m \
-mfloat-abi=soft
-ARCHINSTRUMENTATIONDEFINES_CORTEXM4F = -finstrument-functions \
- -ffixed-r10
-
-ARCHINSTRUMENTATIONDEFINES_CORTEXM4 = -finstrument-functions \
- -ffixed-r10
+#
+# Tool to test a Nuttx Config value from config.h
+#
-ARCHINSTRUMENTATIONDEFINES_CORTEXM3 =
+NUTTX_CONFIG_H=$(WORK_DIR)nuttx-export/include/nuttx/config.h
+define check_nuttx_config
+$(strip $(shell $(GREP) -q $1 $2;echo -n $$?;))
+endef
+nuttx_config_true:="0"
+nuttx_config_2true:="0 0"
+
+#
+# Enabling stack checks if OS was build with them
+#
+
+ENABLE_STACK_CHECKS=$(call check_nuttx_config ,"CONFIG_ARMV7M_STACKCHECK 1", $(NUTTX_CONFIG_H))
+ifeq ("$(ENABLE_STACK_CHECKS)",$(nuttx_config_true))
+ARCHINSTRUMENTATIONDEFINES_CORTEXM4F = -finstrument-functions -ffixed-r10
+ARCHINSTRUMENTATIONDEFINES_CORTEXM4 = -finstrument-functions -ffixed-r10
+ARCHINSTRUMENTATIONDEFINES_CORTEXM3 =
+else
+ARCHINSTRUMENTATIONDEFINES_CORTEXM4F =
+ARCHINSTRUMENTATIONDEFINES_CORTEXM4 =
+ARCHINSTRUMENTATIONDEFINES_CORTEXM3 =
+endif
# Pick the right set of flags for the architecture.
#
@@ -105,7 +123,7 @@ ARCHDEFINES += -DCONFIG_ARCH_BOARD_$(CONFIG_BOARD)
# optimisation flags
#
ARCHOPTIMIZATION = $(MAXOPTIMIZATION) \
- -g \
+ -g3 \
-fno-strict-aliasing \
-fno-strength-reduce \
-fomit-frame-pointer \
@@ -319,3 +337,4 @@ define BIN_TO_OBJ
--rename-section .data=.rodata
$(Q) $(REMOVE) $2.c $2.c.o
endef
+
diff --git a/nuttx-configs/aerocore/nsh/Make.defs b/nuttx-configs/aerocore/nsh/Make.defs
index c1f5a8ac4..10cd651f5 100644
--- a/nuttx-configs/aerocore/nsh/Make.defs
+++ b/nuttx-configs/aerocore/nsh/Make.defs
@@ -35,6 +35,7 @@
include ${TOPDIR}/.config
include ${TOPDIR}/tools/Config.mk
+include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
#
# We only support building with the ARM bare-metal toolchain from
@@ -62,8 +63,9 @@ ARCHCPUFLAGS = -mcpu=cortex-m4 \
# enable precise stack overflow tracking
-INSTRUMENTATIONDEFINES = -finstrument-functions \
- -ffixed-r10
+ifeq ($(CONFIG_ARMV7M_STACKCHECK),y)
+INSTRUMENTATIONDEFINES = -finstrument-functions -ffixed-r10
+endif
# pull in *just* libm from the toolchain ... this is grody
LIBM = "${shell $(CC) $(ARCHCPUFLAGS) -print-file-name=libm.a}"
diff --git a/nuttx-configs/aerocore/nsh/appconfig b/nuttx-configs/aerocore/nsh/appconfig
deleted file mode 100644
index 2850dac06..000000000
--- a/nuttx-configs/aerocore/nsh/appconfig
+++ /dev/null
@@ -1,42 +0,0 @@
-############################################################################
-# configs/aerocore/nsh/appconfig
-#
-# Copyright (C) 2011 Gregory Nutt. All rights reserved.
-# Author: Gregory Nutt <gnutt@nuttx.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name NuttX nor the names of its contributors may be
-# used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
-
-# Path to example in apps/examples containing the user_start entry point
-
-CONFIGURED_APPS += examples/nsh
-
-# The NSH application library
-CONFIGURED_APPS += nshlib
-CONFIGURED_APPS += system/readline
diff --git a/nuttx-configs/aerocore/nsh/defconfig b/nuttx-configs/aerocore/nsh/defconfig
index 317194f68..141e1d9a0 100644
--- a/nuttx-configs/aerocore/nsh/defconfig
+++ b/nuttx-configs/aerocore/nsh/defconfig
@@ -2,7 +2,6 @@
# Automatically generated file; DO NOT EDIT.
# Nuttx/ Configuration
#
-CONFIG_NUTTX_NEWCONFIG=y
#
# Build Setup
@@ -93,8 +92,8 @@ CONFIG_ARCH_HAVE_MPU=y
# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set
# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set
-CONFIG_ARMV7M_TOOLCHAIN_GNU_EABI=y
-CONFIG_ARMV7M_STACKCHECK=y
+CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y
+CONFIG_ARMV7M_STACKCHECK=n
CONFIG_SERIAL_TERMIOS=y
#
@@ -293,7 +292,7 @@ CONFIG_STM32_USART_SINGLEWIRE=y
# CONFIG_STM32_I2C_DYNTIMEO is not set
CONFIG_STM32_I2CTIMEOSEC=0
CONFIG_STM32_I2CTIMEOMS=10
-CONFIG_STM32_I2CTIMEOTICKS=500
+CONFIG_STM32_I2CTIMEOTICKS=10
# CONFIG_STM32_I2C_DUTY16_9 is not set
#
@@ -332,7 +331,7 @@ CONFIG_BOARD_LOOPSPERMSEC=16717
CONFIG_DRAM_START=0x20000000
CONFIG_DRAM_SIZE=262144
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
-CONFIG_ARCH_INTERRUPTSTACK=4096
+CONFIG_ARCH_INTERRUPTSTACK=2048
#
# Boot options
@@ -346,8 +345,9 @@ CONFIG_BOOT_RUNFROMFLASH=y
#
# Board Selection
#
-CONFIG_ARCH_BOARD_CUSTOM=y
-CONFIG_ARCH_BOARD=""
+CONFIG_ARCH_BOARD_AEROCORE=y
+# CONFIG_ARCH_BOARD_CUSTOM is not set
+CONFIG_ARCH_BOARD="aerocore"
#
# Common Board Options
@@ -414,8 +414,8 @@ CONFIG_PREALLOC_TIMERS=50
#
# Stack and heap information
#
-CONFIG_IDLETHREAD_STACKSIZE=6000
-CONFIG_USERMAIN_STACKSIZE=4096
+CONFIG_IDLETHREAD_STACKSIZE=3500
+CONFIG_USERMAIN_STACKSIZE=2600
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_PTHREAD_STACK_DEFAULT=2048
@@ -466,6 +466,8 @@ CONFIG_MTD_BYTE_WRITE=y
# CONFIG_MTD_M25P is not set
# CONFIG_MTD_SMART is not set
CONFIG_MTD_RAMTRON=y
+CONFIG_RAMTRON_WRITEWAIT=y
+CONFIG_RAMTRON_SETSPEED=y
CONFIG_RAMTRON_FUJITSU=y
# CONFIG_MTD_SST25 is not set
# CONFIG_MTD_SST39FV is not set
@@ -862,7 +864,9 @@ CONFIG_NSH_CODECS_BUFSIZE=128
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_STRERROR=y
CONFIG_NSH_LINELEN=128
+CONFIG_NSH_CMDPARMS=y
CONFIG_NSH_MAXARGUMENTS=12
+CONFIG_NSH_ARGCAT=y
CONFIG_NSH_NESTDEPTH=8
# CONFIG_NSH_DISABLESCRIPT is not set
# CONFIG_NSH_DISABLEBG is not set
diff --git a/nuttx-configs/px4fmu-v1/nsh/Make.defs b/nuttx-configs/px4fmu-v1/nsh/Make.defs
index 5e28f2473..0d3fbe546 100644
--- a/nuttx-configs/px4fmu-v1/nsh/Make.defs
+++ b/nuttx-configs/px4fmu-v1/nsh/Make.defs
@@ -35,6 +35,7 @@
include ${TOPDIR}/.config
include ${TOPDIR}/tools/Config.mk
+include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
#
# We only support building with the ARM bare-metal toolchain from
@@ -62,8 +63,9 @@ ARCHCPUFLAGS = -mcpu=cortex-m4 \
# enable precise stack overflow tracking
-INSTRUMENTATIONDEFINES = -finstrument-functions \
- -ffixed-r10
+ifeq ($(CONFIG_ARMV7M_STACKCHECK),y)
+INSTRUMENTATIONDEFINES = -finstrument-functions -ffixed-r10
+endif
# pull in *just* libm from the toolchain ... this is grody
LIBM = "${shell $(CC) $(ARCHCPUFLAGS) -print-file-name=libm.a}"
diff --git a/nuttx-configs/px4fmu-v1/nsh/defconfig b/nuttx-configs/px4fmu-v1/nsh/defconfig
index a467fa605..f5adc4c4a 100644
--- a/nuttx-configs/px4fmu-v1/nsh/defconfig
+++ b/nuttx-configs/px4fmu-v1/nsh/defconfig
@@ -2,14 +2,14 @@
# Automatically generated file; DO NOT EDIT.
# Nuttx/ Configuration
#
-CONFIG_NUTTX_NEWCONFIG=y
#
# Build Setup
#
# CONFIG_EXPERIMENTAL is not set
-# CONFIG_HOST_LINUX is not set
-CONFIG_HOST_OSX=y
+# CONFIG_DEFAULT_SMALL is not set
+CONFIG_HOST_LINUX=y
+# CONFIG_HOST_OSX is not set
# CONFIG_HOST_WINDOWS is not set
# CONFIG_HOST_OTHER is not set
@@ -17,6 +17,7 @@ CONFIG_HOST_OSX=y
# Build Configuration
#
CONFIG_APPS_DIR="../apps"
+CONFIG_BUILD_FLAT=y
# CONFIG_BUILD_2PASS is not set
#
@@ -26,10 +27,12 @@ CONFIG_APPS_DIR="../apps"
# CONFIG_INTELHEX_BINARY is not set
# CONFIG_MOTOROLA_SREC is not set
CONFIG_RAW_BINARY=y
+# CONFIG_UBOOT_UIMAGE is not set
#
# Customize Header Files
#
+# CONFIG_ARCH_STDINT_H is not set
# CONFIG_ARCH_STDBOOL_H is not set
CONFIG_ARCH_MATH_H=y
# CONFIG_ARCH_FLOAT_H is not set
@@ -39,12 +42,17 @@ CONFIG_ARCH_MATH_H=y
# Debug Options
#
# CONFIG_DEBUG is not set
+CONFIG_ARCH_HAVE_STACKCHECK=y
+CONFIG_ARCH_HAVE_HEAPCHECK=y
CONFIG_DEBUG_SYMBOLS=y
+CONFIG_ARCH_HAVE_CUSTOMOPT=y
+CONFIG_DEBUG_NOOPT=y
+# CONFIG_DEBUG_CUSTOMOPT is not set
+# CONFIG_DEBUG_FULLOPT is not set
#
# System Type
#
-# CONFIG_ARCH_8051 is not set
CONFIG_ARCH_ARM=y
# CONFIG_ARCH_AVR is not set
# CONFIG_ARCH_HC is not set
@@ -60,23 +68,35 @@ CONFIG_ARCH="arm"
#
# ARM Options
#
+# CONFIG_ARCH_CHIP_A1X is not set
# CONFIG_ARCH_CHIP_C5471 is not set
# CONFIG_ARCH_CHIP_CALYPSO is not set
# CONFIG_ARCH_CHIP_DM320 is not set
+# CONFIG_ARCH_CHIP_EFM32 is not set
# CONFIG_ARCH_CHIP_IMX is not set
# CONFIG_ARCH_CHIP_KINETIS is not set
# CONFIG_ARCH_CHIP_KL is not set
# CONFIG_ARCH_CHIP_LM is not set
+# CONFIG_ARCH_CHIP_TIVA is not set
# CONFIG_ARCH_CHIP_LPC17XX is not set
# CONFIG_ARCH_CHIP_LPC214X is not set
# CONFIG_ARCH_CHIP_LPC2378 is not set
# CONFIG_ARCH_CHIP_LPC31XX is not set
# CONFIG_ARCH_CHIP_LPC43XX is not set
# CONFIG_ARCH_CHIP_NUC1XX is not set
+# CONFIG_ARCH_CHIP_SAMA5 is not set
+# CONFIG_ARCH_CHIP_SAMD is not set
# CONFIG_ARCH_CHIP_SAM34 is not set
CONFIG_ARCH_CHIP_STM32=y
# CONFIG_ARCH_CHIP_STR71X is not set
+# CONFIG_ARCH_ARM7TDMI is not set
+# CONFIG_ARCH_ARM926EJS is not set
+# CONFIG_ARCH_ARM920T is not set
+# CONFIG_ARCH_CORTEXM0 is not set
+# CONFIG_ARCH_CORTEXM3 is not set
CONFIG_ARCH_CORTEXM4=y
+# CONFIG_ARCH_CORTEXA5 is not set
+# CONFIG_ARCH_CORTEXA8 is not set
CONFIG_ARCH_FAMILY="armv7-m"
CONFIG_ARCH_CHIP="stm32"
CONFIG_ARMV7M_USEBASEPRI=y
@@ -84,16 +104,17 @@ CONFIG_ARCH_HAVE_CMNVECTOR=y
CONFIG_ARMV7M_CMNVECTOR=y
CONFIG_ARCH_HAVE_FPU=y
CONFIG_ARCH_FPU=y
-CONFIG_ARCH_HAVE_MPU=y
# CONFIG_ARMV7M_MPU is not set
#
# ARMV7M Configuration Options
#
# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
-CONFIG_ARMV7M_TOOLCHAIN_GNU_EABI=y
-CONFIG_ARMV7M_STACKCHECK=y
-CONFIG_SERIAL_TERMIOS=y
+# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set
+# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set
+CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y
+CONFIG_ARMV7M_STACKCHECK=n
+# CONFIG_ARMV7M_ITMSYSLOG is not set
#
# STM32 Configuration Options
@@ -116,6 +137,7 @@ CONFIG_SERIAL_TERMIOS=y
# CONFIG_ARCH_CHIP_STM32L152V6 is not set
# CONFIG_ARCH_CHIP_STM32L152V8 is not set
# CONFIG_ARCH_CHIP_STM32L152VB is not set
+# CONFIG_ARCH_CHIP_STM32L162ZD is not set
# CONFIG_ARCH_CHIP_STM32F100C8 is not set
# CONFIG_ARCH_CHIP_STM32F100CB is not set
# CONFIG_ARCH_CHIP_STM32F100R8 is not set
@@ -128,15 +150,27 @@ CONFIG_SERIAL_TERMIOS=y
# CONFIG_ARCH_CHIP_STM32F100VC is not set
# CONFIG_ARCH_CHIP_STM32F100VD is not set
# CONFIG_ARCH_CHIP_STM32F100VE is not set
+# CONFIG_ARCH_CHIP_STM32F102CB is not set
+# CONFIG_ARCH_CHIP_STM32F103T8 is not set
+# CONFIG_ARCH_CHIP_STM32F103TB is not set
# CONFIG_ARCH_CHIP_STM32F103C4 is not set
# CONFIG_ARCH_CHIP_STM32F103C8 is not set
-# CONFIG_ARCH_CHIP_STM32F103RET6 is not set
-# CONFIG_ARCH_CHIP_STM32F103VCT6 is not set
-# CONFIG_ARCH_CHIP_STM32F103VET6 is not set
-# CONFIG_ARCH_CHIP_STM32F103ZET6 is not set
-# CONFIG_ARCH_CHIP_STM32F105VBT7 is not set
+# CONFIG_ARCH_CHIP_STM32F103CB is not set
+# CONFIG_ARCH_CHIP_STM32F103R8 is not set
+# CONFIG_ARCH_CHIP_STM32F103RB is not set
+# CONFIG_ARCH_CHIP_STM32F103RC is not set
+# CONFIG_ARCH_CHIP_STM32F103RD is not set
+# CONFIG_ARCH_CHIP_STM32F103RE is not set
+# CONFIG_ARCH_CHIP_STM32F103RG is not set
+# CONFIG_ARCH_CHIP_STM32F103V8 is not set
+# CONFIG_ARCH_CHIP_STM32F103VB is not set
+# CONFIG_ARCH_CHIP_STM32F103VC is not set
+# CONFIG_ARCH_CHIP_STM32F103VE is not set
+# CONFIG_ARCH_CHIP_STM32F103ZE is not set
+# CONFIG_ARCH_CHIP_STM32F105VB is not set
# CONFIG_ARCH_CHIP_STM32F107VC is not set
# CONFIG_ARCH_CHIP_STM32F207IG is not set
+# CONFIG_ARCH_CHIP_STM32F207ZE is not set
# CONFIG_ARCH_CHIP_STM32F302CB is not set
# CONFIG_ARCH_CHIP_STM32F302CC is not set
# CONFIG_ARCH_CHIP_STM32F302RB is not set
@@ -149,6 +183,8 @@ CONFIG_SERIAL_TERMIOS=y
# CONFIG_ARCH_CHIP_STM32F303RC is not set
# CONFIG_ARCH_CHIP_STM32F303VB is not set
# CONFIG_ARCH_CHIP_STM32F303VC is not set
+# CONFIG_ARCH_CHIP_STM32F401RE is not set
+# CONFIG_ARCH_CHIP_STM32F411RE is not set
CONFIG_ARCH_CHIP_STM32F405RG=y
# CONFIG_ARCH_CHIP_STM32F405VG is not set
# CONFIG_ARCH_CHIP_STM32F405ZG is not set
@@ -161,23 +197,71 @@ CONFIG_ARCH_CHIP_STM32F405RG=y
# CONFIG_ARCH_CHIP_STM32F427V is not set
# CONFIG_ARCH_CHIP_STM32F427Z is not set
# CONFIG_ARCH_CHIP_STM32F427I is not set
+# CONFIG_ARCH_CHIP_STM32F429V is not set
+# CONFIG_ARCH_CHIP_STM32F429Z is not set
+# CONFIG_ARCH_CHIP_STM32F429I is not set
+# CONFIG_ARCH_CHIP_STM32F429B is not set
+# CONFIG_ARCH_CHIP_STM32F429N is not set
# CONFIG_STM32_STM32L15XX is not set
# CONFIG_STM32_ENERGYLITE is not set
# CONFIG_STM32_STM32F10XX is not set
# CONFIG_STM32_VALUELINE is not set
# CONFIG_STM32_CONNECTIVITYLINE is not set
# CONFIG_STM32_PERFORMANCELINE is not set
+# CONFIG_STM32_USBACCESSLINE is not set
# CONFIG_STM32_HIGHDENSITY is not set
# CONFIG_STM32_MEDIUMDENSITY is not set
# CONFIG_STM32_LOWDENSITY is not set
# CONFIG_STM32_STM32F20XX is not set
+# CONFIG_STM32_STM32F207 is not set
# CONFIG_STM32_STM32F30XX is not set
CONFIG_STM32_STM32F40XX=y
+# CONFIG_STM32_STM32F401 is not set
+# CONFIG_STM32_STM32F411 is not set
+CONFIG_STM32_STM32F405=y
+# CONFIG_STM32_STM32F407 is not set
+# CONFIG_STM32_STM32F427 is not set
+# CONFIG_STM32_STM32F429 is not set
# CONFIG_STM32_DFU is not set
#
# STM32 Peripheral Support
#
+CONFIG_STM32_HAVE_CCM=y
+# CONFIG_STM32_HAVE_USBDEV is not set
+CONFIG_STM32_HAVE_OTGFS=y
+CONFIG_STM32_HAVE_FSMC=y
+CONFIG_STM32_HAVE_USART3=y
+CONFIG_STM32_HAVE_UART4=y
+CONFIG_STM32_HAVE_UART5=y
+CONFIG_STM32_HAVE_USART6=y
+# CONFIG_STM32_HAVE_UART7 is not set
+# CONFIG_STM32_HAVE_UART8 is not set
+CONFIG_STM32_HAVE_TIM1=y
+CONFIG_STM32_HAVE_TIM5=y
+CONFIG_STM32_HAVE_TIM6=y
+CONFIG_STM32_HAVE_TIM7=y
+CONFIG_STM32_HAVE_TIM8=y
+CONFIG_STM32_HAVE_TIM9=y
+CONFIG_STM32_HAVE_TIM10=y
+CONFIG_STM32_HAVE_TIM11=y
+CONFIG_STM32_HAVE_TIM12=y
+CONFIG_STM32_HAVE_TIM13=y
+CONFIG_STM32_HAVE_TIM14=y
+# CONFIG_STM32_HAVE_TIM15 is not set
+# CONFIG_STM32_HAVE_TIM16 is not set
+# CONFIG_STM32_HAVE_TIM17 is not set
+CONFIG_STM32_HAVE_ADC2=y
+CONFIG_STM32_HAVE_ADC3=y
+# CONFIG_STM32_HAVE_ADC4 is not set
+CONFIG_STM32_HAVE_CAN1=y
+CONFIG_STM32_HAVE_CAN2=y
+CONFIG_STM32_HAVE_RNG=y
+# CONFIG_STM32_HAVE_ETHMAC is not set
+CONFIG_STM32_HAVE_SPI2=y
+CONFIG_STM32_HAVE_SPI3=y
+# CONFIG_STM32_HAVE_SPI4 is not set
+# CONFIG_STM32_HAVE_SPI5 is not set
CONFIG_STM32_ADC1=y
# CONFIG_STM32_ADC2 is not set
# CONFIG_STM32_ADC3 is not set
@@ -192,7 +276,6 @@ CONFIG_STM32_DMA2=y
# CONFIG_STM32_DAC1 is not set
# CONFIG_STM32_DAC2 is not set
# CONFIG_STM32_DCMI is not set
-# CONFIG_STM32_ETHMAC is not set
# CONFIG_STM32_FSMC is not set
# CONFIG_STM32_HASH is not set
CONFIG_STM32_I2C1=y
@@ -265,15 +348,12 @@ CONFIG_STM32_USART=y
# CONFIG_USART1_RXDMA is not set
# CONFIG_USART2_RS485 is not set
CONFIG_USART2_RXDMA=y
-# CONFIG_USART3_RXDMA is not set
-# CONFIG_UART4_RXDMA is not set
# CONFIG_UART5_RS485 is not set
CONFIG_UART5_RXDMA=y
# CONFIG_USART6_RS485 is not set
CONFIG_USART6_RXDMA=y
-# CONFIG_USART7_RXDMA is not set
-# CONFIG_USART8_RXDMA is not set
CONFIG_SERIAL_DISABLE_REORDERING=y
+CONFIG_STM32_FLOWCONTROL_BROKEN=y
CONFIG_STM32_USART_SINGLEWIRE=y
#
@@ -285,21 +365,27 @@ CONFIG_STM32_USART_SINGLEWIRE=y
#
# I2C Configuration
#
+# CONFIG_STM32_I2C_ALT is not set
# CONFIG_STM32_I2C_DYNTIMEO is not set
CONFIG_STM32_I2CTIMEOSEC=0
CONFIG_STM32_I2CTIMEOMS=10
+CONFIG_STM32_I2CTIMEOTICKS=10
# CONFIG_STM32_I2C_DUTY16_9 is not set
#
-# USB Host Configuration
+# USB FS Host Configuration
#
#
-# USB Device Configuration
+# USB HS Host Configuration
+#
+
+#
+# USB Host Debug Configuration
#
#
-# External Memory Configuration
+# USB Device Configuration
#
#
@@ -308,12 +394,21 @@ CONFIG_STM32_I2CTIMEOMS=10
# CONFIG_ARCH_NOINTC is not set
# CONFIG_ARCH_VECNOTIRQ is not set
CONFIG_ARCH_DMA=y
-# CONFIG_ARCH_IRQPRIO is not set
-# CONFIG_CUSTOM_STACK is not set
-# CONFIG_ADDRENV is not set
+CONFIG_ARCH_HAVE_IRQPRIO=y
+# CONFIG_ARCH_L2CACHE is not set
+# CONFIG_ARCH_HAVE_COHERENT_DCACHE is not set
+# CONFIG_ARCH_HAVE_ADDRENV is not set
+# CONFIG_ARCH_NEED_ADDRENV_MAPPING is not set
CONFIG_ARCH_HAVE_VFORK=y
+# CONFIG_ARCH_HAVE_MMU is not set
+CONFIG_ARCH_HAVE_MPU=y
+# CONFIG_ARCH_NAND_HWECC is not set
+# CONFIG_ARCH_HAVE_EXTCLK is not set
+# CONFIG_ARCH_USE_MPU is not set
+# CONFIG_ARCH_IRQPRIO is not set
CONFIG_ARCH_STACKDUMP=y
# CONFIG_ENDIAN_BIG is not set
+# CONFIG_ARCH_IDLE_CUSTOM is not set
# CONFIG_ARCH_HAVE_RAMFUNCS is not set
CONFIG_ARCH_HAVE_RAMVECTORS=y
# CONFIG_ARCH_RAMVECTORS is not set
@@ -323,10 +418,14 @@ CONFIG_ARCH_HAVE_RAMVECTORS=y
#
CONFIG_BOARD_LOOPSPERMSEC=16717
# CONFIG_ARCH_CALIBRATION is not set
-CONFIG_DRAM_START=0x20000000
-CONFIG_DRAM_SIZE=196608
+
+#
+# Interrupt options
+#
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
-CONFIG_ARCH_INTERRUPTSTACK=4096
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_HAVE_HIPRI_INTERRUPT=y
+# CONFIG_ARCH_HIPRI_INTERRUPT is not set
#
# Boot options
@@ -338,10 +437,25 @@ CONFIG_BOOT_RUNFROMFLASH=y
# CONFIG_BOOT_COPYTORAM is not set
#
+# Boot Memory Configuration
+#
+CONFIG_RAM_START=0x20000000
+CONFIG_RAM_SIZE=196608
+# CONFIG_ARCH_HAVE_SDRAM is not set
+
+#
# Board Selection
#
-CONFIG_ARCH_BOARD_CUSTOM=y
-CONFIG_ARCH_BOARD=""
+CONFIG_ARCH_BOARD_PX4FMU_V1=y
+# CONFIG_ARCH_BOARD_CUSTOM is not set
+CONFIG_ARCH_BOARD="px4fmu-v1"
+
+#
+# Custom Board Configuration
+#
+CONFIG_ARCH_BOARD_CUSTOM_DIR=""
+# CONFIG_BOARD_CUSTOM_LEDS is not set
+# CONFIG_BOARD_CUSTOM_BUTTONS is not set
#
# Common Board Options
@@ -357,37 +471,75 @@ CONFIG_NSH_MMCSDSPIPORTNO=3
#
# RTOS Features
#
-# CONFIG_BOARD_INITIALIZE is not set
-CONFIG_MSEC_PER_TICK=1
-CONFIG_RR_INTERVAL=0
-CONFIG_SCHED_INSTRUMENTATION=y
-CONFIG_TASK_NAME_SIZE=24
-# CONFIG_SCHED_HAVE_PARENT is not set
+CONFIG_DISABLE_OS_API=y
+# CONFIG_DISABLE_POSIX_TIMERS is not set
+# CONFIG_DISABLE_PTHREAD is not set
+# CONFIG_DISABLE_SIGNALS is not set
+# CONFIG_DISABLE_MQUEUE is not set
+# CONFIG_DISABLE_ENVIRON is not set
+
+#
+# Clocks and Timers
+#
+CONFIG_USEC_PER_TICK=1000
+# CONFIG_SYSTEM_TIME64 is not set
+# CONFIG_CLOCK_MONOTONIC is not set
# CONFIG_JULIAN_TIME is not set
CONFIG_START_YEAR=1970
CONFIG_START_MONTH=1
CONFIG_START_DAY=1
-CONFIG_DEV_CONSOLE=y
+CONFIG_MAX_WDOGPARMS=2
+CONFIG_PREALLOC_WDOGS=50
+CONFIG_WDOG_INTRESERVE=4
+CONFIG_PREALLOC_TIMERS=50
+
+#
+# Tasks and Scheduling
+#
+# CONFIG_INIT_NONE is not set
+CONFIG_INIT_ENTRYPOINT=y
+# CONFIG_INIT_FILEPATH is not set
+CONFIG_USER_ENTRYPOINT="nsh_main"
+CONFIG_RR_INTERVAL=0
+CONFIG_TASK_NAME_SIZE=24
+CONFIG_MAX_TASKS=32
+# CONFIG_SCHED_HAVE_PARENT is not set
+CONFIG_SCHED_WAITPID=y
+
+#
+# Pthread Options
+#
# CONFIG_MUTEX_TYPES is not set
-CONFIG_PRIORITY_INHERITANCE=y
-CONFIG_SEM_PREALLOCHOLDERS=0
-CONFIG_SEM_NNESTPRIO=8
+CONFIG_NPTHREAD_KEYS=4
+
+#
+# Performance Monitoring
+#
+# CONFIG_SCHED_CPULOAD is not set
+CONFIG_SCHED_INSTRUMENTATION=y
+
+#
+# Files and I/O
+#
+CONFIG_DEV_CONSOLE=y
# CONFIG_FDCLONE_DISABLE is not set
CONFIG_FDCLONE_STDIO=y
CONFIG_SDCLONE_DISABLE=y
-CONFIG_SCHED_WAITPID=y
+CONFIG_NFILE_DESCRIPTORS=42
+CONFIG_NFILE_STREAMS=8
+CONFIG_NAME_MAX=32
+CONFIG_PRIORITY_INHERITANCE=y
+CONFIG_SEM_PREALLOCHOLDERS=0
+CONFIG_SEM_NNESTPRIO=8
+
+#
+# RTOS hooks
+#
+# CONFIG_BOARD_INITIALIZE is not set
# CONFIG_SCHED_STARTHOOK is not set
CONFIG_SCHED_ATEXIT=y
CONFIG_SCHED_ATEXIT_MAX=1
# CONFIG_SCHED_ONEXIT is not set
-CONFIG_USER_ENTRYPOINT="nsh_main"
-CONFIG_DISABLE_OS_API=y
-# CONFIG_DISABLE_CLOCK is not set
-# CONFIG_DISABLE_POSIX_TIMERS is not set
-# CONFIG_DISABLE_PTHREAD is not set
-# CONFIG_DISABLE_SIGNALS is not set
-# CONFIG_DISABLE_MQUEUE is not set
-# CONFIG_DISABLE_ENVIRON is not set
#
# Signal Numbers
@@ -399,19 +551,25 @@ CONFIG_SIG_SIGCONDTIMEDOUT=16
CONFIG_SIG_SIGWORK=4
#
-# Sizes of configurable things (0 disables)
+# POSIX Message Queue Options
#
-CONFIG_MAX_TASKS=32
-CONFIG_MAX_TASK_ARGS=10
-CONFIG_NPTHREAD_KEYS=4
-CONFIG_NFILE_DESCRIPTORS=42
-CONFIG_NFILE_STREAMS=8
-CONFIG_NAME_MAX=32
CONFIG_PREALLOC_MQ_MSGS=4
CONFIG_MQ_MAXMSGSIZE=32
-CONFIG_MAX_WDOGPARMS=2
-CONFIG_PREALLOC_WDOGS=50
-CONFIG_PREALLOC_TIMERS=50
+
+#
+# Work Queue Support
+#
+CONFIG_SCHED_WORKQUEUE=y
+CONFIG_SCHED_HPWORK=y
+CONFIG_SCHED_HPWORKPRIORITY=192
+CONFIG_SCHED_HPWORKPERIOD=5000
+CONFIG_SCHED_HPWORKSTACKSIZE=1800
+CONFIG_SCHED_LPWORK=y
+CONFIG_SCHED_LPNTHREADS=1
+CONFIG_SCHED_LPWORKPRIORITY=50
+CONFIG_SCHED_LPWORKPRIOMAX=176
+CONFIG_SCHED_LPWORKPERIOD=50000
+CONFIG_SCHED_LPWORKSTACKSIZE=1800
#
# Stack and heap information
@@ -420,6 +578,7 @@ CONFIG_IDLETHREAD_STACKSIZE=3500
CONFIG_USERMAIN_STACKSIZE=2600
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_PTHREAD_STACK_DEFAULT=2048
+# CONFIG_LIB_SYSCALL is not set
#
# Device Drivers
@@ -428,25 +587,37 @@ CONFIG_PTHREAD_STACK_DEFAULT=2048
CONFIG_DEV_NULL=y
# CONFIG_DEV_ZERO is not set
# CONFIG_LOOP is not set
+
+#
+# Buffering
+#
+# CONFIG_DRVR_WRITEBUFFER is not set
+# CONFIG_DRVR_READAHEAD is not set
# CONFIG_RAMDISK is not set
# CONFIG_CAN is not set
+# CONFIG_ARCH_HAVE_PWM_PULSECOUNT is not set
# CONFIG_PWM is not set
+CONFIG_ARCH_HAVE_I2CRESET=y
CONFIG_I2C=y
# CONFIG_I2C_SLAVE is not set
CONFIG_I2C_TRANSFER=y
# CONFIG_I2C_WRITEREAD is not set
# CONFIG_I2C_POLLED is not set
# CONFIG_I2C_TRACE is not set
-CONFIG_ARCH_HAVE_I2CRESET=y
CONFIG_I2C_RESET=y
CONFIG_SPI=y
# CONFIG_SPI_OWNBUS is not set
CONFIG_SPI_EXCHANGE=y
# CONFIG_SPI_CMDDATA is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_I2S is not set
# CONFIG_RTC is not set
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_DEVPATH="/dev/watchdog0"
+# CONFIG_TIMER is not set
# CONFIG_ANALOG is not set
# CONFIG_AUDIO_DEVICES is not set
+# CONFIG_VIDEO_DEVICES is not set
# CONFIG_BCH is not set
# CONFIG_INPUT is not set
# CONFIG_LCD is not set
@@ -458,49 +629,91 @@ CONFIG_MMCSD_NSLOTS=1
# CONFIG_MMCSD_HAVECARDDETECT is not set
CONFIG_MMCSD_SPI=y
CONFIG_MMCSD_SPICLOCK=24000000
-# CONFIG_MMCSD_SDIO is not set
+CONFIG_MMCSD_SPIMODE=0
+# CONFIG_ARCH_HAVE_SDIO is not set
CONFIG_MTD=y
+
+#
+# MTD Configuration
+#
+CONFIG_MTD_PARTITION=y
+# CONFIG_MTD_SECT512 is not set
+CONFIG_MTD_BYTE_WRITE=y
+# CONFIG_MTD_CONFIG is not set
+
+#
+# MTD Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+# CONFIG_RAMMTD is not set
+# CONFIG_MTD_AT24XX is not set
+# CONFIG_MTD_AT25 is not set
+# CONFIG_MTD_AT45DB is not set
+# CONFIG_MTD_M25P is not set
+# CONFIG_MTD_SMART is not set
+# CONFIG_MTD_RAMTRON is not set
+# CONFIG_MTD_SST25 is not set
+# CONFIG_MTD_SST25XX is not set
+# CONFIG_MTD_SST39FV is not set
+# CONFIG_MTD_W25 is not set
+CONFIG_EEPROM=y
+# CONFIG_SPI_EE_25XX is not set
CONFIG_PIPES=y
# CONFIG_PM is not set
# CONFIG_POWER is not set
# CONFIG_SENSORS is not set
+# CONFIG_SERCOMM_CONSOLE is not set
CONFIG_SERIAL=y
# CONFIG_DEV_LOWCONSOLE is not set
CONFIG_SERIAL_REMOVABLE=y
# CONFIG_16550_UART is not set
+# CONFIG_ARCH_HAVE_UART is not set
+# CONFIG_ARCH_HAVE_UART0 is not set
+# CONFIG_ARCH_HAVE_UART1 is not set
+# CONFIG_ARCH_HAVE_UART2 is not set
+# CONFIG_ARCH_HAVE_UART3 is not set
+# CONFIG_ARCH_HAVE_UART4 is not set
CONFIG_ARCH_HAVE_UART5=y
+# CONFIG_ARCH_HAVE_UART6 is not set
+# CONFIG_ARCH_HAVE_UART7 is not set
+# CONFIG_ARCH_HAVE_UART8 is not set
+# CONFIG_ARCH_HAVE_SCI0 is not set
+# CONFIG_ARCH_HAVE_SCI1 is not set
+# CONFIG_ARCH_HAVE_USART0 is not set
CONFIG_ARCH_HAVE_USART1=y
CONFIG_ARCH_HAVE_USART2=y
+# CONFIG_ARCH_HAVE_USART3 is not set
+# CONFIG_ARCH_HAVE_USART4 is not set
+# CONFIG_ARCH_HAVE_USART5 is not set
CONFIG_ARCH_HAVE_USART6=y
+# CONFIG_ARCH_HAVE_USART7 is not set
+# CONFIG_ARCH_HAVE_USART8 is not set
+# CONFIG_ARCH_HAVE_OTHER_UART is not set
+
+#
+# USART Configuration
+#
+CONFIG_USART1_ISUART=y
+CONFIG_USART2_ISUART=y
+CONFIG_USART6_ISUART=y
CONFIG_MCU_SERIAL=y
CONFIG_STANDARD_SERIAL=y
CONFIG_SERIAL_NPOLLWAITERS=2
+CONFIG_SERIAL_IFLOWCONTROL=y
+CONFIG_SERIAL_OFLOWCONTROL=y
+CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y
+CONFIG_SERIAL_IFLOWCONTROL_LOWER_WATERMARK=10
+CONFIG_SERIAL_IFLOWCONTROL_UPPER_WATERMARK=90
+CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
+CONFIG_SERIAL_TERMIOS=y
CONFIG_USART1_SERIAL_CONSOLE=y
# CONFIG_USART2_SERIAL_CONSOLE is not set
# CONFIG_UART5_SERIAL_CONSOLE is not set
# CONFIG_USART6_SERIAL_CONSOLE is not set
+# CONFIG_OTHER_SERIAL_CONSOLE is not set
# CONFIG_NO_SERIAL_CONSOLE is not set
#
-# MTD Configuration
-#
-CONFIG_MTD_PARTITION=y
-CONFIG_MTD_BYTE_WRITE=y
-
-#
-# MTD Device Drivers
-#
-# CONFIG_RAMMTD is not set
-# CONFIG_MTD_AT24XX is not set
-# CONFIG_MTD_AT45DB is not set
-# CONFIG_MTD_M25P is not set
-# CONFIG_MTD_SMART is not set
-# CONFIG_MTD_RAMTRON is not set
-# CONFIG_MTD_SST25 is not set
-# CONFIG_MTD_SST39FV is not set
-# CONFIG_MTD_W25 is not set
-
-#
# USART1 Configuration
#
CONFIG_USART1_RXBUFSIZE=300
@@ -547,8 +760,6 @@ CONFIG_USART6_PARITY=0
CONFIG_USART6_2STOP=0
# CONFIG_USART6_IFLOWCONTROL is not set
# CONFIG_USART6_OFLOWCONTROL is not set
-CONFIG_SERIAL_IFLOWCONTROL=y
-CONFIG_SERIAL_OFLOWCONTROL=y
CONFIG_USBDEV=y
#
@@ -559,8 +770,8 @@ CONFIG_USBDEV=y
# CONFIG_USBDEV_SELFPOWERED is not set
CONFIG_USBDEV_BUSPOWERED=y
CONFIG_USBDEV_MAXPOWER=500
-# CONFIG_USBDEV_REMOTEWAKEUP is not set
# CONFIG_USBDEV_DMA is not set
+# CONFIG_ARCH_USBDEV_STALLQUEUE is not set
# CONFIG_USBDEV_TRACE is not set
#
@@ -569,7 +780,7 @@ CONFIG_USBDEV_MAXPOWER=500
# CONFIG_USBDEV_COMPOSITE is not set
# CONFIG_PL2303 is not set
CONFIG_CDCACM=y
-CONFIG_CDCACM_CONSOLE=n
+# CONFIG_CDCACM_CONSOLE is not set
CONFIG_CDCACM_EP0MAXPACKET=64
CONFIG_CDCACM_EPINTIN=1
CONFIG_CDCACM_EPINTIN_FSSIZE=64
@@ -605,9 +816,16 @@ CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v1.x"
#
# Networking Support
#
+# CONFIG_ARCH_HAVE_NET is not set
+# CONFIG_ARCH_HAVE_PHY is not set
# CONFIG_NET is not set
#
+# Crypto API
+#
+# CONFIG_CRYPTO is not set
+
+#
# File Systems
#
@@ -615,6 +833,13 @@ CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v1.x"
# File system configuration
#
# CONFIG_DISABLE_MOUNTPOINT is not set
+# CONFIG_FS_AUTOMOUNTER is not set
+# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
+CONFIG_FS_READABLE=y
+CONFIG_FS_WRITABLE=y
+# CONFIG_FS_AIO is not set
+# CONFIG_FS_NAMED_SEMAPHORES is not set
+CONFIG_FS_MQUEUE_MPATH="/var/mqueue"
# CONFIG_FS_RAMMAP is not set
CONFIG_FS_FAT=y
CONFIG_FAT_LCNAMES=y
@@ -623,6 +848,7 @@ CONFIG_FAT_MAXFNAME=32
CONFIG_FS_FATTIME=y
# CONFIG_FAT_DMAMEMORY is not set
CONFIG_FS_NXFFS=y
+# CONFIG_NXFFS_SCAN_VOLUME is not set
CONFIG_NXFFS_PREALLOCATED=y
CONFIG_NXFFS_ERASEDSTATE=0xff
CONFIG_NXFFS_PACKTHRESHOLD=32
@@ -631,12 +857,13 @@ CONFIG_NXFFS_TAILTHRESHOLD=2048
CONFIG_FS_ROMFS=y
# CONFIG_FS_SMARTFS is not set
CONFIG_FS_BINFS=y
+# CONFIG_FS_PROCFS is not set
#
# System Logging
#
-# CONFIG_SYSLOG_ENABLE is not set
CONFIG_SYSLOG=y
+# CONFIG_SYSLOG_TIMESTAMP is not set
CONFIG_SYSLOG_CHAR=y
CONFIG_SYSLOG_DEVPATH="/dev/ttyS0"
@@ -648,9 +875,9 @@ CONFIG_SYSLOG_DEVPATH="/dev/ttyS0"
#
# Memory Management
#
-# CONFIG_MM_MULTIHEAP is not set
# CONFIG_MM_SMALL is not set
CONFIG_MM_REGIONS=2
+# CONFIG_ARCH_HAVE_HEAP2 is not set
CONFIG_GRAN=y
CONFIG_GRAN_SINGLE=y
CONFIG_GRAN_INTR=y
@@ -661,7 +888,7 @@ CONFIG_GRAN_INTR=y
# CONFIG_AUDIO is not set
#
-# Binary Formats
+# Binary Loader
#
# CONFIG_BINFMT_DISABLE is not set
# CONFIG_BINFMT_EXEPATH is not set
@@ -684,6 +911,7 @@ CONFIG_NUNGET_CHARS=2
CONFIG_LIB_HOMEDIR="/"
# CONFIG_NOPRINTF_FIELDWIDTH is not set
CONFIG_LIBC_FLOATINGPOINT=y
+# CONFIG_LIBC_IOCTL_VARIADIC is not set
CONFIG_LIB_RAND_ORDER=1
# CONFIG_EOL_IS_CR is not set
# CONFIG_EOL_IS_LF is not set
@@ -695,7 +923,10 @@ CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
CONFIG_LIBC_STRERROR=y
# CONFIG_LIBC_STRERROR_SHORT is not set
# CONFIG_LIBC_PERROR_STDOUT is not set
+CONFIG_LIBC_TMPDIR="/tmp"
+CONFIG_LIBC_MAX_TMPFILE=32
CONFIG_ARCH_LOWPUTC=y
+# CONFIG_LIBC_LOCALTIME is not set
CONFIG_LIB_SENDFILE_BUFSIZE=512
# CONFIG_ARCH_ROMGETC is not set
CONFIG_ARCH_OPTIMIZED_FUNCTIONS=y
@@ -715,15 +946,6 @@ CONFIG_ARCH_MEMCPY=y
#
# Non-standard Library Support
#
-CONFIG_SCHED_WORKQUEUE=y
-CONFIG_SCHED_HPWORK=y
-CONFIG_SCHED_WORKPRIORITY=192
-CONFIG_SCHED_WORKPERIOD=5000
-CONFIG_SCHED_WORKSTACKSIZE=1800
-CONFIG_SCHED_LPWORK=y
-CONFIG_SCHED_LPWORKPRIORITY=50
-CONFIG_SCHED_LPWORKPERIOD=50000
-CONFIG_SCHED_LPWORKSTACKSIZE=1800
# CONFIG_LIB_KBDCODEC is not set
# CONFIG_LIB_SLCDCODEC is not set
@@ -754,8 +976,8 @@ CONFIG_BUILTIN_PROXY_STACKSIZE=1024
#
# CONFIG_EXAMPLES_BUTTONS is not set
# CONFIG_EXAMPLES_CAN is not set
-CONFIG_EXAMPLES_CDCACM=y
-# CONFIG_EXAMPLES_COMPOSITE is not set
+# CONFIG_EXAMPLES_CONFIGDATA is not set
+# CONFIG_EXAMPLES_CPUHOG is not set
# CONFIG_EXAMPLES_CXXTEST is not set
# CONFIG_EXAMPLES_DHCPD is not set
# CONFIG_EXAMPLES_ELF is not set
@@ -767,15 +989,20 @@ CONFIG_EXAMPLES_CDCACM=y
# CONFIG_EXAMPLES_HIDKBD is not set
# CONFIG_EXAMPLES_KEYPADTEST is not set
# CONFIG_EXAMPLES_IGMP is not set
-# CONFIG_EXAMPLES_LCDRW is not set
# CONFIG_EXAMPLES_MM is not set
# CONFIG_EXAMPLES_MODBUS is not set
CONFIG_EXAMPLES_MOUNT=y
+# CONFIG_EXAMPLES_MOUNT_BLOCKDEVICE is not set
+CONFIG_EXAMPLES_MOUNT_NSECTORS=2048
+CONFIG_EXAMPLES_MOUNT_SECTORSIZE=512
+CONFIG_EXAMPLES_MOUNT_RAMDEVNO=0
+# CONFIG_EXAMPLES_MTDPART is not set
# CONFIG_EXAMPLES_NRF24L01TERM is not set
CONFIG_EXAMPLES_NSH=y
+# CONFIG_EXAMPLES_NSH_CXXINITIALIZE is not set
# CONFIG_EXAMPLES_NULL is not set
# CONFIG_EXAMPLES_NX is not set
-# CONFIG_EXAMPLES_NXCONSOLE is not set
+# CONFIG_EXAMPLES_NXTERM is not set
# CONFIG_EXAMPLES_NXFFS is not set
# CONFIG_EXAMPLES_NXFLAT is not set
# CONFIG_EXAMPLES_NXHELLO is not set
@@ -783,13 +1010,14 @@ CONFIG_EXAMPLES_NSH=y
# CONFIG_EXAMPLES_NXLINES is not set
# CONFIG_EXAMPLES_NXTEXT is not set
# CONFIG_EXAMPLES_OSTEST is not set
-# CONFIG_EXAMPLES_PASHELLO is not set
# CONFIG_EXAMPLES_PIPE is not set
# CONFIG_EXAMPLES_POSIXSPAWN is not set
# CONFIG_EXAMPLES_QENCODER is not set
# CONFIG_EXAMPLES_RGMP is not set
# CONFIG_EXAMPLES_ROMFS is not set
# CONFIG_EXAMPLES_SENDMAIL is not set
+# CONFIG_EXAMPLES_SERIALBLASTER is not set
+# CONFIG_EXAMPLES_SERIALRX is not set
# CONFIG_EXAMPLES_SERLOOP is not set
# CONFIG_EXAMPLES_SLCD is not set
# CONFIG_EXAMPLES_SMART_TEST is not set
@@ -800,9 +1028,8 @@ CONFIG_EXAMPLES_NSH=y
# CONFIG_EXAMPLES_TIFF is not set
# CONFIG_EXAMPLES_TOUCHSCREEN is not set
# CONFIG_EXAMPLES_UDP is not set
-# CONFIG_EXAMPLES_UIP is not set
+# CONFIG_EXAMPLES_WEBSERVER is not set
# CONFIG_EXAMPLES_USBSERIAL is not set
-# CONFIG_EXAMPLES_USBMSC is not set
# CONFIG_EXAMPLES_USBTERM is not set
# CONFIG_EXAMPLES_WATCHDOG is not set
@@ -810,11 +1037,13 @@ CONFIG_EXAMPLES_NSH=y
# Graphics Support
#
# CONFIG_TIFF is not set
+# CONFIG_GRAPHICS_TRAVELER is not set
#
# Interpreters
#
# CONFIG_INTERPRETERS_FICL is not set
+# CONFIG_INTERPRETERS_BAS is not set
# CONFIG_INTERPRETERS_PCODE is not set
#
@@ -825,17 +1054,14 @@ CONFIG_EXAMPLES_NSH=y
# Networking Utilities
#
# CONFIG_NETUTILS_CODECS is not set
-# CONFIG_NETUTILS_DHCPC is not set
# CONFIG_NETUTILS_DHCPD is not set
# CONFIG_NETUTILS_FTPC is not set
# CONFIG_NETUTILS_FTPD is not set
# CONFIG_NETUTILS_JSON is not set
-# CONFIG_NETUTILS_RESOLV is not set
# CONFIG_NETUTILS_SMTP is not set
-# CONFIG_NETUTILS_TELNETD is not set
# CONFIG_NETUTILS_TFTPC is not set
# CONFIG_NETUTILS_THTTPD is not set
-# CONFIG_NETUTILS_UIPLIB is not set
+# CONFIG_NETUTILS_NETLIB is not set
# CONFIG_NETUTILS_WEBCLIENT is not set
#
@@ -847,15 +1073,32 @@ CONFIG_EXAMPLES_NSH=y
# NSH Library
#
CONFIG_NSH_LIBRARY=y
+
+#
+# Command Line Configuration
+#
+CONFIG_NSH_READLINE=y
+# CONFIG_NSH_CLE is not set
+CONFIG_NSH_LINELEN=128
+# CONFIG_NSH_DISABLE_SEMICOLON is not set
+CONFIG_NSH_CMDPARMS=y
+CONFIG_NSH_MAXARGUMENTS=12
+CONFIG_NSH_ARGCAT=y
+CONFIG_NSH_NESTDEPTH=8
+# CONFIG_NSH_DISABLEBG is not set
CONFIG_NSH_BUILTIN_APPS=y
#
# Disable Individual commands
#
+# CONFIG_NSH_DISABLE_ADDROUTE is not set
# CONFIG_NSH_DISABLE_CAT is not set
# CONFIG_NSH_DISABLE_CD is not set
# CONFIG_NSH_DISABLE_CP is not set
+# CONFIG_NSH_DISABLE_CMP is not set
# CONFIG_NSH_DISABLE_DD is not set
+# CONFIG_NSH_DISABLE_DF is not set
+# CONFIG_NSH_DISABLE_DELROUTE is not set
# CONFIG_NSH_DISABLE_ECHO is not set
# CONFIG_NSH_DISABLE_EXEC is not set
# CONFIG_NSH_DISABLE_EXIT is not set
@@ -875,9 +1118,7 @@ CONFIG_NSH_BUILTIN_APPS=y
# CONFIG_NSH_DISABLE_MH is not set
# CONFIG_NSH_DISABLE_MOUNT is not set
# CONFIG_NSH_DISABLE_MW is not set
-# CONFIG_NSH_DISABLE_NSFMOUNT is not set
# CONFIG_NSH_DISABLE_PS is not set
-# CONFIG_NSH_DISABLE_PING is not set
# CONFIG_NSH_DISABLE_PUT is not set
# CONFIG_NSH_DISABLE_PWD is not set
# CONFIG_NSH_DISABLE_RM is not set
@@ -897,31 +1138,36 @@ CONFIG_NSH_BUILTIN_APPS=y
#
# CONFIG_NSH_CMDOPT_DF_H is not set
CONFIG_NSH_CODECS_BUFSIZE=128
+CONFIG_NSH_CMDOPT_HEXDUMP=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_STRERROR=y
-CONFIG_NSH_LINELEN=128
-CONFIG_NSH_MAXARGUMENTS=12
-CONFIG_NSH_NESTDEPTH=8
+
+#
+# Scripting Support
+#
# CONFIG_NSH_DISABLESCRIPT is not set
-# CONFIG_NSH_DISABLEBG is not set
+# CONFIG_NSH_DISABLE_ITEF is not set
+# CONFIG_NSH_DISABLE_LOOPS is not set
CONFIG_NSH_ROMFSETC=y
# CONFIG_NSH_ROMFSRC is not set
CONFIG_NSH_ROMFSMOUNTPT="/etc"
CONFIG_NSH_INITSCRIPT="init.d/rcS"
CONFIG_NSH_ROMFSDEVNO=0
CONFIG_NSH_ROMFSSECTSIZE=128
+# CONFIG_NSH_DEFAULTROMFS is not set
CONFIG_NSH_ARCHROMFS=y
+# CONFIG_NSH_CUSTOMROMFS is not set
CONFIG_NSH_FATDEVNO=1
CONFIG_NSH_FATSECTSIZE=512
CONFIG_NSH_FATNSECTORS=1024
CONFIG_NSH_FATMOUNTPT="/tmp"
-CONFIG_NSH_CONSOLE=y
-# CONFIG_NSH_USBCONSOLE is not set
#
-# USB Trace Support
+# Console Configuration
#
-# CONFIG_NSH_CONDEV is not set
+CONFIG_NSH_CONSOLE=y
+# CONFIG_NSH_USBCONSOLE is not set
+# CONFIG_NSH_ALTCONDEV is not set
CONFIG_NSH_ARCHINIT=y
#
@@ -929,7 +1175,12 @@ CONFIG_NSH_ARCHINIT=y
#
#
-# System NSH Add-Ons
+# Platform-specific Support
+#
+# CONFIG_PLATFORM_CONFIGDATA is not set
+
+#
+# System Libraries and NSH Add-Ons
#
#
@@ -938,9 +1189,18 @@ CONFIG_NSH_ARCHINIT=y
# CONFIG_SYSTEM_FREE is not set
#
-# I2C tool
+# EMACS-like Command Line Editor
#
-# CONFIG_SYSTEM_I2CTOOL is not set
+# CONFIG_SYSTEM_CLE is not set
+
+#
+# CU Minimal Terminal
+#
+CONFIG_SYSTEM_CUTERM=y
+CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE="/dev/ttyS0"
+CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD=57600
+CONFIG_SYSTEM_CUTERM_STACKSIZE=2048
+CONFIG_SYSTEM_CUTERM_PRIORITY=100
#
# FLASH Program Installation
@@ -950,6 +1210,31 @@ CONFIG_NSH_ARCHINIT=y
#
# FLASH Erase-all Command
#
+# CONFIG_SYSTEM_FLASH_ERASEALL is not set
+
+#
+# Intel HEX to binary conversion
+#
+# CONFIG_SYSTEM_HEX2BIN is not set
+
+#
+# I2C tool
+#
+# CONFIG_SYSTEM_I2CTOOL is not set
+
+#
+# INI File Parser
+#
+# CONFIG_SYSTEM_INIFILE is not set
+
+#
+# NxPlayer media player library / command Line
+#
+
+#
+# RAM test
+#
+# CONFIG_SYSTEM_RAMTEST is not set
#
# readline()
@@ -958,6 +1243,14 @@ CONFIG_SYSTEM_READLINE=y
CONFIG_READLINE_ECHO=y
#
+# P-Code Support
+#
+
+#
+# PHY Tool
+#
+
+#
# Power Off
#
# CONFIG_SYSTEM_POWEROFF is not set
@@ -973,10 +1266,44 @@ CONFIG_READLINE_ECHO=y
# CONFIG_SYSTEM_SDCARD is not set
#
+# Sudoku
+#
+# CONFIG_SYSTEM_SUDOKU is not set
+
+#
# Sysinfo
#
CONFIG_SYSTEM_SYSINFO=y
+CONFIG_SYSTEM_SYSINFO_STACKSIZE=1024
+
+#
+# VI Work-Alike Editor
+#
+# CONFIG_SYSTEM_VI is not set
+
+#
+# Stack Monitor
+#
+
+#
+# USB CDC/ACM Device Commands
+#
+CONFIG_SYSTEM_CDCACM=y
+CONFIG_SYSTEM_CDCACM_DEVMINOR=0
+
+#
+# USB Composite Device Commands
+#
+
+#
+# USB Mass Storage Device Commands
+#
#
# USB Monitor
#
+
+#
+# Zmodem Commands
+#
+# CONFIG_SYSTEM_ZMODEM is not set
diff --git a/nuttx-configs/px4fmu-v2/Kconfig b/nuttx-configs/px4fmu-v2/Kconfig
new file mode 100644
index 000000000..f9f0c5e6a
--- /dev/null
+++ b/nuttx-configs/px4fmu-v2/Kconfig
@@ -0,0 +1,22 @@
+#
+# For a description of the syntax of this configuration file,
+# see misc/tools/kconfig-language.txt.
+#
+
+if ARCH_BOARD_PX4FMU_V2
+
+config BOARD_HAS_PROBES
+ bool "Board provides GPIO or other Hardware for signaling to timing analyze."
+ default y
+ ---help---
+ This board provides GPIO FMU-CH1-6 as PROBE_1-6 to provide timing signals from selected drivers.
+
+config BOARD_USE_PROBES
+ bool "Enable the use the board provided GPIO FMU-CH1-6 as PROBE_1-6 to provide timing signals from selected drivers"
+ default n
+ depends on BOARD_HAS_PROBES
+
+ ---help---
+ Select to use GPIO FMU-CH1-6 to provide timing signals from selected drivers.
+
+endif
diff --git a/nuttx-configs/px4fmu-v2/include/board.h b/nuttx-configs/px4fmu-v2/include/board.h
index 3b3c6fa70..3c8671f53 100755
--- a/nuttx-configs/px4fmu-v2/include/board.h
+++ b/nuttx-configs/px4fmu-v2/include/board.h
@@ -1,5 +1,5 @@
/************************************************************************************
- * configs/px4fmu/include/board.h
+ * configs/px4fmu-v2_upstream/include/board.h
* include/arch/board/board.h
*
* Copyright (C) 2009 Gregory Nutt. All rights reserved.
@@ -34,8 +34,8 @@
*
************************************************************************************/
-#ifndef __ARCH_BOARD_BOARD_H
-#define __ARCH_BOARD_BOARD_H
+#ifndef __CONFIGS_PX4FMU_V2_UPSTREAM_INCLUDE_BOARD_H
+#define __CONFIGS_PX4FMU_V2_UPSTREAM_INCLUDE_BOARD_H
/************************************************************************************
* Included Files
@@ -141,26 +141,26 @@
#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY)
#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY)
-#define STM32_APB2_TIM9_CLKIN (2*STM32_PCLK2_FREQUENCY)
-#define STM32_APB2_TIM10_CLKIN (2*STM32_PCLK2_FREQUENCY)
-#define STM32_APB2_TIM11_CLKIN (2*STM32_PCLK2_FREQUENCY)
+#define STM32_APB2_TIM9_CLKIN (2*STM32_PCLK1_FREQUENCY)
+#define STM32_APB2_TIM10_CLKIN (2*STM32_PCLK1_FREQUENCY)
+#define STM32_APB2_TIM11_CLKIN (2*STM32_PCLK1_FREQUENCY)
/* Timer Frequencies, if APBx is set to 1, frequency is same to APBx
- * otherwise frequency is 2xAPBx.
+ * otherwise frequency is 2xAPBx.
* Note: TIM1,8 are on APB2, others on APB1
*/
#define STM32_TIM18_FREQUENCY (2*STM32_PCLK2_FREQUENCY)
#define STM32_TIM27_FREQUENCY (2*STM32_PCLK1_FREQUENCY)
-/* SDIO dividers. Note that slower clocking is required when DMA is disabled
+/* SDIO dividers. Note that slower clocking is required when DMA is disabled
* in order to avoid RX overrun/TX underrun errors due to delayed responses
* to service FIFOs in interrupt driven mode. These values have not been
* tuned!!!
*
* HCLK=72MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(178+2)=400 KHz
*/
-
+
#define SDIO_INIT_CLKDIV (178 << SDIO_CLKCR_CLKDIV_SHIFT)
/* DMA ON: HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(2+2)=18 MHz
@@ -168,9 +168,9 @@
*/
#ifdef CONFIG_SDIO_DMA
-# define SDIO_MMCXFR_CLKDIV (2 << SDIO_CLKCR_CLKDIV_SHIFT)
+# define SDIO_MMCXFR_CLKDIV (2 << SDIO_CLKCR_CLKDIV_SHIFT)
#else
-# define SDIO_MMCXFR_CLKDIV (3 << SDIO_CLKCR_CLKDIV_SHIFT)
+# define SDIO_MMCXFR_CLKDIV (3 << SDIO_CLKCR_CLKDIV_SHIFT)
#endif
/* DMA ON: HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(1+2)=24 MHz
@@ -196,82 +196,124 @@
/* Alternate function pin selections ************************************************/
-/*
- * UARTs.
- */
-#define GPIO_USART1_RX GPIO_USART1_RX_1 /* console in from IO */
-#define GPIO_USART1_TX 0 /* USART1 is RX-only */
+/* UARTs */
+
+#define GPIO_USART1_RX GPIO_USART1_RX_1 /* Console in from IO */
+#define GPIO_USART1_TX 0 /* USART1 is RX-only */
-#define GPIO_USART2_RX GPIO_USART2_RX_2
-#define GPIO_USART2_TX GPIO_USART2_TX_2
-#define GPIO_USART2_RTS GPIO_USART2_RTS_2
-#define GPIO_USART2_CTS GPIO_USART2_CTS_2
+#define GPIO_USART2_RX GPIO_USART2_RX_2
+#define GPIO_USART2_TX GPIO_USART2_TX_2
+#define GPIO_USART2_RTS GPIO_USART2_RTS_2
+#define GPIO_USART2_CTS GPIO_USART2_CTS_2
-#define GPIO_USART3_RX GPIO_USART3_RX_3
-#define GPIO_USART3_TX GPIO_USART3_TX_3
-#define GPIO_USART3_RTS GPIO_USART3_RTS_2
-#define GPIO_USART3_CTS GPIO_USART3_CTS_2
+#define GPIO_USART3_RX GPIO_USART3_RX_3
+#define GPIO_USART3_TX GPIO_USART3_TX_3
+#define GPIO_USART3_RTS GPIO_USART3_RTS_2
+#define GPIO_USART3_CTS GPIO_USART3_CTS_2
-#define GPIO_UART4_RX GPIO_UART4_RX_1
-#define GPIO_UART4_TX GPIO_UART4_TX_1
+#define GPIO_UART4_RX GPIO_UART4_RX_1
+#define GPIO_UART4_TX GPIO_UART4_TX_1
-#define GPIO_USART6_RX GPIO_USART6_RX_1
-#define GPIO_USART6_TX GPIO_USART6_TX_1
+#define GPIO_USART6_RX GPIO_USART6_RX_1
+#define GPIO_USART6_TX GPIO_USART6_TX_1
-#define GPIO_UART7_RX GPIO_UART7_RX_1
-#define GPIO_UART7_TX GPIO_UART7_TX_1
+#define GPIO_UART7_RX GPIO_UART7_RX_1
+#define GPIO_UART7_TX GPIO_UART7_TX_1
/* UART8 has no alternate pin config */
/* UART RX DMA configurations */
+
#define DMAMAP_USART1_RX DMAMAP_USART1_RX_2
#define DMAMAP_USART6_RX DMAMAP_USART6_RX_2
-/*
- * CAN
+/* CAN
*
- * CAN1 is routed to the onboard transceiver.
+ * CAN1 is routed to the onboard transceiver.
* CAN2 is routed to the expansion connector.
*/
-#define GPIO_CAN1_RX GPIO_CAN1_RX_3
-#define GPIO_CAN1_TX GPIO_CAN1_TX_3
-#define GPIO_CAN2_RX GPIO_CAN2_RX_1
-#define GPIO_CAN2_TX GPIO_CAN2_TX_2
-/*
- * I2C
+#define GPIO_CAN1_RX GPIO_CAN1_RX_3
+#define GPIO_CAN1_TX GPIO_CAN1_TX_3
+#define GPIO_CAN2_RX GPIO_CAN2_RX_1
+#define GPIO_CAN2_TX GPIO_CAN2_TX_2
+
+/* I2C
*
* The optional _GPIO configurations allow the I2C driver to manually
* reset the bus to clear stuck slaves. They match the pin configuration,
* but are normally-high GPIOs.
*/
-#define GPIO_I2C1_SCL GPIO_I2C1_SCL_2
-#define GPIO_I2C1_SDA GPIO_I2C1_SDA_2
-#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN8)
-#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN9)
-
-#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1
-#define GPIO_I2C2_SDA GPIO_I2C2_SDA_1
-#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN10)
-#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN11)
-
-/*
- * SPI
+
+#define GPIO_I2C1_SCL GPIO_I2C1_SCL_2
+#define GPIO_I2C1_SDA GPIO_I2C1_SDA_2
+#define GPIO_I2C1_SCL_GPIO \
+ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN8)
+#define GPIO_I2C1_SDA_GPIO \
+ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN9)
+
+#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1
+#define GPIO_I2C2_SDA GPIO_I2C2_SDA_1
+#define GPIO_I2C2_SCL_GPIO \
+ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN10)
+#define GPIO_I2C2_SDA_GPIO \
+ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN11)
+
+/* SPI
*
* There are sensors on SPI1, and SPI2 is connected to the FRAM.
*/
-#define GPIO_SPI1_MISO (GPIO_SPI1_MISO_1|GPIO_SPEED_50MHz)
-#define GPIO_SPI1_MOSI (GPIO_SPI1_MOSI_1|GPIO_SPEED_50MHz)
-#define GPIO_SPI1_SCK (GPIO_SPI1_SCK_1|GPIO_SPEED_50MHz)
-#define GPIO_SPI2_MISO (GPIO_SPI2_MISO_1|GPIO_SPEED_50MHz)
-#define GPIO_SPI2_MOSI (GPIO_SPI2_MOSI_1|GPIO_SPEED_50MHz)
-#define GPIO_SPI2_SCK (GPIO_SPI2_SCK_2|GPIO_SPEED_50MHz)
+#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1
+#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1
+#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1
+
+#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1
+#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_1
+#define GPIO_SPI2_SCK GPIO_SPI2_SCK_2
#define GPIO_SPI4_MISO (GPIO_SPI4_MISO_1|GPIO_SPEED_50MHz)
#define GPIO_SPI4_MOSI (GPIO_SPI4_MOSI_1|GPIO_SPEED_50MHz)
#define GPIO_SPI4_SCK (GPIO_SPI4_SCK_1|GPIO_SPEED_50MHz)
+/* LED Definitions. Needed if CONFIG_ARCH_LEDs is defined */
+
+#define LED_STARTED 0
+#define LED_HEAPALLOCATE 0
+#define LED_IRQSENABLED 0
+#define LED_STACKCREATED 1
+#define LED_INIRQ 1
+#define LED_SIGNAL 1
+#define LED_ASSERTION 1
+#define LED_PANIC 1
+
+/* Board provides GPIO or other Hardware for signaling to timing analyzer */
+
+#if defined(CONFIG_BOARD_USE_PROBES)
+# define PROBE_N(n) (1<<((n)-1))
+# define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN14)
+# define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN13)
+# define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11)
+# define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN9)
+# define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN13)
+# define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14)
+
+# define PROBE_INIT(mask) \
+ do { \
+ if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \
+ if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \
+ if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \
+ if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \
+ if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \
+ if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \
+ } while(0)
+
+# define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0)
+# define PROBE_MARK(n) PROBE(n,false);PROBE(n,true)
+#endif
+
+
+
/************************************************************************************
* Public Data
************************************************************************************/
@@ -281,7 +323,8 @@
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
-extern "C" {
+extern "C"
+{
#else
#define EXTERN extern
#endif
@@ -299,7 +342,7 @@ extern "C" {
*
************************************************************************************/
-EXTERN void stm32_boardinitialize(void);
+void stm32_boardinitialize(void);
#undef EXTERN
#if defined(__cplusplus)
@@ -307,4 +350,4 @@ EXTERN void stm32_boardinitialize(void);
#endif
#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_BOARD_BOARD_H */
+#endif /* __CONFIGS_PX4FMU_V2_UPSTREAM_INCLUDE_BOARD_H */
diff --git a/nuttx-configs/px4fmu-v2/nsh/Make.defs b/nuttx-configs/px4fmu-v2/nsh/Make.defs
index 99f3b3140..02e2db428 100644
--- a/nuttx-configs/px4fmu-v2/nsh/Make.defs
+++ b/nuttx-configs/px4fmu-v2/nsh/Make.defs
@@ -1,5 +1,5 @@
############################################################################
-# configs/px4fmu-v2/nsh/Make.defs
+# configs/px4fmu-v2_updstream/nsh/Make.defs
#
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
@@ -35,145 +35,145 @@
include ${TOPDIR}/.config
include ${TOPDIR}/tools/Config.mk
-
-#
-# We only support building with the ARM bare-metal toolchain from
-# https://launchpad.net/gcc-arm-embedded on Windows, Linux or Mac OS.
-#
-CONFIG_ARMV7M_TOOLCHAIN := GNU_EABI
-
include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
-CC = $(CROSSDEV)gcc
-CXX = $(CROSSDEV)g++
-CPP = $(CROSSDEV)gcc -E
-LD = $(CROSSDEV)ld
-AR = $(CROSSDEV)ar rcs
-NM = $(CROSSDEV)nm
-OBJCOPY = $(CROSSDEV)objcopy
-OBJDUMP = $(CROSSDEV)objdump
+CONFIG_ARMV7M_TOOLCHAIN := GNU_EABI
+
+CC = $(CROSSDEV)gcc
+CXX = $(CROSSDEV)g++
+CPP = $(CROSSDEV)gcc -E
+LD = $(CROSSDEV)ld
+AR = $(CROSSDEV)ar rcs
+NM = $(CROSSDEV)nm
+OBJCOPY = $(CROSSDEV)objcopy
+OBJDUMP = $(CROSSDEV)objdump
MAXOPTIMIZATION = -Os
-ARCHCPUFLAGS = -mcpu=cortex-m4 \
- -mthumb \
- -march=armv7e-m \
- -mfpu=fpv4-sp-d16 \
- -mfloat-abi=hard
+ARCHCPUFLAGS = -mcpu=cortex-m4 \
+ -mthumb \
+ -march=armv7e-m \
+ -mfpu=fpv4-sp-d16 \
+ -mfloat-abi=hard
+ifeq ($(CONFIG_ARMV7M_STACKCHECK),y)
# enable precise stack overflow tracking
-INSTRUMENTATIONDEFINES = -finstrument-functions \
- -ffixed-r10
+INSTRUMENTATIONDEFINES = -finstrument-functions \
+ -ffixed-r10
+endif
+# Pull in *just* libm from the toolchain ... this is grody
+
+LIBM = "${shell $(CC) $(ARCHCPUFLAGS) -print-file-name=libm.a}"
+EXTRA_LIBS += $(LIBM)
-# pull in *just* libm from the toolchain ... this is grody
-LIBM = "${shell $(CC) $(ARCHCPUFLAGS) -print-file-name=libm.a}"
-EXTRA_LIBS += $(LIBM)
+# Use our linker script
-# use our linker script
-LDSCRIPT = ld.script
+LDSCRIPT = ld.script
ifeq ($(WINTOOL),y)
# Windows-native toolchains
- DIRLINK = $(TOPDIR)/tools/copydir.sh
- DIRUNLINK = $(TOPDIR)/tools/unlink.sh
- MKDEP = $(TOPDIR)/tools/mknulldeps.sh
- ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
- ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
- ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)}"
+ DIRLINK = $(TOPDIR)/tools/copydir.sh
+ DIRUNLINK = $(TOPDIR)/tools/unlink.sh
+ MKDEP = $(TOPDIR)/tools/mknulldeps.sh
+ ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
+ ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
+ ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)}"
else
ifeq ($(PX4_WINTOOL),y)
# Windows-native toolchains (MSYS)
- DIRLINK = $(TOPDIR)/tools/copydir.sh
- DIRUNLINK = $(TOPDIR)/tools/unlink.sh
- MKDEP = $(TOPDIR)/tools/mknulldeps.sh
- ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
- ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
- ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)
+ DIRLINK = $(TOPDIR)/tools/copydir.sh
+ DIRUNLINK = $(TOPDIR)/tools/unlink.sh
+ MKDEP = $(TOPDIR)/tools/mknulldeps.sh
+ ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
+ ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
+ ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)
else
- # Linux/Cygwin-native toolchain
- MKDEP = $(TOPDIR)/tools/mkdeps.sh
- ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
- ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
- ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)
+ # Linux/Cygwin-native toolchain
+ MKDEP = $(TOPDIR)/tools/mkdeps.sh
+ ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
+ ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
+ ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)
endif
endif
-# tool versions
-ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
-ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+# Tool versions
+
+ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
+# Optimization flags
-# optimisation flags
-ARCHOPTIMIZATION = $(MAXOPTIMIZATION) \
- -fno-strict-aliasing \
- -fno-strength-reduce \
- -fomit-frame-pointer \
- -funsafe-math-optimizations \
- -fno-builtin-printf \
- -ffunction-sections \
- -fdata-sections
+ARCHOPTIMIZATION = $(MAXOPTIMIZATION) \
+ -fno-strict-aliasing \
+ -fno-strength-reduce \
+ -fomit-frame-pointer \
+ -funsafe-math-optimizations \
+ -fno-builtin-printf \
+ -ffunction-sections \
+ -fdata-sections
ifeq ("${CONFIG_DEBUG_SYMBOLS}","y")
-ARCHOPTIMIZATION += -g
+ARCHOPTIMIZATION += -g
endif
-ARCHCFLAGS = -std=gnu99
-ARCHCXXFLAGS = -fno-exceptions -fno-rtti -std=gnu++0x
-ARCHWARNINGS = -Wall \
- -Wno-sign-compare \
- -Wextra \
- -Wdouble-promotion \
- -Wshadow \
- -Wfloat-equal \
- -Wframe-larger-than=1024 \
- -Wpointer-arith \
- -Wlogical-op \
- -Wmissing-declarations \
- -Wpacked \
- -Wno-unused-parameter
+ARCHCFLAGS = -std=gnu99
+ARCHCXXFLAGS = -fno-exceptions -fno-rtti -std=gnu++0x
+ARCHWARNINGS = -Wall \
+ -Wno-sign-compare \
+ -Wextra \
+ -Wdouble-promotion \
+ -Wshadow \
+ -Wfloat-equal \
+ -Wframe-larger-than=1024 \
+ -Wpointer-arith \
+ -Wlogical-op \
+ -Wmissing-declarations \
+ -Wpacked \
+ -Wno-unused-parameter
# -Wcast-qual - generates spurious noreturn attribute warnings, try again later
# -Wconversion - would be nice, but too many "risky-but-safe" conversions in the code
# -Wcast-align - would help catch bad casts in some cases, but generates too many false positives
-ARCHCWARNINGS = $(ARCHWARNINGS) \
- -Wbad-function-cast \
- -Wstrict-prototypes \
- -Wold-style-declaration \
- -Wmissing-parameter-type \
- -Wmissing-prototypes \
- -Wnested-externs
-ARCHWARNINGSXX = $(ARCHWARNINGS) \
- -Wno-psabi
-ARCHDEFINES =
-ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
-
-# this seems to be the only way to add linker flags
-EXTRA_LIBS += --warn-common \
- --gc-sections
-
-CFLAGS = $(ARCHCFLAGS) $(ARCHCWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(INSTRUMENTATIONDEFINES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe -fno-common
-CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
-CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(INSTRUMENTATIONDEFINES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
-CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
-CPPFLAGS = $(ARCHINCLUDES) $(INSTRUMENTATIONDEFINES) $(ARCHDEFINES) $(EXTRADEFINES)
-AFLAGS = $(CFLAGS) -D__ASSEMBLY__
-
-NXFLATLDFLAGS1 = -r -d -warn-common
-NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld -no-check-sections
-LDNXFLATFLAGS = -e main -s 2048
-
-OBJEXT = .o
-LIBEXT = .a
-EXEEXT =
-
-
-# produce partially-linked $1 from files in $2
+ARCHCWARNINGS = $(ARCHWARNINGS) \
+ -Wbad-function-cast \
+ -Wstrict-prototypes \
+ -Wold-style-declaration \
+ -Wmissing-parameter-type \
+ -Wmissing-prototypes \
+ -Wnested-externs
+ARCHWARNINGSXX = $(ARCHWARNINGS) \
+ -Wno-psabi
+ARCHDEFINES =
+ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
+
+# This seems to be the only way to add linker flags
+
+EXTRA_LIBS += --warn-common \
+ --gc-sections
+
+CFLAGS = $(ARCHCFLAGS) $(ARCHCWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(INSTRUMENTATIONDEFINES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe -fno-common
+CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
+CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(INSTRUMENTATIONDEFINES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
+CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
+CPPFLAGS = $(ARCHINCLUDES) $(INSTRUMENTATIONDEFINES) $(ARCHDEFINES) $(EXTRADEFINES)
+AFLAGS = $(CFLAGS) -D__ASSEMBLY__
+
+NXFLATLDFLAGS1 = -r -d -warn-common
+NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld -no-check-sections
+LDNXFLATFLAGS = -e main -s 2048
+
+OBJEXT = .o
+LIBEXT = .a
+EXEEXT =
+
+# Produce partially-linked $1 from files in $2
+
define PRELINK
- @echo "PRELINK: $1"
- $(Q) $(LD) -Ur -o $1 $2 && $(OBJCOPY) --localize-hidden $1
+ @echo "PRELINK: $1"
+ $(Q) $(LD) -Ur -o $1 $2 && $(OBJCOPY) --localize-hidden $1
endef
-HOSTCC = gcc
-HOSTINCLUDES = -I.
-HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -g -pipe
-HOSTLDFLAGS =
-
+HOSTCC = gcc
+HOSTINCLUDES = -I.
+HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -g -pipe
+HOSTLDFLAGS =
diff --git a/nuttx-configs/px4fmu-v2/nsh/appconfig b/nuttx-configs/px4fmu-v2/nsh/appconfig
deleted file mode 100644
index 0e18aa8ef..000000000
--- a/nuttx-configs/px4fmu-v2/nsh/appconfig
+++ /dev/null
@@ -1,52 +0,0 @@
-############################################################################
-# configs/px4fmu/nsh/appconfig
-#
-# Copyright (C) 2011 Gregory Nutt. All rights reserved.
-# Author: Gregory Nutt <gnutt@nuttx.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name NuttX nor the names of its contributors may be
-# used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
-
-# Path to example in apps/examples containing the user_start entry point
-
-CONFIGURED_APPS += examples/nsh
-
-# The NSH application library
-CONFIGURED_APPS += nshlib
-CONFIGURED_APPS += system/readline
-
-ifeq ($(CONFIG_CAN),y)
-#CONFIGURED_APPS += examples/can
-endif
-
-#ifeq ($(CONFIG_USBDEV),y)
-#ifeq ($(CONFIG_CDCACM),y)
-CONFIGURED_APPS += examples/cdcacm
-#endif
-#endif
diff --git a/nuttx-configs/px4fmu-v2/nsh/defconfig b/nuttx-configs/px4fmu-v2/nsh/defconfig
index 9030a1f02..2aeef89b5 100644
--- a/nuttx-configs/px4fmu-v2/nsh/defconfig
+++ b/nuttx-configs/px4fmu-v2/nsh/defconfig
@@ -2,14 +2,14 @@
# Automatically generated file; DO NOT EDIT.
# Nuttx/ Configuration
#
-CONFIG_NUTTX_NEWCONFIG=y
#
# Build Setup
#
# CONFIG_EXPERIMENTAL is not set
-# CONFIG_HOST_LINUX is not set
-CONFIG_HOST_OSX=y
+# CONFIG_DEFAULT_SMALL is not set
+CONFIG_HOST_LINUX=y
+# CONFIG_HOST_OSX is not set
# CONFIG_HOST_WINDOWS is not set
# CONFIG_HOST_OTHER is not set
@@ -17,6 +17,7 @@ CONFIG_HOST_OSX=y
# Build Configuration
#
CONFIG_APPS_DIR="../apps"
+CONFIG_BUILD_FLAT=y
# CONFIG_BUILD_2PASS is not set
#
@@ -26,10 +27,12 @@ CONFIG_APPS_DIR="../apps"
# CONFIG_INTELHEX_BINARY is not set
# CONFIG_MOTOROLA_SREC is not set
CONFIG_RAW_BINARY=y
+# CONFIG_UBOOT_UIMAGE is not set
#
# Customize Header Files
#
+# CONFIG_ARCH_STDINT_H is not set
# CONFIG_ARCH_STDBOOL_H is not set
CONFIG_ARCH_MATH_H=y
# CONFIG_ARCH_FLOAT_H is not set
@@ -38,37 +41,18 @@ CONFIG_ARCH_MATH_H=y
#
# Debug Options
#
-CONFIG_DEBUG=n
-CONFIG_DEBUG_VERBOSE=n
-
-#
-# Subsystem Debug Options
-#
-# CONFIG_DEBUG_MM is not set
-# CONFIG_DEBUG_SCHED is not set
-# CONFIG_DEBUG_USB is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_DEBUG_LIB is not set
-# CONFIG_DEBUG_BINFMT is not set
-# CONFIG_DEBUG_GRAPHICS is not set
-
-#
-# Driver Debug Options
-#
-# CONFIG_DEBUG_ANALOG is not set
-# CONFIG_DEBUG_I2C is not set
-# CONFIG_DEBUG_SPI is not set
-# CONFIG_DEBUG_SDIO is not set
-# CONFIG_DEBUG_GPIO is not set
-CONFIG_DEBUG_DMA=y
-# CONFIG_DEBUG_WATCHDOG is not set
-# CONFIG_DEBUG_AUDIO is not set
+# CONFIG_DEBUG is not set
+CONFIG_ARCH_HAVE_STACKCHECK=y
+CONFIG_ARCH_HAVE_HEAPCHECK=y
CONFIG_DEBUG_SYMBOLS=y
+CONFIG_ARCH_HAVE_CUSTOMOPT=y
+CONFIG_DEBUG_NOOPT=y
+# CONFIG_DEBUG_CUSTOMOPT is not set
+# CONFIG_DEBUG_FULLOPT is not set
#
# System Type
#
-# CONFIG_ARCH_8051 is not set
CONFIG_ARCH_ARM=y
# CONFIG_ARCH_AVR is not set
# CONFIG_ARCH_HC is not set
@@ -84,23 +68,35 @@ CONFIG_ARCH="arm"
#
# ARM Options
#
+# CONFIG_ARCH_CHIP_A1X is not set
# CONFIG_ARCH_CHIP_C5471 is not set
# CONFIG_ARCH_CHIP_CALYPSO is not set
# CONFIG_ARCH_CHIP_DM320 is not set
+# CONFIG_ARCH_CHIP_EFM32 is not set
# CONFIG_ARCH_CHIP_IMX is not set
# CONFIG_ARCH_CHIP_KINETIS is not set
# CONFIG_ARCH_CHIP_KL is not set
# CONFIG_ARCH_CHIP_LM is not set
+# CONFIG_ARCH_CHIP_TIVA is not set
# CONFIG_ARCH_CHIP_LPC17XX is not set
# CONFIG_ARCH_CHIP_LPC214X is not set
# CONFIG_ARCH_CHIP_LPC2378 is not set
# CONFIG_ARCH_CHIP_LPC31XX is not set
# CONFIG_ARCH_CHIP_LPC43XX is not set
# CONFIG_ARCH_CHIP_NUC1XX is not set
+# CONFIG_ARCH_CHIP_SAMA5 is not set
+# CONFIG_ARCH_CHIP_SAMD is not set
# CONFIG_ARCH_CHIP_SAM34 is not set
CONFIG_ARCH_CHIP_STM32=y
# CONFIG_ARCH_CHIP_STR71X is not set
+# CONFIG_ARCH_ARM7TDMI is not set
+# CONFIG_ARCH_ARM926EJS is not set
+# CONFIG_ARCH_ARM920T is not set
+# CONFIG_ARCH_CORTEXM0 is not set
+# CONFIG_ARCH_CORTEXM3 is not set
CONFIG_ARCH_CORTEXM4=y
+# CONFIG_ARCH_CORTEXA5 is not set
+# CONFIG_ARCH_CORTEXA8 is not set
CONFIG_ARCH_FAMILY="armv7-m"
CONFIG_ARCH_CHIP="stm32"
CONFIG_ARMV7M_USEBASEPRI=y
@@ -108,17 +104,17 @@ CONFIG_ARCH_HAVE_CMNVECTOR=y
CONFIG_ARMV7M_CMNVECTOR=y
CONFIG_ARCH_HAVE_FPU=y
CONFIG_ARCH_FPU=y
-CONFIG_ARCH_HAVE_MPU=y
# CONFIG_ARMV7M_MPU is not set
-# CONFIG_DEBUG_HARDFAULT is not set
#
# ARMV7M Configuration Options
#
# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
-CONFIG_ARMV7M_TOOLCHAIN_GNU_EABI=y
-CONFIG_ARMV7M_STACKCHECK=y
-CONFIG_SERIAL_TERMIOS=y
+# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set
+# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set
+CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y
+# CONFIG_ARMV7M_STACKCHECK is not set
+# CONFIG_ARMV7M_ITMSYSLOG is not set
CONFIG_SDIO_DMA=y
CONFIG_SDIO_DMAPRIO=0x00010000
# CONFIG_SDIO_WIDTH_D1_ONLY is not set
@@ -144,6 +140,7 @@ CONFIG_SDIO_DMAPRIO=0x00010000
# CONFIG_ARCH_CHIP_STM32L152V6 is not set
# CONFIG_ARCH_CHIP_STM32L152V8 is not set
# CONFIG_ARCH_CHIP_STM32L152VB is not set
+# CONFIG_ARCH_CHIP_STM32L162ZD is not set
# CONFIG_ARCH_CHIP_STM32F100C8 is not set
# CONFIG_ARCH_CHIP_STM32F100CB is not set
# CONFIG_ARCH_CHIP_STM32F100R8 is not set
@@ -156,15 +153,27 @@ CONFIG_SDIO_DMAPRIO=0x00010000
# CONFIG_ARCH_CHIP_STM32F100VC is not set
# CONFIG_ARCH_CHIP_STM32F100VD is not set
# CONFIG_ARCH_CHIP_STM32F100VE is not set
+# CONFIG_ARCH_CHIP_STM32F102CB is not set
+# CONFIG_ARCH_CHIP_STM32F103T8 is not set
+# CONFIG_ARCH_CHIP_STM32F103TB is not set
# CONFIG_ARCH_CHIP_STM32F103C4 is not set
# CONFIG_ARCH_CHIP_STM32F103C8 is not set
-# CONFIG_ARCH_CHIP_STM32F103RET6 is not set
-# CONFIG_ARCH_CHIP_STM32F103VCT6 is not set
-# CONFIG_ARCH_CHIP_STM32F103VET6 is not set
-# CONFIG_ARCH_CHIP_STM32F103ZET6 is not set
-# CONFIG_ARCH_CHIP_STM32F105VBT7 is not set
+# CONFIG_ARCH_CHIP_STM32F103CB is not set
+# CONFIG_ARCH_CHIP_STM32F103R8 is not set
+# CONFIG_ARCH_CHIP_STM32F103RB is not set
+# CONFIG_ARCH_CHIP_STM32F103RC is not set
+# CONFIG_ARCH_CHIP_STM32F103RD is not set
+# CONFIG_ARCH_CHIP_STM32F103RE is not set
+# CONFIG_ARCH_CHIP_STM32F103RG is not set
+# CONFIG_ARCH_CHIP_STM32F103V8 is not set
+# CONFIG_ARCH_CHIP_STM32F103VB is not set
+# CONFIG_ARCH_CHIP_STM32F103VC is not set
+# CONFIG_ARCH_CHIP_STM32F103VE is not set
+# CONFIG_ARCH_CHIP_STM32F103ZE is not set
+# CONFIG_ARCH_CHIP_STM32F105VB is not set
# CONFIG_ARCH_CHIP_STM32F107VC is not set
# CONFIG_ARCH_CHIP_STM32F207IG is not set
+# CONFIG_ARCH_CHIP_STM32F207ZE is not set
# CONFIG_ARCH_CHIP_STM32F302CB is not set
# CONFIG_ARCH_CHIP_STM32F302CC is not set
# CONFIG_ARCH_CHIP_STM32F302RB is not set
@@ -177,6 +186,8 @@ CONFIG_SDIO_DMAPRIO=0x00010000
# CONFIG_ARCH_CHIP_STM32F303RC is not set
# CONFIG_ARCH_CHIP_STM32F303VB is not set
# CONFIG_ARCH_CHIP_STM32F303VC is not set
+# CONFIG_ARCH_CHIP_STM32F401RE is not set
+# CONFIG_ARCH_CHIP_STM32F411RE is not set
# CONFIG_ARCH_CHIP_STM32F405RG is not set
# CONFIG_ARCH_CHIP_STM32F405VG is not set
# CONFIG_ARCH_CHIP_STM32F405ZG is not set
@@ -189,24 +200,71 @@ CONFIG_SDIO_DMAPRIO=0x00010000
CONFIG_ARCH_CHIP_STM32F427V=y
# CONFIG_ARCH_CHIP_STM32F427Z is not set
# CONFIG_ARCH_CHIP_STM32F427I is not set
+# CONFIG_ARCH_CHIP_STM32F429V is not set
+# CONFIG_ARCH_CHIP_STM32F429Z is not set
+# CONFIG_ARCH_CHIP_STM32F429I is not set
+# CONFIG_ARCH_CHIP_STM32F429B is not set
+# CONFIG_ARCH_CHIP_STM32F429N is not set
# CONFIG_STM32_STM32L15XX is not set
# CONFIG_STM32_ENERGYLITE is not set
# CONFIG_STM32_STM32F10XX is not set
# CONFIG_STM32_VALUELINE is not set
# CONFIG_STM32_CONNECTIVITYLINE is not set
# CONFIG_STM32_PERFORMANCELINE is not set
+# CONFIG_STM32_USBACCESSLINE is not set
# CONFIG_STM32_HIGHDENSITY is not set
# CONFIG_STM32_MEDIUMDENSITY is not set
# CONFIG_STM32_LOWDENSITY is not set
# CONFIG_STM32_STM32F20XX is not set
+# CONFIG_STM32_STM32F207 is not set
# CONFIG_STM32_STM32F30XX is not set
CONFIG_STM32_STM32F40XX=y
+# CONFIG_STM32_STM32F401 is not set
+# CONFIG_STM32_STM32F411 is not set
+# CONFIG_STM32_STM32F405 is not set
+# CONFIG_STM32_STM32F407 is not set
CONFIG_STM32_STM32F427=y
+# CONFIG_STM32_STM32F429 is not set
# CONFIG_STM32_DFU is not set
#
# STM32 Peripheral Support
#
+CONFIG_STM32_HAVE_CCM=y
+# CONFIG_STM32_HAVE_USBDEV is not set
+CONFIG_STM32_HAVE_OTGFS=y
+CONFIG_STM32_HAVE_FSMC=y
+CONFIG_STM32_HAVE_USART3=y
+CONFIG_STM32_HAVE_UART4=y
+CONFIG_STM32_HAVE_UART5=y
+CONFIG_STM32_HAVE_USART6=y
+CONFIG_STM32_HAVE_UART7=y
+CONFIG_STM32_HAVE_UART8=y
+CONFIG_STM32_HAVE_TIM1=y
+CONFIG_STM32_HAVE_TIM5=y
+CONFIG_STM32_HAVE_TIM6=y
+CONFIG_STM32_HAVE_TIM7=y
+CONFIG_STM32_HAVE_TIM8=y
+CONFIG_STM32_HAVE_TIM9=y
+CONFIG_STM32_HAVE_TIM10=y
+CONFIG_STM32_HAVE_TIM11=y
+CONFIG_STM32_HAVE_TIM12=y
+CONFIG_STM32_HAVE_TIM13=y
+CONFIG_STM32_HAVE_TIM14=y
+# CONFIG_STM32_HAVE_TIM15 is not set
+# CONFIG_STM32_HAVE_TIM16 is not set
+# CONFIG_STM32_HAVE_TIM17 is not set
+CONFIG_STM32_HAVE_ADC2=y
+CONFIG_STM32_HAVE_ADC3=y
+# CONFIG_STM32_HAVE_ADC4 is not set
+CONFIG_STM32_HAVE_CAN1=y
+CONFIG_STM32_HAVE_CAN2=y
+CONFIG_STM32_HAVE_RNG=y
+CONFIG_STM32_HAVE_ETHMAC=y
+CONFIG_STM32_HAVE_SPI2=y
+CONFIG_STM32_HAVE_SPI3=y
+CONFIG_STM32_HAVE_SPI4=y
+CONFIG_STM32_HAVE_SPI5=y
CONFIG_STM32_ADC1=y
# CONFIG_STM32_ADC2 is not set
# CONFIG_STM32_ADC3 is not set
@@ -302,7 +360,6 @@ CONFIG_USART2_RXDMA=y
CONFIG_USART3_RXDMA=y
# CONFIG_UART4_RS485 is not set
CONFIG_UART4_RXDMA=y
-CONFIG_UART5_RXDMA=y
# CONFIG_USART6_RS485 is not set
CONFIG_USART6_RXDMA=y
# CONFIG_UART7_RS485 is not set
@@ -310,6 +367,7 @@ CONFIG_UART7_RXDMA=y
# CONFIG_UART8_RS485 is not set
CONFIG_UART8_RXDMA=y
CONFIG_SERIAL_DISABLE_REORDERING=y
+CONFIG_STM32_FLOWCONTROL_BROKEN=y
CONFIG_STM32_USART_SINGLEWIRE=y
#
@@ -321,26 +379,34 @@ CONFIG_STM32_USART_SINGLEWIRE=y
#
# I2C Configuration
#
+# CONFIG_STM32_I2C_ALT is not set
# CONFIG_STM32_I2C_DYNTIMEO is not set
CONFIG_STM32_I2CTIMEOSEC=0
CONFIG_STM32_I2CTIMEOMS=10
+CONFIG_STM32_I2CTIMEOTICKS=10
# CONFIG_STM32_I2C_DUTY16_9 is not set
#
# SDIO Configuration
#
-CONFIG_SDIO_PRI=128
+# CONFIG_RTC_LSECLOCK is not set
+# CONFIG_RTC_LSICLOCK is not set
+CONFIG_RTC_HSECLOCK=y
#
-# USB Host Configuration
+# USB FS Host Configuration
#
#
-# USB Device Configuration
+# USB HS Host Configuration
#
#
-# External Memory Configuration
+# USB Host Debug Configuration
+#
+
+#
+# USB Device Configuration
#
#
@@ -349,12 +415,21 @@ CONFIG_SDIO_PRI=128
# CONFIG_ARCH_NOINTC is not set
# CONFIG_ARCH_VECNOTIRQ is not set
CONFIG_ARCH_DMA=y
-# CONFIG_ARCH_IRQPRIO is not set
-# CONFIG_CUSTOM_STACK is not set
-# CONFIG_ADDRENV is not set
+CONFIG_ARCH_HAVE_IRQPRIO=y
+# CONFIG_ARCH_L2CACHE is not set
+# CONFIG_ARCH_HAVE_COHERENT_DCACHE is not set
+# CONFIG_ARCH_HAVE_ADDRENV is not set
+# CONFIG_ARCH_NEED_ADDRENV_MAPPING is not set
CONFIG_ARCH_HAVE_VFORK=y
+# CONFIG_ARCH_HAVE_MMU is not set
+CONFIG_ARCH_HAVE_MPU=y
+# CONFIG_ARCH_NAND_HWECC is not set
+# CONFIG_ARCH_HAVE_EXTCLK is not set
+# CONFIG_ARCH_USE_MPU is not set
+# CONFIG_ARCH_IRQPRIO is not set
CONFIG_ARCH_STACKDUMP=y
# CONFIG_ENDIAN_BIG is not set
+# CONFIG_ARCH_IDLE_CUSTOM is not set
# CONFIG_ARCH_HAVE_RAMFUNCS is not set
CONFIG_ARCH_HAVE_RAMVECTORS=y
# CONFIG_ARCH_RAMVECTORS is not set
@@ -364,10 +439,14 @@ CONFIG_ARCH_HAVE_RAMVECTORS=y
#
CONFIG_BOARD_LOOPSPERMSEC=16717
# CONFIG_ARCH_CALIBRATION is not set
-CONFIG_DRAM_START=0x20000000
-CONFIG_DRAM_SIZE=262144
+
+#
+# Interrupt options
+#
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
-CONFIG_ARCH_INTERRUPTSTACK=4096
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_HAVE_HIPRI_INTERRUPT=y
+# CONFIG_ARCH_HIPRI_INTERRUPT is not set
#
# Boot options
@@ -379,49 +458,95 @@ CONFIG_BOOT_RUNFROMFLASH=y
# CONFIG_BOOT_COPYTORAM is not set
#
+# Boot Memory Configuration
+#
+CONFIG_RAM_START=0x20000000
+CONFIG_RAM_SIZE=262144
+# CONFIG_ARCH_HAVE_SDRAM is not set
+
+#
# Board Selection
#
-CONFIG_ARCH_BOARD_CUSTOM=y
-CONFIG_ARCH_BOARD=""
+CONFIG_ARCH_BOARD_PX4FMU_V2=y
+# CONFIG_ARCH_BOARD_CUSTOM is not set
+CONFIG_ARCH_BOARD="px4fmu-v2"
#
# Common Board Options
#
CONFIG_NSH_MMCSDMINOR=0
CONFIG_NSH_MMCSDSLOTNO=0
-CONFIG_MMCSD_HAVE_SDIOWAIT_WRCOMPLETE=y
+
#
# Board-Specific Options
#
+CONFIG_BOARD_HAS_PROBES=y
+# CONFIG_BOARD_USE_PROBES is not set
#
# RTOS Features
#
-# CONFIG_BOARD_INITIALIZE is not set
-CONFIG_MSEC_PER_TICK=1
+# CONFIG_DISABLE_OS_API is not set
+
+#
+# Clocks and Timers
+#
+CONFIG_USEC_PER_TICK=1000
+# CONFIG_SYSTEM_TIME64 is not set
+# CONFIG_CLOCK_MONOTONIC is not set
+# CONFIG_JULIAN_TIME is not set
+CONFIG_MAX_WDOGPARMS=2
+CONFIG_PREALLOC_WDOGS=50
+CONFIG_WDOG_INTRESERVE=4
+CONFIG_PREALLOC_TIMERS=50
+
+#
+# Tasks and Scheduling
+#
+# CONFIG_INIT_NONE is not set
+CONFIG_INIT_ENTRYPOINT=y
+# CONFIG_INIT_FILEPATH is not set
+CONFIG_USER_ENTRYPOINT="nsh_main"
CONFIG_RR_INTERVAL=0
-CONFIG_SCHED_INSTRUMENTATION=y
CONFIG_TASK_NAME_SIZE=24
+CONFIG_MAX_TASKS=32
# CONFIG_SCHED_HAVE_PARENT is not set
-# CONFIG_JULIAN_TIME is not set
-CONFIG_START_YEAR=1970
-CONFIG_START_MONTH=1
-CONFIG_START_DAY=1
-CONFIG_DEV_CONSOLE=y
+CONFIG_SCHED_WAITPID=y
+
+#
+# Pthread Options
+#
# CONFIG_MUTEX_TYPES is not set
-CONFIG_PRIORITY_INHERITANCE=y
-CONFIG_SEM_PREALLOCHOLDERS=0
-CONFIG_SEM_NNESTPRIO=8
+CONFIG_NPTHREAD_KEYS=4
+
+#
+# Performance Monitoring
+#
+# CONFIG_SCHED_CPULOAD is not set
+CONFIG_SCHED_INSTRUMENTATION=y
+
+#
+# Files and I/O
+#
+CONFIG_DEV_CONSOLE=y
# CONFIG_FDCLONE_DISABLE is not set
CONFIG_FDCLONE_STDIO=y
CONFIG_SDCLONE_DISABLE=y
-CONFIG_SCHED_WAITPID=y
+CONFIG_NFILE_DESCRIPTORS=42
+CONFIG_NFILE_STREAMS=8
+CONFIG_NAME_MAX=32
+CONFIG_PRIORITY_INHERITANCE=y
+CONFIG_SEM_PREALLOCHOLDERS=0
+CONFIG_SEM_NNESTPRIO=8
+
+#
+# RTOS hooks
+#
+# CONFIG_BOARD_INITIALIZE is not set
# CONFIG_SCHED_STARTHOOK is not set
CONFIG_SCHED_ATEXIT=y
CONFIG_SCHED_ATEXIT_MAX=1
# CONFIG_SCHED_ONEXIT is not set
-CONFIG_USER_ENTRYPOINT="nsh_main"
-# CONFIG_DISABLE_OS_API is not set
#
# Signal Numbers
@@ -433,19 +558,25 @@ CONFIG_SIG_SIGCONDTIMEDOUT=16
CONFIG_SIG_SIGWORK=4
#
-# Sizes of configurable things (0 disables)
+# POSIX Message Queue Options
#
-CONFIG_MAX_TASKS=32
-CONFIG_MAX_TASK_ARGS=10
-CONFIG_NPTHREAD_KEYS=4
-CONFIG_NFILE_DESCRIPTORS=42
-CONFIG_NFILE_STREAMS=8
-CONFIG_NAME_MAX=32
CONFIG_PREALLOC_MQ_MSGS=4
CONFIG_MQ_MAXMSGSIZE=32
-CONFIG_MAX_WDOGPARMS=2
-CONFIG_PREALLOC_WDOGS=50
-CONFIG_PREALLOC_TIMERS=50
+
+#
+# Work Queue Support
+#
+CONFIG_SCHED_WORKQUEUE=y
+CONFIG_SCHED_HPWORK=y
+CONFIG_SCHED_HPWORKPRIORITY=192
+CONFIG_SCHED_HPWORKPERIOD=5000
+CONFIG_SCHED_HPWORKSTACKSIZE=1800
+CONFIG_SCHED_LPWORK=y
+CONFIG_SCHED_LPNTHREADS=1
+CONFIG_SCHED_LPWORKPRIORITY=50
+CONFIG_SCHED_LPWORKPRIOMAX=176
+CONFIG_SCHED_LPWORKPERIOD=50000
+CONFIG_SCHED_LPWORKSTACKSIZE=1800
#
# Stack and heap information
@@ -454,6 +585,7 @@ CONFIG_IDLETHREAD_STACKSIZE=3500
CONFIG_USERMAIN_STACKSIZE=2600
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_PTHREAD_STACK_DEFAULT=2048
+# CONFIG_LIB_SYSCALL is not set
#
# Device Drivers
@@ -462,27 +594,39 @@ CONFIG_PTHREAD_STACK_DEFAULT=2048
CONFIG_DEV_NULL=y
# CONFIG_DEV_ZERO is not set
# CONFIG_LOOP is not set
+
+#
+# Buffering
+#
+# CONFIG_DRVR_WRITEBUFFER is not set
+# CONFIG_DRVR_READAHEAD is not set
# CONFIG_RAMDISK is not set
# CONFIG_CAN is not set
+# CONFIG_ARCH_HAVE_PWM_PULSECOUNT is not set
# CONFIG_PWM is not set
+CONFIG_ARCH_HAVE_I2CRESET=y
CONFIG_I2C=y
# CONFIG_I2C_SLAVE is not set
CONFIG_I2C_TRANSFER=y
# CONFIG_I2C_WRITEREAD is not set
# CONFIG_I2C_POLLED is not set
# CONFIG_I2C_TRACE is not set
-CONFIG_ARCH_HAVE_I2CRESET=y
CONFIG_I2C_RESET=y
CONFIG_SPI=y
# CONFIG_SPI_OWNBUS is not set
CONFIG_SPI_EXCHANGE=y
# CONFIG_SPI_CMDDATA is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_I2S is not set
CONFIG_RTC=y
CONFIG_RTC_DATETIME=y
-CONFIG_RTC_HSECLOCK=y
+# CONFIG_RTC_ALARM is not set
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_DEVPATH="/dev/watchdog0"
+# CONFIG_TIMER is not set
# CONFIG_ANALOG is not set
# CONFIG_AUDIO_DEVICES is not set
+# CONFIG_VIDEO_DEVICES is not set
# CONFIG_BCH is not set
# CONFIG_INPUT is not set
# CONFIG_LCD is not set
@@ -493,8 +637,12 @@ CONFIG_MMCSD_MULTIBLOCK_DISABLE=y
# CONFIG_MMCSD_MMCSUPPORT is not set
# CONFIG_MMCSD_HAVECARDDETECT is not set
# CONFIG_MMCSD_SPI is not set
+CONFIG_ARCH_HAVE_SDIO=y
+CONFIG_ARCH_HAVE_SDIOWAIT_WRCOMPLETE=y
CONFIG_MMCSD_SDIO=y
+CONFIG_SDIO_PREFLIGHT=y
# CONFIG_SDIO_MUXBUS is not set
+CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y
# CONFIG_SDIO_BLOCKSETUP is not set
CONFIG_MTD=y
@@ -502,39 +650,77 @@ CONFIG_MTD=y
# MTD Configuration
#
CONFIG_MTD_PARTITION=y
+# CONFIG_MTD_SECT512 is not set
CONFIG_MTD_BYTE_WRITE=y
+# CONFIG_MTD_CONFIG is not set
#
# MTD Device Drivers
#
+# CONFIG_MTD_NAND is not set
# CONFIG_RAMMTD is not set
# CONFIG_MTD_AT24XX is not set
+# CONFIG_MTD_AT25 is not set
# CONFIG_MTD_AT45DB is not set
# CONFIG_MTD_M25P is not set
# CONFIG_MTD_SMART is not set
CONFIG_MTD_RAMTRON=y
+CONFIG_RAMTRON_WRITEWAIT=y
+CONFIG_RAMTRON_SETSPEED=y
# CONFIG_MTD_SST25 is not set
+# CONFIG_MTD_SST25XX is not set
# CONFIG_MTD_SST39FV is not set
# CONFIG_MTD_W25 is not set
+# CONFIG_EEPROM is not set
CONFIG_PIPES=y
# CONFIG_PM is not set
# CONFIG_POWER is not set
# CONFIG_SENSORS is not set
+# CONFIG_SERCOMM_CONSOLE is not set
CONFIG_SERIAL=y
# CONFIG_DEV_LOWCONSOLE is not set
CONFIG_SERIAL_REMOVABLE=y
# CONFIG_16550_UART is not set
+# CONFIG_ARCH_HAVE_UART is not set
+# CONFIG_ARCH_HAVE_UART0 is not set
+# CONFIG_ARCH_HAVE_UART1 is not set
+# CONFIG_ARCH_HAVE_UART2 is not set
+# CONFIG_ARCH_HAVE_UART3 is not set
CONFIG_ARCH_HAVE_UART4=y
+# CONFIG_ARCH_HAVE_UART5 is not set
+# CONFIG_ARCH_HAVE_UART6 is not set
CONFIG_ARCH_HAVE_UART7=y
CONFIG_ARCH_HAVE_UART8=y
+# CONFIG_ARCH_HAVE_SCI0 is not set
+# CONFIG_ARCH_HAVE_SCI1 is not set
+# CONFIG_ARCH_HAVE_USART0 is not set
CONFIG_ARCH_HAVE_USART1=y
CONFIG_ARCH_HAVE_USART2=y
CONFIG_ARCH_HAVE_USART3=y
+# CONFIG_ARCH_HAVE_USART4 is not set
+# CONFIG_ARCH_HAVE_USART5 is not set
CONFIG_ARCH_HAVE_USART6=y
+# CONFIG_ARCH_HAVE_USART7 is not set
+# CONFIG_ARCH_HAVE_USART8 is not set
+# CONFIG_ARCH_HAVE_OTHER_UART is not set
+
+#
+# USART Configuration
+#
+CONFIG_USART1_ISUART=y
+CONFIG_USART2_ISUART=y
+CONFIG_USART3_ISUART=y
+CONFIG_USART6_ISUART=y
CONFIG_MCU_SERIAL=y
CONFIG_STANDARD_SERIAL=y
CONFIG_SERIAL_NPOLLWAITERS=2
-# CONFIG_SERIAL_TIOCSERGSTRUCT is not set
+CONFIG_SERIAL_IFLOWCONTROL=y
+CONFIG_SERIAL_OFLOWCONTROL=y
+CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y
+CONFIG_SERIAL_IFLOWCONTROL_LOWER_WATERMARK=10
+CONFIG_SERIAL_IFLOWCONTROL_UPPER_WATERMARK=90
+CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
+CONFIG_SERIAL_TERMIOS=y
# CONFIG_USART1_SERIAL_CONSOLE is not set
# CONFIG_USART2_SERIAL_CONSOLE is not set
# CONFIG_USART3_SERIAL_CONSOLE is not set
@@ -542,6 +728,7 @@ CONFIG_SERIAL_NPOLLWAITERS=2
# CONFIG_USART6_SERIAL_CONSOLE is not set
CONFIG_UART7_SERIAL_CONSOLE=y
# CONFIG_UART8_SERIAL_CONSOLE is not set
+# CONFIG_OTHER_SERIAL_CONSOLE is not set
# CONFIG_NO_SERIAL_CONSOLE is not set
#
@@ -627,8 +814,6 @@ CONFIG_UART8_PARITY=0
CONFIG_UART8_2STOP=0
# CONFIG_UART8_IFLOWCONTROL is not set
# CONFIG_UART8_OFLOWCONTROL is not set
-CONFIG_SERIAL_IFLOWCONTROL=y
-CONFIG_SERIAL_OFLOWCONTROL=y
CONFIG_USBDEV=y
#
@@ -640,6 +825,7 @@ CONFIG_USBDEV=y
CONFIG_USBDEV_BUSPOWERED=y
CONFIG_USBDEV_MAXPOWER=500
# CONFIG_USBDEV_DMA is not set
+# CONFIG_ARCH_USBDEV_STALLQUEUE is not set
# CONFIG_USBDEV_TRACE is not set
#
@@ -684,9 +870,16 @@ CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v2.x"
#
# Networking Support
#
+# CONFIG_ARCH_HAVE_NET is not set
+# CONFIG_ARCH_HAVE_PHY is not set
# CONFIG_NET is not set
#
+# Crypto API
+#
+# CONFIG_CRYPTO is not set
+
+#
# File Systems
#
@@ -694,6 +887,13 @@ CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v2.x"
# File system configuration
#
# CONFIG_DISABLE_MOUNTPOINT is not set
+# CONFIG_FS_AUTOMOUNTER is not set
+# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
+CONFIG_FS_READABLE=y
+CONFIG_FS_WRITABLE=y
+# CONFIG_FS_AIO is not set
+# CONFIG_FS_NAMED_SEMAPHORES is not set
+CONFIG_FS_MQUEUE_MPATH="/var/mqueue"
# CONFIG_FS_RAMMAP is not set
CONFIG_FS_FAT=y
CONFIG_FAT_LCNAMES=y
@@ -702,6 +902,7 @@ CONFIG_FAT_MAXFNAME=32
CONFIG_FS_FATTIME=y
CONFIG_FAT_DMAMEMORY=y
CONFIG_FS_NXFFS=y
+# CONFIG_NXFFS_SCAN_VOLUME is not set
CONFIG_NXFFS_PREALLOCATED=y
CONFIG_NXFFS_ERASEDSTATE=0xff
CONFIG_NXFFS_PACKTHRESHOLD=32
@@ -710,12 +911,13 @@ CONFIG_NXFFS_TAILTHRESHOLD=2048
CONFIG_FS_ROMFS=y
# CONFIG_FS_SMARTFS is not set
CONFIG_FS_BINFS=y
+# CONFIG_FS_PROCFS is not set
#
# System Logging
#
-# CONFIG_SYSLOG_ENABLE is not set
# CONFIG_SYSLOG is not set
+# CONFIG_SYSLOG_TIMESTAMP is not set
#
# Graphics Support
@@ -725,13 +927,12 @@ CONFIG_FS_BINFS=y
#
# Memory Management
#
-# CONFIG_MM_MULTIHEAP is not set
# CONFIG_MM_SMALL is not set
CONFIG_MM_REGIONS=2
+# CONFIG_ARCH_HAVE_HEAP2 is not set
CONFIG_GRAN=y
# CONFIG_GRAN_SINGLE is not set
-# CONFIG_GRAN_INTR is not set
-# CONFIG_DEBUG_GRAN is not set
+CONFIG_GRAN_INTR=y
#
# Audio Support
@@ -739,7 +940,7 @@ CONFIG_GRAN=y
# CONFIG_AUDIO is not set
#
-# Binary Formats
+# Binary Loader
#
# CONFIG_BINFMT_DISABLE is not set
# CONFIG_BINFMT_EXEPATH is not set
@@ -762,6 +963,7 @@ CONFIG_NUNGET_CHARS=2
CONFIG_LIB_HOMEDIR="/"
# CONFIG_NOPRINTF_FIELDWIDTH is not set
CONFIG_LIBC_FLOATINGPOINT=y
+# CONFIG_LIBC_IOCTL_VARIADIC is not set
CONFIG_LIB_RAND_ORDER=1
# CONFIG_EOL_IS_CR is not set
# CONFIG_EOL_IS_LF is not set
@@ -773,7 +975,10 @@ CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
CONFIG_LIBC_STRERROR=y
# CONFIG_LIBC_STRERROR_SHORT is not set
# CONFIG_LIBC_PERROR_STDOUT is not set
+CONFIG_LIBC_TMPDIR="/tmp"
+CONFIG_LIBC_MAX_TMPFILE=32
CONFIG_ARCH_LOWPUTC=y
+# CONFIG_LIBC_LOCALTIME is not set
CONFIG_LIB_SENDFILE_BUFSIZE=512
# CONFIG_ARCH_ROMGETC is not set
CONFIG_ARCH_OPTIMIZED_FUNCTIONS=y
@@ -793,15 +998,6 @@ CONFIG_ARCH_MEMCPY=y
#
# Non-standard Library Support
#
-CONFIG_SCHED_WORKQUEUE=y
-CONFIG_SCHED_HPWORK=y
-CONFIG_SCHED_WORKPRIORITY=192
-CONFIG_SCHED_WORKPERIOD=5000
-CONFIG_SCHED_WORKSTACKSIZE=1800
-CONFIG_SCHED_LPWORK=y
-CONFIG_SCHED_LPWORKPRIORITY=50
-CONFIG_SCHED_LPWORKPERIOD=50000
-CONFIG_SCHED_LPWORKSTACKSIZE=1800
# CONFIG_LIB_KBDCODEC is not set
# CONFIG_LIB_SLCDCODEC is not set
@@ -832,8 +1028,8 @@ CONFIG_BUILTIN_PROXY_STACKSIZE=1024
#
# CONFIG_EXAMPLES_BUTTONS is not set
# CONFIG_EXAMPLES_CAN is not set
-CONFIG_EXAMPLES_CDCACM=y
-# CONFIG_EXAMPLES_COMPOSITE is not set
+# CONFIG_EXAMPLES_CONFIGDATA is not set
+# CONFIG_EXAMPLES_CPUHOG is not set
# CONFIG_EXAMPLES_CXXTEST is not set
# CONFIG_EXAMPLES_DHCPD is not set
# CONFIG_EXAMPLES_ELF is not set
@@ -845,15 +1041,20 @@ CONFIG_EXAMPLES_CDCACM=y
# CONFIG_EXAMPLES_HIDKBD is not set
# CONFIG_EXAMPLES_KEYPADTEST is not set
# CONFIG_EXAMPLES_IGMP is not set
-# CONFIG_EXAMPLES_LCDRW is not set
# CONFIG_EXAMPLES_MM is not set
# CONFIG_EXAMPLES_MODBUS is not set
CONFIG_EXAMPLES_MOUNT=y
+# CONFIG_EXAMPLES_MOUNT_BLOCKDEVICE is not set
+CONFIG_EXAMPLES_MOUNT_NSECTORS=2048
+CONFIG_EXAMPLES_MOUNT_SECTORSIZE=512
+CONFIG_EXAMPLES_MOUNT_RAMDEVNO=0
+# CONFIG_EXAMPLES_MTDPART is not set
# CONFIG_EXAMPLES_NRF24L01TERM is not set
CONFIG_EXAMPLES_NSH=y
+# CONFIG_EXAMPLES_NSH_CXXINITIALIZE is not set
# CONFIG_EXAMPLES_NULL is not set
# CONFIG_EXAMPLES_NX is not set
-# CONFIG_EXAMPLES_NXCONSOLE is not set
+# CONFIG_EXAMPLES_NXTERM is not set
# CONFIG_EXAMPLES_NXFFS is not set
# CONFIG_EXAMPLES_NXFLAT is not set
# CONFIG_EXAMPLES_NXHELLO is not set
@@ -861,13 +1062,14 @@ CONFIG_EXAMPLES_NSH=y
# CONFIG_EXAMPLES_NXLINES is not set
# CONFIG_EXAMPLES_NXTEXT is not set
# CONFIG_EXAMPLES_OSTEST is not set
-# CONFIG_EXAMPLES_PASHELLO is not set
# CONFIG_EXAMPLES_PIPE is not set
# CONFIG_EXAMPLES_POSIXSPAWN is not set
# CONFIG_EXAMPLES_QENCODER is not set
# CONFIG_EXAMPLES_RGMP is not set
# CONFIG_EXAMPLES_ROMFS is not set
# CONFIG_EXAMPLES_SENDMAIL is not set
+# CONFIG_EXAMPLES_SERIALBLASTER is not set
+# CONFIG_EXAMPLES_SERIALRX is not set
# CONFIG_EXAMPLES_SERLOOP is not set
# CONFIG_EXAMPLES_SLCD is not set
# CONFIG_EXAMPLES_SMART_TEST is not set
@@ -878,9 +1080,8 @@ CONFIG_EXAMPLES_NSH=y
# CONFIG_EXAMPLES_TIFF is not set
# CONFIG_EXAMPLES_TOUCHSCREEN is not set
# CONFIG_EXAMPLES_UDP is not set
-# CONFIG_EXAMPLES_UIP is not set
+# CONFIG_EXAMPLES_WEBSERVER is not set
# CONFIG_EXAMPLES_USBSERIAL is not set
-# CONFIG_EXAMPLES_USBMSC is not set
# CONFIG_EXAMPLES_USBTERM is not set
# CONFIG_EXAMPLES_WATCHDOG is not set
@@ -888,12 +1089,15 @@ CONFIG_EXAMPLES_NSH=y
# Graphics Support
#
# CONFIG_TIFF is not set
+# CONFIG_GRAPHICS_TRAVELER is not set
#
# Interpreters
#
+# CONFIG_INTERPRETERS_BAS is not set
# CONFIG_INTERPRETERS_FICL is not set
# CONFIG_INTERPRETERS_PCODE is not set
+# CONFIG_INTERPRETERS_MICROPYTHON is not set
#
# Network Utilities
@@ -903,17 +1107,14 @@ CONFIG_EXAMPLES_NSH=y
# Networking Utilities
#
# CONFIG_NETUTILS_CODECS is not set
-# CONFIG_NETUTILS_DHCPC is not set
# CONFIG_NETUTILS_DHCPD is not set
# CONFIG_NETUTILS_FTPC is not set
# CONFIG_NETUTILS_FTPD is not set
# CONFIG_NETUTILS_JSON is not set
-# CONFIG_NETUTILS_RESOLV is not set
# CONFIG_NETUTILS_SMTP is not set
-# CONFIG_NETUTILS_TELNETD is not set
# CONFIG_NETUTILS_TFTPC is not set
# CONFIG_NETUTILS_THTTPD is not set
-# CONFIG_NETUTILS_UIPLIB is not set
+# CONFIG_NETUTILS_NETLIB is not set
# CONFIG_NETUTILS_WEBCLIENT is not set
#
@@ -925,15 +1126,32 @@ CONFIG_EXAMPLES_NSH=y
# NSH Library
#
CONFIG_NSH_LIBRARY=y
+
+#
+# Command Line Configuration
+#
+CONFIG_NSH_READLINE=y
+# CONFIG_NSH_CLE is not set
+CONFIG_NSH_LINELEN=128
+# CONFIG_NSH_DISABLE_SEMICOLON is not set
+CONFIG_NSH_CMDPARMS=y
+CONFIG_NSH_MAXARGUMENTS=12
+CONFIG_NSH_ARGCAT=y
+CONFIG_NSH_NESTDEPTH=8
+# CONFIG_NSH_DISABLEBG is not set
CONFIG_NSH_BUILTIN_APPS=y
#
# Disable Individual commands
#
+# CONFIG_NSH_DISABLE_ADDROUTE is not set
# CONFIG_NSH_DISABLE_CAT is not set
# CONFIG_NSH_DISABLE_CD is not set
# CONFIG_NSH_DISABLE_CP is not set
+# CONFIG_NSH_DISABLE_CMP is not set
# CONFIG_NSH_DISABLE_DD is not set
+# CONFIG_NSH_DISABLE_DF is not set
+# CONFIG_NSH_DISABLE_DELROUTE is not set
# CONFIG_NSH_DISABLE_ECHO is not set
# CONFIG_NSH_DISABLE_EXEC is not set
# CONFIG_NSH_DISABLE_EXIT is not set
@@ -953,9 +1171,7 @@ CONFIG_NSH_BUILTIN_APPS=y
# CONFIG_NSH_DISABLE_MH is not set
# CONFIG_NSH_DISABLE_MOUNT is not set
# CONFIG_NSH_DISABLE_MW is not set
-# CONFIG_NSH_DISABLE_NSFMOUNT is not set
# CONFIG_NSH_DISABLE_PS is not set
-# CONFIG_NSH_DISABLE_PING is not set
# CONFIG_NSH_DISABLE_PUT is not set
# CONFIG_NSH_DISABLE_PWD is not set
# CONFIG_NSH_DISABLE_RM is not set
@@ -975,32 +1191,36 @@ CONFIG_NSH_BUILTIN_APPS=y
#
# CONFIG_NSH_CMDOPT_DF_H is not set
CONFIG_NSH_CODECS_BUFSIZE=128
+# CONFIG_NSH_CMDOPT_HEXDUMP is not set
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_STRERROR=y
-CONFIG_NSH_LINELEN=128
-CONFIG_NSH_MAXARGUMENTS=12
-CONFIG_NSH_NESTDEPTH=8
+
+#
+# Scripting Support
+#
# CONFIG_NSH_DISABLESCRIPT is not set
-# CONFIG_NSH_DISABLEBG is not set
+# CONFIG_NSH_DISABLE_ITEF is not set
+# CONFIG_NSH_DISABLE_LOOPS is not set
CONFIG_NSH_ROMFSETC=y
# CONFIG_NSH_ROMFSRC is not set
CONFIG_NSH_ROMFSMOUNTPT="/etc"
CONFIG_NSH_INITSCRIPT="init.d/rcS"
CONFIG_NSH_ROMFSDEVNO=0
CONFIG_NSH_ROMFSSECTSIZE=128
+# CONFIG_NSH_DEFAULTROMFS is not set
CONFIG_NSH_ARCHROMFS=y
+# CONFIG_NSH_CUSTOMROMFS is not set
CONFIG_NSH_FATDEVNO=1
CONFIG_NSH_FATSECTSIZE=512
CONFIG_NSH_FATNSECTORS=1024
CONFIG_NSH_FATMOUNTPT="/tmp"
-CONFIG_NSH_CONSOLE=y
-# CONFIG_NSH_USBCONSOLE is not set
#
-# USB Trace Support
+# Console Configuration
#
-# CONFIG_NSH_USBDEV_TRACE is not set
-# CONFIG_NSH_CONDEV is not set
+CONFIG_NSH_CONSOLE=y
+# CONFIG_NSH_USBCONSOLE is not set
+# CONFIG_NSH_ALTCONDEV is not set
CONFIG_NSH_ARCHINIT=y
#
@@ -1008,7 +1228,12 @@ CONFIG_NSH_ARCHINIT=y
#
#
-# System NSH Add-Ons
+# Platform-specific Support
+#
+# CONFIG_PLATFORM_CONFIGDATA is not set
+
+#
+# System Libraries and NSH Add-Ons
#
#
@@ -1017,9 +1242,18 @@ CONFIG_NSH_ARCHINIT=y
# CONFIG_SYSTEM_FREE is not set
#
-# I2C tool
+# EMACS-like Command Line Editor
#
-# CONFIG_SYSTEM_I2CTOOL is not set
+# CONFIG_SYSTEM_CLE is not set
+
+#
+# CU Minimal Terminal
+#
+CONFIG_SYSTEM_CUTERM=y
+CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE="/dev/ttyS0"
+CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD=57600
+CONFIG_SYSTEM_CUTERM_STACKSIZE=2048
+CONFIG_SYSTEM_CUTERM_PRIORITY=100
#
# FLASH Program Installation
@@ -1032,12 +1266,44 @@ CONFIG_NSH_ARCHINIT=y
# CONFIG_SYSTEM_FLASH_ERASEALL is not set
#
+# Intel HEX to binary conversion
+#
+# CONFIG_SYSTEM_HEX2BIN is not set
+
+#
+# I2C tool
+#
+# CONFIG_SYSTEM_I2CTOOL is not set
+
+#
+# INI File Parser
+#
+# CONFIG_SYSTEM_INIFILE is not set
+
+#
+# NxPlayer media player library / command Line
+#
+
+#
+# RAM test
+#
+# CONFIG_SYSTEM_RAMTEST is not set
+
+#
# readline()
#
CONFIG_SYSTEM_READLINE=y
CONFIG_READLINE_ECHO=y
#
+# P-Code Support
+#
+
+#
+# PHY Tool
+#
+
+#
# Power Off
#
# CONFIG_SYSTEM_POWEROFF is not set
@@ -1053,10 +1319,48 @@ CONFIG_READLINE_ECHO=y
# CONFIG_SYSTEM_SDCARD is not set
#
+# Sudoku
+#
+# CONFIG_SYSTEM_SUDOKU is not set
+
+#
# Sysinfo
#
CONFIG_SYSTEM_SYSINFO=y
+CONFIG_SYSTEM_SYSINFO_STACKSIZE=1024
+
+#
+# Temperature
+#
+
+#
+# VI Work-Alike Editor
+#
+# CONFIG_SYSTEM_VI is not set
+
+#
+# Stack Monitor
+#
+
+#
+# USB CDC/ACM Device Commands
+#
+CONFIG_SYSTEM_CDCACM=y
+CONFIG_SYSTEM_CDCACM_DEVMINOR=0
+
+#
+# USB Composite Device Commands
+#
+
+#
+# USB Mass Storage Device Commands
+#
#
# USB Monitor
#
+
+#
+# Zmodem Commands
+#
+# CONFIG_SYSTEM_ZMODEM is not set
diff --git a/nuttx-configs/px4fmu-v2/nsh/setenv.sh b/nuttx-configs/px4fmu-v2/nsh/setenv.sh
index 265520997..01f62bbe1 100755
--- a/nuttx-configs/px4fmu-v2/nsh/setenv.sh
+++ b/nuttx-configs/px4fmu-v2/nsh/setenv.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# configs/stm3240g-eval/nsh/setenv.sh
+# configs/px4fmu-v2_upstream/nsh/setenv.sh
#
-# Copyright (C) 2011 Gregory Nutt. All rights reserved.
+# Copyright (C) 2014 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# Redistribution and use in source and binary forms, with or without
@@ -47,15 +47,11 @@ if [ -z "${PATH_ORIG}" ]; then
export PATH_ORIG="${PATH}"
fi
-# This the Cygwin path to the location where I installed the RIDE
-# toolchain under windows. You will also have to edit this if you install
-# the RIDE toolchain in any other location
-#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/Raisonance/Ride/arm-gcc/bin"
-
# This the Cygwin path to the location where I installed the CodeSourcery
# toolchain under windows. You will also have to edit this if you install
# the CodeSourcery toolchain in any other location
-export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
+#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
+export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin
# This the Cygwin path to the location where I build the buildroot
# toolchain.
diff --git a/nuttx-configs/px4fmu-v2/scripts/ld.script b/nuttx-configs/px4fmu-v2/scripts/ld.script
index bec896d1c..c78db47e2 100644
--- a/nuttx-configs/px4fmu-v2/scripts/ld.script
+++ b/nuttx-configs/px4fmu-v2/scripts/ld.script
@@ -1,5 +1,5 @@
/****************************************************************************
- * configs/px4fmu/common/ld.script
+ * configs/px4fmu-v2_upstream/common/ld.script
*
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@@ -61,7 +61,7 @@ OUTPUT_ARCH(arm)
ENTRY(__start) /* treat __start as the anchor for dead code stripping */
EXTERN(_vectors) /* force the vectors to be included in the output */
-/*
+/*
* Ensure that abort() is present in the final object. The exception handling
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
*/
@@ -72,17 +72,17 @@ SECTIONS
.text : {
_stext = ABSOLUTE(.);
*(.vectors)
- *(.text .text.*)
+ *(.text .text.*)
*(.fixup)
*(.gnu.warning)
- *(.rodata .rodata.*)
+ *(.rodata .rodata.*)
*(.gnu.linkonce.t.*)
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
- /*
+ /*
* This is a hack to make the newlib libm __errno() call
* use the NuttX get_errno_ptr() function.
*/
diff --git a/nuttx-configs/px4fmu-v2/src/Makefile b/nuttx-configs/px4fmu-v2/src/Makefile
index d4276f7fc..35ad52a2d 100644
--- a/nuttx-configs/px4fmu-v2/src/Makefile
+++ b/nuttx-configs/px4fmu-v2/src/Makefile
@@ -1,5 +1,5 @@
############################################################################
-# configs/px4fmu/src/Makefile
+# configs/px4fmu-v2_upstream/src/Makefile
#
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
@@ -35,24 +35,24 @@
-include $(TOPDIR)/Make.defs
-CFLAGS += -I$(TOPDIR)/sched
+CFLAGS += -I$(TOPDIR)/sched
-ASRCS =
-AOBJS = $(ASRCS:.S=$(OBJEXT))
+ASRCS =
+AOBJS = $(ASRCS:.S=$(OBJEXT))
-CSRCS = empty.c
-COBJS = $(CSRCS:.c=$(OBJEXT))
+CSRCS = empty.c
+COBJS = $(CSRCS:.c=$(OBJEXT))
-SRCS = $(ASRCS) $(CSRCS)
-OBJS = $(AOBJS) $(COBJS)
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
-ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
ifeq ($(WINTOOL),y)
- CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
- -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
- -I "${shell cygpath -w $(ARCH_SRCDIR)/armv7-m}"
+ CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
+ -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
+ -I "${shell cygpath -w $(ARCH_SRCDIR)/armv7-m}"
else
- CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(ARCH_SRCDIR)/armv7-m
+ CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(ARCH_SRCDIR)/armv7-m
endif
all: libboard$(LIBEXT)
@@ -81,4 +81,3 @@ distclean: clean
$(call DELFILE, .depend)
-include Make.dep
-
diff --git a/nuttx-configs/px4io-v1/nsh/Make.defs b/nuttx-configs/px4io-v1/nsh/Make.defs
index b4f5577ae..09a36ea6d 100644
--- a/nuttx-configs/px4io-v1/nsh/Make.defs
+++ b/nuttx-configs/px4io-v1/nsh/Make.defs
@@ -35,6 +35,7 @@
include ${TOPDIR}/.config
include ${TOPDIR}/tools/Config.mk
+include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
#
# We only support building with the ARM bare-metal toolchain from
@@ -58,6 +59,11 @@ ARCHCPUFLAGS = -mcpu=cortex-m3 \
-mthumb \
-march=armv7-m
+# enable precise stack overflow tracking
+ifeq ($(CONFIG_ARMV7M_STACKCHECK),y)
+INSTRUMENTATIONDEFINES = -finstrument-functions -ffixed-r10
+endif
+
# use our linker script
LDSCRIPT = ld.script
diff --git a/nuttx-configs/px4io-v1/nsh/appconfig b/nuttx-configs/px4io-v1/nsh/appconfig
deleted file mode 100644
index 48a41bcdb..000000000
--- a/nuttx-configs/px4io-v1/nsh/appconfig
+++ /dev/null
@@ -1,32 +0,0 @@
-############################################################################
-#
-# Copyright (C) 2012 PX4 Development Team. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name PX4 nor the names of its contributors may be
-# used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
diff --git a/nuttx-configs/px4io-v1/nsh/defconfig b/nuttx-configs/px4io-v1/nsh/defconfig
index 7c76be7ec..54161dc77 100755
--- a/nuttx-configs/px4io-v1/nsh/defconfig
+++ b/nuttx-configs/px4io-v1/nsh/defconfig
@@ -1,538 +1,978 @@
-############################################################################
-# configs/px4io-v1/nsh/defconfig
-#
-# Copyright (C) 2012 PX4 Development Team. All rights reserved.
-# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
-# Author: Gregory Nutt <gnutt@nuttx.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name NuttX nor the names of its contributors may be
-# used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
-#
-# architecture selection
-#
-# CONFIG_ARCH - identifies the arch subdirectory and, hence, the
-# processor architecture.
-# CONFIG_ARCH_family - for use in C code. This identifies the
-# particular chip family that the architecture is implemented
-# in.
-# CONFIG_ARCH_architecture - for use in C code. This identifies the
-# specific architecture within the chip family.
-# CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
-# CONFIG_ARCH_CHIP_name - For use in C code
-# CONFIG_ARCH_BOARD - identifies the configs subdirectory and, hence,
-# the board that supports the particular chip or SoC.
-# CONFIG_ARCH_BOARD_name - for use in C code
-# CONFIG_ENDIAN_BIG - define if big endian (default is little endian)
-# CONFIG_BOARD_LOOPSPERMSEC - for delay loops
-# CONFIG_DRAM_SIZE - Describes the installed DRAM.
-# CONFIG_DRAM_START - The start address of DRAM (physical)
-# CONFIG_ARCH_IRQPRIO - The ST32F100CB supports interrupt prioritization
-# CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
-# stack. If defined, this symbol is the size of the interrupt
-# stack in bytes. If not defined, the user task stacks will be
-# used during interrupt handling.
-# CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
-# CONFIG_ARCH_BOOTLOADER - Set if you are using a bootloader.
-# CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
-# CONFIG_ARCH_BUTTONS - Enable support for buttons. Unique to board architecture.
-# CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
-# cause a 100 second delay during boot-up. This 100 second delay
-# serves no purpose other than it allows you to calibrate
-# CONFIG_BOARD_LOOPSPERMSEC. You simply use a stop watch to measure
-# the 100 second delay then adjust CONFIG_BOARD_LOOPSPERMSEC until
-# the delay actually is 100 seconds.
-# CONFIG_ARCH_DMA - Support DMA initialization
#
-CONFIG_ARCH="arm"
-CONFIG_ARCH_ARM=y
-CONFIG_ARCH_CORTEXM3=y
-CONFIG_ARCH_CHIP="stm32"
-CONFIG_ARCH_CHIP_STM32F100C8=y
+# Automatically generated file; DO NOT EDIT.
+# Nuttx/ Configuration
#
-# Board Selection
+
#
-CONFIG_ARCH_BOARD_PX4IO_V1=y
-# CONFIG_ARCH_BOARD_CUSTOM is not set
-CONFIG_ARCH_BOARD="px4io-v1"
-CONFIG_BOARD_LOOPSPERMSEC=2000
-CONFIG_DRAM_SIZE=0x00002000
-CONFIG_DRAM_START=0x20000000
-CONFIG_ARCH_INTERRUPTSTACK=n
-CONFIG_ARCH_STACKDUMP=y
-CONFIG_ARCH_BOOTLOADER=n
-CONFIG_ARCH_LEDS=n
-CONFIG_ARCH_BUTTONS=n
-CONFIG_ARCH_CALIBRATION=n
-CONFIG_ARCH_DMA=y
+# Build Setup
+#
+# CONFIG_EXPERIMENTAL is not set
+# CONFIG_DEFAULT_SMALL is not set
+CONFIG_HOST_LINUX=y
+# CONFIG_HOST_OSX is not set
+# CONFIG_HOST_WINDOWS is not set
+# CONFIG_HOST_OTHER is not set
+
+#
+# Build Configuration
+#
+CONFIG_APPS_DIR="../apps"
+CONFIG_BUILD_FLAT=y
+# CONFIG_BUILD_2PASS is not set
+
+#
+# Binary Output Formats
+#
+# CONFIG_RRLOAD_BINARY is not set
+# CONFIG_INTELHEX_BINARY is not set
+# CONFIG_MOTOROLA_SREC is not set
+CONFIG_RAW_BINARY=y
+# CONFIG_UBOOT_UIMAGE is not set
+
+#
+# Customize Header Files
+#
+# CONFIG_ARCH_STDINT_H is not set
+# CONFIG_ARCH_STDBOOL_H is not set
CONFIG_ARCH_MATH_H=y
+# CONFIG_ARCH_FLOAT_H is not set
+# CONFIG_ARCH_STDARG_H is not set
-CONFIG_ARMV7M_CMNVECTOR=y
-# CONFIG_ARMV7M_STACKCHECK is not set
+#
+# Debug Options
+#
+# CONFIG_DEBUG is not set
+CONFIG_ARCH_HAVE_STACKCHECK=y
+CONFIG_ARCH_HAVE_HEAPCHECK=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_ARCH_HAVE_CUSTOMOPT=y
+# CONFIG_DEBUG_NOOPT is not set
+# CONFIG_DEBUG_CUSTOMOPT is not set
+CONFIG_DEBUG_FULLOPT=y
#
-# JTAG Enable settings (by default JTAG-DP and SW-DP are disabled):
+# System Type
#
-# CONFIG_STM32_DFU - Use the DFU bootloader, not JTAG
+CONFIG_ARCH_ARM=y
+# CONFIG_ARCH_AVR is not set
+# CONFIG_ARCH_HC is not set
+# CONFIG_ARCH_MIPS is not set
+# CONFIG_ARCH_RGMP is not set
+# CONFIG_ARCH_SH is not set
+# CONFIG_ARCH_SIM is not set
+# CONFIG_ARCH_X86 is not set
+# CONFIG_ARCH_Z16 is not set
+# CONFIG_ARCH_Z80 is not set
+CONFIG_ARCH="arm"
+
#
-# JTAG Enable options:
+# ARM Options
+#
+# CONFIG_ARCH_CHIP_A1X is not set
+# CONFIG_ARCH_CHIP_C5471 is not set
+# CONFIG_ARCH_CHIP_CALYPSO is not set
+# CONFIG_ARCH_CHIP_DM320 is not set
+# CONFIG_ARCH_CHIP_EFM32 is not set
+# CONFIG_ARCH_CHIP_IMX is not set
+# CONFIG_ARCH_CHIP_KINETIS is not set
+# CONFIG_ARCH_CHIP_KL is not set
+# CONFIG_ARCH_CHIP_LM is not set
+# CONFIG_ARCH_CHIP_TIVA is not set
+# CONFIG_ARCH_CHIP_LPC17XX is not set
+# CONFIG_ARCH_CHIP_LPC214X is not set
+# CONFIG_ARCH_CHIP_LPC2378 is not set
+# CONFIG_ARCH_CHIP_LPC31XX is not set
+# CONFIG_ARCH_CHIP_LPC43XX is not set
+# CONFIG_ARCH_CHIP_NUC1XX is not set
+# CONFIG_ARCH_CHIP_SAMA5 is not set
+# CONFIG_ARCH_CHIP_SAMD is not set
+# CONFIG_ARCH_CHIP_SAM34 is not set
+CONFIG_ARCH_CHIP_STM32=y
+# CONFIG_ARCH_CHIP_STR71X is not set
+# CONFIG_ARCH_ARM7TDMI is not set
+# CONFIG_ARCH_ARM926EJS is not set
+# CONFIG_ARCH_ARM920T is not set
+# CONFIG_ARCH_CORTEXM0 is not set
+CONFIG_ARCH_CORTEXM3=y
+# CONFIG_ARCH_CORTEXM4 is not set
+# CONFIG_ARCH_CORTEXA5 is not set
+# CONFIG_ARCH_CORTEXA8 is not set
+CONFIG_ARCH_FAMILY="armv7-m"
+CONFIG_ARCH_CHIP="stm32"
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_ARCH_HAVE_CMNVECTOR=y
+CONFIG_ARMV7M_CMNVECTOR=y
+# CONFIG_ARCH_HAVE_FPU is not set
+# CONFIG_ARMV7M_MPU is not set
+
#
-# CONFIG_STM32_JTAG_FULL_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
-# CONFIG_STM32_JTAG_NOJNTRST_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
-# but without JNTRST.
-# CONFIG_STM32_JTAG_SW_ENABLE - Set JTAG-DP disabled and SW-DP enabled
+# ARMV7M Configuration Options
#
-CONFIG_STM32_DFU=n
-CONFIG_STM32_JTAG_FULL_ENABLE=y
-CONFIG_STM32_JTAG_NOJNTRST_ENABLE=n
-CONFIG_STM32_JTAG_SW_ENABLE=n
+# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
+# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set
+# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set
+CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y
+# CONFIG_ARMV7M_STACKCHECK is not set
+# CONFIG_ARMV7M_ITMSYSLOG is not set
#
-# Individual subsystems can be enabled:
+# STM32 Configuration Options
+#
+# CONFIG_ARCH_CHIP_STM32L151C6 is not set
+# CONFIG_ARCH_CHIP_STM32L151C8 is not set
+# CONFIG_ARCH_CHIP_STM32L151CB is not set
+# CONFIG_ARCH_CHIP_STM32L151R6 is not set
+# CONFIG_ARCH_CHIP_STM32L151R8 is not set
+# CONFIG_ARCH_CHIP_STM32L151RB is not set
+# CONFIG_ARCH_CHIP_STM32L151V6 is not set
+# CONFIG_ARCH_CHIP_STM32L151V8 is not set
+# CONFIG_ARCH_CHIP_STM32L151VB is not set
+# CONFIG_ARCH_CHIP_STM32L152C6 is not set
+# CONFIG_ARCH_CHIP_STM32L152C8 is not set
+# CONFIG_ARCH_CHIP_STM32L152CB is not set
+# CONFIG_ARCH_CHIP_STM32L152R6 is not set
+# CONFIG_ARCH_CHIP_STM32L152R8 is not set
+# CONFIG_ARCH_CHIP_STM32L152RB is not set
+# CONFIG_ARCH_CHIP_STM32L152V6 is not set
+# CONFIG_ARCH_CHIP_STM32L152V8 is not set
+# CONFIG_ARCH_CHIP_STM32L152VB is not set
+# CONFIG_ARCH_CHIP_STM32L162ZD is not set
+CONFIG_ARCH_CHIP_STM32F100C8=y
+# CONFIG_ARCH_CHIP_STM32F100CB is not set
+# CONFIG_ARCH_CHIP_STM32F100R8 is not set
+# CONFIG_ARCH_CHIP_STM32F100RB is not set
+# CONFIG_ARCH_CHIP_STM32F100RC is not set
+# CONFIG_ARCH_CHIP_STM32F100RD is not set
+# CONFIG_ARCH_CHIP_STM32F100RE is not set
+# CONFIG_ARCH_CHIP_STM32F100V8 is not set
+# CONFIG_ARCH_CHIP_STM32F100VB is not set
+# CONFIG_ARCH_CHIP_STM32F100VC is not set
+# CONFIG_ARCH_CHIP_STM32F100VD is not set
+# CONFIG_ARCH_CHIP_STM32F100VE is not set
+# CONFIG_ARCH_CHIP_STM32F102CB is not set
+# CONFIG_ARCH_CHIP_STM32F103T8 is not set
+# CONFIG_ARCH_CHIP_STM32F103TB is not set
+# CONFIG_ARCH_CHIP_STM32F103C4 is not set
+# CONFIG_ARCH_CHIP_STM32F103C8 is not set
+# CONFIG_ARCH_CHIP_STM32F103CB is not set
+# CONFIG_ARCH_CHIP_STM32F103R8 is not set
+# CONFIG_ARCH_CHIP_STM32F103RB is not set
+# CONFIG_ARCH_CHIP_STM32F103RC is not set
+# CONFIG_ARCH_CHIP_STM32F103RD is not set
+# CONFIG_ARCH_CHIP_STM32F103RE is not set
+# CONFIG_ARCH_CHIP_STM32F103RG is not set
+# CONFIG_ARCH_CHIP_STM32F103V8 is not set
+# CONFIG_ARCH_CHIP_STM32F103VB is not set
+# CONFIG_ARCH_CHIP_STM32F103VC is not set
+# CONFIG_ARCH_CHIP_STM32F103VE is not set
+# CONFIG_ARCH_CHIP_STM32F103ZE is not set
+# CONFIG_ARCH_CHIP_STM32F105VB is not set
+# CONFIG_ARCH_CHIP_STM32F107VC is not set
+# CONFIG_ARCH_CHIP_STM32F207IG is not set
+# CONFIG_ARCH_CHIP_STM32F207ZE is not set
+# CONFIG_ARCH_CHIP_STM32F302CB is not set
+# CONFIG_ARCH_CHIP_STM32F302CC is not set
+# CONFIG_ARCH_CHIP_STM32F302RB is not set
+# CONFIG_ARCH_CHIP_STM32F302RC is not set
+# CONFIG_ARCH_CHIP_STM32F302VB is not set
+# CONFIG_ARCH_CHIP_STM32F302VC is not set
+# CONFIG_ARCH_CHIP_STM32F303CB is not set
+# CONFIG_ARCH_CHIP_STM32F303CC is not set
+# CONFIG_ARCH_CHIP_STM32F303RB is not set
+# CONFIG_ARCH_CHIP_STM32F303RC is not set
+# CONFIG_ARCH_CHIP_STM32F303VB is not set
+# CONFIG_ARCH_CHIP_STM32F303VC is not set
+# CONFIG_ARCH_CHIP_STM32F401RE is not set
+# CONFIG_ARCH_CHIP_STM32F411RE is not set
+# CONFIG_ARCH_CHIP_STM32F405RG is not set
+# CONFIG_ARCH_CHIP_STM32F405VG is not set
+# CONFIG_ARCH_CHIP_STM32F405ZG is not set
+# CONFIG_ARCH_CHIP_STM32F407VE is not set
+# CONFIG_ARCH_CHIP_STM32F407VG is not set
+# CONFIG_ARCH_CHIP_STM32F407ZE is not set
+# CONFIG_ARCH_CHIP_STM32F407ZG is not set
+# CONFIG_ARCH_CHIP_STM32F407IE is not set
+# CONFIG_ARCH_CHIP_STM32F407IG is not set
+# CONFIG_ARCH_CHIP_STM32F427V is not set
+# CONFIG_ARCH_CHIP_STM32F427Z is not set
+# CONFIG_ARCH_CHIP_STM32F427I is not set
+# CONFIG_ARCH_CHIP_STM32F429V is not set
+# CONFIG_ARCH_CHIP_STM32F429Z is not set
+# CONFIG_ARCH_CHIP_STM32F429I is not set
+# CONFIG_ARCH_CHIP_STM32F429B is not set
+# CONFIG_ARCH_CHIP_STM32F429N is not set
+# CONFIG_STM32_STM32L15XX is not set
+# CONFIG_STM32_ENERGYLITE is not set
+CONFIG_STM32_STM32F10XX=y
+CONFIG_STM32_VALUELINE=y
+# CONFIG_STM32_CONNECTIVITYLINE is not set
+# CONFIG_STM32_PERFORMANCELINE is not set
+# CONFIG_STM32_USBACCESSLINE is not set
+# CONFIG_STM32_HIGHDENSITY is not set
+# CONFIG_STM32_MEDIUMDENSITY is not set
+# CONFIG_STM32_LOWDENSITY is not set
+# CONFIG_STM32_STM32F20XX is not set
+# CONFIG_STM32_STM32F207 is not set
+# CONFIG_STM32_STM32F30XX is not set
+# CONFIG_STM32_STM32F40XX is not set
+# CONFIG_STM32_STM32F401 is not set
+# CONFIG_STM32_STM32F411 is not set
+# CONFIG_STM32_STM32F405 is not set
+# CONFIG_STM32_STM32F407 is not set
+# CONFIG_STM32_STM32F427 is not set
+# CONFIG_STM32_STM32F429 is not set
+
#
-# AHB:
+# STM32 Peripheral Support
+#
+# CONFIG_STM32_HAVE_CCM is not set
+# CONFIG_STM32_HAVE_USBDEV is not set
+# CONFIG_STM32_HAVE_OTGFS is not set
+# CONFIG_STM32_HAVE_FSMC is not set
+CONFIG_STM32_HAVE_USART3=y
+CONFIG_STM32_HAVE_UART4=y
+CONFIG_STM32_HAVE_UART5=y
+# CONFIG_STM32_HAVE_USART6 is not set
+# CONFIG_STM32_HAVE_UART7 is not set
+# CONFIG_STM32_HAVE_UART8 is not set
+CONFIG_STM32_HAVE_TIM1=y
+CONFIG_STM32_HAVE_TIM5=y
+CONFIG_STM32_HAVE_TIM6=y
+CONFIG_STM32_HAVE_TIM7=y
+# CONFIG_STM32_HAVE_TIM8 is not set
+# CONFIG_STM32_HAVE_TIM9 is not set
+# CONFIG_STM32_HAVE_TIM10 is not set
+# CONFIG_STM32_HAVE_TIM11 is not set
+CONFIG_STM32_HAVE_TIM12=y
+CONFIG_STM32_HAVE_TIM13=y
+CONFIG_STM32_HAVE_TIM14=y
+CONFIG_STM32_HAVE_TIM15=y
+CONFIG_STM32_HAVE_TIM16=y
+CONFIG_STM32_HAVE_TIM17=y
+CONFIG_STM32_HAVE_ADC2=y
+# CONFIG_STM32_HAVE_ADC3 is not set
+# CONFIG_STM32_HAVE_ADC4 is not set
+# CONFIG_STM32_HAVE_CAN1 is not set
+# CONFIG_STM32_HAVE_CAN2 is not set
+# CONFIG_STM32_HAVE_RNG is not set
+# CONFIG_STM32_HAVE_ETHMAC is not set
+# CONFIG_STM32_HAVE_SPI2 is not set
+# CONFIG_STM32_HAVE_SPI3 is not set
+# CONFIG_STM32_HAVE_SPI4 is not set
+# CONFIG_STM32_HAVE_SPI5 is not set
+CONFIG_STM32_ADC1=y
+# CONFIG_STM32_ADC2 is not set
+# CONFIG_STM32_BKP is not set
+# CONFIG_STM32_CEC is not set
+# CONFIG_STM32_CRC is not set
CONFIG_STM32_DMA1=y
-CONFIG_STM32_DMA2=n
-CONFIG_STM32_CRC=n
-# APB1:
-# Timers 2,3 and 4 are owned by the PWM driver
-CONFIG_STM32_TIM2=n
-CONFIG_STM32_TIM3=n
-CONFIG_STM32_TIM4=n
-CONFIG_STM32_TIM5=n
-CONFIG_STM32_TIM6=n
-CONFIG_STM32_TIM7=n
-CONFIG_STM32_WWDG=n
-CONFIG_STM32_SPI2=n
+# CONFIG_STM32_DAC1 is not set
+# CONFIG_STM32_DAC2 is not set
+CONFIG_STM32_I2C1=y
+# CONFIG_STM32_I2C2 is not set
+# CONFIG_STM32_PWR is not set
+# CONFIG_STM32_SPI1 is not set
+# CONFIG_STM32_TIM1 is not set
+# CONFIG_STM32_TIM2 is not set
+# CONFIG_STM32_TIM3 is not set
+# CONFIG_STM32_TIM4 is not set
+# CONFIG_STM32_TIM5 is not set
+# CONFIG_STM32_TIM6 is not set
+# CONFIG_STM32_TIM7 is not set
+# CONFIG_STM32_TIM12 is not set
+# CONFIG_STM32_TIM13 is not set
+# CONFIG_STM32_TIM14 is not set
+# CONFIG_STM32_TIM15 is not set
+# CONFIG_STM32_TIM16 is not set
+# CONFIG_STM32_TIM17 is not set
+CONFIG_STM32_USART1=y
CONFIG_STM32_USART2=y
CONFIG_STM32_USART3=y
-CONFIG_STM32_I2C1=y
-CONFIG_STM32_I2C2=n
+# CONFIG_STM32_UART4 is not set
+# CONFIG_STM32_UART5 is not set
+# CONFIG_STM32_IWDG is not set
+# CONFIG_STM32_WWDG is not set
+CONFIG_STM32_ADC=y
+CONFIG_STM32_I2C=y
+
+#
+# Alternate Pin Mapping
+#
+# CONFIG_STM32_I2C1_REMAP is not set
+# CONFIG_STM32_USART1_REMAP is not set
+# CONFIG_STM32_USART2_REMAP is not set
+CONFIG_STM32_USART3_NO_REMAP=y
+# CONFIG_STM32_USART3_FULL_REMAP is not set
+# CONFIG_STM32_USART3_PARTIAL_REMAP is not set
+# CONFIG_STM32_JTAG_DISABLE is not set
+# CONFIG_STM32_JTAG_FULL_ENABLE is not set
+# CONFIG_STM32_JTAG_NOJNTRST_ENABLE is not set
+CONFIG_STM32_JTAG_SW_ENABLE=y
+CONFIG_STM32_DISABLE_IDLE_SLEEP_DURING_DEBUG=y
+# CONFIG_STM32_FORCEPOWER is not set
+# CONFIG_ARCH_BOARD_STM32_CUSTOM_CLOCKCONFIG is not set
+# CONFIG_STM32_DMACAPABLE is not set
+CONFIG_STM32_USART=y
+
+#
+# U[S]ART Configuration
+#
+# CONFIG_USART1_RS485 is not set
+CONFIG_USART1_RXDMA=y
+# CONFIG_USART2_RS485 is not set
+# CONFIG_USART2_RXDMA is not set
+# CONFIG_USART3_RS485 is not set
+CONFIG_USART3_RXDMA=y
+# CONFIG_SERIAL_DISABLE_REORDERING is not set
+# CONFIG_STM32_FLOWCONTROL_BROKEN is not set
+CONFIG_STM32_USART_SINGLEWIRE=y
+
+#
+# I2C Configuration
+#
+# CONFIG_STM32_I2C_ALT is not set
+# CONFIG_STM32_I2C_DYNTIMEO is not set
CONFIG_STM32_I2CTIMEOSEC=0
CONFIG_STM32_I2CTIMEOMS=1
-CONFIG_STM32_BKP=n
-CONFIG_STM32_PWR=n
-CONFIG_STM32_DAC=n
-# APB2:
-# We use our own ADC driver, but leave this on for clocking purposes.
-CONFIG_STM32_ADC1=y
-CONFIG_STM32_ADC2=n
-# TIM1 is owned by the HRT
-CONFIG_STM32_TIM1=n
-CONFIG_STM32_SPI1=n
-CONFIG_STM32_TIM8=n
-CONFIG_STM32_USART1=y
-CONFIG_STM32_ADC3=n
+CONFIG_STM32_I2CTIMEOTICKS=1
+# CONFIG_STM32_I2C_DUTY16_9 is not set
+#
+# USB FS Host Configuration
+#
#
-# STM32F100 specific serial device driver settings
+# USB HS Host Configuration
#
-# CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
-# console and ttys0 (default is the USART1).
-# CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
-# This specific the size of the receive buffer
-# CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
-# being sent. This specific the size of the transmit buffer
-# CONFIG_USARTn_BAUD - The configure BAUD of the UART. Must be
-# CONFIG_USARTn_BITS - The number of bits. Must be either 7 or 8.
-# CONFIG_USARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
-# CONFIG_USARTn_2STOP - Two stop bits
+
+#
+# USB Host Debug Configuration
#
-CONFIG_SERIAL_TERMIOS=y
-CONFIG_STANDARD_SERIAL=y
-CONFIG_USART1_SERIAL_CONSOLE=y
-CONFIG_USART2_SERIAL_CONSOLE=n
-CONFIG_USART3_SERIAL_CONSOLE=n
+#
+# USB Device Configuration
+#
-CONFIG_USART1_TXBUFSIZE=64
-CONFIG_USART2_TXBUFSIZE=64
-CONFIG_USART3_TXBUFSIZE=64
+#
+# Architecture Options
+#
+# CONFIG_ARCH_NOINTC is not set
+# CONFIG_ARCH_VECNOTIRQ is not set
+CONFIG_ARCH_DMA=y
+CONFIG_ARCH_HAVE_IRQPRIO=y
+# CONFIG_ARCH_L2CACHE is not set
+# CONFIG_ARCH_HAVE_COHERENT_DCACHE is not set
+# CONFIG_ARCH_HAVE_ADDRENV is not set
+# CONFIG_ARCH_NEED_ADDRENV_MAPPING is not set
+CONFIG_ARCH_HAVE_VFORK=y
+# CONFIG_ARCH_HAVE_MMU is not set
+CONFIG_ARCH_HAVE_MPU=y
+# CONFIG_ARCH_NAND_HWECC is not set
+# CONFIG_ARCH_HAVE_EXTCLK is not set
+# CONFIG_ARCH_USE_MPU is not set
+# CONFIG_ARCH_IRQPRIO is not set
+CONFIG_ARCH_STACKDUMP=y
+# CONFIG_ENDIAN_BIG is not set
+# CONFIG_ARCH_IDLE_CUSTOM is not set
+# CONFIG_ARCH_HAVE_RAMFUNCS is not set
+CONFIG_ARCH_HAVE_RAMVECTORS=y
+# CONFIG_ARCH_RAMVECTORS is not set
-CONFIG_USART1_RXBUFSIZE=64
-CONFIG_USART2_RXBUFSIZE=64
-CONFIG_USART3_RXBUFSIZE=64
+#
+# Board Settings
+#
+CONFIG_BOARD_LOOPSPERMSEC=2000
+# CONFIG_ARCH_CALIBRATION is not set
-CONFIG_USART1_BAUD=115200
-CONFIG_USART2_BAUD=115200
-CONFIG_USART3_BAUD=115200
+#
+# Interrupt options
+#
+CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
+CONFIG_ARCH_INTERRUPTSTACK=0
+CONFIG_ARCH_HAVE_HIPRI_INTERRUPT=y
+# CONFIG_ARCH_HIPRI_INTERRUPT is not set
-CONFIG_USART1_BITS=8
-CONFIG_USART2_BITS=8
-CONFIG_USART3_BITS=8
+#
+# Boot options
+#
+# CONFIG_BOOT_RUNFROMEXTSRAM is not set
+CONFIG_BOOT_RUNFROMFLASH=y
+# CONFIG_BOOT_RUNFROMISRAM is not set
+# CONFIG_BOOT_RUNFROMSDRAM is not set
+# CONFIG_BOOT_COPYTORAM is not set
-CONFIG_USART1_PARITY=0
-CONFIG_USART2_PARITY=0
-CONFIG_USART3_PARITY=0
+#
+# Boot Memory Configuration
+#
+CONFIG_RAM_START=0x20000000
+CONFIG_RAM_SIZE=8192
+# CONFIG_ARCH_HAVE_SDRAM is not set
-CONFIG_USART1_2STOP=0
-CONFIG_USART2_2STOP=0
-CONFIG_USART3_2STOP=0
+#
+# Board Selection
+#
+CONFIG_ARCH_BOARD_PX4IO_V1=y
+# CONFIG_ARCH_BOARD_CUSTOM is not set
+CONFIG_ARCH_BOARD="px4io-v1"
-CONFIG_USART1_RXDMA=y
-SERIAL_HAVE_CONSOLE_DMA=y
-# Conflicts with I2C1 DMA
-CONFIG_USART2_RXDMA=n
-CONFIG_USART3_RXDMA=y
+#
+# Custom Board Configuration
+#
+CONFIG_ARCH_BOARD_CUSTOM_DIR=""
+# CONFIG_BOARD_CUSTOM_LEDS is not set
+# CONFIG_BOARD_CUSTOM_BUTTONS is not set
#
-# General build options
-#
-# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
-# BSPs from www.ridgerun.com using the tools/mkimage.sh script
-# CONFIG_INTELHEX_BINARY - make the Intel HEX binary format
-# used with many different loaders using the GNU objcopy program
-# Should not be selected if you are not using the GNU toolchain.
-# CONFIG_MOTOROLA_SREC - make the Motorola S-Record binary format
-# used with many different loaders using the GNU objcopy program
-# Should not be selected if you are not using the GNU toolchain.
-# CONFIG_RAW_BINARY - make a raw binary format file used with many
-# different loaders using the GNU objcopy program. This option
-# should not be selected if you are not using the GNU toolchain.
-# CONFIG_HAVE_LIBM - toolchain supports libm.a
-#
-CONFIG_RRLOAD_BINARY=n
-CONFIG_INTELHEX_BINARY=n
-CONFIG_MOTOROLA_SREC=n
-CONFIG_RAW_BINARY=y
-CONFIG_HAVE_LIBM=n
-
-#
-# General OS setup
-#
-# CONFIG_APPS_DIR - Identifies the relative path to the directory
-# that builds the application to link with NuttX. Default: ../apps
-# CONFIG_DEBUG - enables built-in debug options
-# CONFIG_DEBUG_VERBOSE - enables verbose debug output
-# CONFIG_DEBUG_SYMBOLS - build without optimization and with
-# debug symbols (needed for use with a debugger).
-# CONFIG_HAVE_CXX - Enable support for C++
-# CONFIG_HAVE_CXXINITIALIZE - The platform-specific logic includes support
-# for initialization of static C++ instances for this architecture
-# and for the selected toolchain (via up_cxxinitialize()).
-# CONFIG_MM_REGIONS - If the architecture includes multiple
-# regions of memory to allocate from, this specifies the
-# number of memory regions that the memory manager must
-# handle and enables the API mm_addregion(start, end);
-# CONFIG_ARCH_LOWPUTC - architecture supports low-level, boot
-# time console output
-# CONFIG_MSEC_PER_TICK - The default system timer is 100Hz
-# or MSEC_PER_TICK=10. This setting may be defined to
-# inform NuttX that the processor hardware is providing
-# system timer interrupts at some interrupt interval other
-# than 10 msec.
-# CONFIG_RR_INTERVAL - The round robin timeslice will be set
-# this number of milliseconds; Round robin scheduling can
-# be disabled by setting this value to zero.
-# CONFIG_SCHED_INSTRUMENTATION - enables instrumentation in
-# scheduler to monitor system performance
-# CONFIG_TASK_NAME_SIZE - Spcifies that maximum size of a
-# task name to save in the TCB. Useful if scheduler
-# instrumentation is selected. Set to zero to disable.
-# CONFIG_START_YEAR, CONFIG_START_MONTH, CONFIG_START_DAY -
-# Used to initialize the internal time logic.
-# CONFIG_GREGORIAN_TIME - Enables Gregorian time conversions.
-# You would only need this if you are concerned about accurate
-# time conversions in the past or in the distant future.
-# CONFIG_JULIAN_TIME - Enables Julian time conversions. You
-# would only need this if you are concerned about accurate
-# time conversion in the distand past. You must also define
-# CONFIG_GREGORIAN_TIME in order to use Julian time.
-# CONFIG_DEV_CONSOLE - Set if architecture-specific logic
-# provides /dev/console. Enables stdout, stderr, stdin.
-# CONFIG_DEV_LOWCONSOLE - Use the simple, low-level serial console
-# driver (minimul support)
-# CONFIG_MUTEX_TYPES: Set to enable support for recursive and
-# errorcheck mutexes. Enables pthread_mutexattr_settype().
-# CONFIG_PRIORITY_INHERITANCE : Set to enable support for priority
-# inheritance on mutexes and semaphores.
-# CONFIG_SEM_PREALLOCHOLDERS: This setting is only used if priority
-# inheritance is enabled. It defines the maximum number of
-# different threads (minus one) that can take counts on a
-# semaphore with priority inheritance support. This may be
-# set to zero if priority inheritance is disabled OR if you
-# are only using semaphores as mutexes (only one holder) OR
-# if no more than two threads participate using a counting
-# semaphore.
-# CONFIG_SEM_NNESTPRIO. If priority inheritance is enabled,
-# then this setting is the maximum number of higher priority
-# threads (minus 1) than can be waiting for another thread
-# to release a count on a semaphore. This value may be set
-# to zero if no more than one thread is expected to wait for
-# a semaphore.
-# CONFIG_FDCLONE_DISABLE. Disable cloning of all file descriptors
-# by task_create() when a new task is started. If set, all
-# files/drivers will appear to be closed in the new task.
-# CONFIG_FDCLONE_STDIO. Disable cloning of all but the first
-# three file descriptors (stdin, stdout, stderr) by task_create()
-# when a new task is started. If set, all files/drivers will
-# appear to be closed in the new task except for stdin, stdout,
-# and stderr.
-# CONFIG_SDCLONE_DISABLE. Disable cloning of all socket
-# desciptors by task_create() when a new task is started. If
-# set, all sockets will appear to be closed in the new task.
-# CONFIG_SCHED_WORKQUEUE. Create a dedicated "worker" thread to
-# handle delayed processing from interrupt handlers. This feature
-# is required for some drivers but, if there are not complaints,
-# can be safely disabled. The worker thread also performs
-# garbage collection -- completing any delayed memory deallocations
-# from interrupt handlers. If the worker thread is disabled,
-# then that clean will be performed by the IDLE thread instead
-# (which runs at the lowest of priority and may not be appropriate
-# if memory reclamation is of high priority). If CONFIG_SCHED_WORKQUEUE
-# is enabled, then the following options can also be used:
-# CONFIG_SCHED_WORKPRIORITY - The execution priority of the worker
-# thread. Default: 50
-# CONFIG_SCHED_WORKPERIOD - How often the worker thread checks for
-# work in units of microseconds. Default: 50*1000 (50 MS).
-# CONFIG_SCHED_WORKSTACKSIZE - The stack size allocated for the worker
-# thread. Default: CONFIG_IDLETHREAD_STACKSIZE.
-# CONFIG_SIG_SIGWORK - The signal number that will be used to wake-up
-# the worker thread. Default: 4
-# CONFIG_SCHED_WAITPID - Enable the waitpid() API
-# CONFIG_SCHED_ATEXIT - Enabled the atexit() API
+# Common Board Options
#
-CONFIG_USER_ENTRYPOINT="user_start"
-#CONFIG_APPS_DIR=
-CONFIG_DEBUG=n
-CONFIG_DEBUG_VERBOSE=n
-CONFIG_DEBUG_SYMBOLS=y
-CONFIG_DEBUG_FS=n
-CONFIG_DEBUG_GRAPHICS=n
-CONFIG_DEBUG_LCD=n
-CONFIG_DEBUG_USB=n
-CONFIG_DEBUG_NET=n
-CONFIG_DEBUG_RTC=n
-CONFIG_DEBUG_ANALOG=n
-CONFIG_DEBUG_PWM=n
-CONFIG_DEBUG_CAN=n
-CONFIG_DEBUG_I2C=n
-CONFIG_DEBUG_INPUT=n
-
-CONFIG_MSEC_PER_TICK=1
-CONFIG_HAVE_CXX=y
-CONFIG_HAVE_CXXINITIALIZE=y
-CONFIG_MM_REGIONS=1
-CONFIG_MM_SMALL=y
-CONFIG_ARCH_LOWPUTC=y
-CONFIG_RR_INTERVAL=0
-CONFIG_SCHED_INSTRUMENTATION=n
-CONFIG_TASK_NAME_SIZE=8
-CONFIG_START_YEAR=1970
-CONFIG_START_MONTH=1
-CONFIG_START_DAY=1
-CONFIG_GREGORIAN_TIME=n
-CONFIG_JULIAN_TIME=n
-# this eats ~1KiB of RAM ... work out why
-CONFIG_DEV_CONSOLE=y
-CONFIG_DEV_LOWCONSOLE=n
-CONFIG_MUTEX_TYPES=n
-CONFIG_PRIORITY_INHERITANCE=n
-CONFIG_SEM_PREALLOCHOLDERS=0
-CONFIG_SEM_NNESTPRIO=0
-CONFIG_FDCLONE_DISABLE=y
-CONFIG_FDCLONE_STDIO=y
-CONFIG_SDCLONE_DISABLE=y
-CONFIG_SCHED_WORKQUEUE=n
-CONFIG_SCHED_WORKPRIORITY=50
-CONFIG_SCHED_WORKPERIOD=50000
-CONFIG_SCHED_WORKSTACKSIZE=1024
-CONFIG_SIG_SIGWORK=4
-CONFIG_SCHED_WAITPID=n
-CONFIG_SCHED_ATEXIT=n
-
-#
-# The following can be used to disable categories of
-# APIs supported by the OS. If the compiler supports
-# weak functions, then it should not be necessary to
-# disable functions unless you want to restrict usage
-# of those APIs.
-#
-# There are certain dependency relationships in these
-# features.
-#
-# o mq_notify logic depends on signals to awaken tasks
-# waiting for queues to become full or empty.
-# o pthread_condtimedwait() depends on signals to wake
-# up waiting tasks.
-#
-CONFIG_DISABLE_CLOCK=n
+
+#
+# Board-Specific Options
+#
+
+#
+# RTOS Features
+#
+CONFIG_DISABLE_OS_API=y
CONFIG_DISABLE_POSIX_TIMERS=y
CONFIG_DISABLE_PTHREAD=y
CONFIG_DISABLE_SIGNALS=y
CONFIG_DISABLE_MQUEUE=y
-CONFIG_DISABLE_MOUNTPOINT=y
CONFIG_DISABLE_ENVIRON=y
-CONFIG_DISABLE_POLL=y
#
-# Misc libc settings
-#
-# CONFIG_NOPRINTF_FIELDWIDTH - sprintf-related logic is a
-# little smaller if we do not support fieldwidthes
-#
-CONFIG_NOPRINTF_FIELDWIDTH=n
-
-#
-# Allow for architecture optimized implementations
-#
-# The architecture can provide optimized versions of the
-# following to improve system performance
-#
-CONFIG_ARCH_MEMCPY=n
-CONFIG_ARCH_MEMCMP=n
-CONFIG_ARCH_MEMMOVE=n
-CONFIG_ARCH_MEMSET=n
-CONFIG_ARCH_STRCMP=n
-CONFIG_ARCH_STRCPY=n
-CONFIG_ARCH_STRNCPY=n
-CONFIG_ARCH_STRLEN=n
-CONFIG_ARCH_STRNLEN=n
-CONFIG_ARCH_BZERO=n
-
-#
-# Sizes of configurable things (0 disables)
-#
-# CONFIG_MAX_TASKS - The maximum number of simultaneously
-# active tasks. This value must be a power of two.
-# CONFIG_MAX_TASK_ARGS - This controls the maximum number of
-# of parameters that a task may receive (i.e., maxmum value
-# of 'argc')
-# CONFIG_NPTHREAD_KEYS - The number of items of thread-
-# specific data that can be retained
-# CONFIG_NFILE_DESCRIPTORS - The maximum number of file
-# descriptors (one for each open)
-# CONFIG_NFILE_STREAMS - The maximum number of streams that
-# can be fopen'ed
-# CONFIG_NAME_MAX - The maximum size of a file name.
-# CONFIG_STDIO_BUFFER_SIZE - Size of the buffer to allocate
-# on fopen. (Only if CONFIG_NFILE_STREAMS > 0)
-# CONFIG_STDIO_LINEBUFFER - If standard C buffered I/O is enabled
-# (CONFIG_STDIO_BUFFER_SIZE > 0), then this option may be added
-# to force automatic, line-oriented flushing the output buffer
-# for putc(), fputc(), putchar(), puts(), fputs(), printf(),
-# fprintf(), and vfprintf(). When a newline is encountered in
-# the output string, the output buffer will be flushed. This
-# (slightly) increases the NuttX footprint but supports the kind
-# of behavior that people expect for printf().
-# CONFIG_NUNGET_CHARS - Number of characters that can be
-# buffered by ungetc() (Only if CONFIG_NFILE_STREAMS > 0)
-# CONFIG_PREALLOC_MQ_MSGS - The number of pre-allocated message
-# structures. The system manages a pool of preallocated
-# message structures to minimize dynamic allocations
-# CONFIG_MQ_MAXMSGSIZE - Message structures are allocated with
-# a fixed payload size given by this settin (does not include
-# other message structure overhead.
-# CONFIG_MAX_WDOGPARMS - Maximum number of parameters that
-# can be passed to a watchdog handler
-# CONFIG_PREALLOC_WDOGS - The number of pre-allocated watchdog
-# structures. The system manages a pool of preallocated
-# watchdog structures to minimize dynamic allocations
-# CONFIG_PREALLOC_TIMERS - The number of pre-allocated POSIX
-# timer structures. The system manages a pool of preallocated
-# timer structures to minimize dynamic allocations. Set to
-# zero for all dynamic allocations.
+# Clocks and Timers
#
-CONFIG_MAX_TASKS=4
-CONFIG_MAX_TASK_ARGS=4
-CONFIG_NPTHREAD_KEYS=2
-CONFIG_NFILE_DESCRIPTORS=8
-CONFIG_NFILE_STREAMS=0
-CONFIG_NAME_MAX=12
-CONFIG_STDIO_BUFFER_SIZE=32
-CONFIG_STDIO_LINEBUFFER=n
-CONFIG_NUNGET_CHARS=2
-CONFIG_PREALLOC_MQ_MSGS=4
-CONFIG_MQ_MAXMSGSIZE=32
+CONFIG_USEC_PER_TICK=1000
+# CONFIG_SYSTEM_TIME64 is not set
+# CONFIG_CLOCK_MONOTONIC is not set
+# CONFIG_JULIAN_TIME is not set
+CONFIG_START_YEAR=1970
+CONFIG_START_MONTH=1
+CONFIG_START_DAY=1
CONFIG_MAX_WDOGPARMS=2
-CONFIG_PREALLOC_WDOGS=4
+CONFIG_PREALLOC_WDOGS=6
+CONFIG_WDOG_INTRESERVE=2
CONFIG_PREALLOC_TIMERS=0
+#
+# Tasks and Scheduling
+#
+# CONFIG_INIT_NONE is not set
+CONFIG_INIT_ENTRYPOINT=y
+# CONFIG_INIT_FILEPATH is not set
+CONFIG_USER_ENTRYPOINT="user_start"
+CONFIG_RR_INTERVAL=0
+CONFIG_TASK_NAME_SIZE=8
+CONFIG_MAX_TASKS=4
+# CONFIG_SCHED_HAVE_PARENT is not set
+# CONFIG_SCHED_WAITPID is not set
#
-# Settings for apps/nshlib
+# Performance Monitoring
+#
+# CONFIG_SCHED_CPULOAD is not set
+# CONFIG_SCHED_INSTRUMENTATION is not set
+
#
-# CONFIG_NSH_BUILTIN_APPS - Support external registered,
-# "named" applications that can be executed from the NSH
-# command line (see apps/README.txt for more information).
-# CONFIG_NSH_FILEIOSIZE - Size of a static I/O buffer
-# CONFIG_NSH_STRERROR - Use strerror(errno)
-# CONFIG_NSH_LINELEN - Maximum length of one command line
-# CONFIG_NSH_NESTDEPTH - Max number of nested if-then[-else]-fi
-# CONFIG_NSH_DISABLESCRIPT - Disable scripting support
-# CONFIG_NSH_DISABLEBG - Disable background commands
-# CONFIG_NSH_ROMFSETC - Use startup script in /etc
-# CONFIG_NSH_CONSOLE - Use serial console front end
-# CONFIG_NSH_TELNET - Use telnetd console front end
-# CONFIG_NSH_ARCHINIT - Platform provides architecture
-# specific initialization (nsh_archinitialize()).
+# Files and I/O
#
+CONFIG_DEV_CONSOLE=y
+CONFIG_FDCLONE_DISABLE=y
+CONFIG_FDCLONE_STDIO=y
+CONFIG_SDCLONE_DISABLE=y
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NFILE_STREAMS=0
+CONFIG_NAME_MAX=12
+# CONFIG_PRIORITY_INHERITANCE is not set
-# Disable NSH completely
-CONFIG_NSH_CONSOLE=n
+#
+# RTOS hooks
+#
+# CONFIG_BOARD_INITIALIZE is not set
+# CONFIG_SCHED_STARTHOOK is not set
+# CONFIG_SCHED_ATEXIT is not set
+# CONFIG_SCHED_ONEXIT is not set
+
+#
+# Work Queue Support
+#
#
# Stack and heap information
#
-# CONFIG_BOOT_RUNFROMFLASH - Some configurations support XIP
-# operation from FLASH but must copy initialized .data sections to RAM.
-# (should also be =n for the STM3210E-EVAL which always runs from flash)
-# CONFIG_BOOT_COPYTORAM - Some configurations boot in FLASH
-# but copy themselves entirely into RAM for better performance.
-# CONFIG_CUSTOM_STACK - The up_ implementation will handle
-# all stack operations outside of the nuttx model.
-# CONFIG_STACK_POINTER - The initial stack pointer (arm7tdmi only)
-# CONFIG_IDLETHREAD_STACKSIZE - The size of the initial stack.
-# This is the thread that (1) performs the inital boot of the system up
-# to the point where user_start() is spawned, and (2) there after is the
-# IDLE thread that executes only when there is no other thread ready to
-# run.
-# CONFIG_USERMAIN_STACKSIZE - The size of the stack to allocate
-# for the main user thread that begins at the user_start() entry point.
-# CONFIG_PTHREAD_STACK_MIN - Minimum pthread stack size
-# CONFIG_PTHREAD_STACK_DEFAULT - Default pthread stack size
-# CONFIG_HEAP_BASE - The beginning of the heap
-# CONFIG_HEAP_SIZE - The size of the heap
-#
-CONFIG_BOOT_RUNFROMFLASH=n
-CONFIG_BOOT_COPYTORAM=n
-CONFIG_CUSTOM_STACK=n
-CONFIG_STACK_POINTER=
CONFIG_IDLETHREAD_STACKSIZE=1024
CONFIG_USERMAIN_STACKSIZE=1200
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_PTHREAD_STACK_DEFAULT=1024
-CONFIG_HEAP_BASE=
-CONFIG_HEAP_SIZE=
+# CONFIG_LIB_SYSCALL is not set
+
+#
+# Device Drivers
+#
+CONFIG_DISABLE_POLL=y
+# CONFIG_DEV_NULL is not set
+# CONFIG_DEV_ZERO is not set
+# CONFIG_LOOP is not set
+
+#
+# Buffering
+#
+# CONFIG_DRVR_WRITEBUFFER is not set
+# CONFIG_DRVR_READAHEAD is not set
+# CONFIG_RAMDISK is not set
+# CONFIG_CAN is not set
+# CONFIG_ARCH_HAVE_PWM_PULSECOUNT is not set
+# CONFIG_PWM is not set
+CONFIG_ARCH_HAVE_I2CRESET=y
+# CONFIG_I2C is not set
+# CONFIG_SPI is not set
+# CONFIG_I2S is not set
+# CONFIG_RTC is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_TIMER is not set
+# CONFIG_ANALOG is not set
+# CONFIG_AUDIO_DEVICES is not set
+# CONFIG_VIDEO_DEVICES is not set
+# CONFIG_BCH is not set
+# CONFIG_INPUT is not set
+# CONFIG_LCD is not set
+# CONFIG_MMCSD is not set
+# CONFIG_MTD is not set
+# CONFIG_EEPROM is not set
+# CONFIG_PIPES is not set
+# CONFIG_PM is not set
+# CONFIG_POWER is not set
+# CONFIG_SENSORS is not set
+# CONFIG_SERCOMM_CONSOLE is not set
+CONFIG_SERIAL=y
+# CONFIG_DEV_LOWCONSOLE is not set
+# CONFIG_16550_UART is not set
+# CONFIG_ARCH_HAVE_UART is not set
+# CONFIG_ARCH_HAVE_UART0 is not set
+# CONFIG_ARCH_HAVE_UART1 is not set
+# CONFIG_ARCH_HAVE_UART2 is not set
+# CONFIG_ARCH_HAVE_UART3 is not set
+# CONFIG_ARCH_HAVE_UART4 is not set
+# CONFIG_ARCH_HAVE_UART5 is not set
+# CONFIG_ARCH_HAVE_UART6 is not set
+# CONFIG_ARCH_HAVE_UART7 is not set
+# CONFIG_ARCH_HAVE_UART8 is not set
+# CONFIG_ARCH_HAVE_SCI0 is not set
+# CONFIG_ARCH_HAVE_SCI1 is not set
+# CONFIG_ARCH_HAVE_USART0 is not set
+CONFIG_ARCH_HAVE_USART1=y
+CONFIG_ARCH_HAVE_USART2=y
+CONFIG_ARCH_HAVE_USART3=y
+# CONFIG_ARCH_HAVE_USART4 is not set
+# CONFIG_ARCH_HAVE_USART5 is not set
+# CONFIG_ARCH_HAVE_USART6 is not set
+# CONFIG_ARCH_HAVE_USART7 is not set
+# CONFIG_ARCH_HAVE_USART8 is not set
+# CONFIG_ARCH_HAVE_OTHER_UART is not set
+
+#
+# USART Configuration
+#
+CONFIG_USART1_ISUART=y
+CONFIG_USART2_ISUART=y
+CONFIG_USART3_ISUART=y
+CONFIG_MCU_SERIAL=y
+CONFIG_STANDARD_SERIAL=y
+# CONFIG_SERIAL_IFLOWCONTROL is not set
+# CONFIG_SERIAL_OFLOWCONTROL is not set
+CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
+CONFIG_SERIAL_TERMIOS=y
+CONFIG_USART1_SERIAL_CONSOLE=y
+# CONFIG_USART2_SERIAL_CONSOLE is not set
+# CONFIG_USART3_SERIAL_CONSOLE is not set
+# CONFIG_OTHER_SERIAL_CONSOLE is not set
+# CONFIG_NO_SERIAL_CONSOLE is not set
+
+#
+# USART1 Configuration
+#
+CONFIG_USART1_RXBUFSIZE=64
+CONFIG_USART1_TXBUFSIZE=64
+CONFIG_USART1_BAUD=115200
+CONFIG_USART1_BITS=8
+CONFIG_USART1_PARITY=0
+CONFIG_USART1_2STOP=0
+# CONFIG_USART1_IFLOWCONTROL is not set
+# CONFIG_USART1_OFLOWCONTROL is not set
+
+#
+# USART2 Configuration
+#
+CONFIG_USART2_RXBUFSIZE=64
+CONFIG_USART2_TXBUFSIZE=64
+CONFIG_USART2_BAUD=115200
+CONFIG_USART2_BITS=8
+CONFIG_USART2_PARITY=0
+CONFIG_USART2_2STOP=0
+# CONFIG_USART2_IFLOWCONTROL is not set
+# CONFIG_USART2_OFLOWCONTROL is not set
+
+#
+# USART3 Configuration
+#
+CONFIG_USART3_RXBUFSIZE=64
+CONFIG_USART3_TXBUFSIZE=64
+CONFIG_USART3_BAUD=115200
+CONFIG_USART3_BITS=8
+CONFIG_USART3_PARITY=0
+CONFIG_USART3_2STOP=0
+# CONFIG_USART3_IFLOWCONTROL is not set
+# CONFIG_USART3_OFLOWCONTROL is not set
+# CONFIG_USBDEV is not set
+# CONFIG_USBHOST is not set
+# CONFIG_WIRELESS is not set
+
+#
+# System Logging Device Options
+#
+
+#
+# System Logging
+#
+# CONFIG_RAMLOG is not set
+
+#
+# Networking Support
+#
+# CONFIG_ARCH_HAVE_NET is not set
+# CONFIG_ARCH_HAVE_PHY is not set
+# CONFIG_NET is not set
+
+#
+# Crypto API
+#
+# CONFIG_CRYPTO is not set
+
+#
+# File Systems
+#
+
+#
+# File system configuration
+#
+CONFIG_DISABLE_MOUNTPOINT=y
+CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y
+# CONFIG_FS_READABLE is not set
+# CONFIG_FS_WRITABLE is not set
+# CONFIG_FS_NAMED_SEMAPHORES is not set
+# CONFIG_FS_RAMMAP is not set
+# CONFIG_FS_PROCFS is not set
+
+#
+# System Logging
+#
+# CONFIG_SYSLOG is not set
+# CONFIG_SYSLOG_TIMESTAMP is not set
+
+#
+# Graphics Support
+#
+# CONFIG_NX is not set
+
+#
+# Memory Management
+#
+CONFIG_MM_SMALL=y
+CONFIG_MM_REGIONS=1
+# CONFIG_ARCH_HAVE_HEAP2 is not set
+# CONFIG_GRAN is not set
+
+#
+# Audio Support
+#
+# CONFIG_AUDIO is not set
+
+#
+# Binary Loader
+#
+# CONFIG_BINFMT_DISABLE is not set
+# CONFIG_NXFLAT is not set
+# CONFIG_ELF is not set
+# CONFIG_BUILTIN is not set
+# CONFIG_PIC is not set
+# CONFIG_SYMTAB_ORDEREDBYNAME is not set
+
+#
+# Library Routines
+#
+
+#
+# Standard C Library Options
+#
+CONFIG_STDIO_BUFFER_SIZE=32
+# CONFIG_STDIO_LINEBUFFER is not set
+CONFIG_NUNGET_CHARS=2
+# CONFIG_NOPRINTF_FIELDWIDTH is not set
+# CONFIG_LIBC_FLOATINGPOINT is not set
+# CONFIG_LIBC_IOCTL_VARIADIC is not set
+CONFIG_LIB_RAND_ORDER=1
+# CONFIG_EOL_IS_CR is not set
+# CONFIG_EOL_IS_LF is not set
+# CONFIG_EOL_IS_BOTH_CRLF is not set
+CONFIG_EOL_IS_EITHER_CRLF=y
+# CONFIG_LIBC_EXECFUNCS is not set
+CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024
+CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1024
+# CONFIG_LIBC_STRERROR is not set
+# CONFIG_LIBC_PERROR_STDOUT is not set
+CONFIG_ARCH_LOWPUTC=y
+CONFIG_LIB_SENDFILE_BUFSIZE=512
+# CONFIG_ARCH_ROMGETC is not set
+# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
+
+#
+# Non-standard Library Support
+#
+# CONFIG_LIB_KBDCODEC is not set
+# CONFIG_LIB_SLCDCODEC is not set
+
+#
+# Basic CXX Support
+#
+CONFIG_C99_BOOL8=y
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=y
+# CONFIG_CXX_NEWLONG is not set
+
+#
+# uClibc++ Standard C++ Library
+#
+# CONFIG_UCLIBCXX is not set
+
+#
+# Application Configuration
+#
+
+#
+# Built-In Applications
+#
+
+#
+# Examples
+#
+# CONFIG_EXAMPLES_BUTTONS is not set
+# CONFIG_EXAMPLES_CAN is not set
+# CONFIG_EXAMPLES_CONFIGDATA is not set
+# CONFIG_EXAMPLES_CPUHOG is not set
+# CONFIG_EXAMPLES_CXXTEST is not set
+# CONFIG_EXAMPLES_DHCPD is not set
+# CONFIG_EXAMPLES_ELF is not set
+# CONFIG_EXAMPLES_FTPC is not set
+# CONFIG_EXAMPLES_FTPD is not set
+# CONFIG_EXAMPLES_HELLO is not set
+# CONFIG_EXAMPLES_HELLOXX is not set
+# CONFIG_EXAMPLES_JSON is not set
+# CONFIG_EXAMPLES_HIDKBD is not set
+# CONFIG_EXAMPLES_KEYPADTEST is not set
+# CONFIG_EXAMPLES_IGMP is not set
+# CONFIG_EXAMPLES_MM is not set
+# CONFIG_EXAMPLES_MODBUS is not set
+# CONFIG_EXAMPLES_MOUNT is not set
+# CONFIG_EXAMPLES_NRF24L01TERM is not set
+# CONFIG_EXAMPLES_NSH is not set
+# CONFIG_EXAMPLES_NULL is not set
+# CONFIG_EXAMPLES_NX is not set
+# CONFIG_EXAMPLES_NXTERM is not set
+# CONFIG_EXAMPLES_NXFFS is not set
+# CONFIG_EXAMPLES_NXFLAT is not set
+# CONFIG_EXAMPLES_NXHELLO is not set
+# CONFIG_EXAMPLES_NXIMAGE is not set
+# CONFIG_EXAMPLES_NXLINES is not set
+# CONFIG_EXAMPLES_NXTEXT is not set
+# CONFIG_EXAMPLES_OSTEST is not set
+# CONFIG_EXAMPLES_PIPE is not set
+# CONFIG_EXAMPLES_POLL is not set
+# CONFIG_EXAMPLES_POSIXSPAWN is not set
+# CONFIG_EXAMPLES_QENCODER is not set
+# CONFIG_EXAMPLES_RGMP is not set
+# CONFIG_EXAMPLES_ROMFS is not set
+# CONFIG_EXAMPLES_SENDMAIL is not set
+# CONFIG_EXAMPLES_SERIALBLASTER is not set
+# CONFIG_EXAMPLES_SERIALRX is not set
+# CONFIG_EXAMPLES_SERLOOP is not set
+# CONFIG_EXAMPLES_SLCD is not set
+# CONFIG_EXAMPLES_SMART is not set
+# CONFIG_EXAMPLES_TCPECHO is not set
+# CONFIG_EXAMPLES_TELNETD is not set
+# CONFIG_EXAMPLES_THTTPD is not set
+# CONFIG_EXAMPLES_TIFF is not set
+# CONFIG_EXAMPLES_TOUCHSCREEN is not set
+# CONFIG_EXAMPLES_UDP is not set
+# CONFIG_EXAMPLES_WEBSERVER is not set
+# CONFIG_EXAMPLES_USBSERIAL is not set
+# CONFIG_EXAMPLES_USBTERM is not set
+# CONFIG_EXAMPLES_WATCHDOG is not set
+
+#
+# Graphics Support
+#
+# CONFIG_TIFF is not set
+# CONFIG_GRAPHICS_TRAVELER is not set
+
+#
+# Interpreters
+#
+# CONFIG_INTERPRETERS_FICL is not set
+# CONFIG_INTERPRETERS_PCODE is not set
+
+#
+# Network Utilities
+#
+
+#
+# Networking Utilities
+#
+# CONFIG_NETUTILS_CODECS is not set
+# CONFIG_NETUTILS_DHCPD is not set
+# CONFIG_NETUTILS_FTPC is not set
+# CONFIG_NETUTILS_FTPD is not set
+# CONFIG_NETUTILS_JSON is not set
+# CONFIG_NETUTILS_SMTP is not set
+# CONFIG_NETUTILS_TFTPC is not set
+# CONFIG_NETUTILS_THTTPD is not set
+# CONFIG_NETUTILS_NETLIB is not set
+# CONFIG_NETUTILS_WEBCLIENT is not set
+
+#
+# FreeModBus
+#
+# CONFIG_MODBUS is not set
#
# NSH Library
#
# CONFIG_NSH_LIBRARY is not set
-# CONFIG_NSH_BUILTIN_APPS is not set
+
+#
+# NxWidgets/NxWM
+#
+
+#
+# Platform-specific Support
+#
+# CONFIG_PLATFORM_CONFIGDATA is not set
+
+#
+# System Libraries and NSH Add-Ons
+#
+
+#
+# Custom Free Memory Command
+#
+# CONFIG_SYSTEM_FREE is not set
+
+#
+# EMACS-like Command Line Editor
+#
+# CONFIG_SYSTEM_CLE is not set
+
+#
+# CU Minimal Terminal
+#
+# CONFIG_SYSTEM_CUTERM is not set
+
+#
+# FLASH Program Installation
+#
+# CONFIG_SYSTEM_INSTALL is not set
+
+#
+# FLASH Erase-all Command
+#
+
+#
+# Intel HEX to binary conversion
+#
+# CONFIG_SYSTEM_HEX2BIN is not set
+
+#
+# I2C tool
+#
+
+#
+# INI File Parser
+#
+# CONFIG_SYSTEM_INIFILE is not set
+
+#
+# NxPlayer media player library / command Line
+#
+
+#
+# RAM test
+#
+# CONFIG_SYSTEM_RAMTEST is not set
+
+#
+# readline()
+#
+# CONFIG_SYSTEM_READLINE is not set
+
+#
+# P-Code Support
+#
+
+#
+# PHY Tool
+#
+
+#
+# Power Off
+#
+# CONFIG_SYSTEM_POWEROFF is not set
+
+#
+# RAMTRON
+#
+# CONFIG_SYSTEM_RAMTRON is not set
+
+#
+# SD Card
+#
+# CONFIG_SYSTEM_SDCARD is not set
+
+#
+# Sudoku
+#
+# CONFIG_SYSTEM_SUDOKU is not set
+
+#
+# Sysinfo
+#
+# CONFIG_SYSTEM_SYSINFO is not set
+
+#
+# VI Work-Alike Editor
+#
+# CONFIG_SYSTEM_VI is not set
+
+#
+# Stack Monitor
+#
+
+#
+# USB CDC/ACM Device Commands
+#
+
+#
+# USB Composite Device Commands
+#
+
+#
+# USB Mass Storage Device Commands
+#
+
+#
+# USB Monitor
+#
+
+#
+# Zmodem Commands
+#
+# CONFIG_SYSTEM_ZMODEM is not set
diff --git a/nuttx-configs/px4io-v2/nsh/Make.defs b/nuttx-configs/px4io-v2/nsh/Make.defs
index 51420eb23..8705ed578 100644
--- a/nuttx-configs/px4io-v2/nsh/Make.defs
+++ b/nuttx-configs/px4io-v2/nsh/Make.defs
@@ -35,6 +35,7 @@
include ${TOPDIR}/.config
include ${TOPDIR}/tools/Config.mk
+include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
#
# We only support building with the ARM bare-metal toolchain from
@@ -58,6 +59,11 @@ ARCHCPUFLAGS = -mcpu=cortex-m3 \
-mthumb \
-march=armv7-m
+# enable precise stack overflow tracking
+ifeq ($(CONFIG_ARMV7M_STACKCHECK),y)
+INSTRUMENTATIONDEFINES = -finstrument-functions -ffixed-r10
+endif
+
# use our linker script
LDSCRIPT = ld.script
diff --git a/nuttx-configs/px4io-v2/nsh/appconfig b/nuttx-configs/px4io-v2/nsh/appconfig
deleted file mode 100644
index 48a41bcdb..000000000
--- a/nuttx-configs/px4io-v2/nsh/appconfig
+++ /dev/null
@@ -1,32 +0,0 @@
-############################################################################
-#
-# Copyright (C) 2012 PX4 Development Team. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name PX4 nor the names of its contributors may be
-# used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
diff --git a/nuttx-configs/px4io-v2/nsh/defconfig b/nuttx-configs/px4io-v2/nsh/defconfig
index 02b51e3d7..00cf17427 100755
--- a/nuttx-configs/px4io-v2/nsh/defconfig
+++ b/nuttx-configs/px4io-v2/nsh/defconfig
@@ -1,547 +1,978 @@
-############################################################################
-# configs/px4io/nsh/defconfig
-#
-# Copyright (C) 2012 PX4 Development Team. All rights reserved.
-# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
-# Author: Gregory Nutt <gnutt@nuttx.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# 3. Neither the name NuttX nor the names of its contributors may be
-# used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
-#
-# architecture selection
-#
-# CONFIG_ARCH - identifies the arch subdirectory and, hence, the
-# processor architecture.
-# CONFIG_ARCH_family - for use in C code. This identifies the
-# particular chip family that the architecture is implemented
-# in.
-# CONFIG_ARCH_architecture - for use in C code. This identifies the
-# specific architecture within the chip family.
-# CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
-# CONFIG_ARCH_CHIP_name - For use in C code
-# CONFIG_ARCH_BOARD - identifies the configs subdirectory and, hence,
-# the board that supports the particular chip or SoC.
-# CONFIG_ARCH_BOARD_name - for use in C code
-# CONFIG_ENDIAN_BIG - define if big endian (default is little endian)
-# CONFIG_BOARD_LOOPSPERMSEC - for delay loops
-# CONFIG_DRAM_SIZE - Describes the installed DRAM.
-# CONFIG_DRAM_START - The start address of DRAM (physical)
-# CONFIG_ARCH_IRQPRIO - The ST32F100CB supports interrupt prioritization
-# CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
-# stack. If defined, this symbol is the size of the interrupt
-# stack in bytes. If not defined, the user task stacks will be
-# used during interrupt handling.
-# CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
-# CONFIG_ARCH_BOOTLOADER - Set if you are using a bootloader.
-# CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
-# CONFIG_ARCH_BUTTONS - Enable support for buttons. Unique to board architecture.
-# CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
-# cause a 100 second delay during boot-up. This 100 second delay
-# serves no purpose other than it allows you to calibrate
-# CONFIG_BOARD_LOOPSPERMSEC. You simply use a stop watch to measure
-# the 100 second delay then adjust CONFIG_BOARD_LOOPSPERMSEC until
-# the delay actually is 100 seconds.
-# CONFIG_ARCH_DMA - Support DMA initialization
#
-CONFIG_ARCH="arm"
-CONFIG_ARCH_ARM=y
-CONFIG_ARCH_CORTEXM3=y
-CONFIG_ARCH_CHIP="stm32"
-CONFIG_ARCH_CHIP_STM32F100C8=y
-CONFIG_ARCH_BOARD="px4io-v2"
-CONFIG_ARCH_BOARD_PX4IO_V2=y
-CONFIG_BOARD_LOOPSPERMSEC=2000
-CONFIG_DRAM_SIZE=0x00002000
-CONFIG_DRAM_START=0x20000000
-CONFIG_ARCH_INTERRUPTSTACK=n
-CONFIG_ARCH_STACKDUMP=y
-CONFIG_ARCH_BOOTLOADER=n
-CONFIG_ARCH_LEDS=n
-CONFIG_ARCH_BUTTONS=n
-CONFIG_ARCH_CALIBRATION=n
-CONFIG_ARCH_DMA=y
+# Automatically generated file; DO NOT EDIT.
+# Nuttx/ Configuration
+#
+
+#
+# Build Setup
+#
+# CONFIG_EXPERIMENTAL is not set
+# CONFIG_DEFAULT_SMALL is not set
+CONFIG_HOST_LINUX=y
+# CONFIG_HOST_OSX is not set
+# CONFIG_HOST_WINDOWS is not set
+# CONFIG_HOST_OTHER is not set
+
+#
+# Build Configuration
+#
+CONFIG_APPS_DIR="../apps"
+CONFIG_BUILD_FLAT=y
+# CONFIG_BUILD_2PASS is not set
+
+#
+# Binary Output Formats
+#
+# CONFIG_RRLOAD_BINARY is not set
+# CONFIG_INTELHEX_BINARY is not set
+# CONFIG_MOTOROLA_SREC is not set
+CONFIG_RAW_BINARY=y
+# CONFIG_UBOOT_UIMAGE is not set
+
+#
+# Customize Header Files
+#
+# CONFIG_ARCH_STDINT_H is not set
+# CONFIG_ARCH_STDBOOL_H is not set
CONFIG_ARCH_MATH_H=y
+# CONFIG_ARCH_FLOAT_H is not set
+# CONFIG_ARCH_STDARG_H is not set
-CONFIG_ARMV7M_CMNVECTOR=y
+#
+# Debug Options
+#
+# CONFIG_DEBUG is not set
+CONFIG_ARCH_HAVE_STACKCHECK=y
+CONFIG_ARCH_HAVE_HEAPCHECK=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_ARCH_HAVE_CUSTOMOPT=y
+# CONFIG_DEBUG_NOOPT is not set
+# CONFIG_DEBUG_CUSTOMOPT is not set
+CONFIG_DEBUG_FULLOPT=y
#
-# JTAG Enable settings (by default JTAG-DP and SW-DP are disabled):
+# System Type
#
-# CONFIG_STM32_DFU - Use the DFU bootloader, not JTAG
+CONFIG_ARCH_ARM=y
+# CONFIG_ARCH_AVR is not set
+# CONFIG_ARCH_HC is not set
+# CONFIG_ARCH_MIPS is not set
+# CONFIG_ARCH_RGMP is not set
+# CONFIG_ARCH_SH is not set
+# CONFIG_ARCH_SIM is not set
+# CONFIG_ARCH_X86 is not set
+# CONFIG_ARCH_Z16 is not set
+# CONFIG_ARCH_Z80 is not set
+CONFIG_ARCH="arm"
+
#
-# JTAG Enable options:
+# ARM Options
+#
+# CONFIG_ARCH_CHIP_A1X is not set
+# CONFIG_ARCH_CHIP_C5471 is not set
+# CONFIG_ARCH_CHIP_CALYPSO is not set
+# CONFIG_ARCH_CHIP_DM320 is not set
+# CONFIG_ARCH_CHIP_EFM32 is not set
+# CONFIG_ARCH_CHIP_IMX is not set
+# CONFIG_ARCH_CHIP_KINETIS is not set
+# CONFIG_ARCH_CHIP_KL is not set
+# CONFIG_ARCH_CHIP_LM is not set
+# CONFIG_ARCH_CHIP_TIVA is not set
+# CONFIG_ARCH_CHIP_LPC17XX is not set
+# CONFIG_ARCH_CHIP_LPC214X is not set
+# CONFIG_ARCH_CHIP_LPC2378 is not set
+# CONFIG_ARCH_CHIP_LPC31XX is not set
+# CONFIG_ARCH_CHIP_LPC43XX is not set
+# CONFIG_ARCH_CHIP_NUC1XX is not set
+# CONFIG_ARCH_CHIP_SAMA5 is not set
+# CONFIG_ARCH_CHIP_SAMD is not set
+# CONFIG_ARCH_CHIP_SAM34 is not set
+CONFIG_ARCH_CHIP_STM32=y
+# CONFIG_ARCH_CHIP_STR71X is not set
+# CONFIG_ARCH_ARM7TDMI is not set
+# CONFIG_ARCH_ARM926EJS is not set
+# CONFIG_ARCH_ARM920T is not set
+# CONFIG_ARCH_CORTEXM0 is not set
+CONFIG_ARCH_CORTEXM3=y
+# CONFIG_ARCH_CORTEXM4 is not set
+# CONFIG_ARCH_CORTEXA5 is not set
+# CONFIG_ARCH_CORTEXA8 is not set
+CONFIG_ARCH_FAMILY="armv7-m"
+CONFIG_ARCH_CHIP="stm32"
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_ARCH_HAVE_CMNVECTOR=y
+CONFIG_ARMV7M_CMNVECTOR=y
+# CONFIG_ARCH_HAVE_FPU is not set
+# CONFIG_ARMV7M_MPU is not set
+
#
-# CONFIG_STM32_JTAG_FULL_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
-# CONFIG_STM32_JTAG_NOJNTRST_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
-# but without JNTRST.
-# CONFIG_STM32_JTAG_SW_ENABLE - Set JTAG-DP disabled and SW-DP enabled
+# ARMV7M Configuration Options
#
-CONFIG_STM32_DFU=n
-CONFIG_STM32_JTAG_FULL_ENABLE=n
-CONFIG_STM32_JTAG_NOJNTRST_ENABLE=n
-CONFIG_STM32_JTAG_SW_ENABLE=y
+# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
+# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set
+# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set
+CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y
+# CONFIG_ARMV7M_STACKCHECK is not set
+# CONFIG_ARMV7M_ITMSYSLOG is not set
#
-# Individual subsystems can be enabled:
+# STM32 Configuration Options
+#
+# CONFIG_ARCH_CHIP_STM32L151C6 is not set
+# CONFIG_ARCH_CHIP_STM32L151C8 is not set
+# CONFIG_ARCH_CHIP_STM32L151CB is not set
+# CONFIG_ARCH_CHIP_STM32L151R6 is not set
+# CONFIG_ARCH_CHIP_STM32L151R8 is not set
+# CONFIG_ARCH_CHIP_STM32L151RB is not set
+# CONFIG_ARCH_CHIP_STM32L151V6 is not set
+# CONFIG_ARCH_CHIP_STM32L151V8 is not set
+# CONFIG_ARCH_CHIP_STM32L151VB is not set
+# CONFIG_ARCH_CHIP_STM32L152C6 is not set
+# CONFIG_ARCH_CHIP_STM32L152C8 is not set
+# CONFIG_ARCH_CHIP_STM32L152CB is not set
+# CONFIG_ARCH_CHIP_STM32L152R6 is not set
+# CONFIG_ARCH_CHIP_STM32L152R8 is not set
+# CONFIG_ARCH_CHIP_STM32L152RB is not set
+# CONFIG_ARCH_CHIP_STM32L152V6 is not set
+# CONFIG_ARCH_CHIP_STM32L152V8 is not set
+# CONFIG_ARCH_CHIP_STM32L152VB is not set
+# CONFIG_ARCH_CHIP_STM32L162ZD is not set
+CONFIG_ARCH_CHIP_STM32F100C8=y
+# CONFIG_ARCH_CHIP_STM32F100CB is not set
+# CONFIG_ARCH_CHIP_STM32F100R8 is not set
+# CONFIG_ARCH_CHIP_STM32F100RB is not set
+# CONFIG_ARCH_CHIP_STM32F100RC is not set
+# CONFIG_ARCH_CHIP_STM32F100RD is not set
+# CONFIG_ARCH_CHIP_STM32F100RE is not set
+# CONFIG_ARCH_CHIP_STM32F100V8 is not set
+# CONFIG_ARCH_CHIP_STM32F100VB is not set
+# CONFIG_ARCH_CHIP_STM32F100VC is not set
+# CONFIG_ARCH_CHIP_STM32F100VD is not set
+# CONFIG_ARCH_CHIP_STM32F100VE is not set
+# CONFIG_ARCH_CHIP_STM32F102CB is not set
+# CONFIG_ARCH_CHIP_STM32F103T8 is not set
+# CONFIG_ARCH_CHIP_STM32F103TB is not set
+# CONFIG_ARCH_CHIP_STM32F103C4 is not set
+# CONFIG_ARCH_CHIP_STM32F103C8 is not set
+# CONFIG_ARCH_CHIP_STM32F103CB is not set
+# CONFIG_ARCH_CHIP_STM32F103R8 is not set
+# CONFIG_ARCH_CHIP_STM32F103RB is not set
+# CONFIG_ARCH_CHIP_STM32F103RC is not set
+# CONFIG_ARCH_CHIP_STM32F103RD is not set
+# CONFIG_ARCH_CHIP_STM32F103RE is not set
+# CONFIG_ARCH_CHIP_STM32F103RG is not set
+# CONFIG_ARCH_CHIP_STM32F103V8 is not set
+# CONFIG_ARCH_CHIP_STM32F103VB is not set
+# CONFIG_ARCH_CHIP_STM32F103VC is not set
+# CONFIG_ARCH_CHIP_STM32F103VE is not set
+# CONFIG_ARCH_CHIP_STM32F103ZE is not set
+# CONFIG_ARCH_CHIP_STM32F105VB is not set
+# CONFIG_ARCH_CHIP_STM32F107VC is not set
+# CONFIG_ARCH_CHIP_STM32F207IG is not set
+# CONFIG_ARCH_CHIP_STM32F207ZE is not set
+# CONFIG_ARCH_CHIP_STM32F302CB is not set
+# CONFIG_ARCH_CHIP_STM32F302CC is not set
+# CONFIG_ARCH_CHIP_STM32F302RB is not set
+# CONFIG_ARCH_CHIP_STM32F302RC is not set
+# CONFIG_ARCH_CHIP_STM32F302VB is not set
+# CONFIG_ARCH_CHIP_STM32F302VC is not set
+# CONFIG_ARCH_CHIP_STM32F303CB is not set
+# CONFIG_ARCH_CHIP_STM32F303CC is not set
+# CONFIG_ARCH_CHIP_STM32F303RB is not set
+# CONFIG_ARCH_CHIP_STM32F303RC is not set
+# CONFIG_ARCH_CHIP_STM32F303VB is not set
+# CONFIG_ARCH_CHIP_STM32F303VC is not set
+# CONFIG_ARCH_CHIP_STM32F401RE is not set
+# CONFIG_ARCH_CHIP_STM32F411RE is not set
+# CONFIG_ARCH_CHIP_STM32F405RG is not set
+# CONFIG_ARCH_CHIP_STM32F405VG is not set
+# CONFIG_ARCH_CHIP_STM32F405ZG is not set
+# CONFIG_ARCH_CHIP_STM32F407VE is not set
+# CONFIG_ARCH_CHIP_STM32F407VG is not set
+# CONFIG_ARCH_CHIP_STM32F407ZE is not set
+# CONFIG_ARCH_CHIP_STM32F407ZG is not set
+# CONFIG_ARCH_CHIP_STM32F407IE is not set
+# CONFIG_ARCH_CHIP_STM32F407IG is not set
+# CONFIG_ARCH_CHIP_STM32F427V is not set
+# CONFIG_ARCH_CHIP_STM32F427Z is not set
+# CONFIG_ARCH_CHIP_STM32F427I is not set
+# CONFIG_ARCH_CHIP_STM32F429V is not set
+# CONFIG_ARCH_CHIP_STM32F429Z is not set
+# CONFIG_ARCH_CHIP_STM32F429I is not set
+# CONFIG_ARCH_CHIP_STM32F429B is not set
+# CONFIG_ARCH_CHIP_STM32F429N is not set
+# CONFIG_STM32_STM32L15XX is not set
+# CONFIG_STM32_ENERGYLITE is not set
+CONFIG_STM32_STM32F10XX=y
+CONFIG_STM32_VALUELINE=y
+# CONFIG_STM32_CONNECTIVITYLINE is not set
+# CONFIG_STM32_PERFORMANCELINE is not set
+# CONFIG_STM32_USBACCESSLINE is not set
+# CONFIG_STM32_HIGHDENSITY is not set
+# CONFIG_STM32_MEDIUMDENSITY is not set
+# CONFIG_STM32_LOWDENSITY is not set
+# CONFIG_STM32_STM32F20XX is not set
+# CONFIG_STM32_STM32F207 is not set
+# CONFIG_STM32_STM32F30XX is not set
+# CONFIG_STM32_STM32F40XX is not set
+# CONFIG_STM32_STM32F401 is not set
+# CONFIG_STM32_STM32F411 is not set
+# CONFIG_STM32_STM32F405 is not set
+# CONFIG_STM32_STM32F407 is not set
+# CONFIG_STM32_STM32F427 is not set
+# CONFIG_STM32_STM32F429 is not set
+
#
-# AHB:
+# STM32 Peripheral Support
+#
+# CONFIG_STM32_HAVE_CCM is not set
+# CONFIG_STM32_HAVE_USBDEV is not set
+# CONFIG_STM32_HAVE_OTGFS is not set
+# CONFIG_STM32_HAVE_FSMC is not set
+CONFIG_STM32_HAVE_USART3=y
+CONFIG_STM32_HAVE_UART4=y
+CONFIG_STM32_HAVE_UART5=y
+# CONFIG_STM32_HAVE_USART6 is not set
+# CONFIG_STM32_HAVE_UART7 is not set
+# CONFIG_STM32_HAVE_UART8 is not set
+CONFIG_STM32_HAVE_TIM1=y
+CONFIG_STM32_HAVE_TIM5=y
+CONFIG_STM32_HAVE_TIM6=y
+CONFIG_STM32_HAVE_TIM7=y
+# CONFIG_STM32_HAVE_TIM8 is not set
+# CONFIG_STM32_HAVE_TIM9 is not set
+# CONFIG_STM32_HAVE_TIM10 is not set
+# CONFIG_STM32_HAVE_TIM11 is not set
+CONFIG_STM32_HAVE_TIM12=y
+CONFIG_STM32_HAVE_TIM13=y
+CONFIG_STM32_HAVE_TIM14=y
+CONFIG_STM32_HAVE_TIM15=y
+CONFIG_STM32_HAVE_TIM16=y
+CONFIG_STM32_HAVE_TIM17=y
+CONFIG_STM32_HAVE_ADC2=y
+# CONFIG_STM32_HAVE_ADC3 is not set
+# CONFIG_STM32_HAVE_ADC4 is not set
+# CONFIG_STM32_HAVE_CAN1 is not set
+# CONFIG_STM32_HAVE_CAN2 is not set
+# CONFIG_STM32_HAVE_RNG is not set
+# CONFIG_STM32_HAVE_ETHMAC is not set
+# CONFIG_STM32_HAVE_SPI2 is not set
+# CONFIG_STM32_HAVE_SPI3 is not set
+# CONFIG_STM32_HAVE_SPI4 is not set
+# CONFIG_STM32_HAVE_SPI5 is not set
+CONFIG_STM32_ADC1=y
+# CONFIG_STM32_ADC2 is not set
+# CONFIG_STM32_BKP is not set
+# CONFIG_STM32_CEC is not set
+# CONFIG_STM32_CRC is not set
CONFIG_STM32_DMA1=y
-CONFIG_STM32_DMA2=n
-CONFIG_STM32_CRC=n
-# APB1:
-# Timers 2,3 and 4 are owned by the PWM driver
-CONFIG_STM32_TIM2=n
-CONFIG_STM32_TIM3=n
-CONFIG_STM32_TIM4=n
-CONFIG_STM32_TIM5=n
-CONFIG_STM32_TIM6=n
-CONFIG_STM32_TIM7=n
-CONFIG_STM32_WWDG=n
-CONFIG_STM32_SPI2=n
+# CONFIG_STM32_DAC1 is not set
+# CONFIG_STM32_DAC2 is not set
+CONFIG_STM32_I2C1=y
+# CONFIG_STM32_I2C2 is not set
+# CONFIG_STM32_PWR is not set
+# CONFIG_STM32_SPI1 is not set
+# CONFIG_STM32_TIM1 is not set
+# CONFIG_STM32_TIM2 is not set
+# CONFIG_STM32_TIM3 is not set
+# CONFIG_STM32_TIM4 is not set
+# CONFIG_STM32_TIM5 is not set
+# CONFIG_STM32_TIM6 is not set
+# CONFIG_STM32_TIM7 is not set
+# CONFIG_STM32_TIM12 is not set
+# CONFIG_STM32_TIM13 is not set
+# CONFIG_STM32_TIM14 is not set
+# CONFIG_STM32_TIM15 is not set
+# CONFIG_STM32_TIM16 is not set
+# CONFIG_STM32_TIM17 is not set
+CONFIG_STM32_USART1=y
CONFIG_STM32_USART2=y
CONFIG_STM32_USART3=y
-CONFIG_STM32_I2C1=n
-CONFIG_STM32_I2C2=n
-CONFIG_STM32_BKP=n
-CONFIG_STM32_PWR=n
-CONFIG_STM32_DAC=n
-# APB2:
-# We use our own ADC driver, but leave this on for clocking purposes.
-CONFIG_STM32_ADC1=y
-CONFIG_STM32_ADC2=n
-# TIM1 is owned by the HRT
-CONFIG_STM32_TIM1=n
-CONFIG_STM32_SPI1=n
-CONFIG_STM32_TIM8=n
-CONFIG_STM32_USART1=y
-CONFIG_STM32_ADC3=n
+# CONFIG_STM32_UART4 is not set
+# CONFIG_STM32_UART5 is not set
+# CONFIG_STM32_IWDG is not set
+# CONFIG_STM32_WWDG is not set
+CONFIG_STM32_ADC=y
+CONFIG_STM32_I2C=y
+#
+# Alternate Pin Mapping
+#
+# CONFIG_STM32_I2C1_REMAP is not set
+# CONFIG_STM32_USART1_REMAP is not set
+# CONFIG_STM32_USART2_REMAP is not set
+CONFIG_STM32_USART3_NO_REMAP=y
+# CONFIG_STM32_USART3_FULL_REMAP is not set
+# CONFIG_STM32_USART3_PARTIAL_REMAP is not set
+# CONFIG_STM32_JTAG_DISABLE is not set
+# CONFIG_STM32_JTAG_FULL_ENABLE is not set
+# CONFIG_STM32_JTAG_NOJNTRST_ENABLE is not set
+CONFIG_STM32_JTAG_SW_ENABLE=y
+CONFIG_STM32_DISABLE_IDLE_SLEEP_DURING_DEBUG=y
+# CONFIG_STM32_FORCEPOWER is not set
+# CONFIG_ARCH_BOARD_STM32_CUSTOM_CLOCKCONFIG is not set
+# CONFIG_STM32_DMACAPABLE is not set
+CONFIG_STM32_USART=y
#
-# STM32F100 specific serial device driver settings
+# U[S]ART Configuration
+#
+# CONFIG_USART1_RS485 is not set
+CONFIG_USART1_RXDMA=y
+# CONFIG_USART2_RS485 is not set
+# CONFIG_USART2_RXDMA is not set
+# CONFIG_USART3_RS485 is not set
+CONFIG_USART3_RXDMA=y
+# CONFIG_SERIAL_DISABLE_REORDERING is not set
+# CONFIG_STM32_FLOWCONTROL_BROKEN is not set
+CONFIG_STM32_USART_SINGLEWIRE=y
+
#
-# CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
-# console and ttys0 (default is the USART1).
-# CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
-# This specific the size of the receive buffer
-# CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
-# being sent. This specific the size of the transmit buffer
-# CONFIG_USARTn_BAUD - The configure BAUD of the UART. Must be
-# CONFIG_USARTn_BITS - The number of bits. Must be either 7 or 8.
-# CONFIG_USARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
-# CONFIG_USARTn_2STOP - Two stop bits
+# I2C Configuration
#
-CONFIG_SERIAL_TERMIOS=y
-CONFIG_STANDARD_SERIAL=y
+# CONFIG_STM32_I2C_ALT is not set
+# CONFIG_STM32_I2C_DYNTIMEO is not set
+CONFIG_STM32_I2CTIMEOSEC=0
+CONFIG_STM32_I2CTIMEOMS=1
+CONFIG_STM32_I2CTIMEOTICKS=1
+# CONFIG_STM32_I2C_DUTY16_9 is not set
-CONFIG_USART1_SERIAL_CONSOLE=y
-CONFIG_USART2_SERIAL_CONSOLE=n
-CONFIG_USART3_SERIAL_CONSOLE=n
+#
+# USB FS Host Configuration
+#
-CONFIG_USART1_TXBUFSIZE=64
-CONFIG_USART2_TXBUFSIZE=64
-CONFIG_USART3_TXBUFSIZE=64
+#
+# USB HS Host Configuration
+#
-CONFIG_USART1_RXBUFSIZE=64
-CONFIG_USART2_RXBUFSIZE=64
-CONFIG_USART3_RXBUFSIZE=64
+#
+# USB Host Debug Configuration
+#
-CONFIG_USART1_BAUD=115200
-CONFIG_USART2_BAUD=115200
-CONFIG_USART3_BAUD=115200
+#
+# USB Device Configuration
+#
-CONFIG_USART1_BITS=8
-CONFIG_USART2_BITS=8
-CONFIG_USART3_BITS=8
+#
+# Architecture Options
+#
+# CONFIG_ARCH_NOINTC is not set
+# CONFIG_ARCH_VECNOTIRQ is not set
+CONFIG_ARCH_DMA=y
+CONFIG_ARCH_HAVE_IRQPRIO=y
+# CONFIG_ARCH_L2CACHE is not set
+# CONFIG_ARCH_HAVE_COHERENT_DCACHE is not set
+# CONFIG_ARCH_HAVE_ADDRENV is not set
+# CONFIG_ARCH_NEED_ADDRENV_MAPPING is not set
+CONFIG_ARCH_HAVE_VFORK=y
+# CONFIG_ARCH_HAVE_MMU is not set
+CONFIG_ARCH_HAVE_MPU=y
+# CONFIG_ARCH_NAND_HWECC is not set
+# CONFIG_ARCH_HAVE_EXTCLK is not set
+# CONFIG_ARCH_USE_MPU is not set
+# CONFIG_ARCH_IRQPRIO is not set
+CONFIG_ARCH_STACKDUMP=y
+# CONFIG_ENDIAN_BIG is not set
+# CONFIG_ARCH_IDLE_CUSTOM is not set
+# CONFIG_ARCH_HAVE_RAMFUNCS is not set
+CONFIG_ARCH_HAVE_RAMVECTORS=y
+# CONFIG_ARCH_RAMVECTORS is not set
-CONFIG_USART1_PARITY=0
-CONFIG_USART2_PARITY=0
-CONFIG_USART3_PARITY=0
+#
+# Board Settings
+#
+CONFIG_BOARD_LOOPSPERMSEC=2000
+# CONFIG_ARCH_CALIBRATION is not set
-CONFIG_USART1_2STOP=0
-CONFIG_USART2_2STOP=0
-CONFIG_USART3_2STOP=0
+#
+# Interrupt options
+#
+CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
+CONFIG_ARCH_INTERRUPTSTACK=0
+CONFIG_ARCH_HAVE_HIPRI_INTERRUPT=y
+# CONFIG_ARCH_HIPRI_INTERRUPT is not set
-CONFIG_USART1_RXDMA=y
-SERIAL_HAVE_CONSOLE_DMA=y
-# Conflicts with I2C1 DMA
-CONFIG_USART2_RXDMA=n
-CONFIG_USART3_RXDMA=y
+#
+# Boot options
+#
+# CONFIG_BOOT_RUNFROMEXTSRAM is not set
+CONFIG_BOOT_RUNFROMFLASH=y
+# CONFIG_BOOT_RUNFROMISRAM is not set
+# CONFIG_BOOT_RUNFROMSDRAM is not set
+# CONFIG_BOOT_COPYTORAM is not set
#
-# PX4IO specific driver settings
-#
-# CONFIG_HRT_TIMER
-# Enables the high-resolution timer. The board definition must
-# set HRT_TIMER and HRT_TIMER_CHANNEL to the timer and capture/
-# compare channels to be used.
-# CONFIG_HRT_PPM
-# Enables R/C PPM input using the HRT. The board definition must
-# set HRT_PPM_CHANNEL to the timer capture/compare channel to be
-# used, and define GPIO_PPM_IN to configure the appropriate timer
-# GPIO.
-# CONFIG_PWM_SERVO
-# Enables the PWM servo driver. The driver configuration must be
-# supplied by the board support at initialisation time.
-# Note that USART2 must be disabled on the PX4 board for this to
-# be available.
-#
-#
-CONFIG_HRT_TIMER=y
-CONFIG_HRT_PPM=y
-
-#
-# General build options
-#
-# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
-# BSPs from www.ridgerun.com using the tools/mkimage.sh script
-# CONFIG_INTELHEX_BINARY - make the Intel HEX binary format
-# used with many different loaders using the GNU objcopy program
-# Should not be selected if you are not using the GNU toolchain.
-# CONFIG_MOTOROLA_SREC - make the Motorola S-Record binary format
-# used with many different loaders using the GNU objcopy program
-# Should not be selected if you are not using the GNU toolchain.
-# CONFIG_RAW_BINARY - make a raw binary format file used with many
-# different loaders using the GNU objcopy program. This option
-# should not be selected if you are not using the GNU toolchain.
-# CONFIG_HAVE_LIBM - toolchain supports libm.a
-#
-CONFIG_RRLOAD_BINARY=n
-CONFIG_INTELHEX_BINARY=n
-CONFIG_MOTOROLA_SREC=n
-CONFIG_RAW_BINARY=y
-CONFIG_HAVE_LIBM=n
-
-#
-# General OS setup
-#
-# CONFIG_APPS_DIR - Identifies the relative path to the directory
-# that builds the application to link with NuttX. Default: ../apps
-# CONFIG_DEBUG - enables built-in debug options
-# CONFIG_DEBUG_VERBOSE - enables verbose debug output
-# CONFIG_DEBUG_SYMBOLS - build without optimization and with
-# debug symbols (needed for use with a debugger).
-# CONFIG_HAVE_CXX - Enable support for C++
-# CONFIG_HAVE_CXXINITIALIZE - The platform-specific logic includes support
-# for initialization of static C++ instances for this architecture
-# and for the selected toolchain (via up_cxxinitialize()).
-# CONFIG_MM_REGIONS - If the architecture includes multiple
-# regions of memory to allocate from, this specifies the
-# number of memory regions that the memory manager must
-# handle and enables the API mm_addregion(start, end);
-# CONFIG_ARCH_LOWPUTC - architecture supports low-level, boot
-# time console output
-# CONFIG_MSEC_PER_TICK - The default system timer is 100Hz
-# or MSEC_PER_TICK=10. This setting may be defined to
-# inform NuttX that the processor hardware is providing
-# system timer interrupts at some interrupt interval other
-# than 10 msec.
-# CONFIG_RR_INTERVAL - The round robin timeslice will be set
-# this number of milliseconds; Round robin scheduling can
-# be disabled by setting this value to zero.
-# CONFIG_SCHED_INSTRUMENTATION - enables instrumentation in
-# scheduler to monitor system performance
-# CONFIG_TASK_NAME_SIZE - Spcifies that maximum size of a
-# task name to save in the TCB. Useful if scheduler
-# instrumentation is selected. Set to zero to disable.
-# CONFIG_START_YEAR, CONFIG_START_MONTH, CONFIG_START_DAY -
-# Used to initialize the internal time logic.
-# CONFIG_GREGORIAN_TIME - Enables Gregorian time conversions.
-# You would only need this if you are concerned about accurate
-# time conversions in the past or in the distant future.
-# CONFIG_JULIAN_TIME - Enables Julian time conversions. You
-# would only need this if you are concerned about accurate
-# time conversion in the distand past. You must also define
-# CONFIG_GREGORIAN_TIME in order to use Julian time.
-# CONFIG_DEV_CONSOLE - Set if architecture-specific logic
-# provides /dev/console. Enables stdout, stderr, stdin.
-# CONFIG_DEV_LOWCONSOLE - Use the simple, low-level serial console
-# driver (minimul support)
-# CONFIG_MUTEX_TYPES: Set to enable support for recursive and
-# errorcheck mutexes. Enables pthread_mutexattr_settype().
-# CONFIG_PRIORITY_INHERITANCE : Set to enable support for priority
-# inheritance on mutexes and semaphores.
-# CONFIG_SEM_PREALLOCHOLDERS: This setting is only used if priority
-# inheritance is enabled. It defines the maximum number of
-# different threads (minus one) that can take counts on a
-# semaphore with priority inheritance support. This may be
-# set to zero if priority inheritance is disabled OR if you
-# are only using semaphores as mutexes (only one holder) OR
-# if no more than two threads participate using a counting
-# semaphore.
-# CONFIG_SEM_NNESTPRIO. If priority inheritance is enabled,
-# then this setting is the maximum number of higher priority
-# threads (minus 1) than can be waiting for another thread
-# to release a count on a semaphore. This value may be set
-# to zero if no more than one thread is expected to wait for
-# a semaphore.
-# CONFIG_FDCLONE_DISABLE. Disable cloning of all file descriptors
-# by task_create() when a new task is started. If set, all
-# files/drivers will appear to be closed in the new task.
-# CONFIG_FDCLONE_STDIO. Disable cloning of all but the first
-# three file descriptors (stdin, stdout, stderr) by task_create()
-# when a new task is started. If set, all files/drivers will
-# appear to be closed in the new task except for stdin, stdout,
-# and stderr.
-# CONFIG_SDCLONE_DISABLE. Disable cloning of all socket
-# desciptors by task_create() when a new task is started. If
-# set, all sockets will appear to be closed in the new task.
-# CONFIG_SCHED_WORKQUEUE. Create a dedicated "worker" thread to
-# handle delayed processing from interrupt handlers. This feature
-# is required for some drivers but, if there are not complaints,
-# can be safely disabled. The worker thread also performs
-# garbage collection -- completing any delayed memory deallocations
-# from interrupt handlers. If the worker thread is disabled,
-# then that clean will be performed by the IDLE thread instead
-# (which runs at the lowest of priority and may not be appropriate
-# if memory reclamation is of high priority). If CONFIG_SCHED_WORKQUEUE
-# is enabled, then the following options can also be used:
-# CONFIG_SCHED_WORKPRIORITY - The execution priority of the worker
-# thread. Default: 50
-# CONFIG_SCHED_WORKPERIOD - How often the worker thread checks for
-# work in units of microseconds. Default: 50*1000 (50 MS).
-# CONFIG_SCHED_WORKSTACKSIZE - The stack size allocated for the worker
-# thread. Default: CONFIG_IDLETHREAD_STACKSIZE.
-# CONFIG_SIG_SIGWORK - The signal number that will be used to wake-up
-# the worker thread. Default: 4
-# CONFIG_SCHED_WAITPID - Enable the waitpid() API
-# CONFIG_SCHED_ATEXIT - Enabled the atexit() API
+# Boot Memory Configuration
#
-CONFIG_USER_ENTRYPOINT="user_start"
-#CONFIG_APPS_DIR=
-CONFIG_DEBUG=n
-CONFIG_DEBUG_VERBOSE=n
-CONFIG_DEBUG_SYMBOLS=y
-CONFIG_DEBUG_FS=n
-CONFIG_DEBUG_GRAPHICS=n
-CONFIG_DEBUG_LCD=n
-CONFIG_DEBUG_USB=n
-CONFIG_DEBUG_NET=n
-CONFIG_DEBUG_RTC=n
-CONFIG_DEBUG_ANALOG=n
-CONFIG_DEBUG_PWM=n
-CONFIG_DEBUG_CAN=n
-CONFIG_DEBUG_I2C=n
-CONFIG_DEBUG_INPUT=n
-
-CONFIG_MSEC_PER_TICK=1
-CONFIG_HAVE_CXX=y
-CONFIG_HAVE_CXXINITIALIZE=y
-CONFIG_MM_REGIONS=1
-CONFIG_MM_SMALL=y
-CONFIG_ARCH_LOWPUTC=y
-CONFIG_RR_INTERVAL=0
-CONFIG_SCHED_INSTRUMENTATION=n
-CONFIG_TASK_NAME_SIZE=8
-CONFIG_START_YEAR=1970
-CONFIG_START_MONTH=1
-CONFIG_START_DAY=1
-CONFIG_GREGORIAN_TIME=n
-CONFIG_JULIAN_TIME=n
-# this eats ~1KiB of RAM ... work out why
-CONFIG_DEV_CONSOLE=y
-CONFIG_DEV_LOWCONSOLE=n
-CONFIG_MUTEX_TYPES=n
-CONFIG_PRIORITY_INHERITANCE=n
-CONFIG_SEM_PREALLOCHOLDERS=0
-CONFIG_SEM_NNESTPRIO=0
-CONFIG_FDCLONE_DISABLE=y
-CONFIG_FDCLONE_STDIO=y
-CONFIG_SDCLONE_DISABLE=y
-CONFIG_SCHED_WORKQUEUE=n
-CONFIG_SCHED_WORKPRIORITY=50
-CONFIG_SCHED_WORKPERIOD=50000
-CONFIG_SCHED_WORKSTACKSIZE=1024
-CONFIG_SIG_SIGWORK=4
-CONFIG_SCHED_WAITPID=n
-CONFIG_SCHED_ATEXIT=n
-
-#
-# The following can be used to disable categories of
-# APIs supported by the OS. If the compiler supports
-# weak functions, then it should not be necessary to
-# disable functions unless you want to restrict usage
-# of those APIs.
-#
-# There are certain dependency relationships in these
-# features.
-#
-# o mq_notify logic depends on signals to awaken tasks
-# waiting for queues to become full or empty.
-# o pthread_condtimedwait() depends on signals to wake
-# up waiting tasks.
-#
-CONFIG_DISABLE_CLOCK=n
+CONFIG_RAM_START=0x20000000
+CONFIG_RAM_SIZE=8192
+# CONFIG_ARCH_HAVE_SDRAM is not set
+
+#
+# Board Selection
+#
+CONFIG_ARCH_BOARD_PX4IO_V2=y
+# CONFIG_ARCH_BOARD_CUSTOM is not set
+CONFIG_ARCH_BOARD="px4io-v2"
+
+#
+# Custom Board Configuration
+#
+CONFIG_ARCH_BOARD_CUSTOM_DIR=""
+# CONFIG_BOARD_CUSTOM_LEDS is not set
+# CONFIG_BOARD_CUSTOM_BUTTONS is not set
+
+#
+# Common Board Options
+#
+
+#
+# Board-Specific Options
+#
+
+#
+# RTOS Features
+#
+CONFIG_DISABLE_OS_API=y
CONFIG_DISABLE_POSIX_TIMERS=y
CONFIG_DISABLE_PTHREAD=y
CONFIG_DISABLE_SIGNALS=y
CONFIG_DISABLE_MQUEUE=y
-CONFIG_DISABLE_MOUNTPOINT=y
CONFIG_DISABLE_ENVIRON=y
-CONFIG_DISABLE_POLL=y
#
-# Misc libc settings
-#
-# CONFIG_NOPRINTF_FIELDWIDTH - sprintf-related logic is a
-# little smaller if we do not support fieldwidthes
-#
-CONFIG_NOPRINTF_FIELDWIDTH=n
-
-#
-# Allow for architecture optimized implementations
-#
-# The architecture can provide optimized versions of the
-# following to improve system performance
-#
-CONFIG_ARCH_MEMCPY=n
-CONFIG_ARCH_MEMCMP=n
-CONFIG_ARCH_MEMMOVE=n
-CONFIG_ARCH_MEMSET=n
-CONFIG_ARCH_STRCMP=n
-CONFIG_ARCH_STRCPY=n
-CONFIG_ARCH_STRNCPY=n
-CONFIG_ARCH_STRLEN=n
-CONFIG_ARCH_STRNLEN=n
-CONFIG_ARCH_BZERO=n
-
-#
-# Sizes of configurable things (0 disables)
-#
-# CONFIG_MAX_TASKS - The maximum number of simultaneously
-# active tasks. This value must be a power of two.
-# CONFIG_MAX_TASK_ARGS - This controls the maximum number of
-# of parameters that a task may receive (i.e., maxmum value
-# of 'argc')
-# CONFIG_NPTHREAD_KEYS - The number of items of thread-
-# specific data that can be retained
-# CONFIG_NFILE_DESCRIPTORS - The maximum number of file
-# descriptors (one for each open)
-# CONFIG_NFILE_STREAMS - The maximum number of streams that
-# can be fopen'ed
-# CONFIG_NAME_MAX - The maximum size of a file name.
-# CONFIG_STDIO_BUFFER_SIZE - Size of the buffer to allocate
-# on fopen. (Only if CONFIG_NFILE_STREAMS > 0)
-# CONFIG_STDIO_LINEBUFFER - If standard C buffered I/O is enabled
-# (CONFIG_STDIO_BUFFER_SIZE > 0), then this option may be added
-# to force automatic, line-oriented flushing the output buffer
-# for putc(), fputc(), putchar(), puts(), fputs(), printf(),
-# fprintf(), and vfprintf(). When a newline is encountered in
-# the output string, the output buffer will be flushed. This
-# (slightly) increases the NuttX footprint but supports the kind
-# of behavior that people expect for printf().
-# CONFIG_NUNGET_CHARS - Number of characters that can be
-# buffered by ungetc() (Only if CONFIG_NFILE_STREAMS > 0)
-# CONFIG_PREALLOC_MQ_MSGS - The number of pre-allocated message
-# structures. The system manages a pool of preallocated
-# message structures to minimize dynamic allocations
-# CONFIG_MQ_MAXMSGSIZE - Message structures are allocated with
-# a fixed payload size given by this settin (does not include
-# other message structure overhead.
-# CONFIG_MAX_WDOGPARMS - Maximum number of parameters that
-# can be passed to a watchdog handler
-# CONFIG_PREALLOC_WDOGS - The number of pre-allocated watchdog
-# structures. The system manages a pool of preallocated
-# watchdog structures to minimize dynamic allocations
-# CONFIG_PREALLOC_TIMERS - The number of pre-allocated POSIX
-# timer structures. The system manages a pool of preallocated
-# timer structures to minimize dynamic allocations. Set to
-# zero for all dynamic allocations.
+# Clocks and Timers
#
-CONFIG_MAX_TASKS=4
-CONFIG_MAX_TASK_ARGS=4
-CONFIG_NPTHREAD_KEYS=2
-CONFIG_NFILE_DESCRIPTORS=8
-CONFIG_NFILE_STREAMS=0
-CONFIG_NAME_MAX=12
-CONFIG_STDIO_BUFFER_SIZE=32
-CONFIG_STDIO_LINEBUFFER=n
-CONFIG_NUNGET_CHARS=2
-CONFIG_PREALLOC_MQ_MSGS=4
-CONFIG_MQ_MAXMSGSIZE=32
+CONFIG_USEC_PER_TICK=1000
+# CONFIG_SYSTEM_TIME64 is not set
+# CONFIG_CLOCK_MONOTONIC is not set
+# CONFIG_JULIAN_TIME is not set
+CONFIG_START_YEAR=1970
+CONFIG_START_MONTH=1
+CONFIG_START_DAY=1
CONFIG_MAX_WDOGPARMS=2
-CONFIG_PREALLOC_WDOGS=4
+CONFIG_PREALLOC_WDOGS=6
+CONFIG_WDOG_INTRESERVE=2
CONFIG_PREALLOC_TIMERS=0
+#
+# Tasks and Scheduling
+#
+# CONFIG_INIT_NONE is not set
+CONFIG_INIT_ENTRYPOINT=y
+# CONFIG_INIT_FILEPATH is not set
+CONFIG_USER_ENTRYPOINT="user_start"
+CONFIG_RR_INTERVAL=0
+CONFIG_TASK_NAME_SIZE=8
+CONFIG_MAX_TASKS=4
+# CONFIG_SCHED_HAVE_PARENT is not set
+# CONFIG_SCHED_WAITPID is not set
#
-# Settings for apps/nshlib
+# Performance Monitoring
#
-# CONFIG_NSH_BUILTIN_APPS - Support external registered,
-# "named" applications that can be executed from the NSH
-# command line (see apps/README.txt for more information).
-# CONFIG_NSH_FILEIOSIZE - Size of a static I/O buffer
-# CONFIG_NSH_STRERROR - Use strerror(errno)
-# CONFIG_NSH_LINELEN - Maximum length of one command line
-# CONFIG_NSH_NESTDEPTH - Max number of nested if-then[-else]-fi
-# CONFIG_NSH_DISABLESCRIPT - Disable scripting support
-# CONFIG_NSH_DISABLEBG - Disable background commands
-# CONFIG_NSH_ROMFSETC - Use startup script in /etc
-# CONFIG_NSH_CONSOLE - Use serial console front end
-# CONFIG_NSH_TELNET - Use telnetd console front end
-# CONFIG_NSH_ARCHINIT - Platform provides architecture
-# specific initialization (nsh_archinitialize()).
+# CONFIG_SCHED_CPULOAD is not set
+# CONFIG_SCHED_INSTRUMENTATION is not set
+
+#
+# Files and I/O
#
+CONFIG_DEV_CONSOLE=y
+CONFIG_FDCLONE_DISABLE=y
+CONFIG_FDCLONE_STDIO=y
+CONFIG_SDCLONE_DISABLE=y
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NFILE_STREAMS=0
+CONFIG_NAME_MAX=12
+# CONFIG_PRIORITY_INHERITANCE is not set
-# Disable NSH completely
-CONFIG_NSH_CONSOLE=n
+#
+# RTOS hooks
+#
+# CONFIG_BOARD_INITIALIZE is not set
+# CONFIG_SCHED_STARTHOOK is not set
+# CONFIG_SCHED_ATEXIT is not set
+# CONFIG_SCHED_ONEXIT is not set
+
+#
+# Work Queue Support
+#
#
# Stack and heap information
#
-# CONFIG_BOOT_RUNFROMFLASH - Some configurations support XIP
-# operation from FLASH but must copy initialized .data sections to RAM.
-# (should also be =n for the STM3210E-EVAL which always runs from flash)
-# CONFIG_BOOT_COPYTORAM - Some configurations boot in FLASH
-# but copy themselves entirely into RAM for better performance.
-# CONFIG_CUSTOM_STACK - The up_ implementation will handle
-# all stack operations outside of the nuttx model.
-# CONFIG_STACK_POINTER - The initial stack pointer (arm7tdmi only)
-# CONFIG_IDLETHREAD_STACKSIZE - The size of the initial stack.
-# This is the thread that (1) performs the inital boot of the system up
-# to the point where user_start() is spawned, and (2) there after is the
-# IDLE thread that executes only when there is no other thread ready to
-# run.
-# CONFIG_USERMAIN_STACKSIZE - The size of the stack to allocate
-# for the main user thread that begins at the user_start() entry point.
-# CONFIG_PTHREAD_STACK_MIN - Minimum pthread stack size
-# CONFIG_PTHREAD_STACK_DEFAULT - Default pthread stack size
-# CONFIG_HEAP_BASE - The beginning of the heap
-# CONFIG_HEAP_SIZE - The size of the heap
-#
-CONFIG_BOOT_RUNFROMFLASH=n
-CONFIG_BOOT_COPYTORAM=n
-CONFIG_CUSTOM_STACK=n
-CONFIG_STACK_POINTER=
CONFIG_IDLETHREAD_STACKSIZE=1024
CONFIG_USERMAIN_STACKSIZE=1200
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_PTHREAD_STACK_DEFAULT=1024
-CONFIG_HEAP_BASE=
-CONFIG_HEAP_SIZE=
+# CONFIG_LIB_SYSCALL is not set
+
+#
+# Device Drivers
+#
+CONFIG_DISABLE_POLL=y
+# CONFIG_DEV_NULL is not set
+# CONFIG_DEV_ZERO is not set
+# CONFIG_LOOP is not set
+
+#
+# Buffering
+#
+# CONFIG_DRVR_WRITEBUFFER is not set
+# CONFIG_DRVR_READAHEAD is not set
+# CONFIG_RAMDISK is not set
+# CONFIG_CAN is not set
+# CONFIG_ARCH_HAVE_PWM_PULSECOUNT is not set
+# CONFIG_PWM is not set
+CONFIG_ARCH_HAVE_I2CRESET=y
+# CONFIG_I2C is not set
+# CONFIG_SPI is not set
+# CONFIG_I2S is not set
+# CONFIG_RTC is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_TIMER is not set
+# CONFIG_ANALOG is not set
+# CONFIG_AUDIO_DEVICES is not set
+# CONFIG_VIDEO_DEVICES is not set
+# CONFIG_BCH is not set
+# CONFIG_INPUT is not set
+# CONFIG_LCD is not set
+# CONFIG_MMCSD is not set
+# CONFIG_MTD is not set
+# CONFIG_EEPROM is not set
+# CONFIG_PIPES is not set
+# CONFIG_PM is not set
+# CONFIG_POWER is not set
+# CONFIG_SENSORS is not set
+# CONFIG_SERCOMM_CONSOLE is not set
+CONFIG_SERIAL=y
+# CONFIG_DEV_LOWCONSOLE is not set
+# CONFIG_16550_UART is not set
+# CONFIG_ARCH_HAVE_UART is not set
+# CONFIG_ARCH_HAVE_UART0 is not set
+# CONFIG_ARCH_HAVE_UART1 is not set
+# CONFIG_ARCH_HAVE_UART2 is not set
+# CONFIG_ARCH_HAVE_UART3 is not set
+# CONFIG_ARCH_HAVE_UART4 is not set
+# CONFIG_ARCH_HAVE_UART5 is not set
+# CONFIG_ARCH_HAVE_UART6 is not set
+# CONFIG_ARCH_HAVE_UART7 is not set
+# CONFIG_ARCH_HAVE_UART8 is not set
+# CONFIG_ARCH_HAVE_SCI0 is not set
+# CONFIG_ARCH_HAVE_SCI1 is not set
+# CONFIG_ARCH_HAVE_USART0 is not set
+CONFIG_ARCH_HAVE_USART1=y
+CONFIG_ARCH_HAVE_USART2=y
+CONFIG_ARCH_HAVE_USART3=y
+# CONFIG_ARCH_HAVE_USART4 is not set
+# CONFIG_ARCH_HAVE_USART5 is not set
+# CONFIG_ARCH_HAVE_USART6 is not set
+# CONFIG_ARCH_HAVE_USART7 is not set
+# CONFIG_ARCH_HAVE_USART8 is not set
+# CONFIG_ARCH_HAVE_OTHER_UART is not set
+
+#
+# USART Configuration
+#
+CONFIG_USART1_ISUART=y
+CONFIG_USART2_ISUART=y
+CONFIG_USART3_ISUART=y
+CONFIG_MCU_SERIAL=y
+CONFIG_STANDARD_SERIAL=y
+# CONFIG_SERIAL_IFLOWCONTROL is not set
+# CONFIG_SERIAL_OFLOWCONTROL is not set
+CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
+CONFIG_SERIAL_TERMIOS=y
+CONFIG_USART1_SERIAL_CONSOLE=y
+# CONFIG_USART2_SERIAL_CONSOLE is not set
+# CONFIG_USART3_SERIAL_CONSOLE is not set
+# CONFIG_OTHER_SERIAL_CONSOLE is not set
+# CONFIG_NO_SERIAL_CONSOLE is not set
+
+#
+# USART1 Configuration
+#
+CONFIG_USART1_RXBUFSIZE=64
+CONFIG_USART1_TXBUFSIZE=64
+CONFIG_USART1_BAUD=115200
+CONFIG_USART1_BITS=8
+CONFIG_USART1_PARITY=0
+CONFIG_USART1_2STOP=0
+# CONFIG_USART1_IFLOWCONTROL is not set
+# CONFIG_USART1_OFLOWCONTROL is not set
+
+#
+# USART2 Configuration
+#
+CONFIG_USART2_RXBUFSIZE=64
+CONFIG_USART2_TXBUFSIZE=64
+CONFIG_USART2_BAUD=115200
+CONFIG_USART2_BITS=8
+CONFIG_USART2_PARITY=0
+CONFIG_USART2_2STOP=0
+# CONFIG_USART2_IFLOWCONTROL is not set
+# CONFIG_USART2_OFLOWCONTROL is not set
+
+#
+# USART3 Configuration
+#
+CONFIG_USART3_RXBUFSIZE=64
+CONFIG_USART3_TXBUFSIZE=64
+CONFIG_USART3_BAUD=115200
+CONFIG_USART3_BITS=8
+CONFIG_USART3_PARITY=0
+CONFIG_USART3_2STOP=0
+# CONFIG_USART3_IFLOWCONTROL is not set
+# CONFIG_USART3_OFLOWCONTROL is not set
+# CONFIG_USBDEV is not set
+# CONFIG_USBHOST is not set
+# CONFIG_WIRELESS is not set
+
+#
+# System Logging Device Options
+#
+
+#
+# System Logging
+#
+# CONFIG_RAMLOG is not set
+
+#
+# Networking Support
+#
+# CONFIG_ARCH_HAVE_NET is not set
+# CONFIG_ARCH_HAVE_PHY is not set
+# CONFIG_NET is not set
+
+#
+# Crypto API
+#
+# CONFIG_CRYPTO is not set
+
+#
+# File Systems
+#
+
+#
+# File system configuration
+#
+CONFIG_DISABLE_MOUNTPOINT=y
+CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y
+# CONFIG_FS_READABLE is not set
+# CONFIG_FS_WRITABLE is not set
+# CONFIG_FS_NAMED_SEMAPHORES is not set
+# CONFIG_FS_RAMMAP is not set
+# CONFIG_FS_PROCFS is not set
+
+#
+# System Logging
+#
+# CONFIG_SYSLOG is not set
+# CONFIG_SYSLOG_TIMESTAMP is not set
+
+#
+# Graphics Support
+#
+# CONFIG_NX is not set
+
+#
+# Memory Management
+#
+CONFIG_MM_SMALL=y
+CONFIG_MM_REGIONS=1
+# CONFIG_ARCH_HAVE_HEAP2 is not set
+# CONFIG_GRAN is not set
+
+#
+# Audio Support
+#
+# CONFIG_AUDIO is not set
+
+#
+# Binary Loader
+#
+# CONFIG_BINFMT_DISABLE is not set
+# CONFIG_NXFLAT is not set
+# CONFIG_ELF is not set
+# CONFIG_BUILTIN is not set
+# CONFIG_PIC is not set
+# CONFIG_SYMTAB_ORDEREDBYNAME is not set
+
+#
+# Library Routines
+#
+
+#
+# Standard C Library Options
+#
+CONFIG_STDIO_BUFFER_SIZE=32
+# CONFIG_STDIO_LINEBUFFER is not set
+CONFIG_NUNGET_CHARS=2
+# CONFIG_NOPRINTF_FIELDWIDTH is not set
+# CONFIG_LIBC_FLOATINGPOINT is not set
+# CONFIG_LIBC_IOCTL_VARIADIC is not set
+CONFIG_LIB_RAND_ORDER=1
+# CONFIG_EOL_IS_CR is not set
+# CONFIG_EOL_IS_LF is not set
+# CONFIG_EOL_IS_BOTH_CRLF is not set
+CONFIG_EOL_IS_EITHER_CRLF=y
+# CONFIG_LIBC_EXECFUNCS is not set
+CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024
+CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1024
+# CONFIG_LIBC_STRERROR is not set
+# CONFIG_LIBC_PERROR_STDOUT is not set
+CONFIG_ARCH_LOWPUTC=y
+CONFIG_LIB_SENDFILE_BUFSIZE=512
+# CONFIG_ARCH_ROMGETC is not set
+# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
+
+#
+# Non-standard Library Support
+#
+# CONFIG_LIB_KBDCODEC is not set
+# CONFIG_LIB_SLCDCODEC is not set
+
+#
+# Basic CXX Support
+#
+CONFIG_C99_BOOL8=y
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=y
+# CONFIG_CXX_NEWLONG is not set
+
+#
+# uClibc++ Standard C++ Library
+#
+# CONFIG_UCLIBCXX is not set
+
+#
+# Application Configuration
+#
+
+#
+# Built-In Applications
+#
+
+#
+# Examples
+#
+# CONFIG_EXAMPLES_BUTTONS is not set
+# CONFIG_EXAMPLES_CAN is not set
+# CONFIG_EXAMPLES_CONFIGDATA is not set
+# CONFIG_EXAMPLES_CPUHOG is not set
+# CONFIG_EXAMPLES_CXXTEST is not set
+# CONFIG_EXAMPLES_DHCPD is not set
+# CONFIG_EXAMPLES_ELF is not set
+# CONFIG_EXAMPLES_FTPC is not set
+# CONFIG_EXAMPLES_FTPD is not set
+# CONFIG_EXAMPLES_HELLO is not set
+# CONFIG_EXAMPLES_HELLOXX is not set
+# CONFIG_EXAMPLES_JSON is not set
+# CONFIG_EXAMPLES_HIDKBD is not set
+# CONFIG_EXAMPLES_KEYPADTEST is not set
+# CONFIG_EXAMPLES_IGMP is not set
+# CONFIG_EXAMPLES_MM is not set
+# CONFIG_EXAMPLES_MODBUS is not set
+# CONFIG_EXAMPLES_MOUNT is not set
+# CONFIG_EXAMPLES_NRF24L01TERM is not set
+# CONFIG_EXAMPLES_NSH is not set
+# CONFIG_EXAMPLES_NULL is not set
+# CONFIG_EXAMPLES_NX is not set
+# CONFIG_EXAMPLES_NXTERM is not set
+# CONFIG_EXAMPLES_NXFFS is not set
+# CONFIG_EXAMPLES_NXFLAT is not set
+# CONFIG_EXAMPLES_NXHELLO is not set
+# CONFIG_EXAMPLES_NXIMAGE is not set
+# CONFIG_EXAMPLES_NXLINES is not set
+# CONFIG_EXAMPLES_NXTEXT is not set
+# CONFIG_EXAMPLES_OSTEST is not set
+# CONFIG_EXAMPLES_PIPE is not set
+# CONFIG_EXAMPLES_POLL is not set
+# CONFIG_EXAMPLES_POSIXSPAWN is not set
+# CONFIG_EXAMPLES_QENCODER is not set
+# CONFIG_EXAMPLES_RGMP is not set
+# CONFIG_EXAMPLES_ROMFS is not set
+# CONFIG_EXAMPLES_SENDMAIL is not set
+# CONFIG_EXAMPLES_SERIALBLASTER is not set
+# CONFIG_EXAMPLES_SERIALRX is not set
+# CONFIG_EXAMPLES_SERLOOP is not set
+# CONFIG_EXAMPLES_SLCD is not set
+# CONFIG_EXAMPLES_SMART is not set
+# CONFIG_EXAMPLES_TCPECHO is not set
+# CONFIG_EXAMPLES_TELNETD is not set
+# CONFIG_EXAMPLES_THTTPD is not set
+# CONFIG_EXAMPLES_TIFF is not set
+# CONFIG_EXAMPLES_TOUCHSCREEN is not set
+# CONFIG_EXAMPLES_UDP is not set
+# CONFIG_EXAMPLES_WEBSERVER is not set
+# CONFIG_EXAMPLES_USBSERIAL is not set
+# CONFIG_EXAMPLES_USBTERM is not set
+# CONFIG_EXAMPLES_WATCHDOG is not set
+
+#
+# Graphics Support
+#
+# CONFIG_TIFF is not set
+# CONFIG_GRAPHICS_TRAVELER is not set
+
+#
+# Interpreters
+#
+# CONFIG_INTERPRETERS_FICL is not set
+# CONFIG_INTERPRETERS_PCODE is not set
+
+#
+# Network Utilities
+#
+
+#
+# Networking Utilities
+#
+# CONFIG_NETUTILS_CODECS is not set
+# CONFIG_NETUTILS_DHCPD is not set
+# CONFIG_NETUTILS_FTPC is not set
+# CONFIG_NETUTILS_FTPD is not set
+# CONFIG_NETUTILS_JSON is not set
+# CONFIG_NETUTILS_SMTP is not set
+# CONFIG_NETUTILS_TFTPC is not set
+# CONFIG_NETUTILS_THTTPD is not set
+# CONFIG_NETUTILS_NETLIB is not set
+# CONFIG_NETUTILS_WEBCLIENT is not set
+
+#
+# FreeModBus
+#
+# CONFIG_MODBUS is not set
+
+#
+# NSH Library
+#
+# CONFIG_NSH_LIBRARY is not set
+
+#
+# NxWidgets/NxWM
+#
+
+#
+# Platform-specific Support
+#
+# CONFIG_PLATFORM_CONFIGDATA is not set
+
+#
+# System Libraries and NSH Add-Ons
+#
+
+#
+# Custom Free Memory Command
+#
+# CONFIG_SYSTEM_FREE is not set
+
+#
+# EMACS-like Command Line Editor
+#
+# CONFIG_SYSTEM_CLE is not set
+
+#
+# CU Minimal Terminal
+#
+# CONFIG_SYSTEM_CUTERM is not set
+
+#
+# FLASH Program Installation
+#
+# CONFIG_SYSTEM_INSTALL is not set
+
+#
+# FLASH Erase-all Command
+#
+
+#
+# Intel HEX to binary conversion
+#
+# CONFIG_SYSTEM_HEX2BIN is not set
+
+#
+# I2C tool
+#
+
+#
+# INI File Parser
+#
+# CONFIG_SYSTEM_INIFILE is not set
+
+#
+# NxPlayer media player library / command Line
+#
+
+#
+# RAM test
+#
+# CONFIG_SYSTEM_RAMTEST is not set
+
+#
+# readline()
+#
+# CONFIG_SYSTEM_READLINE is not set
+
+#
+# P-Code Support
+#
+
+#
+# PHY Tool
+#
+
+#
+# Power Off
+#
+# CONFIG_SYSTEM_POWEROFF is not set
+
+#
+# RAMTRON
+#
+# CONFIG_SYSTEM_RAMTRON is not set
+
+#
+# SD Card
+#
+# CONFIG_SYSTEM_SDCARD is not set
+
+#
+# Sudoku
+#
+# CONFIG_SYSTEM_SUDOKU is not set
+
+#
+# Sysinfo
+#
+# CONFIG_SYSTEM_SYSINFO is not set
+
+#
+# VI Work-Alike Editor
+#
+# CONFIG_SYSTEM_VI is not set
+
+#
+# Stack Monitor
+#
+
+#
+# USB CDC/ACM Device Commands
+#
+
+#
+# USB Composite Device Commands
+#
+
+#
+# USB Mass Storage Device Commands
+#
+
+#
+# USB Monitor
+#
+
+#
+# Zmodem Commands
+#
+# CONFIG_SYSTEM_ZMODEM is not set
diff --git a/nuttx-patches/Fixed-Shadow-wanings.patch b/nuttx-patches/Fixed-Shadow-wanings.patch
new file mode 100755
index 000000000..3c0ab5f7c
--- /dev/null
+++ b/nuttx-patches/Fixed-Shadow-wanings.patch
@@ -0,0 +1,62 @@
+diff --git NuttX/nuttx/include/signal.h NuttX/nuttx/include/signal.h
+index ffb77e0..cca6a15 100644
+--- NuttX/nuttx/include/signal.h
++++ NuttX/nuttx/include/signal.h
+@@ -260,8 +260,11 @@ int sigfillset(FAR sigset_t *set);
+ int sigaddset(FAR sigset_t *set, int signo);
+ int sigdelset(FAR sigset_t *set, int signo);
+ int sigismember(FAR const sigset_t *set, int signo);
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wshadow"
+ int sigaction(int sig, FAR const struct sigaction *act,
+ FAR struct sigaction *oact);
++#pragma GCC diagnostic pop
+ int sigprocmask(int how, FAR const sigset_t *set, FAR sigset_t *oset);
+ int sigpending(FAR sigset_t *set);
+ int sigsuspend(FAR const sigset_t *sigmask);
+diff --git NuttX/nuttx/include/stdio.h NuttX/nuttx/include/stdio.h
+index cb16366..6ff12bb 100644
+--- NuttX/nuttx/include/stdio.h
++++ NuttX/nuttx/include/stdio.h
+@@ -180,7 +180,11 @@ int vdprintf(int fd, FAR const char *fmt, va_list ap);
+
+ /* Operations on paths */
+
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wshadow"
++struct statfs; /* Forward Decleration */
+ int statfs(FAR const char *path, FAR struct statfs *buf);
++#pragma GCC diagnostic pop
+ FAR char *tmpnam(FAR char *s);
+ FAR char *tempnam(FAR const char *dir, FAR const char *pfx);
+
+diff --git NuttX/nuttx/include/stdlib.h NuttX/nuttx/include/stdlib.h
+index 16a3f93..dbf94df 100644
+--- NuttX/nuttx/include/stdlib.h
++++ NuttX/nuttx/include/stdlib.h
+@@ -191,7 +191,10 @@ void qsort(void *base, size_t nmemb, size_t size,
+ int(*compar)(const void *, const void *));
+
+ #ifdef CONFIG_CAN_PASS_STRUCTS
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wshadow"
+ struct mallinfo mallinfo(void);
++#pragma GCC diagnostic pop
+ #else
+ int mallinfo(struct mallinfo *info);
+ #endif
+diff --git NuttX/nuttx/include/sys/stat.h NuttX/nuttx/include/sys/stat.h
+index 4fe9f5c..b66b9a0 100644
+--- NuttX/nuttx/include/sys/stat.h
++++ NuttX/nuttx/include/sys/stat.h
+@@ -130,7 +130,10 @@ extern "C"
+
+ int mkdir(FAR const char *pathname, mode_t mode);
+ int mkfifo(FAR const char *pathname, mode_t mode);
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wshadow"
+ int stat(const char *path, FAR struct stat *buf);
++#pragma GCC diagnostic pop
+ int fstat(int fd, FAR struct stat *buf);
+
+ #undef EXTERN
diff --git a/nuttx-patches/math.h.patch b/nuttx-patches/math.h.patch
new file mode 100644
index 000000000..18650027e
--- /dev/null
+++ b/nuttx-patches/math.h.patch
@@ -0,0 +1,583 @@
+diff -ruN NuttX/nuttx/arch/arm/include/math.h NuttX/nuttx/arch/arm/include/math.h
+--- NuttX/nuttx/arch/arm/include/math.h 1969-12-31 14:00:00.000000000 -1000
++++ NuttX/nuttx/arch/arm/include/math.h 2014-12-25 17:33:53.404950574 -1000
+@@ -0,0 +1,579 @@
++#ifndef _MATH_H_
++
++#define _MATH_H_
++
++#include <machine/ieeefp.h>
++#include "_ansi.h"
++
++_BEGIN_STD_C
++
++/* Natural log of 2 */
++#define _M_LN2 0.693147180559945309417
++
++#if defined(__GNUC__) && \
++ ( (__GNUC__ >= 4) || \
++ ( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 3) ) )
++
++ /* gcc >= 3.3 implicitly defines builtins for HUGE_VALx values. */
++
++# ifndef HUGE_VAL
++# define HUGE_VAL (__builtin_huge_val())
++# endif
++
++# ifndef HUGE_VALF
++# define HUGE_VALF (__builtin_huge_valf())
++# endif
++
++# ifndef HUGE_VALL
++# define HUGE_VALL (__builtin_huge_vall())
++# endif
++
++# ifndef INFINITY
++# define INFINITY (__builtin_inff())
++# endif
++
++# ifndef NAN
++# define NAN (__builtin_nanf(""))
++# endif
++
++#else /* !gcc >= 3.3 */
++
++ /* No builtins. Use fixed defines instead. (All 3 HUGE plus the INFINITY
++ * * and NAN macros are required to be constant expressions. Using a variable--
++ * * even a static const--does not meet this requirement, as it cannot be
++ * * evaluated at translation time.)
++ * * The infinities are done using numbers that are far in excess of
++ * * something that would be expected to be encountered in a floating-point
++ * * implementation. (A more certain way uses values from float.h, but that is
++ * * avoided because system includes are not supposed to include each other.)
++ * * This method might produce warnings from some compilers. (It does in
++ * * newer GCCs, but not for ones that would hit this #else.) If this happens,
++ * * please report details to the Newlib mailing list. */
++
++ #ifndef HUGE_VAL
++ #define HUGE_VAL (1.0e999999999)
++ #endif
++
++ #ifndef HUGE_VALF
++ #define HUGE_VALF (1.0e999999999F)
++ #endif
++
++ #if !defined(HUGE_VALL) && defined(_HAVE_LONG_DOUBLE)
++ #define HUGE_VALL (1.0e999999999L)
++ #endif
++
++ #if !defined(INFINITY)
++ #define INFINITY (HUGE_VALF)
++ #endif
++
++ #if !defined(NAN)
++ #if defined(__GNUC__) && defined(__cplusplus)
++ /* Exception: older g++ versions warn about the divide by 0 used in the
++ * * normal case (even though older gccs do not). This trick suppresses the
++ * * warning, but causes errors for plain gcc, so is only used in the one
++ * * special case. */
++ static const union { __ULong __i[1]; float __d; } __Nanf = {0x7FC00000};
++ #define NAN (__Nanf.__d)
++ #else
++ #define NAN (0.0F/0.0F)
++ #endif
++ #endif
++
++#endif /* !gcc >= 3.3 */
++
++/* Reentrant ANSI C functions. */
++
++#ifndef __math_68881
++extern double atan _PARAMS((double));
++extern double cos _PARAMS((double));
++extern double sin _PARAMS((double));
++extern double tan _PARAMS((double));
++extern double tanh _PARAMS((double));
++extern double frexp _PARAMS((double, int *));
++extern double modf _PARAMS((double, double *));
++extern double ceil _PARAMS((double));
++extern double fabs _PARAMS((double));
++extern double floor _PARAMS((double));
++#endif /* ! defined (__math_68881) */
++
++/* Non reentrant ANSI C functions. */
++
++#ifndef _REENT_ONLY
++#ifndef __math_68881
++extern double acos _PARAMS((double));
++extern double asin _PARAMS((double));
++extern double atan2 _PARAMS((double, double));
++extern double cosh _PARAMS((double));
++extern double sinh _PARAMS((double));
++extern double exp _PARAMS((double));
++extern double ldexp _PARAMS((double, int));
++extern double log _PARAMS((double));
++extern double log10 _PARAMS((double));
++extern double pow _PARAMS((double, double));
++extern double sqrt _PARAMS((double));
++extern double fmod _PARAMS((double, double));
++#endif /* ! defined (__math_68881) */
++#endif /* ! defined (_REENT_ONLY) */
++
++#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L
++
++/* ISO C99 types and macros. */
++
++#ifndef FLT_EVAL_METHOD
++#define FLT_EVAL_METHOD 0
++typedef float float_t;
++typedef double double_t;
++#endif /* FLT_EVAL_METHOD */
++
++#define FP_NAN 0
++#define FP_INFINITE 1
++#define FP_ZERO 2
++#define FP_SUBNORMAL 3
++#define FP_NORMAL 4
++
++#ifndef FP_ILOGB0
++# define FP_ILOGB0 (-INT_MAX)
++#endif
++#ifndef FP_ILOGBNAN
++# define FP_ILOGBNAN INT_MAX
++#endif
++
++#ifndef MATH_ERRNO
++# define MATH_ERRNO 1
++#endif
++#ifndef MATH_ERREXCEPT
++# define MATH_ERREXCEPT 2
++#endif
++#ifndef math_errhandling
++# define math_errhandling MATH_ERRNO
++#endif
++
++extern int __isinff (float x);
++extern int __isinfd (double x);
++extern int __isnanf (float x);
++extern int __isnand (double x);
++extern int __fpclassifyf (float x);
++extern int __fpclassifyd (double x);
++extern int __signbitf (float x);
++extern int __signbitd (double x);
++
++#define fpclassify(__x) \
++ ((sizeof(__x) == sizeof(float)) ? __fpclassifyf(__x) : \
++ __fpclassifyd(__x))
++
++#ifndef isfinite
++ #define isfinite(__y) \
++ (__extension__ ({int __cy = fpclassify(__y); \
++ __cy != FP_INFINITE && __cy != FP_NAN;}))
++#endif
++
++/* Note: isinf and isnan were once functions in newlib that took double
++ * * arguments. C99 specifies that these names are reserved for macros
++ * * supporting multiple floating point types. Thus, they are
++ * * now defined as macros. Implementations of the old functions
++ * * taking double arguments still exist for compatibility purposes
++ * * (prototypes for them are in <ieeefp.h>). */
++#ifndef isinf
++ #define isinf(y) (fpclassify(y) == FP_INFINITE)
++#endif
++
++#ifndef isnan
++ #define isnan(y) (fpclassify(y) == FP_NAN)
++#endif
++
++#define isnormal(y) (fpclassify(y) == FP_NORMAL)
++#define signbit(__x) \
++ ((sizeof(__x) == sizeof(float)) ? __signbitf(__x) : \
++ __signbitd(__x))
++
++#define isgreater(x,y) \
++ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
++ !isunordered(__x,__y) && (__x > __y);}))
++#define isgreaterequal(x,y) \
++ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
++ !isunordered(__x,__y) && (__x >= __y);}))
++#define isless(x,y) \
++ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
++ !isunordered(__x,__y) && (__x < __y);}))
++#define islessequal(x,y) \
++ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
++ !isunordered(__x,__y) && (__x <= __y);}))
++#define islessgreater(x,y) \
++ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
++ !isunordered(__x,__y) && (__x < __y || __x > __y);}))
++
++#define isunordered(a,b) \
++ (__extension__ ({__typeof__(a) __a = (a); __typeof__(b) __b = (b); \
++ fpclassify(__a) == FP_NAN || fpclassify(__b) == FP_NAN;}))
++
++/* Non ANSI double precision functions. */
++
++extern double infinity _PARAMS((void));
++extern double nan _PARAMS((const char *));
++extern int finite _PARAMS((double));
++extern double copysign _PARAMS((double, double));
++extern double logb _PARAMS((double));
++extern int ilogb _PARAMS((double));
++
++extern double asinh _PARAMS((double));
++extern double cbrt _PARAMS((double));
++extern double nextafter _PARAMS((double, double));
++extern double rint _PARAMS((double));
++extern double scalbn _PARAMS((double, int));
++
++extern double exp2 _PARAMS((double));
++extern double scalbln _PARAMS((double, long int));
++extern double tgamma _PARAMS((double));
++extern double nearbyint _PARAMS((double));
++extern long int lrint _PARAMS((double));
++extern long long int llrint _PARAMS((double));
++extern double round _PARAMS((double));
++extern long int lround _PARAMS((double));
++extern long long int llround _PARAMS((double));
++extern double trunc _PARAMS((double));
++extern double remquo _PARAMS((double, double, int *));
++extern double fdim _PARAMS((double, double));
++extern double fmax _PARAMS((double, double));
++extern double fmin _PARAMS((double, double));
++extern double fma _PARAMS((double, double, double));
++
++#ifndef __math_68881
++extern double log1p _PARAMS((double));
++extern double expm1 _PARAMS((double));
++#endif /* ! defined (__math_68881) */
++
++#ifndef _REENT_ONLY
++extern double acosh _PARAMS((double));
++extern double atanh _PARAMS((double));
++extern double remainder _PARAMS((double, double));
++extern double gamma _PARAMS((double));
++extern double lgamma _PARAMS((double));
++extern double erf _PARAMS((double));
++extern double erfc _PARAMS((double));
++extern double log2 _PARAMS((double));
++
++#ifndef __math_68881
++extern double hypot _PARAMS((double, double));
++#endif
++
++#endif /* ! defined (_REENT_ONLY) */
++
++/* Single precision versions of ANSI functions. */
++
++extern float atanf _PARAMS((float));
++extern float cosf _PARAMS((float));
++extern float sinf _PARAMS((float));
++extern float tanf _PARAMS((float));
++extern float tanhf _PARAMS((float));
++extern float frexpf _PARAMS((float, int *));
++extern float modff _PARAMS((float, float *));
++extern float ceilf _PARAMS((float));
++extern float fabsf _PARAMS((float));
++extern float floorf _PARAMS((float));
++
++#ifndef _REENT_ONLY
++extern float acosf _PARAMS((float));
++extern float asinf _PARAMS((float));
++extern float atan2f _PARAMS((float, float));
++extern float coshf _PARAMS((float));
++extern float sinhf _PARAMS((float));
++extern float expf _PARAMS((float));
++extern float ldexpf _PARAMS((float, int));
++extern float logf _PARAMS((float));
++extern float log10f _PARAMS((float));
++extern float powf _PARAMS((float, float));
++extern float sqrtf _PARAMS((float));
++extern float fmodf _PARAMS((float, float));
++#endif /* ! defined (_REENT_ONLY) */
++
++/* Other single precision functions. */
++
++extern float exp2f _PARAMS((float));
++extern float scalblnf _PARAMS((float, long int));
++extern float tgammaf _PARAMS((float));
++extern float nearbyintf _PARAMS((float));
++extern long int lrintf _PARAMS((float));
++extern long long llrintf _PARAMS((float));
++extern float roundf _PARAMS((float));
++extern long int lroundf _PARAMS((float));
++extern long long int llroundf _PARAMS((float));
++extern float truncf _PARAMS((float));
++extern float remquof _PARAMS((float, float, int *));
++extern float fdimf _PARAMS((float, float));
++extern float fmaxf _PARAMS((float, float));
++extern float fminf _PARAMS((float, float));
++extern float fmaf _PARAMS((float, float, float));
++
++extern float infinityf _PARAMS((void));
++extern float nanf _PARAMS((const char *));
++extern int finitef _PARAMS((float));
++extern float copysignf _PARAMS((float, float));
++extern float logbf _PARAMS((float));
++extern int ilogbf _PARAMS((float));
++
++extern float asinhf _PARAMS((float));
++extern float cbrtf _PARAMS((float));
++extern float nextafterf _PARAMS((float, float));
++extern float rintf _PARAMS((float));
++extern float scalbnf _PARAMS((float, int));
++extern float log1pf _PARAMS((float));
++extern float expm1f _PARAMS((float));
++
++#ifndef _REENT_ONLY
++extern float acoshf _PARAMS((float));
++extern float atanhf _PARAMS((float));
++extern float remainderf _PARAMS((float, float));
++extern float gammaf _PARAMS((float));
++extern float lgammaf _PARAMS((float));
++extern float erff _PARAMS((float));
++extern float erfcf _PARAMS((float));
++extern float log2f _PARAMS((float));
++extern float hypotf _PARAMS((float, float));
++#endif /* ! defined (_REENT_ONLY) */
++
++/* On platforms where long double equals double. */
++#ifdef _LDBL_EQ_DBL
++/* Reentrant ANSI C functions. */
++#ifndef __math_68881
++extern long double atanl _PARAMS((long double));
++extern long double cosl _PARAMS((long double));
++extern long double sinl _PARAMS((long double));
++extern long double tanl _PARAMS((long double));
++extern long double tanhl _PARAMS((long double));
++extern long double frexpl _PARAMS((long double value, int *));
++extern long double modfl _PARAMS((long double, long double *));
++extern long double ceill _PARAMS((long double));
++extern long double fabsl _PARAMS((long double));
++extern long double floorl _PARAMS((long double));
++extern long double log1pl _PARAMS((long double));
++extern long double expm1l _PARAMS((long double));
++#endif /* ! defined (__math_68881) */
++/* Non reentrant ANSI C functions. */
++#ifndef _REENT_ONLY
++#ifndef __math_68881
++extern long double acosl _PARAMS((long double));
++extern long double asinl _PARAMS((long double));
++extern long double atan2l _PARAMS((long double, long double));
++extern long double coshl _PARAMS((long double));
++extern long double sinhl _PARAMS((long double));
++extern long double expl _PARAMS((long double));
++extern long double ldexpl _PARAMS((long double, int));
++extern long double logl _PARAMS((long double));
++extern long double log2l _PARAMS((long double));
++extern long double log10l _PARAMS((long double));
++extern long double powl _PARAMS((long double, long double));
++extern long double sqrtl _PARAMS((long double));
++extern long double fmodl _PARAMS((long double, long double));
++extern long double hypotl _PARAMS((long double, long double));
++#endif /* ! defined (__math_68881) */
++#endif /* ! defined (_REENT_ONLY) */
++extern long double copysignl _PARAMS((long double, long double));
++extern long double nanl _PARAMS((const char *));
++extern int ilogbl _PARAMS((long double));
++extern long double asinhl _PARAMS((long double));
++extern long double cbrtl _PARAMS((long double));
++extern long double nextafterl _PARAMS((long double, long double));
++extern long double rintl _PARAMS((long double));
++extern long double scalbnl _PARAMS((long double, int));
++extern long double exp2l _PARAMS((long double));
++extern long double scalblnl _PARAMS((long double, long));
++extern long double tgammal _PARAMS((long double));
++extern long double nearbyintl _PARAMS((long double));
++extern long int lrintl _PARAMS((long double));
++extern long long int llrintl _PARAMS((long double));
++extern long double roundl _PARAMS((long double));
++extern long lroundl _PARAMS((long double));
++extern long long int llroundl _PARAMS((long double));
++extern long double truncl _PARAMS((long double));
++extern long double remquol _PARAMS((long double, long double, int *));
++extern long double fdiml _PARAMS((long double, long double));
++extern long double fmaxl _PARAMS((long double, long double));
++extern long double fminl _PARAMS((long double, long double));
++extern long double fmal _PARAMS((long double, long double, long double));
++#ifndef _REENT_ONLY
++extern long double acoshl _PARAMS((long double));
++extern long double atanhl _PARAMS((long double));
++extern long double remainderl _PARAMS((long double, long double));
++extern long double lgammal _PARAMS((long double));
++extern long double erfl _PARAMS((long double));
++extern long double erfcl _PARAMS((long double));
++#endif /* ! defined (_REENT_ONLY) */
++#else /* !_LDBL_EQ_DBL */
++#ifdef __i386__
++/* Other long double precision functions. */
++extern _LONG_DOUBLE rintl _PARAMS((_LONG_DOUBLE));
++extern long int lrintl _PARAMS((_LONG_DOUBLE));
++extern long long llrintl _PARAMS((_LONG_DOUBLE));
++#endif /* __i386__ */
++#endif /* !_LDBL_EQ_DBL */
++
++#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L */
++
++#if !defined (__STRICT_ANSI__) || defined(__cplusplus)
++
++extern double drem _PARAMS((double, double));
++extern void sincos _PARAMS((double, double *, double *));
++extern double gamma_r _PARAMS((double, int *));
++extern double lgamma_r _PARAMS((double, int *));
++
++extern double y0 _PARAMS((double));
++extern double y1 _PARAMS((double));
++extern double yn _PARAMS((int, double));
++extern double j0 _PARAMS((double));
++extern double j1 _PARAMS((double));
++extern double jn _PARAMS((int, double));
++
++extern float dremf _PARAMS((float, float));
++extern void sincosf _PARAMS((float, float *, float *));
++extern float gammaf_r _PARAMS((float, int *));
++extern float lgammaf_r _PARAMS((float, int *));
++
++extern float y0f _PARAMS((float));
++extern float y1f _PARAMS((float));
++extern float ynf _PARAMS((int, float));
++extern float j0f _PARAMS((float));
++extern float j1f _PARAMS((float));
++extern float jnf _PARAMS((int, float));
++
++/* GNU extensions */
++# ifndef exp10
++extern double exp10 _PARAMS((double));
++# endif
++# ifndef pow10
++extern double pow10 _PARAMS((double));
++# endif
++# ifndef exp10f
++extern float exp10f _PARAMS((float));
++# endif
++# ifndef pow10f
++extern float pow10f _PARAMS((float));
++# endif
++
++#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) */
++
++#ifndef __STRICT_ANSI__
++
++/* The gamma functions use a global variable, signgam. */
++#ifndef _REENT_ONLY
++#define signgam (*__signgam())
++extern int *__signgam _PARAMS((void));
++#endif /* ! defined (_REENT_ONLY) */
++
++#define __signgam_r(ptr) _REENT_SIGNGAM(ptr)
++
++/* The exception structure passed to the matherr routine. */
++/* We have a problem when using C++ since `exception' is a reserved
++ * name in C++. */
++#ifdef __cplusplus
++struct __exception
++#else
++struct exception
++#endif
++{
++ int type;
++ char *name;
++ double arg1;
++ double arg2;
++ double retval;
++ int err;
++};
++
++#ifdef __cplusplus
++extern int matherr _PARAMS((struct __exception *e));
++#else
++extern int matherr _PARAMS((struct exception *e));
++#endif
++
++/* Values for the type field of struct exception. */
++
++#define DOMAIN 1
++#define SING 2
++#define OVERFLOW 3
++#define UNDERFLOW 4
++#define TLOSS 5
++#define PLOSS 6
++
++/* Useful constants. */
++
++#define MAXFLOAT 3.40282347e+38F
++
++#define M_E 2.7182818284590452354
++#define M_LOG2E 1.4426950408889634074
++#define M_LOG10E 0.43429448190325182765
++#define M_LN2 _M_LN2
++#define M_LN10 2.30258509299404568402
++#define M_PI 3.14159265358979323846
++#define M_TWOPI (M_PI * 2.0)
++#define M_PI_2 1.57079632679489661923
++#define M_PI_4 0.78539816339744830962
++#define M_3PI_4 2.3561944901923448370E0
++#define M_SQRTPI 1.77245385090551602792981
++#define M_1_PI 0.31830988618379067154
++#define M_2_PI 0.63661977236758134308
++#define M_2_SQRTPI 1.12837916709551257390
++#define M_DEG_TO_RAD 0.01745329251994
++#define M_RAD_TO_DEG 57.2957795130823
++#define M_SQRT2 1.41421356237309504880
++#define M_SQRT1_2 0.70710678118654752440
++#define M_LN2LO 1.9082149292705877000E-10
++#define M_LN2HI 6.9314718036912381649E-1
++#define M_SQRT3 1.73205080756887719000
++#define M_IVLN10 0.43429448190325182765 /* 1 / log(10) */
++#define M_LOG2_E _M_LN2
++#define M_INVLN2 1.4426950408889633870E0 /* 1 / log(2) */
++
++
++#define M_E_F 2.7182818284590452354f
++#define M_LOG2E_F 1.4426950408889634074f
++#define M_LOG10E_F 0.43429448190325182765f
++#define M_LN2_F _M_LN2_F
++#define M_LN10_F 2.30258509299404568402f
++#define M_PI_F 3.14159265358979323846f
++#define M_TWOPI_F (M_PI_F * 2.0f)
++#define M_PI_2_F 1.57079632679489661923f
++#define M_PI_4_F 0.78539816339744830962f
++#define M_3PI_4_F 2.3561944901923448370E0f
++#define M_SQRTPI_F 1.77245385090551602792981f
++#define M_1_PI_F 0.31830988618379067154f
++#define M_2_PI_F 0.63661977236758134308f
++#define M_2_SQRTPI_F 1.12837916709551257390f
++#define M_DEG_TO_RAD_F 0.01745329251994f
++#define M_RAD_TO_DEG_F 57.2957795130823f
++#define M_SQRT2_F 1.41421356237309504880f
++#define M_SQRT1_2_F 0.70710678118654752440f
++#define M_LN2LO_F 1.9082149292705877000E-10f
++#define M_LN2HI_F 6.9314718036912381649E-1f
++#define M_SQRT3_F 1.73205080756887719000f
++#define M_IVLN10_F 0.43429448190325182765f /* 1 / log(10) */
++#define M_LOG2_E_F _M_LN2_F
++#define M_INVLN2_F 1.4426950408889633870E0f /* 1 / log(2) */
++
++/* Global control over fdlibm error handling. */
++
++enum __fdlibm_version
++{
++ __fdlibm_ieee = -1,
++ __fdlibm_svid,
++ __fdlibm_xopen,
++ __fdlibm_posix
++};
++
++#define _LIB_VERSION_TYPE enum __fdlibm_version
++#define _LIB_VERSION __fdlib_version
++
++extern __IMPORT _LIB_VERSION_TYPE _LIB_VERSION;
++
++#define _IEEE_ __fdlibm_ieee
++#define _SVID_ __fdlibm_svid
++#define _XOPEN_ __fdlibm_xopen
++#define _POSIX_ __fdlibm_posix
++
++#endif /* ! defined (__STRICT_ANSI__) */
++
++_END_STD_C
++
++#ifdef __FAST_MATH__
++#include <machine/fastmath.h>
++#endif
++
++#endif /* _MATH_H_ */
diff --git a/src/drivers/batt_smbus/batt_smbus.cpp b/src/drivers/batt_smbus/batt_smbus.cpp
index 2b5fef4d7..92b752a28 100644
--- a/src/drivers/batt_smbus/batt_smbus.cpp
+++ b/src/drivers/batt_smbus/batt_smbus.cpp
@@ -91,6 +91,7 @@
#define BATT_SMBUS_MANUFACTURE_INFO 0x25 ///< cell voltage register
#define BATT_SMBUS_CURRENT 0x2a ///< current register
#define BATT_SMBUS_MEASUREMENT_INTERVAL_MS (1000000 / 10) ///< time in microseconds, measure at 10hz
+#define BATT_SMBUS_TIMEOUT_MS 10000000 ///< timeout looking for battery 10seconds after startup
#define BATT_SMBUS_PEC_POLYNOMIAL 0x07 ///< Polynomial for calculating PEC
@@ -171,11 +172,13 @@ private:
uint8_t get_PEC(uint8_t cmd, bool reading, const uint8_t buff[], uint8_t len) const;
// internal variables
+ bool _enabled; ///< true if we have successfully connected to battery
work_s _work; ///< work queue for scheduling reads
RingBuffer *_reports; ///< buffer of recorded voltages, currents
struct battery_status_s _last_report; ///< last published report, used for test()
orb_advert_t _batt_topic; ///< uORB battery topic
orb_id_t _batt_orb_id; ///< uORB battery topic ID
+ uint64_t _start_time; ///< system time we first attempt to communicate with battery
};
namespace
@@ -189,13 +192,18 @@ extern "C" __EXPORT int batt_smbus_main(int argc, char *argv[]);
BATT_SMBUS::BATT_SMBUS(int bus, uint16_t batt_smbus_addr) :
I2C("batt_smbus", BATT_SMBUS_DEVICE_PATH, bus, batt_smbus_addr, 400000),
+ _enabled(false),
_work{},
_reports(nullptr),
_batt_topic(-1),
- _batt_orb_id(nullptr)
+ _batt_orb_id(nullptr),
+ _start_time(0)
{
// work_cancel in the dtor will explode if we don't do this...
memset(&_work, 0, sizeof(_work));
+
+ // capture startup time
+ _start_time = hrt_absolute_time();
}
BATT_SMBUS::~BATT_SMBUS()
@@ -330,11 +338,20 @@ BATT_SMBUS::cycle_trampoline(void *arg)
void
BATT_SMBUS::cycle()
{
+ // get current time
+ uint64_t now = hrt_absolute_time();
+
+ // exit without rescheduling if we have failed to find a battery after 10 seconds
+ if (!_enabled && (now - _start_time > BATT_SMBUS_TIMEOUT_MS)) {
+ warnx("did not find smart battery");
+ return;
+ }
+
// read data from sensor
struct battery_status_s new_report;
// set time of reading
- new_report.timestamp = hrt_absolute_time();
+ new_report.timestamp = now;
// read voltage
uint16_t tmp;
@@ -375,6 +392,9 @@ BATT_SMBUS::cycle()
// notify anyone waiting for data
poll_notify(POLLIN);
+
+ // record we are working
+ _enabled = true;
}
// schedule a fresh cycle call when the measurement is done
diff --git a/src/drivers/boards/aerocore/aerocore_init.c b/src/drivers/boards/aerocore/aerocore_init.c
index 1ce235da8..91dbe4b81 100644
--- a/src/drivers/boards/aerocore/aerocore_init.c
+++ b/src/drivers/boards/aerocore/aerocore_init.c
@@ -53,11 +53,11 @@
#include <errno.h>
#include <nuttx/arch.h>
-#include <nuttx/spi.h>
+#include <nuttx/spi/spi.h>
#include <nuttx/i2c.h>
#include <nuttx/mmcsd.h>
#include <nuttx/analog/adc.h>
-#include <nuttx/gran.h>
+#include <nuttx/mm/gran.h>
#include <stm32.h>
#include "board_config.h"
@@ -191,7 +191,7 @@ stm32_boardinitialize(void)
stm32_spiinitialize();
/* configure LEDs */
- up_ledinit();
+ board_led_initialize();
}
/****************************************************************************
@@ -228,6 +228,21 @@ __EXPORT int nsh_archinitialize(void)
stm32_configgpio(GPIO_ADC1_IN12); /* J1 breakout */
stm32_configgpio(GPIO_ADC1_IN13); /* J1 breakout */
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
+
+ /* run C++ ctors before we go any further */
+
+ up_cxxinitialize();
+
+# if defined(CONFIG_EXAMPLES_NSH_CXXINITIALIZE)
+# error CONFIG_EXAMPLES_NSH_CXXINITIALIZE Must not be defined! Use CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE.
+# endif
+
+#else
+# error platform is dependent on c++ both CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE must be defined.
+#endif
+
+
/* configure the high-resolution time/callout interface */
hrt_init();
@@ -264,7 +279,7 @@ __EXPORT int nsh_archinitialize(void)
spi3 = up_spiinitialize(3);
if (!spi3) {
message("[boot] FAILED to initialize SPI port 3\n");
- up_ledon(LED_AMBER);
+ board_led_on(LED_AMBER);
return -ENODEV;
}
/* Default: 1MHz, 8 bits, Mode 3 */
@@ -281,7 +296,7 @@ __EXPORT int nsh_archinitialize(void)
spi4 = up_spiinitialize(4);
if (!spi4) {
message("[boot] FAILED to initialize SPI port 4\n");
- up_ledon(LED_AMBER);
+ board_led_on(LED_AMBER);
return -ENODEV;
}
/* Default: ~10MHz, 8 bits, Mode 3 */
diff --git a/src/drivers/boards/aerocore/aerocore_spi.c b/src/drivers/boards/aerocore/aerocore_spi.c
index e329bd9d1..8577d4938 100644
--- a/src/drivers/boards/aerocore/aerocore_spi.c
+++ b/src/drivers/boards/aerocore/aerocore_spi.c
@@ -47,7 +47,7 @@
#include <stdbool.h>
#include <debug.h>
-#include <nuttx/spi.h>
+#include <nuttx/spi/spi.h>
#include <arch/board/board.h>
#include <up_arch.h>
diff --git a/src/drivers/boards/aerocore/module.mk b/src/drivers/boards/aerocore/module.mk
index 0a2d91009..05e3d878d 100644
--- a/src/drivers/boards/aerocore/module.mk
+++ b/src/drivers/boards/aerocore/module.mk
@@ -7,4 +7,10 @@ SRCS = aerocore_init.c \
aerocore_spi.c \
aerocore_led.c
+ENABLE_CXXINITIALIZE=$(call check_nuttx_config ,"CONFIG_HAVE_CXX 1", $(NUTTX_CONFIG_H))
+ENABLE_CXXINITIALIZE+=$(call check_nuttx_config ,"CONFIG_HAVE_CXXINITIALIZE 1", $(NUTTX_CONFIG_H))
+ifeq ("$(ENABLE_CXXINITIALIZE)",$(nuttx_config_2true))
+SRCS += ../../../modules/systemlib/up_cxxinitialize.c
+endif
+
MAXOPTIMIZATION = -Os
diff --git a/src/drivers/boards/px4fmu-v1/module.mk b/src/drivers/boards/px4fmu-v1/module.mk
index 5e1a27d5a..ff717fe92 100644
--- a/src/drivers/boards/px4fmu-v1/module.mk
+++ b/src/drivers/boards/px4fmu-v1/module.mk
@@ -9,4 +9,10 @@ SRCS = px4fmu_can.c \
px4fmu_usb.c \
px4fmu_led.c
+ENABLE_CXXINITIALIZE=$(call check_nuttx_config ,"CONFIG_HAVE_CXX 1", $(NUTTX_CONFIG_H))
+ENABLE_CXXINITIALIZE+=$(call check_nuttx_config ,"CONFIG_HAVE_CXXINITIALIZE 1", $(NUTTX_CONFIG_H))
+ifeq ("$(ENABLE_CXXINITIALIZE)",$(nuttx_config_2true))
+SRCS += ../../../modules/systemlib/up_cxxinitialize.c
+endif
+
MAXOPTIMIZATION = -Os
diff --git a/src/drivers/boards/px4fmu-v1/px4fmu_init.c b/src/drivers/boards/px4fmu-v1/px4fmu_init.c
index 293021f8b..c9d4cce1e 100644
--- a/src/drivers/boards/px4fmu-v1/px4fmu_init.c
+++ b/src/drivers/boards/px4fmu-v1/px4fmu_init.c
@@ -53,7 +53,7 @@
#include <errno.h>
#include <nuttx/arch.h>
-#include <nuttx/spi.h>
+#include <nuttx/spi/spi.h>
#include <nuttx/i2c.h>
#include <nuttx/mmcsd.h>
#include <nuttx/analog/adc.h>
@@ -69,6 +69,12 @@
#include <systemlib/cpuload.h>
+/* todo: This is constant but not proper */
+__BEGIN_DECLS
+extern void led_off(int led);
+__END_DECLS
+
+
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
@@ -77,33 +83,6 @@
/* Debug ********************************************************************/
-#ifdef CONFIG_CPP_HAVE_VARARGS
-# ifdef CONFIG_DEBUG
-# define message(...) lowsyslog(__VA_ARGS__)
-# else
-# define message(...) printf(__VA_ARGS__)
-# endif
-#else
-# ifdef CONFIG_DEBUG
-# define message lowsyslog
-# else
-# define message printf
-# endif
-#endif
-
-/*
- * Ideally we'd be able to get these from up_internal.h,
- * but since we want to be able to disable the NuttX use
- * of leds for system indication at will and there is no
- * separate switch, we need to build independent of the
- * CONFIG_ARCH_LEDS configuration switch.
- */
-__BEGIN_DECLS
-extern void led_init(void);
-extern void led_on(int led);
-extern void led_off(int led);
-__END_DECLS
-
/****************************************************************************
* Protected Functions
****************************************************************************/
@@ -127,8 +106,8 @@ __EXPORT void stm32_boardinitialize(void)
/* configure SPI interfaces */
stm32_spiinitialize();
- /* configure LEDs (empty call to NuttX' ledinit) */
- up_ledinit();
+ /* configure LEDs */
+ board_led_initialize();
}
/****************************************************************************
@@ -166,6 +145,20 @@ __EXPORT int nsh_archinitialize(void)
stm32_configgpio(GPIO_ADC1_IN11);
/* IN12 and IN13 further below */
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
+
+ /* run C++ ctors before we go any further */
+
+ up_cxxinitialize();
+
+# if defined(CONFIG_EXAMPLES_NSH_CXXINITIALIZE)
+# error CONFIG_EXAMPLES_NSH_CXXINITIALIZE Must not be defined! Use CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE.
+# endif
+
+#else
+# error platform is dependent on c++ both CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE must be defined.
+#endif
+
/* configure the high-resolution time/callout interface */
hrt_init();
@@ -202,8 +195,8 @@ __EXPORT int nsh_archinitialize(void)
spi1 = up_spiinitialize(1);
if (!spi1) {
- message("[boot] FAILED to initialize SPI port 1\r\n");
- up_ledon(LED_AMBER);
+ syslog(LOG_ERR, "[boot] FAILED to initialize SPI port 1\r\n");
+ board_led_on(LED_AMBER);
return -ENODEV;
}
@@ -216,7 +209,7 @@ __EXPORT int nsh_archinitialize(void)
SPI_SELECT(spi1, PX4_SPIDEV_MPU, false);
up_udelay(20);
- message("[boot] Successfully initialized SPI port 1\r\n");
+ syslog(LOG_INFO, "[boot] Successfully initialized SPI port 1\r\n");
/*
* If SPI2 is enabled in the defconfig, we loose some ADC pins as chip selects.
@@ -232,10 +225,10 @@ __EXPORT int nsh_archinitialize(void)
SPI_SELECT(spi2, PX4_SPIDEV_GYRO, false);
SPI_SELECT(spi2, PX4_SPIDEV_ACCEL_MAG, false);
- message("[boot] Initialized SPI port2 (ADC IN12/13 blocked)\n");
+ syslog(LOG_INFO, "[boot] Initialized SPI port2 (ADC IN12/13 blocked)\n");
#else
spi2 = NULL;
- message("[boot] Enabling IN12/13 instead of SPI2\n");
+ syslog(LOG_INFO, "[boot] Enabling IN12/13 instead of SPI2\n");
/* no SPI2, use pins for ADC */
stm32_configgpio(GPIO_ADC1_IN12);
stm32_configgpio(GPIO_ADC1_IN13); // jumperable to MPU6000 DRDY on some boards
@@ -243,27 +236,27 @@ __EXPORT int nsh_archinitialize(void)
/* Get the SPI port for the microSD slot */
- message("[boot] Initializing SPI port 3\n");
+ syslog(LOG_INFO, "[boot] Initializing SPI port 3\n");
spi3 = up_spiinitialize(3);
if (!spi3) {
- message("[boot] FAILED to initialize SPI port 3\n");
- up_ledon(LED_AMBER);
+ syslog(LOG_ERR, "[boot] FAILED to initialize SPI port 3\n");
+ board_led_on(LED_AMBER);
return -ENODEV;
}
- message("[boot] Successfully initialized SPI port 3\n");
+ syslog(LOG_INFO, "[boot] Successfully initialized SPI port 3\n");
/* Now bind the SPI interface to the MMCSD driver */
result = mmcsd_spislotinitialize(CONFIG_NSH_MMCSDMINOR, CONFIG_NSH_MMCSDSLOTNO, spi3);
if (result != OK) {
- message("[boot] FAILED to bind SPI port 3 to the MMCSD driver\n");
- up_ledon(LED_AMBER);
+ syslog(LOG_ERR, "[boot] FAILED to bind SPI port 3 to the MMCSD driver\n");
+ board_led_on(LED_AMBER);
return -ENODEV;
}
- message("[boot] Successfully bound SPI port 3 to the MMCSD driver\n");
+ syslog(LOG_INFO, "[boot] Successfully bound SPI port 3 to the MMCSD driver\n");
return OK;
}
diff --git a/src/drivers/boards/px4fmu-v1/px4fmu_spi.c b/src/drivers/boards/px4fmu-v1/px4fmu_spi.c
index 17e6862f7..a47498e95 100644
--- a/src/drivers/boards/px4fmu-v1/px4fmu_spi.c
+++ b/src/drivers/boards/px4fmu-v1/px4fmu_spi.c
@@ -47,7 +47,7 @@
#include <stdbool.h>
#include <debug.h>
-#include <nuttx/spi.h>
+#include <nuttx/spi/spi.h>
#include <arch/board/board.h>
#include "up_arch.h"
@@ -121,6 +121,8 @@ __EXPORT uint8_t stm32_spi1status(FAR struct spi_dev_s *dev, enum spi_dev_e devi
return SPI_STATUS_PRESENT;
}
+
+#ifdef CONFIG_STM32_SPI2
__EXPORT void stm32_spi2select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
{
/* SPI select is active low, so write !selected to select the device */
@@ -138,6 +140,7 @@ __EXPORT uint8_t stm32_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devi
{
return SPI_STATUS_PRESENT;
}
+#endif
__EXPORT void stm32_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
diff --git a/src/drivers/boards/px4fmu-v2/module.mk b/src/drivers/boards/px4fmu-v2/module.mk
index 103232b0c..e62e48e99 100644
--- a/src/drivers/boards/px4fmu-v2/module.mk
+++ b/src/drivers/boards/px4fmu-v2/module.mk
@@ -9,4 +9,11 @@ SRCS = px4fmu_can.c \
px4fmu_usb.c \
px4fmu2_led.c
+
+ENABLE_CXXINITIALIZE=$(call check_nuttx_config ,"CONFIG_HAVE_CXX 1", $(NUTTX_CONFIG_H))
+ENABLE_CXXINITIALIZE+=$(call check_nuttx_config ,"CONFIG_HAVE_CXXINITIALIZE 1", $(NUTTX_CONFIG_H))
+ifeq ("$(ENABLE_CXXINITIALIZE)",$(nuttx_config_2true))
+SRCS += ../../../modules/systemlib/up_cxxinitialize.c
+endif
+
MAXOPTIMIZATION = -Os
diff --git a/src/drivers/boards/px4fmu-v2/px4fmu2_init.c b/src/drivers/boards/px4fmu-v2/px4fmu2_init.c
index 9b25c574a..e32c18759 100644
--- a/src/drivers/boards/px4fmu-v2/px4fmu2_init.c
+++ b/src/drivers/boards/px4fmu-v2/px4fmu2_init.c
@@ -53,12 +53,12 @@
#include <errno.h>
#include <nuttx/arch.h>
-#include <nuttx/spi.h>
+#include <nuttx/spi/spi.h>
#include <nuttx/i2c.h>
#include <nuttx/sdio.h>
#include <nuttx/mmcsd.h>
#include <nuttx/analog/adc.h>
-#include <nuttx/gran.h>
+#include <nuttx/mm/gran.h>
#include <stm32.h>
#include "board_config.h"
@@ -72,6 +72,11 @@
#include <systemlib/cpuload.h>
#include <systemlib/perf_counter.h>
+/* todo: This is constant but not proper */
+__BEGIN_DECLS
+extern void led_off(int led);
+__END_DECLS
+
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
@@ -94,19 +99,6 @@
# endif
#endif
-/*
- * Ideally we'd be able to get these from up_internal.h,
- * but since we want to be able to disable the NuttX use
- * of leds for system indication at will and there is no
- * separate switch, we need to build independent of the
- * CONFIG_ARCH_LEDS configuration switch.
- */
-__BEGIN_DECLS
-extern void led_init(void);
-extern void led_on(int led);
-extern void led_off(int led);
-__END_DECLS
-
/****************************************************************************
* Protected Functions
****************************************************************************/
@@ -116,6 +108,8 @@ __END_DECLS
# error microSD DMA support requires CONFIG_GRAN
# endif
+#ifdef CONFIG_FAT_DMAMEMORY
+
static GRAN_HANDLE dma_allocator;
/*
@@ -130,6 +124,7 @@ static GRAN_HANDLE dma_allocator;
*/
static uint8_t g_dma_heap[8192] __attribute__((aligned(64)));
static perf_counter_t g_dma_perf;
+#endif
static void
dma_alloc_init(void)
@@ -139,7 +134,7 @@ dma_alloc_init(void)
7, /* 128B granule - must be > alignment (XXX bug?) */
6); /* 64B alignment */
if (dma_allocator == NULL) {
- message("[boot] DMA allocator setup FAILED");
+ syslog(LOG_ERR, "[boot] DMA allocator setup FAILED");
} else {
g_dma_perf = perf_alloc(PC_COUNT, "DMA allocations");
}
@@ -192,7 +187,7 @@ stm32_boardinitialize(void)
stm32_spiinitialize();
/* configure LEDs */
- up_ledinit();
+ board_led_initialize();
}
/****************************************************************************
@@ -244,6 +239,20 @@ __EXPORT int nsh_archinitialize(void)
stm32_configgpio(GPIO_VDD_5V_HIPOWER_OC);
stm32_configgpio(GPIO_VDD_5V_PERIPH_OC);
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
+
+ /* run C++ ctors before we go any further */
+
+ up_cxxinitialize();
+
+# if defined(CONFIG_EXAMPLES_NSH_CXXINITIALIZE)
+# error CONFIG_EXAMPLES_NSH_CXXINITIALIZE Must not be defined! Use CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE.
+# endif
+
+#else
+# error platform is dependent on c++ both CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE must be defined.
+#endif
+
/* configure the high-resolution time/callout interface */
hrt_init();
@@ -281,8 +290,8 @@ __EXPORT int nsh_archinitialize(void)
spi1 = up_spiinitialize(1);
if (!spi1) {
- message("[boot] FAILED to initialize SPI port 1\n");
- up_ledon(LED_AMBER);
+ syslog(LOG_ERR, "[boot] FAILED to initialize SPI port 1\n");
+ board_led_on(LED_AMBER);
return -ENODEV;
}
@@ -296,15 +305,15 @@ __EXPORT int nsh_archinitialize(void)
SPI_SELECT(spi1, PX4_SPIDEV_MPU, false);
up_udelay(20);
- message("[boot] Initialized SPI port 1 (SENSORS)\n");
+ syslog(LOG_INFO, "[boot] Initialized SPI port 1 (SENSORS)\n");
/* Get the SPI port for the FRAM */
spi2 = up_spiinitialize(2);
if (!spi2) {
- message("[boot] FAILED to initialize SPI port 2\n");
- up_ledon(LED_AMBER);
+ syslog(LOG_ERR, "[boot] FAILED to initialize SPI port 2\n");
+ board_led_on(LED_AMBER);
return -ENODEV;
}
@@ -317,7 +326,7 @@ __EXPORT int nsh_archinitialize(void)
SPI_SETMODE(spi2, SPIDEV_MODE3);
SPI_SELECT(spi2, SPIDEV_FLASH, false);
- message("[boot] Initialized SPI port 2 (RAMTRON FRAM)\n");
+ syslog(LOG_INFO, "[boot] Initialized SPI port 2 (RAMTRON FRAM)\n");
spi4 = up_spiinitialize(4);
@@ -335,7 +344,7 @@ __EXPORT int nsh_archinitialize(void)
sdio = sdio_initialize(CONFIG_NSH_MMCSDSLOTNO);
if (!sdio) {
- message("[boot] Failed to initialize SDIO slot %d\n",
+ syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n",
CONFIG_NSH_MMCSDSLOTNO);
return -ENODEV;
}
@@ -343,14 +352,14 @@ __EXPORT int nsh_archinitialize(void)
/* Now bind the SDIO interface to the MMC/SD driver */
int ret = mmcsd_slotinitialize(CONFIG_NSH_MMCSDMINOR, sdio);
if (ret != OK) {
- message("[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret);
+ syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret);
return ret;
}
/* Then let's guess and say that there is a card in the slot. There is no card detect GPIO. */
sdio_mediachange(sdio, true);
- message("[boot] Initialized SDIO\n");
+ syslog(LOG_INFO, "[boot] Initialized SDIO\n");
#endif
return OK;
diff --git a/src/drivers/boards/px4fmu-v2/px4fmu_spi.c b/src/drivers/boards/px4fmu-v2/px4fmu_spi.c
index 27f193513..b98cd999b 100644
--- a/src/drivers/boards/px4fmu-v2/px4fmu_spi.c
+++ b/src/drivers/boards/px4fmu-v2/px4fmu_spi.c
@@ -47,7 +47,7 @@
#include <stdbool.h>
#include <debug.h>
-#include <nuttx/spi.h>
+#include <nuttx/spi/spi.h>
#include <arch/board/board.h>
#include <up_arch.h>
diff --git a/src/drivers/boards/px4io-v1/module.mk b/src/drivers/boards/px4io-v1/module.mk
index a7a14dd07..52f17f3f2 100644
--- a/src/drivers/boards/px4io-v1/module.mk
+++ b/src/drivers/boards/px4io-v1/module.mk
@@ -5,4 +5,10 @@
SRCS = px4io_init.c \
px4io_pwm_servo.c
+ENABLE_CXXINITIALIZE=$(call check_nuttx_config ,"CONFIG_HAVE_CXX 1", $(NUTTX_CONFIG_H))
+ENABLE_CXXINITIALIZE+=$(call check_nuttx_config ,"CONFIG_HAVE_CXXINITIALIZE 1", $(NUTTX_CONFIG_H))
+ifeq ("$(ENABLE_CXXINITIALIZE)",$(nuttx_config_2true))
+SRCS += ../../../modules/systemlib/up_cxxinitialize.c
+endif
+
MAXOPTIMIZATION = -Os
diff --git a/src/drivers/boards/px4io-v2/module.mk b/src/drivers/boards/px4io-v2/module.mk
index 3f0e9a0b3..5613ad405 100644
--- a/src/drivers/boards/px4io-v2/module.mk
+++ b/src/drivers/boards/px4io-v2/module.mk
@@ -5,4 +5,10 @@
SRCS = px4iov2_init.c \
px4iov2_pwm_servo.c
+ENABLE_CXXINITIALIZE=$(call check_nuttx_config ,"CONFIG_HAVE_CXX 1", $(NUTTX_CONFIG_H))
+ENABLE_CXXINITIALIZE+=$(call check_nuttx_config ,"CONFIG_HAVE_CXXINITIALIZE 1", $(NUTTX_CONFIG_H))
+ifeq ("$(ENABLE_CXXINITIALIZE)",$(nuttx_config_2true))
+SRCS += ../../../modules/systemlib/up_cxxinitialize.c
+endif
+
MAXOPTIMIZATION = -Os
diff --git a/src/drivers/device/spi.h b/src/drivers/device/spi.h
index 1d9837689..95b06cd1a 100644
--- a/src/drivers/device/spi.h
+++ b/src/drivers/device/spi.h
@@ -42,7 +42,7 @@
#include "device.h"
-#include <nuttx/spi.h>
+#include <nuttx/spi/spi.h>
namespace device __EXPORT
{
diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp
index 0451bbd1b..ffcb1c907 100644
--- a/src/drivers/px4io/px4io.cpp
+++ b/src/drivers/px4io/px4io.cpp
@@ -622,8 +622,15 @@ PX4IO::init()
return ret;
/* get some parameters */
- unsigned protocol = io_reg_get(PX4IO_PAGE_CONFIG, PX4IO_P_CONFIG_PROTOCOL_VERSION);
+ unsigned protocol;
+ hrt_abstime start_try_time = hrt_absolute_time();
+ do {
+ usleep(2000);
+ protocol = io_reg_get(PX4IO_PAGE_CONFIG, PX4IO_P_CONFIG_PROTOCOL_VERSION);
+ } while (protocol == _io_reg_get_error && (hrt_elapsed_time(&start_try_time) < 700U * 1000U));
+
+ /* if the error still persists after timing out, we give up */
if (protocol == _io_reg_get_error) {
log("failed to communicate with IO");
mavlink_log_emergency(_mavlink_fd, "[IO] failed to communicate with IO, abort.");
@@ -2860,10 +2867,10 @@ checkcrc(int argc, char *argv[])
}
if (ret != OK) {
- printf("check CRC failed - %d\n", ret);
+ printf("[PX4IO::checkcrc] check CRC failed - %d\n", ret);
exit(1);
}
- printf("CRCs match\n");
+ printf("[PX4IO::checkcrc] CRCs match\n");
exit(0);
}
diff --git a/src/drivers/px4io/px4io_serial.cpp b/src/drivers/px4io/px4io_serial.cpp
index d227e15d5..928e2dab8 100644
--- a/src/drivers/px4io/px4io_serial.cpp
+++ b/src/drivers/px4io/px4io_serial.cpp
@@ -292,7 +292,7 @@ PX4IO_serial::ioctl(unsigned operation, unsigned &arg)
case 1: /* XXX magic number - test operation */
switch (arg) {
case 0:
- lowsyslog("test 0\n");
+ lowsyslog(LOG_INFO, "test 0\n");
/* kill DMA, this is a PIO test */
stm32_dmastop(_tx_dma);
@@ -316,7 +316,7 @@ PX4IO_serial::ioctl(unsigned operation, unsigned &arg)
fails++;
if (count >= 5000) {
- lowsyslog("==== test 1 : %u failures ====\n", fails);
+ lowsyslog(LOG_INFO, "==== test 1 : %u failures ====\n", fails);
perf_print_counter(_pc_txns);
perf_print_counter(_pc_dmasetup);
perf_print_counter(_pc_retries);
@@ -333,7 +333,7 @@ PX4IO_serial::ioctl(unsigned operation, unsigned &arg)
return 0;
}
case 2:
- lowsyslog("test 2\n");
+ lowsyslog(LOG_INFO, "test 2\n");
return 0;
}
default:
@@ -555,7 +555,7 @@ PX4IO_serial::_wait_complete()
}
/* we might? see this for EINTR */
- lowsyslog("unexpected ret %d/%d\n", ret, errno);
+ lowsyslog(LOG_ERR, "unexpected ret %d/%d\n", ret, errno);
}
/* reset DMA status */
diff --git a/src/drivers/px4io/px4io_uploader.cpp b/src/drivers/px4io/px4io_uploader.cpp
index fb16f891f..02e527695 100644
--- a/src/drivers/px4io/px4io_uploader.cpp
+++ b/src/drivers/px4io/px4io_uploader.cpp
@@ -621,6 +621,7 @@ int
PX4IO_Uploader::reboot()
{
send(PROTO_REBOOT);
+ up_udelay(100*1000); // Ensure the farend is in wait for char.
send(PROTO_EOC);
return OK;
diff --git a/src/drivers/stm32/tone_alarm/tone_alarm.cpp b/src/drivers/stm32/tone_alarm/tone_alarm.cpp
index 8f523b390..13796935b 100644
--- a/src/drivers/stm32/tone_alarm/tone_alarm.cpp
+++ b/src/drivers/stm32/tone_alarm/tone_alarm.cpp
@@ -672,7 +672,7 @@ ToneAlarm::next_note()
// tune looks bad (unexpected EOF, bad character, etc.)
tune_error:
- lowsyslog("tune error\n");
+ lowsyslog(LOG_ERR, "tune error\n");
_repeat = false; // don't loop on error
// stop (and potentially restart) the tune
diff --git a/src/modules/attitude_estimator_ekf/module.mk b/src/modules/attitude_estimator_ekf/module.mk
index 1158536e1..d158d7a49 100644
--- a/src/modules/attitude_estimator_ekf/module.mk
+++ b/src/modules/attitude_estimator_ekf/module.mk
@@ -43,6 +43,6 @@ SRCS = attitude_estimator_ekf_main.cpp \
MODULE_STACKSIZE = 1200
-EXTRACFLAGS = -Wno-float-equal -Wframe-larger-than=3600
+EXTRACFLAGS = -Wno-float-equal -Wframe-larger-than=3700
EXTRACXXFLAGS = -Wframe-larger-than=2400
diff --git a/src/modules/px4iofirmware/px4io.c b/src/modules/px4iofirmware/px4io.c
index 14ee9cb40..a2f8965bd 100644
--- a/src/modules/px4iofirmware/px4io.c
+++ b/src/modules/px4iofirmware/px4io.c
@@ -226,9 +226,20 @@ calculate_fw_crc(void)
int
user_start(int argc, char *argv[])
{
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
+
/* run C++ ctors before we go any further */
+
up_cxxinitialize();
+# if defined(CONFIG_EXAMPLES_NSH_CXXINITIALIZE)
+# error CONFIG_EXAMPLES_NSH_CXXINITIALIZE Must not be defined! Use CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE.
+# endif
+
+#else
+# error platform is dependent on c++ both CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE must be defined.
+#endif
+
/* reset all to zero */
memset(&system_state, 0, sizeof(system_state));
@@ -247,7 +258,7 @@ user_start(int argc, char *argv[])
#endif
/* print some startup info */
- lowsyslog("\nPX4IO: starting\n");
+ lowsyslog(LOG_INFO, "\nPX4IO: starting\n");
/* default all the LEDs to off while we start */
LED_AMBER(false);
@@ -292,7 +303,7 @@ user_start(int argc, char *argv[])
perf_counter_t loop_perf = perf_alloc(PC_INTERVAL, "loop");
struct mallinfo minfo = mallinfo();
- lowsyslog("MEM: free %u, largest %u\n", minfo.mxordblk, minfo.fordblks);
+ lowsyslog(LOG_INFO, "MEM: free %u, largest %u\n", minfo.mxordblk, minfo.fordblks);
/* initialize PWM limit lib */
pwm_limit_init(&pwm_limit);
@@ -312,7 +323,7 @@ user_start(int argc, char *argv[])
*/
if (minfo.mxordblk < 600) {
- lowsyslog("ERR: not enough MEM");
+ lowsyslog(LOG_ERR, "ERR: not enough MEM");
bool phase = false;
while (true) {
diff --git a/src/modules/px4iofirmware/px4io.h b/src/modules/px4iofirmware/px4io.h
index 93a33490f..04fa94ae9 100644
--- a/src/modules/px4iofirmware/px4io.h
+++ b/src/modules/px4iofirmware/px4io.h
@@ -63,7 +63,7 @@
#ifdef DEBUG
# include <debug.h>
-# define debug(fmt, args...) lowsyslog(fmt "\n", ##args)
+# define debug(fmt, args...) lowsyslog(LOG_DEBUG,fmt "\n", ##args)
#else
# define debug(fmt, args...) do {} while(0)
#endif
diff --git a/src/modules/px4iofirmware/sbus.c b/src/modules/px4iofirmware/sbus.c
index d76ec55f0..fee9d656d 100644
--- a/src/modules/px4iofirmware/sbus.c
+++ b/src/modules/px4iofirmware/sbus.c
@@ -112,10 +112,8 @@ sbus_init(const char *device)
partial_frame_count = 0;
last_rx_time = hrt_absolute_time();
- debug("S.Bus: ready");
-
} else {
- debug("S.Bus: open failed");
+ dbg("S.Bus: open failed");
}
return sbus_fd;
diff --git a/src/modules/sdlog2/sdlog2.c b/src/modules/sdlog2/sdlog2.c
index ac08b0d23..b0127d02c 100644
--- a/src/modules/sdlog2/sdlog2.c
+++ b/src/modules/sdlog2/sdlog2.c
@@ -56,6 +56,7 @@
#include <string.h>
#include <ctype.h>
#include <systemlib/err.h>
+#include <systemlib/px4_macros.h>
#include <unistd.h>
#include <drivers/drv_hrt.h>
#include <math.h>
@@ -1092,6 +1093,11 @@ int sdlog2_thread_main(int argc, char *argv[])
int encoders_sub;
} subs;
+ /* Make sure we have enough file descriptors to support this many subscriptions
+ * taking into account stdin,stdout and std err
+ */
+ CCASSERT((sizeof(subs) / sizeof (int)) < CONFIG_NFILE_DESCRIPTORS-3);
+
subs.cmd_sub = orb_subscribe(ORB_ID(vehicle_command));
subs.status_sub = orb_subscribe(ORB_ID(vehicle_status));
subs.vtol_status_sub = orb_subscribe(ORB_ID(vtol_vehicle_status));
diff --git a/src/modules/systemlib/px4_macros.h b/src/modules/systemlib/px4_macros.h
new file mode 100644
index 000000000..956355b2c
--- /dev/null
+++ b/src/modules/systemlib/px4_macros.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ *
+ * Copyright (C) 2014 PX4 Development Team. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name PX4 nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/**
+ * @file px4_macros.h
+ *
+ * A set of useful macros for enhanced runtime and compile time
+ * error detection and warning suppression.
+ *
+ * Define NO_BLOAT to reduce bloat from file name inclusion.
+ *
+ * The arraySize() will compute the size of an array regardless
+ * it's type
+ *
+ * INVALID_CASE(c) should be used is case statements to ferret out
+ * unintended behavior
+ *
+ * UNUSED(var) will suppress compile time warnings of unused
+ * variables
+ *
+ * CCASSERT(predicate) Will generate a compile time error it the
+ * predicate is false
+ */
+#include <assert.h>
+
+#ifndef _PX4_MACROS_H
+#define _PX4_MACROS_H
+
+
+#if !defined(arraySize)
+#define arraySize(a) (sizeof((a))/sizeof((a[0])))
+#endif
+
+#if !defined(NO_BLOAT)
+#if defined(__BASE_FILE__)
+#define _FILE_NAME_ __BASE_FILE__
+#else
+#define _FILE_NAME_ __FILE__
+#endif
+#else
+#define _FILE_NAME_ ""
+#endif
+
+#if !defined(INVALID_CASE)
+#define INVALID_CASE(c) printf("Invalid Case %d, %s:%d",(c),__BASE_FILE__,__LINE__) /* todo use PANIC */
+#endif
+
+#if !defined(UNUSED)
+#define UNUSED(var) (void)(var)
+#endif
+
+#if !defined(CAT)
+#if !defined(_CAT)
+#define _CAT(a, b) a ## b
+#endif
+#define CAT(a, b) _CAT(a, b)
+#endif
+
+#if !defined(CCASSERT)
+#if defined(static_assert)
+# define CCASSERT(predicate) static_assert(predicate)
+# else
+# define CCASSERT(predicate) _x_CCASSERT_LINE(predicate, __LINE__)
+# if !defined(_x_CCASSERT_LINE)
+# define _x_CCASSERT_LINE(predicate, line) typedef char CAT(constraint_violated_on_line_,line)[2*((predicate)!=0)-1] __attribute__ ((unused)) ;
+# endif
+# endif
+#endif
+
+
+#endif /* _PX4_MACROS_H */
diff --git a/src/modules/systemlib/up_cxxinitialize.c b/src/modules/systemlib/up_cxxinitialize.c
index c78f29570..4028945e5 100644
--- a/src/modules/systemlib/up_cxxinitialize.c
+++ b/src/modules/systemlib/up_cxxinitialize.c
@@ -1,8 +1,8 @@
/************************************************************************************
- * configs/stm32f4discovery/src/up_cxxinitialize.c
+ * src/modules/systemlib/up_cxxinitialize.c
* arch/arm/src/board/up_cxxinitialize.c
*
- * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -44,9 +44,10 @@
#include <nuttx/arch.h>
-//#include <arch/stm32/chip.h>
-//#include "chip.h"
+#include <arch/stm32/chip.h>
+#include "chip.h"
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
/************************************************************************************
* Definitions
************************************************************************************/
@@ -122,7 +123,7 @@ extern uint32_t _etext;
*
***************************************************************************/
-__EXPORT void up_cxxinitialize(void)
+void up_cxxinitialize(void)
{
initializer_t *initp;
@@ -148,3 +149,6 @@ __EXPORT void up_cxxinitialize(void)
}
}
}
+
+#endif /* CONFIG_HAVE_CXX && CONFIG_HAVE_CXXINITIALIZE */
+
diff --git a/src/modules/uavcan/actuators/esc.cpp b/src/modules/uavcan/actuators/esc.cpp
index 9f682c7e1..51589e43e 100644
--- a/src/modules/uavcan/actuators/esc.cpp
+++ b/src/modules/uavcan/actuators/esc.cpp
@@ -49,6 +49,13 @@ UavcanEscController::UavcanEscController(uavcan::INode &node) :
_uavcan_sub_status(node),
_orb_timer(node)
{
+ if (_perfcnt_invalid_input == nullptr) {
+ errx(1, "uavcan: couldn't allocate _perfcnt_invalid_input");
+ }
+
+ if (_perfcnt_scaling_error == nullptr) {
+ errx(1, "uavcan: couldn't allocate _perfcnt_scaling_error");
+ }
}
UavcanEscController::~UavcanEscController()
diff --git a/src/modules/uavcan/module.mk b/src/modules/uavcan/module.mk
index e5d30f6c4..600cb47f3 100644
--- a/src/modules/uavcan/module.mk
+++ b/src/modules/uavcan/module.mk
@@ -38,7 +38,7 @@
MODULE_COMMAND = uavcan
-MAXOPTIMIZATION = -Os
+MAXOPTIMIZATION = -O3
# Main
SRCS += uavcan_main.cpp \
@@ -57,7 +57,7 @@ SRCS += sensors/sensor_bridge.cpp \
#
# libuavcan
#
-include $(PX4_LIB_DIR)/uavcan/libuavcan/include.mk
+include $(PX4_LIB_DIR)uavcan/libuavcan/include.mk
SRCS += $(LIBUAVCAN_SRC)
INCLUDE_DIRS += $(LIBUAVCAN_INC)
# Since actual compiler mode is C++11, the library will default to UAVCAN_CPP11, but it will fail to compile
@@ -67,7 +67,7 @@ override EXTRADEFINES := $(EXTRADEFINES) -DUAVCAN_CPP_VERSION=UAVCAN_CPP03 -DUAV
#
# libuavcan drivers for STM32
#
-include $(PX4_LIB_DIR)/uavcan/libuavcan_drivers/stm32/driver/include.mk
+include $(PX4_LIB_DIR)uavcan/libuavcan_drivers/stm32/driver/include.mk
SRCS += $(LIBUAVCAN_STM32_SRC)
INCLUDE_DIRS += $(LIBUAVCAN_STM32_INC)
override EXTRADEFINES := $(EXTRADEFINES) -DUAVCAN_STM32_NUTTX -DUAVCAN_STM32_NUM_IFACES=2
diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/modules/uavcan/uavcan_main.cpp
index 60901e0c7..4dc03b61b 100644
--- a/src/modules/uavcan/uavcan_main.cpp
+++ b/src/modules/uavcan/uavcan_main.cpp
@@ -81,6 +81,18 @@ UavcanNode::UavcanNode(uavcan::ICanDriver &can_driver, uavcan::ISystemClock &sys
if (res < 0) {
std::abort();
}
+
+ if (_perfcnt_node_spin_elapsed == nullptr) {
+ errx(1, "uavcan: couldn't allocate _perfcnt_node_spin_elapsed");
+ }
+
+ if (_perfcnt_esc_mixer_output_elapsed == nullptr) {
+ errx(1, "uavcan: couldn't allocate _perfcnt_esc_mixer_output_elapsed");
+ }
+
+ if (_perfcnt_esc_mixer_total_elapsed == nullptr) {
+ errx(1, "uavcan: couldn't allocate _perfcnt_esc_mixer_total_elapsed");
+ }
}
UavcanNode::~UavcanNode()
@@ -118,6 +130,10 @@ UavcanNode::~UavcanNode()
}
_instance = nullptr;
+
+ perf_free(_perfcnt_node_spin_elapsed);
+ perf_free(_perfcnt_esc_mixer_output_elapsed);
+ perf_free(_perfcnt_esc_mixer_total_elapsed);
}
int UavcanNode::start(uavcan::NodeID node_id, uint32_t bitrate)
@@ -265,10 +281,12 @@ int UavcanNode::init(uavcan::NodeID node_id)
void UavcanNode::node_spin_once()
{
+ perf_begin(_perfcnt_node_spin_elapsed);
const int spin_res = _node.spin(uavcan::MonotonicTime());
if (spin_res < 0) {
warnx("node spin error %i", spin_res);
}
+ perf_end(_perfcnt_node_spin_elapsed);
}
/*
@@ -344,8 +362,12 @@ int UavcanNode::run()
// Mutex is unlocked while the thread is blocked on IO multiplexing
(void)pthread_mutex_unlock(&_node_mutex);
+ perf_end(_perfcnt_esc_mixer_total_elapsed); // end goes first, it's not a mistake
+
const int poll_ret = ::poll(_poll_fds, _poll_fds_num, PollTimeoutMs);
+ perf_begin(_perfcnt_esc_mixer_total_elapsed);
+
(void)pthread_mutex_lock(&_node_mutex);
node_spin_once(); // Non-blocking
@@ -430,7 +452,9 @@ int UavcanNode::run()
}
// Output to the bus
_outputs.timestamp = hrt_absolute_time();
+ perf_begin(_perfcnt_esc_mixer_output_elapsed);
_esc_controller.update_outputs(_outputs.output, _outputs.noutputs);
+ perf_end(_perfcnt_esc_mixer_output_elapsed);
}
@@ -484,7 +508,7 @@ UavcanNode::teardown()
_control_subs[i] = -1;
}
}
- return ::close(_armed_sub);
+ return (_armed_sub >= 0) ? ::close(_armed_sub) : 0;
}
int
diff --git a/src/modules/uavcan/uavcan_main.hpp b/src/modules/uavcan/uavcan_main.hpp
index 98f2e5ad4..19b9b4b48 100644
--- a/src/modules/uavcan/uavcan_main.hpp
+++ b/src/modules/uavcan/uavcan_main.hpp
@@ -34,9 +34,9 @@
#pragma once
#include <nuttx/config.h>
-
#include <uavcan_stm32/uavcan_stm32.hpp>
#include <drivers/device/device.h>
+#include <systemlib/perf_counter.h>
#include <uORB/topics/actuator_controls.h>
#include <uORB/topics/actuator_outputs.h>
@@ -66,7 +66,7 @@
*/
class UavcanNode : public device::CDev
{
- static constexpr unsigned MemPoolSize = 10752;
+ static constexpr unsigned MemPoolSize = 10752; ///< Refer to the libuavcan manual to learn why
static constexpr unsigned RxQueueLenPerIface = 64;
static constexpr unsigned StackSize = 3000;
@@ -107,11 +107,11 @@ private:
int _task = -1; ///< handle to the OS task
bool _task_should_exit = false; ///< flag to indicate to tear down the CAN driver
int _armed_sub = -1; ///< uORB subscription of the arming status
- actuator_armed_s _armed; ///< the arming request of the system
+ actuator_armed_s _armed = {}; ///< the arming request of the system
bool _is_armed = false; ///< the arming status of the actuators on the bus
int _test_motor_sub = -1; ///< uORB subscription of the test_motor status
- test_motor_s _test_motor;
+ test_motor_s _test_motor = {};
bool _test_in_progress = false;
unsigned _output_count = 0; ///< number of actuators currently available
@@ -135,11 +135,15 @@ private:
unsigned _poll_fds_num = 0;
int _actuator_direct_sub = -1; ///< uORB subscription of the actuator_direct topic
- uint8_t _actuator_direct_poll_fd_num;
- actuator_direct_s _actuator_direct;
+ uint8_t _actuator_direct_poll_fd_num = 0;
+ actuator_direct_s _actuator_direct = {};
- actuator_outputs_s _outputs;
+ actuator_outputs_s _outputs = {};
// index into _poll_fds for each _control_subs handle
uint8_t _poll_ids[NUM_ACTUATOR_CONTROL_GROUPS_UAVCAN];
+
+ perf_counter_t _perfcnt_node_spin_elapsed = perf_alloc(PC_ELAPSED, "uavcan_node_spin_elapsed");
+ perf_counter_t _perfcnt_esc_mixer_output_elapsed = perf_alloc(PC_ELAPSED, "uavcan_esc_mixer_output_elapsed");
+ perf_counter_t _perfcnt_esc_mixer_total_elapsed = perf_alloc(PC_ELAPSED, "uavcan_esc_mixer_total_elapsed");
};
diff --git a/src/systemcmds/esc_calib/esc_calib.c b/src/systemcmds/esc_calib/esc_calib.c
index 32682f890..0935bf44a 100644
--- a/src/systemcmds/esc_calib/esc_calib.c
+++ b/src/systemcmds/esc_calib/esc_calib.c
@@ -52,9 +52,6 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
-#include <nuttx/i2c.h>
-#include <nuttx/mtd.h>
-#include <nuttx/fs/nxffs.h>
#include <nuttx/fs/ioctl.h>
#include <arch/board/board.h>
diff --git a/src/systemcmds/mtd/24xxxx_mtd.c b/src/systemcmds/mtd/24xxxx_mtd.c
index f85ed8e2d..d0407f5aa 100644
--- a/src/systemcmds/mtd/24xxxx_mtd.c
+++ b/src/systemcmds/mtd/24xxxx_mtd.c
@@ -64,7 +64,7 @@
#include <nuttx/kmalloc.h>
#include <nuttx/fs/ioctl.h>
#include <nuttx/i2c.h>
-#include <nuttx/mtd.h>
+#include <nuttx/mtd/mtd.h>
#include "systemlib/perf_counter.h"
diff --git a/src/systemcmds/mtd/mtd.c b/src/systemcmds/mtd/mtd.c
index a925cdd40..16bfb294f 100644
--- a/src/systemcmds/mtd/mtd.c
+++ b/src/systemcmds/mtd/mtd.c
@@ -51,8 +51,8 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
-#include <nuttx/spi.h>
-#include <nuttx/mtd.h>
+#include <nuttx/spi/spi.h>
+#include <nuttx/mtd/mtd.h>
#include <nuttx/fs/nxffs.h>
#include <nuttx/fs/ioctl.h>
diff --git a/src/systemcmds/pwm/pwm.c b/src/systemcmds/pwm/pwm.c
index eeba89fa8..4bc1a727b 100644
--- a/src/systemcmds/pwm/pwm.c
+++ b/src/systemcmds/pwm/pwm.c
@@ -46,13 +46,9 @@
#include <unistd.h>
#include <fcntl.h>
#include <poll.h>
-#include <sys/mount.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
-#include <nuttx/i2c.h>
-#include <nuttx/mtd.h>
-#include <nuttx/fs/nxffs.h>
#include <nuttx/fs/ioctl.h>
#include <arch/board/board.h>
diff --git a/src/systemcmds/tests/test_adc.c b/src/systemcmds/tests/test_adc.c
index 03391b851..82f39439d 100644
--- a/src/systemcmds/tests/test_adc.c
+++ b/src/systemcmds/tests/test_adc.c
@@ -48,8 +48,6 @@
#include <errno.h>
#include <debug.h>
-#include <nuttx/spi.h>
-
#include "tests.h"
#include <nuttx/analog/adc.h>
diff --git a/src/systemcmds/tests/test_hrt.c b/src/systemcmds/tests/test_hrt.c
index 5690997a9..52b703bd2 100644
--- a/src/systemcmds/tests/test_hrt.c
+++ b/src/systemcmds/tests/test_hrt.c
@@ -54,8 +54,6 @@
#include <drivers/drv_hrt.h>
#include <drivers/drv_tone_alarm.h>
-#include <nuttx/spi.h>
-
#include "tests.h"
/****************************************************************************
diff --git a/src/systemcmds/tests/test_jig_voltages.c b/src/systemcmds/tests/test_jig_voltages.c
index 10c93b264..073474620 100644
--- a/src/systemcmds/tests/test_jig_voltages.c
+++ b/src/systemcmds/tests/test_jig_voltages.c
@@ -47,8 +47,6 @@
#include <errno.h>
#include <debug.h>
-#include <nuttx/spi.h>
-
#include "tests.h"
#include <nuttx/analog/adc.h>
diff --git a/src/systemcmds/tests/test_sensors.c b/src/systemcmds/tests/test_sensors.c
index e005bf9c1..d87551bd9 100644
--- a/src/systemcmds/tests/test_sensors.c
+++ b/src/systemcmds/tests/test_sensors.c
@@ -53,8 +53,6 @@
#include <arch/board/board.h>
-#include <nuttx/spi.h>
-
#include "tests.h"
#include <drivers/drv_gyro.h>
diff --git a/src/systemcmds/tests/test_servo.c b/src/systemcmds/tests/test_servo.c
index 9c6951ca2..9545e7dc9 100644
--- a/src/systemcmds/tests/test_servo.c
+++ b/src/systemcmds/tests/test_servo.c
@@ -53,8 +53,6 @@
#include <drivers/drv_pwm_output.h>
#include <systemlib/err.h>
-#include <nuttx/spi.h>
-
#include "tests.h"
int test_servo(int argc, char *argv[])
diff --git a/src/systemcmds/tests/tests_main.c b/src/systemcmds/tests/tests_main.c
index 0f56704e6..16fa3469f 100644
--- a/src/systemcmds/tests/tests_main.c
+++ b/src/systemcmds/tests/tests_main.c
@@ -52,8 +52,6 @@
#include <arch/board/board.h>
-#include <nuttx/spi.h>
-
#include <systemlib/perf_counter.h>
#include "tests.h"