I cannot build px4 even though I cloned fresh copy of both librobotcontrol and Firmware and followed instructions (https://docs.px4.io/en/flight_controller/beaglebone_blue.html) one by one.
env setup
export TOOLCHAIN_ROOT=$HOME/toolchain/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf
export CROSS_COMPILE=arm-linux-gnueabihf
export ARCH=arm
export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
NEWP=$(echo $PATH | tr ':' '\n' | grep -v "^$HOME" | tr '\n' ':')
NEWP=${NEWP%:}
export PATH=$TOOLCHAIN_ROOT/bin/:$NEWP
robotcontrol
git clone git://github.com/StrawsonDesign/librobotcontrol
cd librobotcontrol
sed 's/gcc/arm-linux-gnueabihf-gcc/' -i `grep gcc * -Rl`
export DESTDIR=~/arm
make install
ls ~/arm
Firmware
export LIBROBOTCONTROL_INSTALL_DIR=~/arm/usr
make beaglebone_blue_cross
[23/698] Building CXX object src/lib/DriverFramework/framework/src/CMakeFiles/df_driver_framework.dir/I2CDevObj.cpp.o
…
/home/mpletty/arm/usr/include/rc/mavlink/common/../protocol.h: In function ‘uint16_t _MAV_RETURN_uint16_t(const mavlink_message_t*, uint8_t)’:
/home/mpletty/arm/usr/include/rc/mavlink/common/../protocol.h:279:49: error: cast from ‘const char*’ to ‘const uint16_t* {aka const short unsigned int*}’ increases required alignment of target type [-Werror=cast-align]
{ return *(const TYPE *)(&_MAV_PAYLOAD(msg)[ofs]);}
^
/home/mpletty/arm/usr/include/rc/mavlink/common/../protocol.h:281:1: note: in expansion of macro ‘_MAV_MSG_RETURN_TYPE’
_MAV_MSG_RETURN_TYPE(uint16_t)
Can anyone else replicate?
Looks like a warning leads to an error. Try building without -Werror here:
It should work. I found another workaround
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0bfcee70d8..fbe65b2e6a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -370,6 +370,7 @@ px4_generate_airframes_xml(BOARD ${PX4_BOARD})
#=============================================================================
# DriverFramework
#
+add_compile_options(-Wno-cast-align)
px4_add_git_submodule(TARGET git_driverframework PATH "src/lib/DriverFramework")
set(OS ${PX4_PLATFORM})
add_subdirectory(src/lib/DriverFramework/framework)
However, both seems awful. As far as I understand this issue comes from unused but existing function _MAV_RETURN_uint16_t which does that illegal cast from const char* to const uint16_t*. Function defined by macro _MAV_MSG_RETURN_TYPE in a conditional controlled by MAVLINK_ALIGNED_FIELDS and MAVLINK_NEED_BYTE_SWAP in librobotcontrol/include/rc/mavlink/protocol.h. Header included - never used.
Have not flight yet. Hope it works.
You’re right, it would be good to fix that in the mavlink header files if it isn’t already.
Any news to this? I’m still getting the same error.
I mean if we don’t want to work-around. 
Which target are you compiling against? What toolchain is that using? I need to reproduce this again to check. Thanks.
Has this issue been resolved? I’m on ‘18955a04c7c7467e00ea42b704addb4a9c12b53a’ from master in GitHub - mavlink/mavlink: Marshalling / communication library for drones..
mavlink error: cast from const char* to const uint16_t* {aka const short unsigned int* } increases required alignment of target type [-Werror=cast-align]