技术专栏
基于arm-himix200-linux-gcc 交叉编译大疆PSDK
本文会讲诉如何在基于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回复 举报是的
-
相关专栏
-
2020-08-03 19:14:56
-
浏览量:1266次2023-12-05 15:31:55
-
浏览量:2113次2024-01-18 15:07:54
-
浏览量:4267次2019-12-16 13:54:11
-
浏览量:862次2024-02-04 10:08:58
-
浏览量:811次2024-01-24 16:33:36
-
浏览量:1069次2024-01-22 17:02:06
-
浏览量:2157次2024-02-05 15:51:53
-
浏览量:2317次2024-01-18 15:01:07
-
2024-02-04 10:33:53
-
浏览量:270次2024-09-13 11:55:31
-
2024-02-23 16:20:11
-
浏览量:4129次2022-04-01 17:01:16
-
浏览量:1299次2023-06-20 16:09:54
-
浏览量:3586次2022-10-13 17:29:06
-
浏览量:2650次2020-08-04 20:30:30
-
浏览量:4793次2020-09-30 18:01:11
-
浏览量:1141次2023-06-12 14:18:15
-
浏览量:860次2023-10-25 15:43:39
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
毛巾卷
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注