mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-20 20:03:54 +08:00
Decouple filepaths from rcS/MTD
This commit is contained in:
committed by
Daniel Agar
parent
79e0e00d8c
commit
46e43ec725
@@ -185,6 +185,18 @@ menu "Serial ports"
|
||||
string "EXT2 tty port"
|
||||
endmenu
|
||||
|
||||
menu "File paths"
|
||||
|
||||
config BOARD_ROOT_PATH
|
||||
string "PX4 Root file path"
|
||||
depends on MODULES_LOGGER
|
||||
default "/fs/microsd"
|
||||
|
||||
config BOARD_PARAM_FILE
|
||||
string "Parameter file"
|
||||
default "/fs/mtd_params"
|
||||
endmenu
|
||||
|
||||
menu "drivers"
|
||||
source "src/drivers/Kconfig"
|
||||
endmenu
|
||||
|
||||
@@ -120,6 +120,7 @@ add_custom_command(
|
||||
${romfs_gen_root_dir}/init.d/rc.serial
|
||||
${romfs_gen_root_dir}/init.d/rc.autostart
|
||||
${romfs_gen_root_dir}/init.d/rc.autostart.post
|
||||
${romfs_gen_root_dir}/init.d/rc.filepaths
|
||||
${romfs_copy_stamp}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${romfs_gen_root_dir}/*
|
||||
COMMAND ${CMAKE_COMMAND} -E tar xf ${romfs_tar_file}
|
||||
@@ -131,6 +132,9 @@ add_custom_command(
|
||||
--rc-dir ${romfs_gen_root_dir}/init.d
|
||||
--serial-ports ${board_serial_ports} ${added_arguments}
|
||||
--config-files ${module_config_files} #--verbose
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/filepaths/generate_config.py
|
||||
--rc-dir ${romfs_gen_root_dir}/init.d
|
||||
--params-file ${CONFIG_BOARD_PARAM_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${romfs_copy_stamp}
|
||||
WORKING_DIRECTORY ${romfs_gen_root_dir}
|
||||
DEPENDS ${romfs_tar_file}
|
||||
@@ -320,6 +324,7 @@ add_custom_target(romfs_gen_files_target
|
||||
DEPENDS
|
||||
${romfs_copy_stamp}
|
||||
${romfs_gen_root_dir}/init.d/rc.serial
|
||||
${romfs_gen_root_dir}/init.d/rc.filepaths
|
||||
romfs_extras.stamp
|
||||
)
|
||||
|
||||
|
||||
@@ -21,25 +21,14 @@ set R /
|
||||
#
|
||||
ver all
|
||||
|
||||
if mft query -q -k MTD -s MTD_PARAMETERS -v /fs/mtd_params
|
||||
then
|
||||
set PARAM_FILE /fs/mtd_params
|
||||
fi
|
||||
|
||||
if mft query -q -k MTD -s MTD_PARAMETERS -v /dev/eeeprom0
|
||||
then
|
||||
set PARAM_FILE /dev/eeeprom0
|
||||
fi
|
||||
|
||||
if mft query -q -k MTD -s MTD_PARAMETERS -v /mnt/qspi/params
|
||||
then
|
||||
set PARAM_FILE /mnt/qspi/params
|
||||
fi
|
||||
# Load param file location from kconfig
|
||||
. ${R}etc/init.d/rc.filepaths
|
||||
|
||||
#
|
||||
# Load parameters.
|
||||
#
|
||||
param select $PARAM_FILE
|
||||
|
||||
if ! param load
|
||||
then
|
||||
param reset_all
|
||||
|
||||
@@ -120,14 +120,8 @@ then
|
||||
. $FRC
|
||||
else
|
||||
|
||||
#
|
||||
# Set the parameter file the board supports params on
|
||||
# MTD device.
|
||||
#
|
||||
if mft query -q -k MTD -s MTD_PARAMETERS -v /fs/mtd_params
|
||||
then
|
||||
set PARAM_FILE /fs/mtd_params
|
||||
fi
|
||||
# Load param file location from kconfig
|
||||
. ${R}etc/init.d/rc.filepaths
|
||||
|
||||
# Check if /fs/mtd_params is a valid BSON file
|
||||
if ! bsondump docsize /fs/mtd_caldata
|
||||
|
||||
Executable
+61
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env python3
|
||||
""" Script to generate Serial rc.filepaths for the ROMFS startup script """
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
|
||||
try:
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
except ImportError as e:
|
||||
print("Failed to import jinja2: " + str(e))
|
||||
print("")
|
||||
print("You may need to install it using:")
|
||||
print(" pip3 install --user jinja2")
|
||||
print("")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
import yaml
|
||||
except ImportError as e:
|
||||
print("Failed to import yaml: " + str(e))
|
||||
print("")
|
||||
print("You may need to install it using:")
|
||||
print(" pip3 install --user pyyaml")
|
||||
print("")
|
||||
sys.exit(1)
|
||||
|
||||
parser = argparse.ArgumentParser(description='Generate PX4 ROMFS filepaths')
|
||||
|
||||
parser.add_argument('--config-files', type=str, nargs='*', default=[],
|
||||
help='YAML module config file(s)')
|
||||
parser.add_argument('--constrained-flash', action='store_true',
|
||||
help='Reduce verbosity in ROMFS scripts to reduce flash size')
|
||||
parser.add_argument('--rc-dir', type=str, action='store',
|
||||
help='ROMFS output directory', default=None)
|
||||
parser.add_argument('--params-file', type=str, action='store',
|
||||
help='Parameter output file', default=None)
|
||||
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
|
||||
help='Verbose Output')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
verbose = args.verbose
|
||||
constrained_flash = args.constrained_flash
|
||||
rc_filepaths_output_dir = args.rc_dir
|
||||
rc_filepaths_template = 'rc.filepaths.jinja'
|
||||
|
||||
|
||||
jinja_env = Environment(loader=FileSystemLoader(
|
||||
os.path.dirname(os.path.realpath(__file__))))
|
||||
|
||||
# generate the ROMFS script using a jinja template
|
||||
if rc_filepaths_output_dir is not None:
|
||||
rc_filepath_output_file = os.path.join(rc_filepaths_output_dir, "rc.filepaths")
|
||||
|
||||
if verbose: print("Generating {:}".format(rc_filepath_output_file))
|
||||
template = jinja_env.get_template(rc_filepaths_template)
|
||||
with open(rc_filepath_output_file, 'w') as fid:
|
||||
fid.write(template.render(constrained_flash=constrained_flash, params_file=args.params_file))
|
||||
else:
|
||||
raise Exception("--rc-dir needs to be specified")
|
||||
@@ -0,0 +1,6 @@
|
||||
{# jinja template to generate the serial autostart script. #}
|
||||
|
||||
# serial autostart script generated with generate_serial_config.py
|
||||
|
||||
|
||||
set PARAM_FILE {{ params_file }}
|
||||
@@ -2,6 +2,7 @@ CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
|
||||
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
|
||||
CONFIG_BOARD_ROMFSROOT="cannode"
|
||||
CONFIG_BOARD_ETHERNET=y
|
||||
CONFIG_BOARD_PARAM_FILE="/mnt/qspi/params"
|
||||
CONFIG_DRIVERS_BAROMETER_BMP388=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20649=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
|
||||
|
||||
@@ -3,6 +3,7 @@ CONFIG_BOARD_ARCHITECTURE="cortex-m4"
|
||||
CONFIG_BOARD_ROMFSROOT="cannode"
|
||||
CONFIG_BOARD_CONSTRAINED_MEMORY=y
|
||||
CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS1"
|
||||
CONFIG_BOARD_PARAM_FILE="/dev/eeeprom0"
|
||||
CONFIG_DRIVERS_BOOTLOADERS=y
|
||||
CONFIG_COMMON_DISTANCE_SENSOR=y
|
||||
CONFIG_DRIVERS_GPS=y
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
CONFIG_PLATFORM_POSIX=y
|
||||
CONFIG_BOARD_TESTING=y
|
||||
CONFIG_BOARD_ETHERNET=y
|
||||
CONFIG_BOARD_ROOT_PATH="./"
|
||||
CONFIG_DRIVERS_CAMERA_TRIGGER=y
|
||||
CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_OSD_MSP_OSD=y
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
CONFIG_MODULES_UXRCE_DDS_CLIENT=n
|
||||
CONFIG_MODULES_ZENOH=y
|
||||
CONFIG_ZENOH_CONFIG_PATH="./zenoh"
|
||||
|
||||
@@ -158,8 +158,8 @@ private:
|
||||
static constexpr int MAX_MISSION_TOPICS_NUM = 5; /**< Maximum number of mission topics */
|
||||
static constexpr unsigned MAX_NO_LOGFILE = 999; /**< Maximum number of log files */
|
||||
static constexpr const char *LOG_ROOT[(int)LogType::Count] = {
|
||||
PX4_STORAGEDIR "/log",
|
||||
PX4_STORAGEDIR "/mission_log"
|
||||
CONFIG_BOARD_ROOT_PATH "/log",
|
||||
CONFIG_BOARD_ROOT_PATH "/mission_log"
|
||||
};
|
||||
|
||||
struct LogFileName {
|
||||
|
||||
@@ -58,7 +58,7 @@ const char *default_sub_config = ""; //TODO maybe use YAML
|
||||
Zenoh_Config::Zenoh_Config()
|
||||
{
|
||||
bool correct_config = true;
|
||||
DIR *dir = opendir(ZENOH_SD_ROOT_PATH);
|
||||
DIR *dir = opendir(ZENOH_ROOT_PATH);
|
||||
fp_mapping = NULL;
|
||||
|
||||
if (dir) {
|
||||
@@ -342,14 +342,14 @@ void Zenoh_Config::generate_clean_config()
|
||||
printf("Generate clean\n");
|
||||
FILE *fp;
|
||||
|
||||
DIR *dir = opendir(ZENOH_SD_ROOT_PATH);
|
||||
DIR *dir = opendir(ZENOH_ROOT_PATH);
|
||||
|
||||
if (dir) {
|
||||
printf("Zenoh directory exists\n");
|
||||
|
||||
} else {
|
||||
/* Create zenoh dir. */
|
||||
if (mkdir(ZENOH_SD_ROOT_PATH, 0700) < 0) {
|
||||
if (mkdir(ZENOH_ROOT_PATH, 0700) < 0) {
|
||||
printf("Failed to create Zenoh directory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -49,10 +49,10 @@
|
||||
#include <zenoh-pico.h>
|
||||
|
||||
#define ZENOH_MAX_PATH_LENGTH (128 + 40)
|
||||
#define ZENOH_SD_ROOT_PATH CONFIG_ZENOH_CONFIG_PATH
|
||||
#define ZENOH_PUB_CONFIG_PATH ZENOH_SD_ROOT_PATH"/pub.csv"
|
||||
#define ZENOH_SUB_CONFIG_PATH ZENOH_SD_ROOT_PATH"/sub.csv"
|
||||
#define ZENOH_NET_CONFIG_PATH ZENOH_SD_ROOT_PATH"/net.txt"
|
||||
#define ZENOH_ROOT_PATH CONFIG_BOARD_ROOT_PATH"/zenoh"
|
||||
#define ZENOH_PUB_CONFIG_PATH ZENOH_ROOT_PATH"/pub.csv"
|
||||
#define ZENOH_SUB_CONFIG_PATH ZENOH_ROOT_PATH"/sub.csv"
|
||||
#define ZENOH_NET_CONFIG_PATH ZENOH_ROOT_PATH"/net.txt"
|
||||
|
||||
#define NET_MODE_SIZE sizeof("client")
|
||||
#define NET_LOCATOR_SIZE 64
|
||||
|
||||
Reference in New Issue
Block a user