J'ai compilé un logiciel pour un HummingBoard-Pro (processeur d'armement).Logiciel croisé compilé produisant une mauvaise sortie
Le logiciel reçoit juste quelques données en utilisant le protocole lcm. Si j'utilise le logiciel compilé croisé, les données reçues par l'application ne sont pas valides, alors que si j'utilise un logiciel compilé embarqué, tout fonctionne correctement.
-Le logiciel est exactement le même! -J'ai été compilé à l'aide de cmake et d'une chaîne d'outils d'armement spécifique.
exemple de sortie de croix compilé sw:
first value 5.73599e+107
second value 5.73599e+107
third value 5.73599e+107
Exemple de sortie de bord compilé sw:
first value 1
second value 2
third value 3
Note: Il est ma première compilation croisée tentative donc sans doute quelque chose va mal, mais je n » T vraiment idée de quoi.
CMakelists fichier
cmake_minimum_required(VERSION 3.1)
set(main_project_dir ${CMAKE_CURRENT_SOURCE_DIR})
set(external_dir ${main_project_dir}/external)
set(external_lcm_dir ${external_dir}/lcm_dir)
set(external_lcm ${external_lcm_dir}/lcm)
set(external_lcm_build ${external_lcm}/build)
set(external_lcm_gen_exe /usr/local/bin/lcm-gen)
set(lcm_input_file ${main_project_dir}/lcm_format_files/lcm_input_files/indrive.sensors.vanet.lcm)
set(lcm_libraries ${main_project_dir}/external/lcm_dir/lcm/build/lcm)
set(lmc_libraries_header ${main_project_dir}/external/lcm_dir/lcm/)
set(lcm_autogenerated_dir ${main_project_dir}/build/lcm_autogenerated_classes)
add_custom_target(
generate-lcm
COMMAND ${external_lcm_gen_exe} -x ${lcm_input_file} --cpp-hpath ${lcm_autogenerated_dir}
COMMENT "=================== Generating lcm files..."
)
add_subdirectory(testSender)
add_subdirectory(testReceiver)
chaîne d'outils FICHIER
SET (CMAKE_SYSTEM_NAME Linux)
SET (CMAKE_SYSTEM_VERSION 1)
SET (CMAKE_SYSTEM_PROCESSOR arm)
INCLUDE_DIRECTORIES(/usr/hummingboard/usr/include /usr/hummingboard/include /usr/hummingboard/usr/include/arm-linux-gnueabihf/)
LINK_DIRECTORIES(/usr/hummingboard/usr/lib /usr/hummingboard/lib /usr/hummingboard/lib/arm-linux-gnueabihf)
SET(CMAKE_PREFIX_PATH /usr/arm-linux-gnueabihf/lib/
/usr/hummingboard/
/usr/hummingboard/lib/arm-linux-gnueabihf/
/usr/hummingboard/usr
/usr/hummingboard/usr/lib/arm-linux-gnueabihf/
)
SET (CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabi-gcc)
SET (CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabi-g++)
SET (CMAKE_FIND_ROOT_PATH /usr/hummingboard/ /usr/hummingboard/usr)
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
SET (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
sans afficher 'CMakeLists.txt' (sous forme de [mcve]) nous ne pouvons deviner. Probablement, ce script prend des paramètres * host * au lieu de * target *. – Tsyvarev
La valeur '5.73599e + 107' est' 0x7f800000' ce qui signifie [infini] (https://stackoverflow.com/questions/35022082/assign-infinity-to-float). Donc, une supposition sauvage est que vos paramètres de virgule flottante sont faux. S'il vous plaît comparer les lignes de commande du compilateur entre les deux versions (travail ou non-travail) en utilisant [makefiles verbeux] (https://stackoverflow.com/questions/2670121/using-cmake-with-gnu-make-how-can-i -voir-les-commandes-exactes). – Florian
J'ai ajouté les fichiers demandés – Franconet