Hello all.
I was able to get a lot of answers so far by reading the forums and searching in google.
However this time I am stuck and cannot find a solution myself.
I am trying to port to stm32f407vet6 (also known as stm32F4_ve) Link
It’s a stm32F4Disc alike board, with a W25Q16 memory chip already on board.
My wiring is heavily based on FMU_v3_revC schematics found on GitHub repository.
I’ve cloned the px4fmu_v2 folder and edited accordingly. I am planning on using stm32F103 BluePill board as the px4io_v2 fail-safe co-processor as well as retaining as many default pin assignments as possible on the stm32F4.
Unlike F427/F429, F407 only has SPI1, SPI2, and SPI3. There is no SPI4.
Nor does F407VET6 have UART7/UART8.
In FMU_v3_revC the memory chip fram FM25V01(128Kbit) is on SPI2, but on stm32F4_ve it is w25q16(16Kbit) and it comes wired to SPI1/SPI3 pins PB3/4/5.
Last but not least, stm32f407vet6 comes with 512K (Unlike fmu_v2 1024K/2048K and fmu_v3 2048K)
Files I have altered so far:
Firmware/src/drivers/boards/px4-stm32f407vet6-black/board_config.h
Firmware/src/drivers/boards/px4-stm32f407vet6-black/CMakeLists.txt
Firmware/src/drivers/boards/px4-stm32f407vet6-black/init.c
Firmware/src/drivers/boards/px4-stm32f407vet6-black/spi.c
Firmware/platforms/nuttx/nuttx-configs/px4-stm32f407vet6-black/scripts/ld.script
Firmware/platforms/nuttx/nuttx-configs/px4-stm32f407vet6-black/include/board.h
Firmware/cmake/configs/nuttx_px4-stm32f407vet6-black_default.cmake
I have installed the toolchain with ‘ubuntu_sim_nuttx.sh’ no more than 10days ago. Link
Currently Running: Ubuntu 16.04 LTS 64-Bit
upon invoking “make px4-stm32f407vet6-black_default” I get the following output: Attached Below
I suspect it is a linking issue, but I am not sure and therefore stuck.
It fails at “[349/351] Linking CXX executable px4-stm32f407vet6-black.elf”
Does anyone know what I am doing wrong?
Thanks in advance.
rossos@abcxyz:~/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware$ make px4-stm32f407vet6-black_default
– PX4 VERSION: v1.8.0-1439-g09563c9
– CONFIG: nuttx_px4-stm32f407vet6-black_default
– Build Type: MinSizeRel
– The ASM compiler identification is GNU
– Found assembler: /home/rossos/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc
– Found PythonInterp: /usr/bin/python (found version “2.7.12”)
– Found PY_jinja2: /usr/lib/python2.7/dist-packages/jinja2
– C compiler: arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
– C++ compiler: arm-none-eabi-g++ (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
– PX4 ECL: Very lightweight Estimation & Control Library v0.9.0-590-g2354c30
– Building and including px4io-v2
– NuttX: px4-stm32f407vet6-black nsh cortex-m4
– ROMFS: px4fmu_common
– Configuring done
– Generating done
– Build files have been written to: /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default
ninja: Entering directory /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default' [7/351] git submodule platforms/nuttx/NuttX/nuttx [8/351] git submodule src/lib/ecl [10/351] git submodule src/drivers/gps/devices [11/351] Building px4io-v2 ninja: Entering directory
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4io-v2_default’
ninja: no work to do.
[13/351] git submodule platforms/nuttx/NuttX/apps
[349/351] Linking CXX executable px4-stm32f407vet6-black.elf
FAILED: : && /home/rossos/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-g++ -fno-common -ffunction-sections -fdata-sections -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fno-common -ffunction-sections -fdata-sections -g -fno-exceptions -fno-rtti -std=gnu++11 -fno-threadsafe-statics -DCONFIG_WCHAR_BUILTIN -D__CUSTOM_FILE_IO__ -fcheck-new -Wall -Wextra -Werror -Warray-bounds -Wdisabled-optimization -Wdouble-promotion -Wfatal-errors -Wfloat-equal -Wformat-security -Winit-self -Wlogical-op -Wmissing-declarations -Wpointer-arith -Wshadow -Wuninitialized -Wunknown-pragmas -Wunused-variable -Wno-implicit-fallthrough -Wno-missing-field-initializers -Wno-missing-include-dirs -Wno-unused-parameter -Wunused-but-set-variable -Wformat=1 -Wno-overloaded-virtual -Wreorder -Wno-format-truncation -fvisibility=hidden -include visibility.h -fno-strict-aliasing -fomit-frame-pointer -fno-math-errno -funsafe-math-optimizations -ffunction-sections -fdata-sections -fno-strength-reduce -fno-builtin-printf -Os -DNDEBUG -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -nodefaultlibs -nostdlib -Wl,–warn-common,–gc-sections platforms/nuttx/CMakeFiles/px4-stm32f407vet6-black.elf.dir///src/platforms/empty.c.obj -o px4-stm32f407vet6-black.elf -L/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/external/Install/lib -nodefaultlibs -nostdlib -fno-exceptions -fno-rtti -Wl,–script=/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/NuttX/nuttx/configs/px4-stm32f407vet6-black/scripts/ld.script -Wl,-Map=nuttx_px4-stm32f407vet6-black_default.map -Wl,–warn-common -Wl,–gc-sections -Wl,–start-group NuttX/apps/libapps.a NuttX/nuttx/arch/arm/src/libarch.a NuttX/nuttx/binfmt/libbinfmt.a NuttX/nuttx/libc/libc.a NuttX/nuttx/configs/libconfigs.a NuttX/nuttx/libxx/libcxx.a NuttX/nuttx/drivers/libdrivers.a NuttX/nuttx/fs/libfs.a NuttX/nuttx/mm/libmm.a NuttX/nuttx/sched/libsched.a -Wl,–end-group -lm src/modules/uORB/libmodules__uORB.a src/drivers/barometer/bmp280/libdrivers__bmp280.a src/drivers/gps/libdrivers__gps.a src/drivers/imu/l3gd20/libdrivers__l3gd20.a src/drivers/imu/mpu9250/libdrivers__mpu9250.a src/drivers/magnetometer/hmc5883/libdrivers__hmc5883.a src/drivers/mkblctrl/libdrivers__mkblctrl.a src/drivers/pwm_input/libdrivers__pwm_input.a src/drivers/px4flow/libdrivers__px4flow.a src/drivers/px4fmu/libdrivers__px4fmu.a src/drivers/px4io/libdrivers__px4io.a src/drivers/rgbled/libdrivers__rgbled.a src/drivers/stm32/adc/libdrivers__adc.a src/drivers/stm32/tone_alarm/libdrivers__tone_alarm.a src/drivers/vmount/libdrivers__vmount.a src/modules/sensors/libmodules__sensors.a src/modules/uORB/libmodules__uORB.a ROMFS/libromfs.a src/lib/pwm_limit/libpwm_limit.a src/lib/mixer/libmixer.a src/lib/led/libled.a src/lib/circuit_breaker/libcircuit_breaker.a src/lib/tunes/libtunes.a src/lib/ecl/geo/libecl_geo.a src/platforms/common/libplatforms__common.a platforms/nuttx/src/px4_layer/libpx4_layer.a src/lib/airspeed/libairspeed.a src/lib/battery/libbattery.a src/lib/conversion/libconversion.a src/lib/ecl/validation/libecl_validation.a src/lib/mathlib/libmathlib.a NuttX/nuttx/arch/arm/src/libarch.a src/drivers/boards/px4-stm32f407vet6-black/libdrivers_board.a src/drivers/stm32/libdrivers_arch.a src/drivers/boards/common/libdrivers_boards_common.a src/drivers/boards/common/stm32/libdrivers_boards_common_arch.a src/modules/systemlib/libsystemlib.a src/lib/drivers/device/libdrivers__device.a src/lib/drivers/led/libdrivers__led.a src/lib/parameters/libparameters.a src/lib/cdev/libcdev.a src/lib/parameters/flashparams/libflashparams.a NuttX/nuttx/arch/arm/src/libarch.a src/drivers/boards/px4-stm32f407vet6-black/libdrivers_board.a src/drivers/stm32/libdrivers_arch.a src/drivers/boards/common/libdrivers_boards_common.a src/drivers/boards/common/stm32/libdrivers_boards_common_arch.a src/modules/systemlib/libsystemlib.a src/lib/drivers/device/libdrivers__device.a src/lib/drivers/led/libdrivers__led.a src/lib/parameters/libparameters.a src/lib/cdev/libcdev.a src/lib/parameters/flashparams/libflashparams.a NuttX/apps/libapps.a src/lib/perf/libperf.a src/lib/parameters/tinybson/libtinybson.a NuttX/nuttx/libxx/libcxx.a NuttX/nuttx/libc/libc.a NuttX/nuttx/drivers/libdrivers.a NuttX/nuttx/fs/libfs.a NuttX/nuttx/mm/libmm.a NuttX/nuttx/sched/libsched.a -lm -lgcc msg/libuorb_msgs.a && :
src/modules/sensors/libmodules__sensors.a(sensors.cpp.obj): In function Sensors::~Sensors()': /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/sensors.cpp:139: undefined reference to
DriverFramework::DevHandle::~DevHandle()’
src/modules/sensors/libmodules__sensors.a(sensors.cpp.obj): In function Sensors::Sensors(bool)': /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/sensors.cpp:262: undefined reference to
vtable for DriverFramework::DevHandle’
src/modules/sensors/libmodules__sensors.a(sensors.cpp.obj): In function Sensors::adc_init()': /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/sensors.cpp:288: undefined reference to
DriverFramework::DevMgr::getHandle(char const*, DriverFramework::DevHandle&)’
src/modules/sensors/libmodules__sensors.a(sensors.cpp.obj): In function Sensors::adc_poll()': /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/sensors.cpp:429: undefined reference to
DriverFramework::DevHandle::read(void*, unsigned int)’
src/modules/sensors/libmodules__sensors.a(voted_sensors_update.cpp.obj): In function sensors::VotedSensorsUpdate::apply_mag_calibration(DriverFramework::DevHandle&, mag_calibration_s const*, int)': /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:1060: undefined reference to
DriverFramework::DevHandle::ioctl(unsigned long, unsigned long)’
src/modules/sensors/libmodules__sensors.a(voted_sensors_update.cpp.obj): In function sensors::VotedSensorsUpdate::parameters_update()': /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:238: undefined reference to
DriverFramework::DevMgr::getHandle(char const*, DriverFramework::DevHandle&)’
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/modules/sensors/voted_sensors_update.cpp:237: undefined reference to DriverFramework::DevHandle::~DevHandle()' /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:326: undefined reference to
DriverFramework::DevMgr::getHandle(char const*, DriverFramework::DevHandle&)’
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/modules/sensors/voted_sensors_update.cpp:325: undefined reference to DriverFramework::DevHandle::~DevHandle()' /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:400: undefined reference to
vtable for DriverFramework::DevHandle’
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/modules/sensors/voted_sensors_update.cpp:432: undefined reference to DriverFramework::DevMgr::getHandle(char const*, DriverFramework::DevHandle&)' /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:439: undefined reference to
DriverFramework::DevHandle::ioctl(unsigned long, unsigned long)’
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/modules/sensors/voted_sensors_update.cpp:445: undefined reference to DriverFramework::DevMgr::releaseHandle(DriverFramework::DevHandle&)' /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:426: undefined reference to
DriverFramework::DevHandle::~DevHandle()’
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/modules/sensors/voted_sensors_update.cpp:244: undefined reference to DriverFramework::DevHandle::ioctl(unsigned long, unsigned long)' /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:1028: undefined reference to
DriverFramework::DevHandle::ioctl(unsigned long, unsigned long)’
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/modules/sensors/voted_sensors_update.cpp:248: undefined reference to vtable for DriverFramework::DevHandle' /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/modules/sensors/voted_sensors_update.cpp:332: undefined reference to
DriverFramework::DevHandle::ioctl(unsigned long, unsigned long)’
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/modules/sensors/voted_sensors_update.cpp:1042: undefined reference to DriverFramework::DevHandle::ioctl(unsigned long, unsigned long)' src/lib/parameters/libparameters.a(parameters.cpp.obj): In function
param_export’:
/home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/…/…/src/lib/parameters/parameters.cpp:1030: undefined reference to px4_shutdown_lock' /home/rossos/projectspace/stm32f407vgt6-discoveryF4/pixhawk_toolchain/src/Firmware/build/nuttx_px4-stm32f407vet6-black_default/../../src/lib/parameters/parameters.cpp:1128: undefined reference to
px4_shutdown_unlock’
NuttX/nuttx/arch/arm/src/libarch.a(stm32_spi.o):(.rodata.g_sp2iops+0x4): undefined reference to stm32_spi2select' NuttX/nuttx/arch/arm/src/libarch.a(stm32_spi.o):(.rodata.g_sp2iops+0x14): undefined reference to
stm32_spi2status’
NuttX/nuttx/arch/arm/src/libarch.a(stm32_spi.o):(.rodata.g_sp4iops+0x4): undefined reference to stm32_spi4select' NuttX/nuttx/arch/arm/src/libarch.a(stm32_spi.o):(.rodata.g_sp4iops+0x14): undefined reference to
stm32_spi4status’
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Makefile:176: recipe for target ‘px4-stm32f407vet6-black_default’ failed
make: *** [px4-stm32f407vet6-black_default] Error 1