From 6ce0b7b753eb75fda226d0bb9823705dd1467f23 Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Fri, 17 Apr 2015 18:38:30 -0700 Subject: [PATCH] QuRT: added missing make pieces Signed-off-by: Mark Charlebois --- Makefile | 3 ++ Tools/qurt_apps.py | 105 +++++++++++++++++++++++++++++++++++++ makefiles/firmware_qurt.mk | 9 +++- 3 files changed, 116 insertions(+), 1 deletion(-) create mode 100755 Tools/qurt_apps.py diff --git a/Makefile b/Makefile index 4c009af00d..a079e4fc47 100644 --- a/Makefile +++ b/Makefile @@ -103,6 +103,9 @@ endif ifeq ($(PX4_TARGET_OS),linux) include $(PX4_BASE)makefiles/firmware_linux.mk endif +ifeq ($(PX4_TARGET_OS),qurt) +include $(PX4_BASE)makefiles/firmware_qurt.mk +endif MSG_DIR = $(PX4_BASE)msg UORB_TEMPLATE_DIR = $(PX4_BASE)msg/templates/uorb diff --git a/Tools/qurt_apps.py b/Tools/qurt_apps.py new file mode 100755 index 0000000000..ef2972de3d --- /dev/null +++ b/Tools/qurt_apps.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python +############################################################################ +# +# Copyright (C) 2015 Mark Charlebois. 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. +# +############################################################################ + +import glob +#builtins = glob.glob("../Build/linux_default.build/builtin_commands/COMMAND*") +builtins = glob.glob("builtin_commands/COMMAND*") + +apps = [] +for f in builtins: + apps.append(f.split(".")[-1].split("_main")[0]) + +print +print """ +#include +#include + +#define __EXPORT + +#include +#include + +using namespace std; + +extern void px4_show_devices(void); + +extern "C" { +""" +for app in apps: + print "extern int "+app+"_main(int argc, char *argv[]);" + +print """ +static int shutdown_main(int argc, char *argv[]); +static int list_tasks_main(int argc, char *argv[]); +} + + +static map app_map(void); + +static map app_map(void) +{ + map apps; +""" +for app in apps: + print '\tapps["'+app+'"] = '+app+'_main;' + +print '\tapps["shutdown"] = shutdown_main;' +print '\tapps["list_tasks"] = list_tasks_main;' +print """ + return apps; +} + +map apps = app_map(); + +static void list_builtins(void) +{ + cout << "Builtin Commands:" << endl; + for (map::iterator it=apps.begin(); it!=apps.end(); ++it) + cout << '\t' << it->first << endl; +} + +static int shutdown_main(int argc, char *argv[]) +{ + cout << "Shutting down" << endl; + exit(0); +} + +static int list_tasks_main(int argc, char *argv[]) +{ + px4_show_tasks(); + return 0; +} + +""" + diff --git a/makefiles/firmware_qurt.mk b/makefiles/firmware_qurt.mk index 6acec4e733..6385517214 100644 --- a/makefiles/firmware_qurt.mk +++ b/makefiles/firmware_qurt.mk @@ -53,4 +53,11 @@ $(FIRMWARES): $(BUILD_DIR)%.build/firmware.a: generateuorbtopicheaders WORK_DIR=$(work_dir) \ $(FIRMWARE_GOAL) - +HEXAGON_TOOLS_ROOT = /opt/6.4.05 +#V_ARCH = v4 +V_ARCH = v5 +HEXAGON_CLANG_BIN = $(addsuffix /qc/bin,$(HEXAGON_TOOLS_ROOT)) +SIM = $(HEXAGON_CLANG_BIN)/hexagon-sim +SIMFLAGS+= -m$(V_ARCH) --timing +sim: + $(SIM) $(SIMFLAGS) Build/qurt_default.build/mainapp