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
Closed

RFC: Directory structure refactoring #8127

mcharleb opened this issue Oct 13, 2017 · 4 comments

Comments

@mcharleb
Copy link
Contributor

mcharleb 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
Copy link
Contributor Author

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
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
@mcharleb
Copy link
Contributor Author

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
Copy link

#9279 Drivers Code Cleanup

@dagar
Copy link
Member

dagar commented Jan 17, 2019

Done!

@dagar dagar closed this as completed Jan 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants