基于arm-himix200-linux-gcc 交叉编译大疆PSDK

基于arm-himix200-linux-gcc 交叉编译大疆PSDK 毛巾卷 2023-10-17 17:51:20 1114

本文会讲诉如何在基于arm-himix200-linux-gcc交叉编译工具进行编译大疆PSDK,选用的板子是HI3516DV300为主控的,交叉编译平台是ubuntu20.04,PSDK版本是3.7.0。

大疆PSDK地址:https://github.com/dji-sdk/Payload-SDK/tree/master
libusb:https://libusb.info/

环境准备

首先既然是使用arm-himix200-linux这个交叉编译链,当然是要先配置关于它的环境了,从海思的SDK里面我们可以得到这个,没有的可以从论坛下载,解压后进行source一下环境。

source ./arm-himix200-linux.install
arm-himix200-linux-gcc -v //看到有正常输出即编译链工具配置成功

psdk是通过cmake来管理整个工程的,所以还需要安装cmake。

sudo apt install cmake
cmake --version //psdk要求版本至少不低于3.5

然后需要交叉编译一下libusb-1.0这个库。

tar -xvf libusb-1.0.26.tar.bz2
cd libusb-1.0.26
./configure --prefix=/opt/libusb-1.0-install CC=arm-himix200-linux-gcc --host=arm-linux --disable-udev //--prefix为最后install的路径,根据自己的环境进行修改,要写绝对路径  CC为指定编译工具  --host为交叉编译工具 --disable-udev是关闭udev库(udev为usb摄像头开发时使用的,这里我们不需要,需要可自行编译libudev),防止编译时报错
make -j
make install

PSDK编译

进入PSDK工程,找到Payload-SDK/samples/sample_c/platform/linux/manifold2/CMakeLists.txt,进行一些简单修改

cmake_minimum_required(VERSION 3.5)
project(dji_sdk_demo_linux C)

set(CMAKE_C_FLAGS "-pthread -std=gnu99")
set(CMAKE_CXX_FLAGS "-std=c++11 -pthread")
set(CMAKE_EXE_LINKER_FLAGS "-pthread")
set(CMAKE_C_COMPILER "arm-himix200-linux-gcc")   # 更换为arm-himix200-linux-gcc
set(CMAKE_CXX_COMPILER "arm-himix200-linux-g++") # 更换为arm-himix200-linux-g++
add_definitions(-D_GNU_SOURCE)

if (NOT USE_SYSTEM_ARCH)
    add_definitions(-DSYSTEM_ARCH_LINUX)
endif ()

if (BUILD_TEST_CASES_ON MATCHES TRUE)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -lgcov")
endif ()

set(PACKAGE_NAME payloadsdk)

## "uname -m" to auto distinguish Manifold2-G or Manifold2-C
execute_process(COMMAND uname -m
        OUTPUT_VARIABLE DEVICE_SYSTEM_ID)

# 这一段屏蔽
#if (DEVICE_SYSTEM_ID MATCHES x86_64)
 #   set(TOOLCHAIN_NAME x86_64-linux-gnu-gcc)
  #  add_definitions(-DPLATFORM_ARCH_x86_64=1)
#elseif (DEVICE_SYSTEM_ID MATCHES aarch64)
 #   set(TOOLCHAIN_NAME aarch64-linux-gnu-gcc)
  #  add_definitions(-DPLATFORM_ARCH_aarch64=1)
#else ()
 #   message(FATAL_ERROR "FATAL: Please confirm your platform.")
#endif ()

set(TOOLCHAIN_NAME arm-himix200-linux-gcc)

file(GLOB_RECURSE MODULE_COMMON_SRC ../common/*.c)
file(GLOB_RECURSE MODULE_HAL_SRC hal/*.c)
file(GLOB_RECURSE MODULE_APP_SRC application/*.c)
file(GLOB_RECURSE MODULE_SAMPLE_SRC ../../../module_sample/*.c)

include_directories(../../../module_sample)
include_directories(../common)
include_directories(../manifold2/application)

include_directories(../../../../../psdk_lib/include)
link_directories(../../../../../psdk_lib/lib/${TOOLCHAIN_NAME})
link_libraries(${CMAKE_CURRENT_LIST_DIR}/../../../../../psdk_lib/lib/${TOOLCHAIN_NAME}/lib${PACKAGE_NAME}.a)

if (NOT EXECUTABLE_OUTPUT_PATH)
    set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
endif ()

add_executable(${PROJECT_NAME}
        ${MODULE_APP_SRC}
        ${MODULE_SAMPLE_SRC}
        ${MODULE_COMMON_SRC}
        ${MODULE_HAL_SRC})

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../common/3rdparty)
find_package(OPUS REQUIRED)
if (OPUS_FOUND)
    message(STATUS "Found OPUS installed in the system")
    message(STATUS " - Includes: ${OPUS_INCLUDE_DIR}")
    message(STATUS " - Libraries: ${OPUS_LIBRARY}")

    add_definitions(-DOPUS_INSTALLED)
    target_link_libraries(${PROJECT_NAME} /usr/local/lib/libopus.a)
else ()
    message(STATUS "Cannot Find OPUS")
endif (OPUS_FOUND)

# libusb
include_directories(/opt/libusb-1.0-install/include
        )
target_link_libraries(${PROJECT_NAME}
        /opt/libusb-1.0-install/lib/libusb-1.0.a
        )

target_link_libraries(${PROJECT_NAME} m)

add_custom_command(TARGET ${PROJECT_NAME}
        PRE_LINK COMMAND cmake ..
        WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

然后编译即可

mkdir build;cd build
cmake ..;make -j

放到板子上后可以了,这个报错是因为要配置账户密码,这个的话需要自己去大疆平台申请,还有串口和网口也需要对应修改。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 5 5 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • ZENGTAO 2024-03-27 10:11:53
    回复
    为什么程序运行后显示无法加载自定义控件的json文件,遥控器自定义控件栏里都是空的
    • 毛巾卷 回复 ZENGTAO 2024-03-27 10:22:53
      回复
      需要把json文件放到板子上去,先到test_widget文件里面指定路径
    • ZENGTAO 回复 毛巾卷 2024-03-27 11:28:29
      回复
      是修改头文件引用么?开发板上不是只有一个可执行文件,能展开详细讲下么,才开始摸索
    • 毛巾卷 回复 ZENGTAO 2024-03-27 13:59:06
      回复
      不是,就是这个json文件和图片是要放到板子上去的,开发板上程序跑起来会去找这个文件夹,你看一下大疆PSDK的介绍,把widget_file放到板子上去,然后程序里面要指定这个文件夹的位置再重新编译
    • ZENGTAO 回复 毛巾卷 2024-03-27 15:55:36
      回复
      char curFileDirPath[WIDGET_DIR_PATH_LEN_MAX],这个是修改文件夹位置的么,在T_DjiReturnCode DjiTest_WidgetStartService(void)启动函数里的
    • 毛巾卷 回复 ZENGTAO 2024-03-27 20:24:38
      回复
      是的
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
毛巾卷
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区