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

本文会讲诉如何在基于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 评论 打赏
评论
0个
时间排序
内容存在敏感词
手气红包
    0 条记录 第 0 /
    相关专栏
    置顶时间设置
    结束时间
    删除原因
    • 广告/SPAM
    • 恶意灌水
    • 违规内容
    • 文不对题
    • 重复发帖
    打赏作者
    易百纳技术社区
    毛巾卷
    您的支持将鼓励我继续创作!
    打赏金额:
    ¥1 易百纳技术社区
    ¥5 易百纳技术社区
    ¥10 易百纳技术社区
    ¥50 易百纳技术社区
    ¥100 易百纳技术社区
    支付方式:
    微信支付
    支付宝支付
    易百纳技术社区 微信支付
    易百纳技术社区
    打赏成功!

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

    举报反馈

    举报类型

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

    详细说明

    审核成功

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

    审核失败

    失败原因
    备注
    Loading...
    易百纳技术社区
    确定要删除此文章、专栏、评论吗?
    确定
    取消
    易百纳技术社区
    每周任务
      去完成
      活动规则
      易百纳技术社区
      升级提醒
      升级

      恭喜您的社区称号由 升级为 “社区游民”

      同时为了感谢您对社区的支持,我们将送出xxx礼品一份, 记得领取哦~

      升级提醒
      易百纳技术社区

      惊喜礼包

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

      小包子的红包

      恭喜发财,大吉大利

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

        avatar