Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Directory structure refactoring #8127

Closed
mcharleb opened this Issue Oct 13, 2017 · 4 comments

Comments

Projects
None yet
4 participants
@mcharleb
Copy link
Contributor

commented Oct 13, 2017

Feature Request

One of the criticisms of PX4 is that is difficult to know what code is required for a given platform build. This proposal refactors the PX4 Firmware directory structure to:

  • Separate platform specific code into a platform tree
  • Aggregate related boards under a "vendor"
  • Enable out of tree boards and platforms to be easily integrated into the build system to prevent cloning and forking of the repository and enabling not yet release product development.
  • Enable potentially separating each vendor/* and platforms/* into a separate git repo independent of the others

This is a RFC to allow anyone with concerns on this change to voice them or to make proposals on how to better address the above issues.

The Directory layout would be the following:

../Firmware
├── cmake
│   ├── common
│   ├── templates
│   ├── test
│   └── toolchains
├── Debug
├── Documentation
│   └── px4_hil
│       └── docs
├── integrationtests
│   └── python_src
│       └── px4_it
│           ├── dronekit
│           ├── mavros
│           └── util
├── mavlink
│   └── include
│       └── mavlink
│           ├── v1.0
│           └── v2.0
├── misc
│   └── tones
├── msg
│   ├── ros
│   └── templates
│       ├── px4
│       │   ├── ros
│       │   └── uorb
│       ├── uorb
│       └── urtps
├── platforms
│   ├── nuttx
│   │   ├── cmake
│   │   │   ├── configs
│   │   │   │   └── uavcan_board_ident
│   │   │   ├── nuttx
│   │   │   └── toolchains
│   │   ├── Debug
│   │   ├── Images
│   │   ├── NuttX
│   │   ├── nuttx-patches
│   │   ├── src
│   │   │   ├── drivers
│   │   │   │   ├── batt_smbus
│   │   │   │   ├── bma180
│   │   │   │   ├── bmi055
│   │   │   │   ├── bmi160
│   │   │   │   ├── bmm150
│   │   │   │   ├── bmp280
│   │   │   │   ├── boards
│   │   │   │   │   └── common
│   │   │   │   │       └── stm32
│   │   │   │   ├── bootloaders
│   │   │   │   │   ├── include
│   │   │   │   │   └── src
│   │   │   │   │       ├── arch
│   │   │   │   │       │   └── stm32
│   │   │   │   │       │       └── drivers
│   │   │   │   │       │           └── can
│   │   │   │   │       ├── common
│   │   │   │   │       ├── fs
│   │   │   │   │       ├── protocol
│   │   │   │   │       ├── sched
│   │   │   │   │       ├── uavcan
│   │   │   │   │       └── util
│   │   │   │   ├── bst
│   │   │   │   ├── device
│   │   │   │   ├── ets_airspeed
│   │   │   │   ├── frsky_telemetry
│   │   │   │   ├── hc_sr04
│   │   │   │   ├── hmc5883
│   │   │   │   ├── hott
│   │   │   │   │   ├── hott_sensors
│   │   │   │   │   └── hott_telemetry
│   │   │   │   ├── iridiumsbd
│   │   │   │   ├── irlock
│   │   │   │   ├── ist8310
│   │   │   │   ├── l3gd20
│   │   │   │   ├── lis3mdl
│   │   │   │   ├── ll40ls
│   │   │   │   ├── lps25h
│   │   │   │   ├── lsm303d
│   │   │   │   ├── mb12xx
│   │   │   │   ├── md25
│   │   │   │   ├── mkblctrl
│   │   │   │   ├── mpu6000
│   │   │   │   ├── mpu9250
│   │   │   │   ├── ms4525_airspeed
│   │   │   │   ├── ms5525_airspeed
│   │   │   │   ├── ms5611
│   │   │   │   ├── ocpoc_adc
│   │   │   │   ├── ocpoc_sbus_rc_in
│   │   │   │   ├── oreoled
│   │   │   │   ├── pca8574
│   │   │   │   ├── pca9685
│   │   │   │   ├── protocol_splitter
│   │   │   │   ├── pwm_input
│   │   │   │   ├── px4flow   (move to vendor/px4?)
│   │   │   │   ├── px4fmu   (move to vendor/px4?)
│   │   │   │   ├── px4io      (move to vendor/px4?)
│   │   │   │   ├── rgbled_pwm
│   │   │   │   ├── roboclaw
│   │   │   │   ├── sdp3x_airspeed
│   │   │   │   ├── sf1xx
│   │   │   │   ├── srf02
│   │   │   │   ├── srf02_i2c
│   │   │   │   ├── stm32
│   │   │   │   │   ├── adc
│   │   │   │   │   └── tone_alarm
│   │   │   │   ├── tap_esc
│   │   │   │   ├── test_ppm
│   │   │   │   ├── trone
│   │   │   │   └── ulanding
│   │   │   ├── firmware
│   │   │   │   └── nuttx
│   │   │   ├── lib
│   │   │   │   └── version
│   │   │   ├── modules
│   │   │   │   ├── px4iofirmware    (move to vendor/px4?)
│   │   │   │   ├── systemlib
│   │   │   │   │   └── flashparams
│   │   │   │   ├── uavcan
│   │   │   │   │   ├── actuators
│   │   │   │   │   ├── libuavcan
│   │   │   │   │   └── sensors
│   │   │   │   ├── uavcanesc
│   │   │   │   │   ├── commands
│   │   │   │   │   │   ├── cfg
│   │   │   │   │   │   ├── dc
│   │   │   │   │   │   ├── rpm
│   │   │   │   │   │   ├── selftest
│   │   │   │   │   │   └── stat
│   │   │   │   │   └── nshterm
│   │   │   │   └── uavcannode
│   │   │   ├── platforms
│   │   │   │   └── nuttx
│   │   │   │       └── px4_layer
│   │   │   └── systemcmds
│   │   │       ├── bl_update
│   │   │       ├── hardfault_log
│   │   │       ├── i2c
│   │   │       ├── motor_test
│   │   │       ├── mtd
│   │   │       └── nshterm
│   │   └── Tools
│   ├── posix
│   │   ├── cmake
│   │   │   └── posix
│   │   ├── src
│   │   │   ├── drivers
│   │   │   │   ├── linux_pwm_out
│   │   │   │   └── qshell
│   │   │   │       └── posix
│   │   │   ├── firmware
│   │   │   │   └── posix
│   │   │   └── modules
│   │   └── Tools
│   └── qurt
│       ├── cmake
│       │   ├── cmake_hexagon
│       │   └── qurt
│       ├── src
│       │   ├── drivers
│       │   │   ├── qshell
│       │   │   │   └── qurt
│       │   │   └── snapdragon_pwm_out
│       │   ├── firmware
│       │   │   └── qurt
│       │   ├── modules
│       │   │   └── muorb
│       │   │       └── adsp
│       │   └── platforms
│       │       └── qurt
│       └── Tools
├── ROMFS
│   ├── px4fmu_common   (move to vendor/px4?)
│   │   ├── init.d
│   │   └── mixers
│   ├── px4fmu_test   (move to vendor/px4?)
│   │   ├── init.d
│   │   ├── mixers
│   │   └── unit_test_data
│   │       └── mavlink_tests
│   │           └── empty_dir
│   ├── sitl
│   │   └── mixers
│   └── tap_common
│       ├── init.d
│       └── mixers
├── src
│   ├── drivers
│   │   ├── airspeed
│   │   ├── ardrone_interface
│   │   ├── blinkm
│   │   ├── boards
│   │   │   └── common
│   │   ├── camera_trigger
│   │   ├── device
│   │   ├── gps
│   │   ├── led
│   │   ├── linux_gpio
│   │   ├── pwm_out_rc_in
│   │   ├── pwm_out_sim
│   │   ├── rgbled
│   │   ├── rpi_rc_in    (move to vendor/navio?)
│   │   ├── sf0x
│   │   │   └── sf0x_tests
│   │   ├── snapdragon_rc_pwm  (move to vendor/ATLFlight?)
│   │   ├── spektrum_rc
│   │   └── vmount
│   ├── examples
│   │   ├── attitude_estimator_ekf
│   │   │   └── codegen
│   │   ├── ekf_att_pos_estimator
│   │   ├── fixedwing_control
│   │   ├── hwtest
│   │   ├── matlab_csv_serial
│   │   ├── mc_att_control_multiplatform
│   │   ├── mc_pos_control_multiplatform
│   │   ├── publisher
│   │   ├── px4_daemon_app
│   │   ├── px4_mavlink_debug
│   │   ├── px4_simple_app
│   │   ├── rover_steering_control
│   │   ├── segway
│   │   └── subscriber
│   ├── include
│   │   └── containers
│   ├── lib
│   │   ├── controllib
│   │   ├── conversion
│   │   ├── DriverFramework
│   │   ├── ecl
│   │   ├── external_lgpl
│   │   │   └── tecs
│   │   ├── geo
│   │   ├── geo_lookup
│   │   ├── launchdetection
│   │   ├── led
│   │   ├── mathlib
│   │   ├── matrix
│   │   ├── micro-CDR
│   │   ├── rc
│   │   │   └── rc_tests
│   │   ├── runway_takeoff
│   │   ├── tailsitter_recovery
│   │   ├── terrain_estimation
│   │   └── version
│   ├── modules
│   │   ├── attitude_estimator_q
│   │   ├── bottle_drop
│   │   ├── camera_feedback
│   │   ├── commander
│   │   │   └── commander_tests
│   │   ├── dataman
│   │   ├── dummy
│   │   ├── ekf2
│   │   ├── ekf2_replay
│   │   ├── events
│   │   │   └── temperature_calibration
│   │   ├── fw_att_control
│   │   ├── fw_pos_control_l1
│   │   ├── gnd_att_control
│   │   ├── gnd_pos_control
│   │   ├── gpio_led
│   │   ├── land_detector
│   │   ├── load_mon
│   │   ├── local_position_estimator
│   │   ├── logger
│   │   ├── mavlink
│   │   ├── mc_att_control
│   │   ├── mc_pos_control
│   │   ├── micrortps_bridge
│   │   ├── muorb
│   │   ├── navigator
│   │   ├── position_estimator_inav
│   │   ├── replay
│   │   ├── sdlog2
│   │   ├── sensors
│   │   ├── simulator
│   │   ├── syslink
│   │   ├── systemlib
│   │   ├── uavcan
│   │   ├── unit_test
│   │   ├── uORB
│   │   └── vtol_att_control
│   ├── platforms
│   │   ├── common
│   │   ├── posix
│   │   │   ├── drivers
│   │   │   │   ├── accelsim
│   │   │   │   ├── adcsim
│   │   │   │   ├── airspeedsim
│   │   │   │   ├── barosim
│   │   │   │   ├── df_ak8963_wrapper
│   │   │   │   ├── df_bebop_bus_wrapper                (move to vendor/parrot?)
│   │   │   │   ├── df_bebop_rangefinder_wrapper    (move to vendor/parrot?)
│   │   │   │   ├── df_bmp280_wrapper
│   │   │   │   ├── df_hmc5883_wrapper
│   │   │   │   ├── df_isl29501_wrapper
│   │   │   │   ├── df_lsm9ds1_wrapper
│   │   │   │   ├── df_mpu6050_wrapper
│   │   │   │   ├── df_mpu9250_wrapper
│   │   │   │   ├── df_ms5607_wrapper
│   │   │   │   ├── df_ms5611_wrapper
│   │   │   │   ├── df_trone_wrapper
│   │   │   │   ├── gpssim
│   │   │   │   ├── gyrosim
│   │   │   │   ├── ledsim
│   │   │   │   └── tonealrmsim
│   │   │   ├── include
│   │   │   │   └── arch
│   │   │   │       └── board
│   │   │   ├── px4_layer
│   │   │   ├── tests
│   │   │   └── work_queue
│   │   └── ros
│   │       └── nodes
│   └── systemcmds
├── test_data
├── Tools
│   ├── dist
│   ├── ecl_ekf
│   ├── gencpp
│   ├── genmsg
│   ├── models
│   ├── px4airframes
│   ├── px4moduledoc
│   ├── px4params
│   ├── refactor
│   └── sdlog2
├── unittests
│   └── googletest
└── vendor
    ├── aerotenna
    │   └── posix
    │       ├── boards
    │       │   └── ocpoc
    │       ├── posix-configs
    │       │   └── ocpoc
    │       └── src
    │           └── drivers
    │               └── linux_pwm_out
    ├── airmind
    │   └── nuttx
    │       ├── boards
    │       │   └── mindpx-v2
    │       ├── nuttx-configs
    │       │   └── mindpx-v2
    │       └── src
    │           └── drivers
    │               └── boards
    │                   └── mindpx-v2
    ├── ATLFlight
    │   ├── cmake_hexagon
    │   ├── posix
    │   │   ├── boards
    │   │   │   ├── eagle
    │   │   │   └── excelsior
    │   │   ├── cmake
    │   │   └── posix-configs
    │   │       ├── eagle
    │   │       │   ├── 200qx
    │   │       │   ├── 210qc
    │   │       │   ├── flight
    │   │       │   └── hil
    │   │       └── excelsior
    │   └── qurt
    │       ├── boards
    │       │   ├── eagle
    │       │   └── excelsior
    │       └── cmake
    ├── auav
    │   └── nuttx
    │       ├── boards
    │       │   ├── esc35-v1
    │       │   └── x21
    │       ├── cmake
    │       │   └── configs
    │       │       └── uavcan_board_ident
    │       ├── nuttx-configs
    │       │   ├── auav-x21
    │       │   └── esc35-v1
    │       └── src
    │           └── drivers
    │               └── boards
    │                   ├── auav-x21
    │                   └── esc35-v1
    │                       └── bootloader
    ├── bitcraze
    │   └── nuttx
    │       ├── boards
    │       │   └── crazyflie
    │       ├── nuttx-configs
    │       │   └── crazyflie
    │       └── src
    │           └── drivers
    │               └── boards
    │                   └── crazyflie
    ├── gumstix
    │   └── nuttx
    │       ├── boards
    │       │   └── aerocore2
    │       ├── nuttx-configs
    │       │   ├── aerocore
    │       │   └── aerocore2
    │       └── src
    │           └── drivers
    │               └── boards
    │                   ├── aerocore
    │                   └── aerocore2
    ├── Intel
    │   └── nuttx
    │       ├── boards
    │       │   └── aerofc-v1
    │       ├── nuttx-configs
    │       │   └── aerofc-v1
    │       ├── src
    │       │   └── drivers
    │       │       ├── aerofc_adc
    │       │       └── boards
    │       │           └── aerofc-v1
    │       └── Tools
    ├── navio
    │   └── posix
    │       ├── boards
    │       │   └── rpi
    │       ├── posix-configs
    │       │   └── rpi
    │       └── src
    │           └── drivers
    │               ├── linux_pwm_out
    │               ├── navio_adc
    │               ├── navio_rgbled
    │               │   └── test
    │               └── navio_sysfs_rc_in
    ├── parrot
    │   ├── posix
    │   │   ├── boards
    │   │   │   └── bebop
    │   │   ├── posix-configs
    │   │   │   └── bebop
    │   │   └── src
    │   │       └── platforms
    │   │           └── drivers
    │   │               └── bebop_flow
    │   └── Tools
    ├── px4
    │   └── nuttx
    │       ├── boards
    │       │   ├── cannode-v1
    │       │   ├── esc-v1
    │       │   ├── flow-v2
    │       │   ├── fmu-v1
    │       │   ├── fmu-v2
    │       │   ├── fmu-v3
    │       │   ├── fmu-v4
    │       │   ├── fmu-v4pro
    │       │   ├── fmu-v5
    │       │   ├── nucleoF767ZI-v1
    │       │   └── stm32f4discovery
    │       ├── cmake
    │       │   └── configs
    │       │       └── uavcan_board_ident
    │       ├── nuttx-configs
    │       │   ├── px4-cannode-v1
    │       │   ├── px4-esc-v1
    │       │   ├── px4-flow-v2
    │       │   ├── px4-fmu-v1
    │       │   ├── px4-fmu-v2
    │       │   ├── px4-fmu-v3
    │       │   ├── px4-fmu-v4
    │       │   ├── px4-fmu-v4pro
    │       │   ├── px4-fmu-v5
    │       │   ├── px4io-v1
    │       │   ├── px4io-v2
    │       │   ├── px4-nucleoF767ZI-v1
    │       │   └── px4-stm32f4discovery
    │       └── src
    │           └── drivers
    │               └── boards
    │                   ├── px4cannode-v1
    │                   │   └── bootloader
    │                   ├── px4esc-v1
    │                   │   └── bootloader
    │                   ├── px4flow-v2
    │                   │   └── bootloader
    │                   ├── px4fmu-v1
    │                   ├── px4fmu-v2
    │                   ├── px4fmu-v4
    │                   ├── px4fmu-v4pro
    │                   ├── px4fmu-v5
    │                   ├── px4io-v1
    │                   ├── px4io-v2
    │                   ├── px4nucleoF767ZI-v1
    │                   └── px4-stm32f4discovery
    ├── test
    │   ├── launch
    │   ├── nuttx
    │   │   └── nuttx-configs
    │   │       └── sim
    │   ├── posix
    │   │   ├── boards
    │   │   │   └── sitl
    │   │   └── src
    │   │       └── drivers
    │   │           └── boards
    │   │               ├── sim
    │   │               └── sitl
    │   ├── posix-configs
    │   │   └── SITL
    │   │       └── init
    │   └── Tools
    │       ├── jMAVSim
    │       ├── Matlab
    │       └── sitl_gazebo
    ├── theautopilot
    │   └── nuttx
    │       ├── boards
    │       │   └── tap-v1
    │       ├── nuttx-configs
    │       │   └── tap-v1
    │       └── src
    │           └── drivers
    │               └── boards
    │                   └── tap-v1
    ├── thiemar
    │   └── nuttx
    │       ├── boards
    │       │   └── s2740vc-v1
    │       ├── cmake
    │       │   └── configs
    │       │       └── uavcan_board_ident
    │       ├── nuttx-configs
    │       │   └── s2740vc-v1
    │       └── src
    │           └── drivers
    │               └── boards
    │                   └── s2740vc-v1
    │                       └── bootloader
    └── zubax
        └── nuttx
            ├── boards
            │   └── zubaxgnss-v1
            ├── cmake
            │   └── configs
            │       └── uavcan_board_ident
            ├── nuttx-configs
            │   └── zubaxgnss-v1
            └── src
                └── drivers
                    └── boards
                        └── zubaxgnss-v1
                            └── bootloader

@mcharleb

This comment has been minimized.

Copy link
Contributor Author

commented Oct 13, 2017

It seems like ROMFS should be broken up. Any suggestions?

@mcharleb mcharleb changed the title Directory structure refactoring RFC: Directory structure refactoring Oct 13, 2017

mcharleb added a commit that referenced this issue Oct 13, 2017

Refactoring in line with #8127
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
@mcharleb

This comment has been minimized.

Copy link
Contributor Author

commented Oct 13, 2017

Should vendor/px4/nuttx/nuttx-configs/px4-cannode-v1 be vendor/px4/nuttx/nuttx-configs/cannode-v1 and likewise for all the other boards under vendor/px4/nuttx/nuttx-configs? The same for vendor/px4/nuttx/src/drivers/boards?

@Nanaijenal85

This comment has been minimized.

Copy link

commented Jul 7, 2018

#9279 Drivers Code Cleanup

@dagar

This comment has been minimized.

Copy link
Member

commented Jan 17, 2019

Done!

@dagar dagar closed this Jan 17, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.