7562
- 收藏
- 点赞
- 分享
- 举报
Hi3520D 在 Eclipse 下建立 mpp 工程详细步骤分享
本帖最后由 lyz1900 于 2016-9-2 17:46 编辑
本人新手入门 Linux 和海思,什么都不太熟,经过半年学习才有点入门,最近在学习海思 Hi3520D 的 mpp,因为毕竟习惯 Eclipse 下的 IDE 环境,也想把这个 mpp 的程序放到 Eclipse 环境下,网上找的一个大神的教程,但是说的很不详细,也不成功,好多地方大神隐藏了起来,下载下的工程也不能用,现在自己搞一个,终于搞通了,给大家分享下,顺便赚点百纳币下载资料用。
一、安装 SDK 和编译链
SDK 下的说明文档很详细,但是好像有些地方有点诡异 贴上来省的大家去翻文档:
第二章 首次安装SDK
1、hi3520D SDK包位置
在"hi3520D_V100R001***/01.software/board"目录下,您可以看到一个hi3520D_SDK_Vx.x.x.x.tgz 的文件,该文件就是hi3520D的软件开发包。
2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf hi3520D_SDK_Vx.x.x.x.tgz ,解压缩该文件,可以得到一个hi3520D_SDK_Vx.x.x.x目录。
3、展开SDK包内容
返回hi3520D_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100nptl-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限,暂时不支持glibc版本):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
但是实际上,安装 SDK 前,会提示先按照工具链才能安装 SDK ,但是不安装 SDK 哪里有工具链可以按照。。。于是就尴尬了,我的方法是先在 SDK 包中把工具链解压出来,先安装了工具链,再去安装 SDK。
[code]# cd /Hi3520D_SDK_V1.0.4.0/package
# tar -zxvf osdrv.tgz
# cd osdrv/toolchain[/code]
然后就可以按照海思的说明安装交叉编译链了,安装完交叉编译链,删掉解压出来的 osdrv 目录就好了.
[code]# rm -rf /Hi3520D_SDK_V1.0.4.0/package/osdrv[/code]
删除后,直接按照说明解包就可以了,这次解包不会提示没有安装工具链,O(∩_∩)O~
[code]# cd Hi3520D_SDK_V1.0.4.0\
# ./sdk.unpack[/code]
二、安装 Eclipse 环境
这步省略了先,晚上很多教程,我是 apt-get 大法,按照 Eclipse 和 CDT ,本来是用来编译和研究 OpenCV 的,比较方便。
三、 Eclipse CDT 工程3文件夹构建,生成一个 mpp 工程目录
1. 我的 Eclipse 版本
2. file->New->C Procjet 新建 C 工程
输入你创建的工程名称,
next
next
添加 ① ② 交叉编译链(根据实际地址,前面安装交叉编译链的时候在 /etc/profile 里面添加了环境变量,可以 gedit /etc/profile 查看下交叉编译链安装在哪里,注意这里面用的是 arm-hisiv100nptl-linux- ,另一个编译链没有搞,不会)。
Finish 后,出现新建的工程:
3. 构建构成目录
添加几个文件夹来放置源码:
添加源码文件夹 src
再同样的方法简历 inc lib src
其中很简单的 inc 放 .h src 放 .c lib 放库。
建立好之后,在 Eclipse 的 Workspace 中找到工程文件夹,工程文件夹下已经建立了一下三个文件夹:
下面,向文件夹中拷贝需要的文件,步骤:
1) 构建包含 inc 文件夹
a. 将 /Hi3520D_SDK_V1.0.4.0/mpp/include 下的所有文件和文件夹拷贝到 inc 中
[code]# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/include/* ~/new_workspace/mpp_test_projcet_1/inc/[/code]
b. 将 /Hi3520D_SDK_V1.0.4.0/mpp/sample/common 下的所有 .h 文件夹拷贝到 inc 中
[code]# cd ~/new_workspace/mpp_test_projcet_1/inc
# mkdir common
# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/mpp/sample/common/*.h ~/new_workspace/mpp_test_projcet_1/inc/common[/code]
c. mpp/extdrv 下的 .h 也要添加到 inc 但是目录比较复杂不好弄,索性先全部拷贝进去,再删掉 Makefile 和 .c 文件,这样比较方便保留原来目录结构
[code]# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/extdrv ~/new_workspace/mpp_test_projcet_1/inc/[/code]
注意 除了 .h 所有目录和子目录下的东西都要删除干净
[code]# cd ~/new_workspace/mpp_test_projcet_1/inc/extdrv
# rm -rf ./*.c ./*/*.c
# rm -rf ./*.o ./*/*.o
# rm -rf ./*.ko ./*/*.ko
# rm -rf ./Makefile ./*/Makefile
# rm -rf ./Module.symvers ./*/Module.symvers
# rm -rf ./modules.order ./*/modules.order[/code]
都删除干净后:
[code]extdrv/
├── cx26828
│ ├── AlcaeusColibri.h
│ ├── AlcaeusColibriRegisters.h
│ ├── AlcaeusRegisters.h
│ ├── AlcaeusVidDecoder.h
│ ├── Comm.h
│ ├── cx26828_def.h
│ ├── cx26828.h
│ ├── CxApiDefines.h
│ └── gpio_i2c.h
├── gpio_i2c
│ ├── gpio_i2c.h
│ ├── i2c_read
│ ├── i2c_write
│ └── strfunc.h
├── nvp6114
│ ├── audio.h
│ ├── coax_protocol.h
│ ├── common.h
│ ├── motion.h
│ ├── nvp6114.h
│ └── video.h
├── ssp-GV7601
│ ├── hi_ssp.h
│ ├── ssp_read
│ ├── ssp_write
│ └── strfunc.h
├── tlv320aic31
│ ├── gpio_i2c.h
│ ├── tlv320aic31_def.h
│ └── tlv320aic31.h
├── tw2865
│ ├── gpio_i2c.h
│ ├── tw2865_def.h
│ └── tw2865.h
├── tw2868
│ ├── gpio_i2c.h
│ ├── tw2868_def.h
│ └── tw2868.h
└── tw2960
├── gpio_i2c.h
├── tw2960_def.h
└── tw2960.h[/code]
注意:实际测试中,如果这里有 .c 没有删除干净,会报错,报很多错误。因为 C 文件为驱动所需的文件,会包含 linux 源码,实际上与 mpp 无关。
d. 添加好的 inc 文件夹内容为:
[code]inc
├── common
│ ├── hisi_osd.h
│ ├── loadbmp.h
│ ├── osd.h
│ ├── sample_comm.h
│ └── zimo.h
├── extdrv
│ ├── cx26828
│ │ ├── AlcaeusColibri.h
│ │ ├── AlcaeusColibriRegisters.h
│ │ ├── AlcaeusRegisters.h
│ │ ├── AlcaeusVidDecoder.h
│ │ ├── Comm.h
│ │ ├── cx26828_def.h
│ │ ├── cx26828.h
│ │ ├── CxApiDefines.h
│ │ └── gpio_i2c.h
│ ├── gpio_i2c
│ │ ├── gpio_i2c.h
│ │ ├── i2c_read
│ │ ├── i2c_write
│ │ └── strfunc.h
│ ├── nvp6114
│ │ ├── audio.h
│ │ ├── coax_protocol.h
│ │ ├── common.h
│ │ ├── motion.h
│ │ ├── nvp6114.h
│ │ └── video.h
│ ├── ssp-GV7601
│ │ ├── hi_ssp.h
│ │ ├── ssp_read
│ │ ├── ssp_write
│ │ └── strfunc.h
│ ├── tlv320aic31
│ │ ├── gpio_i2c.h
│ │ ├── tlv320aic31_def.h
│ │ └── tlv320aic31.h
│ ├── tw2865
│ │ ├── gpio_i2c.h
│ │ ├── tw2865_def.h
│ │ └── tw2865.h
│ ├── tw2868
│ │ ├── gpio_i2c.h
│ │ ├── tw2868_def.h
│ │ └── tw2868.h
│ └── tw2960
│ ├── gpio_i2c.h
│ ├── tw2960_def.h
│ └── tw2960.h
├── hi_comm_adec.h
├── hi_comm_aenc.h
├── hi_comm_ai.h
├── hi_comm_aio.h
├── hi_comm_ao.h
├── hi_comm_hdmi.h
├── hi_comm_ive.h
├── hi_common.h
├── hi_comm_pciv.h
├── hi_comm_rc.h
├── hi_comm_region.h
├── hi_comm_sys.h
├── hi_comm_vb.h
├── hi_comm_vda.h
├── hi_comm_vdec.h
├── hi_comm_venc.h
├── hi_comm_video.h
├── hi_comm_vi.h
├── hi_comm_vo.h
├── hi_comm_vpss.h
├── hi_debug.h
├── hi_defines.h
├── hi_errno.h
├── hifb.h
├── hi_io.h
├── hi_math.h
├── hi_mem.h
├── hi_tde_api.h
├── hi_tde_errcode.h
├── hi_tde_type.h
├── hi_type.h
├── list.h
├── mkp
│ └── mod_ext.h
├── mpi_adec.h
├── mpi_aenc.h
├── mpi_ai.h
├── mpi_ao.h
├── mpi_hdmi.h
├── mpi_ive.h
├── mpi_pciv.h
├── mpi_region.h
├── mpi_sys.h
├── mpi_vb.h
├── mpi_vda.h
├── mpi_vdec.h
├── mpi_venc.h
├── mpi_vi.h
├── mpi_vo.h
└── mpi_vpss.h
[/code]
2) 构建 src
src 文件夹内容比较简单,为 mpp/sample/comm 下的所有 c 文件,和你所需要的 sample 下的 c 文件。
[code]# cd ~/new_workspace/mpp_test_projcet_1/src/
# mkdir common
# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/sample/common/*.c ~/new_workspace/mpp_test_projcet_1/src/common/[/code]
选择构建工程 sample_vio 测试图像输入输出,故将 sample_vio.c 拷贝到 src 下:
[code]# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/sample/vio/sample_vio.c ~/new_workspace/mpp_test_projcet_1/src/[/code]
3) 构建 lib
将 mpp/lib 下的
[code]libaec.a
libhdmi.a
libmpi.a
libtde.a
libvqev2.a
libanr.a
libjpeg.a
libresampler.a
libVoiceEngine.a[/code]
拷贝到工程 lib 目录下,会多复制一个 libmem.a 但是不会被用到,可以删除。
至此,工程目录全部构建完成,结果如下:
[code]mpp_test_projcet_1/
├── inc
│ ├── common
│ │ ├── hisi_osd.h
│ │ ├── loadbmp.h
│ │ ├── osd.h
│ │ ├── sample_comm.h
│ │ └── zimo.h
│ ├── extdrv
│ │ ├── cx26828
│ │ │ ├── AlcaeusColibri.h
│ │ │ ├── AlcaeusColibriRegisters.h
│ │ │ ├── AlcaeusRegisters.h
│ │ │ ├── AlcaeusVidDecoder.h
│ │ │ ├── Comm.h
│ │ │ ├── cx26828_def.h
│ │ │ ├── cx26828.h
│ │ │ ├── CxApiDefines.h
│ │ │ └── gpio_i2c.h
│ │ ├── gpio_i2c
│ │ │ ├── gpio_i2c.h
│ │ │ ├── i2c_read
│ │ │ ├── i2c_write
│ │ │ └── strfunc.h
│ │ ├── nvp6114
│ │ │ ├── audio.h
│ │ │ ├── coax_protocol.h
│ │ │ ├── common.h
│ │ │ ├── motion.h
│ │ │ ├── nvp6114.h
│ │ │ └── video.h
│ │ ├── ssp-GV7601
│ │ │ ├── hi_ssp.h
│ │ │ ├── ssp_read
│ │ │ ├── ssp_write
│ │ │ └── strfunc.h
│ │ ├── tlv320aic31
│ │ │ ├── gpio_i2c.h
│ │ │ ├── tlv320aic31_def.h
│ │ │ └── tlv320aic31.h
│ │ ├── tw2865
│ │ │ ├── gpio_i2c.h
│ │ │ ├── tw2865_def.h
│ │ │ └── tw2865.h
│ │ ├── tw2868
│ │ │ ├── gpio_i2c.h
│ │ │ ├── tw2868_def.h
│ │ │ └── tw2868.h
│ │ └── tw2960
│ │ ├── gpio_i2c.h
│ │ ├── tw2960_def.h
│ │ └── tw2960.h
│ ├── hi_comm_adec.h
│ ├── hi_comm_aenc.h
│ ├── hi_comm_ai.h
│ ├── hi_comm_aio.h
│ ├── hi_comm_ao.h
│ ├── hi_comm_hdmi.h
│ ├── hi_comm_ive.h
│ ├── hi_common.h
│ ├── hi_comm_pciv.h
│ ├── hi_comm_rc.h
│ ├── hi_comm_region.h
│ ├── hi_comm_sys.h
│ ├── hi_comm_vb.h
│ ├── hi_comm_vda.h
│ ├── hi_comm_vdec.h
│ ├── hi_comm_venc.h
│ ├── hi_comm_video.h
│ ├── hi_comm_vi.h
│ ├── hi_comm_vo.h
│ ├── hi_comm_vpss.h
│ ├── hi_debug.h
│ ├── hi_defines.h
│ ├── hi_errno.h
│ ├── hifb.h
│ ├── hi_io.h
│ ├── hi_math.h
│ ├── hi_mem.h
│ ├── hi_tde_api.h
│ ├── hi_tde_errcode.h
│ ├── hi_tde_type.h
│ ├── hi_type.h
│ ├── list.h
│ ├── mkp
│ │ └── mod_ext.h
│ ├── mpi_adec.h
│ ├── mpi_aenc.h
│ ├── mpi_ai.h
│ ├── mpi_ao.h
│ ├── mpi_hdmi.h
│ ├── mpi_ive.h
│ ├── mpi_pciv.h
│ ├── mpi_region.h
│ ├── mpi_sys.h
│ ├── mpi_vb.h
│ ├── mpi_vda.h
│ ├── mpi_vdec.h
│ ├── mpi_venc.h
│ ├── mpi_vi.h
│ ├── mpi_vo.h
│ └── mpi_vpss.h
├── lib
│ ├── libaec.a
│ ├── libanr.a
│ ├── libhdmi.a
│ ├── libjpeg.a
│ ├── libmem.a
│ ├── libmpi.a
│ ├── libresampler.a
│ ├── libtde.a
│ ├── libVoiceEngine.a
│ └── libvqev2.a
└── src
├── common
│ ├── hisi_osd.c
│ ├── loadbmp.c
│ ├── osd.c
│ ├── sample_comm_audio.c
│ ├── sample_comm_sys.c
│ ├── sample_comm_vda.c
│ ├── sample_comm_vdec.c
│ ├── sample_comm_venc.c
│ ├── sample_comm_vi.c
│ ├── sample_comm_vo.c
│ ├── sample_comm_vpss.c
│ └── zimo.c
└── sample_vio.c[/code]
返回 Eclipse 界面,在工程上右键快捷菜单 Refresh 即可应用全部变更到工程,就会在工程上发现添加进去的文件。
四、Eclipse 工程配置,编译工程
完成工程文件夹构建后进入工程设置,工程上右键,Properties
C/C++ Build -> Settings
Cross GCC Compiler ->
Symbols -> Defined symbols (-D)
添加全局宏定义:
[code]hi3520D
HICHIP=0x3520D100
HI_DEBUG
HI_XXXX
DEMO[/code]
Symbols -> Includes -> Include paths (-I)
添加包含关系
[code]"${workspace_loc:/${ProjName}/inc}"
"${workspace_loc:/${ProjName}/inc/common}"
"${workspace_loc:/${ProjName}/inc/extdrv/tw2865}"
"${workspace_loc:/${ProjName}/inc/extdrv/tw2960}"
"${workspace_loc:/${ProjName}/inc/extdrv/tlv320aic31}"
"${workspace_loc:/${ProjName}/inc/extdrv/cx26828}"
"${workspace_loc:/${ProjName}/inc/extdrv/nvp6114}"[/code]
Cross GCC Linker ->
Libraries -> Libraries (-l)
[code]mpi
hdmi
tde
VoiceEngine
aec
resampler
anr
vqev2
jpeg
pthread
m[/code]
添加库文件,其中 -lpthread -lm 不是我们 lib 里面的,是工具链里面的
Libraries -> Library search path (-L)
[code]/opt/hisi-linux-nptl/arm-hisiv100-linux/target/lib
"${workspace_loc:/${ProjName}/lib}"[/code]
其中,/opt/hisi-linux-nptl/arm-hisiv100-linux/target/lib 是交叉编译链里面的 lib 目录
apply 确定之后就好了。
ok,至此全部配置成功,返回工程,Refresh -> Clean Project -> Build Project 编译通过!
本人新手入门 Linux 和海思,什么都不太熟,经过半年学习才有点入门,最近在学习海思 Hi3520D 的 mpp,因为毕竟习惯 Eclipse 下的 IDE 环境,也想把这个 mpp 的程序放到 Eclipse 环境下,网上找的一个大神的教程,但是说的很不详细,也不成功,好多地方大神隐藏了起来,下载下的工程也不能用,现在自己搞一个,终于搞通了,给大家分享下,顺便赚点百纳币下载资料用。
一、安装 SDK 和编译链
SDK 下的说明文档很详细,但是好像有些地方有点诡异 贴上来省的大家去翻文档:
第二章 首次安装SDK
1、hi3520D SDK包位置
在"hi3520D_V100R001***/01.software/board"目录下,您可以看到一个hi3520D_SDK_Vx.x.x.x.tgz 的文件,该文件就是hi3520D的软件开发包。
2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf hi3520D_SDK_Vx.x.x.x.tgz ,解压缩该文件,可以得到一个hi3520D_SDK_Vx.x.x.x目录。
3、展开SDK包内容
返回hi3520D_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100nptl-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限,暂时不支持glibc版本):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
但是实际上,安装 SDK 前,会提示先按照工具链才能安装 SDK ,但是不安装 SDK 哪里有工具链可以按照。。。于是就尴尬了,我的方法是先在 SDK 包中把工具链解压出来,先安装了工具链,再去安装 SDK。
[code]# cd /Hi3520D_SDK_V1.0.4.0/package
# tar -zxvf osdrv.tgz
# cd osdrv/toolchain[/code]
然后就可以按照海思的说明安装交叉编译链了,安装完交叉编译链,删掉解压出来的 osdrv 目录就好了.
[code]# rm -rf /Hi3520D_SDK_V1.0.4.0/package/osdrv[/code]
删除后,直接按照说明解包就可以了,这次解包不会提示没有安装工具链,O(∩_∩)O~
[code]# cd Hi3520D_SDK_V1.0.4.0\
# ./sdk.unpack[/code]
二、安装 Eclipse 环境
这步省略了先,晚上很多教程,我是 apt-get 大法,按照 Eclipse 和 CDT ,本来是用来编译和研究 OpenCV 的,比较方便。
三、 Eclipse CDT 工程3文件夹构建,生成一个 mpp 工程目录
1. 我的 Eclipse 版本
2. file->New->C Procjet 新建 C 工程
输入你创建的工程名称,
next
next
添加 ① ② 交叉编译链(根据实际地址,前面安装交叉编译链的时候在 /etc/profile 里面添加了环境变量,可以 gedit /etc/profile 查看下交叉编译链安装在哪里,注意这里面用的是 arm-hisiv100nptl-linux- ,另一个编译链没有搞,不会)。
Finish 后,出现新建的工程:
3. 构建构成目录
添加几个文件夹来放置源码:
添加源码文件夹 src
再同样的方法简历 inc lib src
其中很简单的 inc 放 .h src 放 .c lib 放库。
建立好之后,在 Eclipse 的 Workspace 中找到工程文件夹,工程文件夹下已经建立了一下三个文件夹:
下面,向文件夹中拷贝需要的文件,步骤:
1) 构建包含 inc 文件夹
a. 将 /Hi3520D_SDK_V1.0.4.0/mpp/include 下的所有文件和文件夹拷贝到 inc 中
[code]# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/include/* ~/new_workspace/mpp_test_projcet_1/inc/[/code]
b. 将 /Hi3520D_SDK_V1.0.4.0/mpp/sample/common 下的所有 .h 文件夹拷贝到 inc 中
[code]# cd ~/new_workspace/mpp_test_projcet_1/inc
# mkdir common
# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/mpp/sample/common/*.h ~/new_workspace/mpp_test_projcet_1/inc/common[/code]
c. mpp/extdrv 下的 .h 也要添加到 inc 但是目录比较复杂不好弄,索性先全部拷贝进去,再删掉 Makefile 和 .c 文件,这样比较方便保留原来目录结构
[code]# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/extdrv ~/new_workspace/mpp_test_projcet_1/inc/[/code]
注意 除了 .h 所有目录和子目录下的东西都要删除干净
[code]# cd ~/new_workspace/mpp_test_projcet_1/inc/extdrv
# rm -rf ./*.c ./*/*.c
# rm -rf ./*.o ./*/*.o
# rm -rf ./*.ko ./*/*.ko
# rm -rf ./Makefile ./*/Makefile
# rm -rf ./Module.symvers ./*/Module.symvers
# rm -rf ./modules.order ./*/modules.order[/code]
都删除干净后:
[code]extdrv/
├── cx26828
│ ├── AlcaeusColibri.h
│ ├── AlcaeusColibriRegisters.h
│ ├── AlcaeusRegisters.h
│ ├── AlcaeusVidDecoder.h
│ ├── Comm.h
│ ├── cx26828_def.h
│ ├── cx26828.h
│ ├── CxApiDefines.h
│ └── gpio_i2c.h
├── gpio_i2c
│ ├── gpio_i2c.h
│ ├── i2c_read
│ ├── i2c_write
│ └── strfunc.h
├── nvp6114
│ ├── audio.h
│ ├── coax_protocol.h
│ ├── common.h
│ ├── motion.h
│ ├── nvp6114.h
│ └── video.h
├── ssp-GV7601
│ ├── hi_ssp.h
│ ├── ssp_read
│ ├── ssp_write
│ └── strfunc.h
├── tlv320aic31
│ ├── gpio_i2c.h
│ ├── tlv320aic31_def.h
│ └── tlv320aic31.h
├── tw2865
│ ├── gpio_i2c.h
│ ├── tw2865_def.h
│ └── tw2865.h
├── tw2868
│ ├── gpio_i2c.h
│ ├── tw2868_def.h
│ └── tw2868.h
└── tw2960
├── gpio_i2c.h
├── tw2960_def.h
└── tw2960.h[/code]
注意:实际测试中,如果这里有 .c 没有删除干净,会报错,报很多错误。因为 C 文件为驱动所需的文件,会包含 linux 源码,实际上与 mpp 无关。
d. 添加好的 inc 文件夹内容为:
[code]inc
├── common
│ ├── hisi_osd.h
│ ├── loadbmp.h
│ ├── osd.h
│ ├── sample_comm.h
│ └── zimo.h
├── extdrv
│ ├── cx26828
│ │ ├── AlcaeusColibri.h
│ │ ├── AlcaeusColibriRegisters.h
│ │ ├── AlcaeusRegisters.h
│ │ ├── AlcaeusVidDecoder.h
│ │ ├── Comm.h
│ │ ├── cx26828_def.h
│ │ ├── cx26828.h
│ │ ├── CxApiDefines.h
│ │ └── gpio_i2c.h
│ ├── gpio_i2c
│ │ ├── gpio_i2c.h
│ │ ├── i2c_read
│ │ ├── i2c_write
│ │ └── strfunc.h
│ ├── nvp6114
│ │ ├── audio.h
│ │ ├── coax_protocol.h
│ │ ├── common.h
│ │ ├── motion.h
│ │ ├── nvp6114.h
│ │ └── video.h
│ ├── ssp-GV7601
│ │ ├── hi_ssp.h
│ │ ├── ssp_read
│ │ ├── ssp_write
│ │ └── strfunc.h
│ ├── tlv320aic31
│ │ ├── gpio_i2c.h
│ │ ├── tlv320aic31_def.h
│ │ └── tlv320aic31.h
│ ├── tw2865
│ │ ├── gpio_i2c.h
│ │ ├── tw2865_def.h
│ │ └── tw2865.h
│ ├── tw2868
│ │ ├── gpio_i2c.h
│ │ ├── tw2868_def.h
│ │ └── tw2868.h
│ └── tw2960
│ ├── gpio_i2c.h
│ ├── tw2960_def.h
│ └── tw2960.h
├── hi_comm_adec.h
├── hi_comm_aenc.h
├── hi_comm_ai.h
├── hi_comm_aio.h
├── hi_comm_ao.h
├── hi_comm_hdmi.h
├── hi_comm_ive.h
├── hi_common.h
├── hi_comm_pciv.h
├── hi_comm_rc.h
├── hi_comm_region.h
├── hi_comm_sys.h
├── hi_comm_vb.h
├── hi_comm_vda.h
├── hi_comm_vdec.h
├── hi_comm_venc.h
├── hi_comm_video.h
├── hi_comm_vi.h
├── hi_comm_vo.h
├── hi_comm_vpss.h
├── hi_debug.h
├── hi_defines.h
├── hi_errno.h
├── hifb.h
├── hi_io.h
├── hi_math.h
├── hi_mem.h
├── hi_tde_api.h
├── hi_tde_errcode.h
├── hi_tde_type.h
├── hi_type.h
├── list.h
├── mkp
│ └── mod_ext.h
├── mpi_adec.h
├── mpi_aenc.h
├── mpi_ai.h
├── mpi_ao.h
├── mpi_hdmi.h
├── mpi_ive.h
├── mpi_pciv.h
├── mpi_region.h
├── mpi_sys.h
├── mpi_vb.h
├── mpi_vda.h
├── mpi_vdec.h
├── mpi_venc.h
├── mpi_vi.h
├── mpi_vo.h
└── mpi_vpss.h
[/code]
2) 构建 src
src 文件夹内容比较简单,为 mpp/sample/comm 下的所有 c 文件,和你所需要的 sample 下的 c 文件。
[code]# cd ~/new_workspace/mpp_test_projcet_1/src/
# mkdir common
# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/sample/common/*.c ~/new_workspace/mpp_test_projcet_1/src/common/[/code]
选择构建工程 sample_vio 测试图像输入输出,故将 sample_vio.c 拷贝到 src 下:
[code]# cp -r ~/Hi3520D_SDK_V1.0.4.0/mpp/sample/vio/sample_vio.c ~/new_workspace/mpp_test_projcet_1/src/[/code]
3) 构建 lib
将 mpp/lib 下的
[code]libaec.a
libhdmi.a
libmpi.a
libtde.a
libvqev2.a
libanr.a
libjpeg.a
libresampler.a
libVoiceEngine.a[/code]
拷贝到工程 lib 目录下,会多复制一个 libmem.a 但是不会被用到,可以删除。
至此,工程目录全部构建完成,结果如下:
[code]mpp_test_projcet_1/
├── inc
│ ├── common
│ │ ├── hisi_osd.h
│ │ ├── loadbmp.h
│ │ ├── osd.h
│ │ ├── sample_comm.h
│ │ └── zimo.h
│ ├── extdrv
│ │ ├── cx26828
│ │ │ ├── AlcaeusColibri.h
│ │ │ ├── AlcaeusColibriRegisters.h
│ │ │ ├── AlcaeusRegisters.h
│ │ │ ├── AlcaeusVidDecoder.h
│ │ │ ├── Comm.h
│ │ │ ├── cx26828_def.h
│ │ │ ├── cx26828.h
│ │ │ ├── CxApiDefines.h
│ │ │ └── gpio_i2c.h
│ │ ├── gpio_i2c
│ │ │ ├── gpio_i2c.h
│ │ │ ├── i2c_read
│ │ │ ├── i2c_write
│ │ │ └── strfunc.h
│ │ ├── nvp6114
│ │ │ ├── audio.h
│ │ │ ├── coax_protocol.h
│ │ │ ├── common.h
│ │ │ ├── motion.h
│ │ │ ├── nvp6114.h
│ │ │ └── video.h
│ │ ├── ssp-GV7601
│ │ │ ├── hi_ssp.h
│ │ │ ├── ssp_read
│ │ │ ├── ssp_write
│ │ │ └── strfunc.h
│ │ ├── tlv320aic31
│ │ │ ├── gpio_i2c.h
│ │ │ ├── tlv320aic31_def.h
│ │ │ └── tlv320aic31.h
│ │ ├── tw2865
│ │ │ ├── gpio_i2c.h
│ │ │ ├── tw2865_def.h
│ │ │ └── tw2865.h
│ │ ├── tw2868
│ │ │ ├── gpio_i2c.h
│ │ │ ├── tw2868_def.h
│ │ │ └── tw2868.h
│ │ └── tw2960
│ │ ├── gpio_i2c.h
│ │ ├── tw2960_def.h
│ │ └── tw2960.h
│ ├── hi_comm_adec.h
│ ├── hi_comm_aenc.h
│ ├── hi_comm_ai.h
│ ├── hi_comm_aio.h
│ ├── hi_comm_ao.h
│ ├── hi_comm_hdmi.h
│ ├── hi_comm_ive.h
│ ├── hi_common.h
│ ├── hi_comm_pciv.h
│ ├── hi_comm_rc.h
│ ├── hi_comm_region.h
│ ├── hi_comm_sys.h
│ ├── hi_comm_vb.h
│ ├── hi_comm_vda.h
│ ├── hi_comm_vdec.h
│ ├── hi_comm_venc.h
│ ├── hi_comm_video.h
│ ├── hi_comm_vi.h
│ ├── hi_comm_vo.h
│ ├── hi_comm_vpss.h
│ ├── hi_debug.h
│ ├── hi_defines.h
│ ├── hi_errno.h
│ ├── hifb.h
│ ├── hi_io.h
│ ├── hi_math.h
│ ├── hi_mem.h
│ ├── hi_tde_api.h
│ ├── hi_tde_errcode.h
│ ├── hi_tde_type.h
│ ├── hi_type.h
│ ├── list.h
│ ├── mkp
│ │ └── mod_ext.h
│ ├── mpi_adec.h
│ ├── mpi_aenc.h
│ ├── mpi_ai.h
│ ├── mpi_ao.h
│ ├── mpi_hdmi.h
│ ├── mpi_ive.h
│ ├── mpi_pciv.h
│ ├── mpi_region.h
│ ├── mpi_sys.h
│ ├── mpi_vb.h
│ ├── mpi_vda.h
│ ├── mpi_vdec.h
│ ├── mpi_venc.h
│ ├── mpi_vi.h
│ ├── mpi_vo.h
│ └── mpi_vpss.h
├── lib
│ ├── libaec.a
│ ├── libanr.a
│ ├── libhdmi.a
│ ├── libjpeg.a
│ ├── libmem.a
│ ├── libmpi.a
│ ├── libresampler.a
│ ├── libtde.a
│ ├── libVoiceEngine.a
│ └── libvqev2.a
└── src
├── common
│ ├── hisi_osd.c
│ ├── loadbmp.c
│ ├── osd.c
│ ├── sample_comm_audio.c
│ ├── sample_comm_sys.c
│ ├── sample_comm_vda.c
│ ├── sample_comm_vdec.c
│ ├── sample_comm_venc.c
│ ├── sample_comm_vi.c
│ ├── sample_comm_vo.c
│ ├── sample_comm_vpss.c
│ └── zimo.c
└── sample_vio.c[/code]
返回 Eclipse 界面,在工程上右键快捷菜单 Refresh 即可应用全部变更到工程,就会在工程上发现添加进去的文件。
四、Eclipse 工程配置,编译工程
完成工程文件夹构建后进入工程设置,工程上右键,Properties
C/C++ Build -> Settings
Cross GCC Compiler ->
Symbols -> Defined symbols (-D)
添加全局宏定义:
[code]hi3520D
HICHIP=0x3520D100
HI_DEBUG
HI_XXXX
DEMO[/code]
Symbols -> Includes -> Include paths (-I)
添加包含关系
[code]"${workspace_loc:/${ProjName}/inc}"
"${workspace_loc:/${ProjName}/inc/common}"
"${workspace_loc:/${ProjName}/inc/extdrv/tw2865}"
"${workspace_loc:/${ProjName}/inc/extdrv/tw2960}"
"${workspace_loc:/${ProjName}/inc/extdrv/tlv320aic31}"
"${workspace_loc:/${ProjName}/inc/extdrv/cx26828}"
"${workspace_loc:/${ProjName}/inc/extdrv/nvp6114}"[/code]
Cross GCC Linker ->
Libraries -> Libraries (-l)
[code]mpi
hdmi
tde
VoiceEngine
aec
resampler
anr
vqev2
jpeg
pthread
m[/code]
添加库文件,其中 -lpthread -lm 不是我们 lib 里面的,是工具链里面的
Libraries -> Library search path (-L)
[code]/opt/hisi-linux-nptl/arm-hisiv100-linux/target/lib
"${workspace_loc:/${ProjName}/lib}"[/code]
其中,/opt/hisi-linux-nptl/arm-hisiv100-linux/target/lib 是交叉编译链里面的 lib 目录
apply 确定之后就好了。
ok,至此全部配置成功,返回工程,Refresh -> Clean Project -> Build Project 编译通过!
我来回答
回答17个
时间排序
认可量排序
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2015-07-31 11:55:35
-
2015-06-20 11:40:31
-
2020-04-27 14:32:44
-
2017-09-19 14:01:41
-
2017-11-03 16:44:31
-
2016-11-23 21:25:39
-
12017-03-08 18:36:15
-
02013-12-26 15:33:24
-
2015-04-15 18:40:00
-
2016-03-09 20:52:30
-
2020-10-23 18:22:26
-
2015-08-18 16:11:38
-
2013-12-31 22:51:08
-
2017-05-09 14:15:11
-
2015-06-01 15:36:28
-
2014-07-01 13:30:25
-
2017-06-14 11:17:32
-
2015-06-05 08:39:04
-
2015-06-21 17:25:37
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认