lyz1900

lyz1900

0个粉丝

1

问答

0

专栏

0

资料

lyz1900  发布于  2016-09-02 15:38:49
采纳率 0%
1个问答
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 编译通过!

               
我来回答
回答17个
时间排序
认可量排序

lyz1900

0个粉丝

1

问答

0

专栏

0

资料

lyz1900 2016-09-02 15:41:39
认可0
第一次发帖,大家多多支持哦,自己抢个沙发;P

jl3276

1个粉丝

8

问答

0

专栏

0

资料

jl3276 2016-09-04 19:59:12
认可0
厉害 为什么我安装eclipse后再安装cdt,用apt-get大法实现不了呢?ubtun 14.04.

jl3276

1个粉丝

8

问答

0

专栏

0

资料

jl3276 2016-09-04 19:59:54
认可0
可否分享下您安装eclipse和cdt的链接呢?谢谢

lyz1900

0个粉丝

1

问答

0

专栏

0

资料

lyz1900 2016-09-05 08:47:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37175&ptid=12514]jl3276 发表于 2016-9-4 19:59[/url]
可否分享下您安装eclipse和cdt的链接呢?谢谢[/quote]

主要是当时安装 Eclipse 也走了很多弯路,找了很多链接教程放到收藏夹里面,写教程时候实在想不起来用的是哪个安装的了。。。我自己也醉了,我找一找,看看能不能找到

jl3276

1个粉丝

8

问答

0

专栏

0

资料

jl3276 2016-09-07 09:28:23
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37186&ptid=12514]lyz1900 发表于 2016-9-5 08:47[/url]
主要是当时安装 Eclipse 也走了很多弯路,找了很多链接教程放到收藏夹里面,写教程时候实在想不起来用的 ...[/quote]

非常感谢~~~~~~~~~~~~~~~~~

lyz1900

0个粉丝

1

问答

0

专栏

0

资料

lyz1900 2016-09-07 09:54:10
认可0
我想起来了,我是先在 Ubuntu 软件中心里面安装了 新立得包管理器,然后搜索 Eclipse CDT ,直接安装,就会自动选择上所有需要的依赖,并且自动安装,超级方便

lyz1900

0个粉丝

1

问答

0

专栏

0

资料

lyz1900 2016-09-07 09:55:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37300&ptid=12514]jl3276 发表于 2016-9-7 09:28[/url]
非常感谢~~~~~~~~~~~~~~~~~[/quote]

回复不能添加图片,给你回复到楼下了,看下,应该是最简单最不容易出错的方法,哈哈哈

jl3276

1个粉丝

8

问答

0

专栏

0

资料

jl3276 2016-09-07 10:18:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37304&ptid=12514]lyz1900 发表于 2016-9-7 09:55[/url]
回复不能添加图片,给你回复到楼下了,看下,应该是最简单最不容易出错的方法,哈哈哈[/quote]

多谢多谢,我刚发了个帖子,大神能不能百忙之中给指教一下呢谢谢!
[url]http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=12563&extra=page%3D1[/url]

lyz1900

0个粉丝

1

问答

0

专栏

0

资料

lyz1900 2016-09-07 14:49:00
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37308&ptid=12514]jl3276 发表于 2016-9-7 10:18[/url]
多谢多谢,我刚发了个帖子,大神能不能百忙之中给指教一下呢谢谢!
http://www.ebaina.com/bbs/forum.ph ...[/quote]

我实测,就是 4D1 那个选项,我本来想采集 4路 720*576,结果修改也不成功,4D1 就是 4路 960*576 ,所以你用 4D1 就正好

Cybers

0个粉丝

0

问答

0

专栏

0

资料

Cybers 2016-09-12 13:09:37
认可0
不错,谢谢楼主分享,学习了。。。

cy_ygs

0个粉丝

0

问答

0

专栏

0

资料

cy_ygs 2016-12-08 15:58:03
认可0
好资料,支持

akely

0个粉丝

0

问答

0

专栏

0

资料

akely 2016-12-13 15:09:49
认可0
学习了,请继续 支持你

myearth

0个粉丝

3

问答

0

专栏

3

资料

myearth 2016-12-14 09:00:56
认可0
旁观下,我用QT creator.

ligang048006

0个粉丝

0

问答

0

专栏

0

资料

ligang048006 2017-02-09 23:23:04
认可0
好资料。学习了。

wu0

0个粉丝

7

问答

0

专栏

1

资料

wu0 2017-02-13 14:16:17
认可0
很详细了 ,多谢楼主分享!!!!

fishcrane

0个粉丝

9

问答

0

专栏

0

资料

fishcrane 2017-02-17 14:44:35
认可0
耗子了,深度学习中

initios

0个粉丝

2

问答

0

专栏

0

资料

initios 2017-02-22 09:30:15
认可0
入门就需要这种资料
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

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

详细说明

易百纳技术社区