系列文章目录

海思3518ev200学习记录(1)- 根据用户手册烧录系统镜像
海思3518ev200学习记录(2) - 交叉编译官方webRTC
海思3518ev200学习记录(3) - 编译 amazon-kinesis webrtc嵌入式实现
海思3518ev200学习记录(4) - 基于海思源码分段录制音频文件


海思3518ev200学习记录(1)- 根据用户手册烧录系统镜像

  • 系列文章目录
  • 前言
  • 开发板到手
    • 搭建虚拟机开发环境
    • Windows 主机安装使用 SecureCRT、WinSCP 工具
    • 设置虚拟机
    • 为开发板烧录镜像
      • 设置启动参数
    • 交叉编译海思 mpp 中的 sample 程序,并在开发板中运行
      • sample_venc:视频编码例程
      • sample_audio:音频编解码例程

前言

本想着做笔记来用的,目前接到的任务是音视频通讯,要从信令服务器,打洞服务器,安卓端,苹果端,以及设备端。之前根据网上的资料做的dome前面都实现了,但是唯独设备端无法实现有点麻烦,所以先买了一个开发板研究研究,不然之前所做的一切都报废了,要重新搞了。
关于之前系列文章免费机票再次劳请移步

java的P2P打洞通讯学习之路(一)- 整理思路

开发板到手

别问怎么买的,TB OR JD 一搜都有的好吧。
一般在出厂的时候都会烧录好程序 想要温习一遍如何烧录的请接着看

搭建虚拟机开发环境

VMware 大家都不陌生,在提供的工具中有准备好的 Ubuntu16.04-swann.rar 找到后直接用vM打开


开启虚拟机

等待启动成功

进入之后需要配置桥接
设置桥接网卡:单击 VMware 上方菜单栏中的编辑->虚拟机网络编辑器,在弹出的
对话框里点击更改设置;


设置当前 ubuntu 的网络为桥接模式:接着在 VMware 中选择当前虚拟机,单机鼠
标右键,点击设置

在弹出的对话框中选择网络适配器,更改右边的网络连接选型为桥接模式,然后
点击确定
ifconfig 查看 ip

测试:此时 ping 主机 windows,ping 网关,ping 外网均 OK
记住你虚拟机的ip

Windows 主机安装使用 SecureCRT、WinSCP 工具

在商家给的资料中找到SecureCRT、WinSCP安装并使用。

在“辅助工具软件”文件夹中有常用的工具; SecureCRT 用于打开开发板的串口控制台,WinSCP 用于 windows 主机与虚拟机 ubuntu 之间传输文件

1)使用 SecureCRT 进入开发板的串口控制台

安装很简单,全部下一步即可

打开之后点击快速连接
当然前提是你需要先把设备连到电脑上,USB接口连上之后,打开设备管理器(右键我的电脑-管理-设备管理器)

找到你的串口,打开 SecureCRT 软件,点击左上角快速连接,在弹出的对话框里选择协议类型为串口 Serial,选择对应串口号,串口号请到电脑的设备管理器查看,波特率 115200,注意右边的流控选型都不要勾选,其余选项保持默认即可

点击连接按钮,进入串口控制台;
此时给开发板重新上电可以看到很多打印信息

设置虚拟机

使用 WinSCP 在 windows 主机和 ubuntu 虚拟机中传输文件注意请先确保主机 windows 和虚拟机 ubuntu 能 ping 通,才能使用此工具
安装好 WinSCP 后,双击打开,然后点击新建站点

点击登录,左边主机 windows,右边虚拟机 ubuntu

剩下的配置你可以根据文档一步一步来

为开发板烧录镜像

咱直接跳到烧录,因为给的资料中有。


在辅助工具中找到此软件,解压并运行
HiTool-BVT-5.x.x

按如上面配置,点击烧录,设备重新上电。
大概需要15分钟左右,烧制成功后设置启动参数

设置启动参数

成功后打开SecurCRT,连上串口,设备重新上电后你能看到下面信息


System startupU-Boot 2010.06 (Dec 18 2018 - 23:50:19)Check Flash Memory Controller v100 ... Found
SPI Nor(cs 0) ID: 0xef 0x40 0x18
spi_general_qe_enable(294): Error: Disable Quad failed! reg: 0x2
Block:64KB Chip:16MB Name:"W25Q128(B/F)V"
SPI Nor total size: 16MB
MMC:
EMMC/MMC/SD controller initialization.
Card did not respond to voltage select!
No EMMC/MMC/SD device found !
*** Warning - bad CRC, using default environmentIn:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
Wrong Image Format for bootm command
ERROR: can't get kernel image!

错误信息,我在网上查的没啥影响,是因为没有初始化启动的原因,我在初始化的过程中遇到了坑

文档中说的是
设置参数

setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
sa
reset

但是这样设置后重启挂载MMP业务的时候会有问题
遇到的问题是

mmz_start: 0x82000000, mmz_size: 32M
Hisilicon Media Memory Zone Manager
ERROR: Conflict MMZ:
PHYS(0x82000000, 0x83FFFFFF), GFP=0, nBYTES=32768KB,    NAME="anonymous"
MMZ conflict to kernel memory (0x80000000, 0x83FFFFFF)
Add MMZ failed: PHYS(0x82000000, 0x83FFFFFF), GFP=0, nBYTES=32768KB,    NAME="anonymous"
Module himedia: init ok
hi3518e_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
malloc buffer for SYS sclcoeffset fail!
load sys.ko for Hi3518EV200...FAILURE!
insmod: can't insert 'hi3518e_sys.ko': Operation not permitted

为啥会这样呢?
找了很多方法确定需要改一下一开始的参数,因为新手不知道咋重新设置的,只能重新烧录一边
然后正确的方法参数是

hisilicon # setenv bootargs 'mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)'
hisilicon #
hisilicon # setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
hisilicon # sa
Saving Environment to SPI Flash...
Erasing SPI flash, offset 0x00080000 size 256K ...done
Writing to SPI flash, offset 0x00080000 size 256K ...done
hisilicon # reseet
Unknown command 'reseet' - try 'help'
hisilicon # reset
resetting ...

把原来的64M改为32M

重启成功后

设置开发板网卡参数

vi /etc/init.d/rcS
ifconfig eth0 192.168.1.10
ifconfig lo 127.0.0.1
route add default gw 192.168.1.1

保存即可
启动断电重启开发板。
还记得之前设置的虚拟机ip吗
接下来需要挂载nfs文件到开发板上

mount -t nfs -o nolock 虚拟机IP:/home/swann/nfs /mnt

然后用winSCP把资料中mmp,上传到/home/swann/nfs目录

再到开发板的linux下
执行以下命令

cp /mnt/mpp/ko / -rf
cp /mnt/mpp/lib/*.so /lib/ -rfd
cd /ko
./load3518e -i -sensor ar0130 -osmem 32 -total 64

不出意外你应该不会再踩到我踩的坑
输出信息为

/ko # ./load3518e -i -sensor ar0130 -osmem 32 -total 64
mmz_start: 0x82000000, mmz_size: 32M
Hisilicon Media Memory Zone Manager
Module himedia: init ok
hi3518e_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
load sys.ko for Hi3518EV200...OK!
load tde.ko ...OK!
load region.ko ....OK!
load vgs.ko for Hi3518EV200...OK!
ISP Mod init!
load viu.ko for Hi3518EV200...OK!
load vpss.ko ....OK!
load vou.ko ....OK!
load hifb.ko OK!
load rc.ko for Hi3518EV200...OK!
load venc.ko for Hi3518EV200...OK!
load chnl.ko for Hi3518EV200...OK!
load h264e.ko for Hi3518EV200...OK!
load jpege.ko for Hi3518EV200...OK!
load ive.ko for Hi3518EV200...OK!
==== Your input Sensor type is ar0130 ====
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0040: 0x00000000 --> 0x00000002
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0044: 0x00000000 --> 0x00000002
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f007c: 0x00000000 --> 0x00000001
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0080: 0x00000000 --> 0x00000001
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0084: 0x00000000 --> 0x00000001
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0088: 0x00000000 --> 0x00000001
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f008c: 0x00000000 --> 0x00000002
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0090: 0x00000000 --> 0x00000002
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x200f0094: 0x00000000 --> 0x00000001
[END]
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x2003002c: 0x000C4003 --> 0x000B4001
[END]
acodec inited!
insert audio
mipi_init
init phy power successful!
load hi_mipi driver successful!
==== Your input Sensor type is ar0130 ====
/ko #

交叉编译海思 mpp 中的 sample 程序,并在开发板中运行

在虚拟机上进入sample目录


sample 文件夹目录结构

sample_venc:视频编码例程

在虚拟机 ubuntu 中进入 venc 文件夹执行编译命令

cd venc
make


生成sample_venc
在开发板 linux 系统下运行该程序
cd /mnt/mpp/sample/venc
./sample_venc 0
c

/ko # cd ../mnt/mpp/sample/venc/
/mnt/mpp/sample/venc # ./sample_venc
Usage : ./sample_venc <index>
index:0) 1*1080p H264 + 1*VGA H264.1) 1*1080p MJPEG encode + 1*1080p jpeg.2) low delay encode(only vi-vpss online).3) roi background framerate.4) Thumbnail of 1*1080p jpeg.5) svc-t H264
/mnt/mpp/sample/venc # ./sample_venc 0
s32ChnNum = 3
=============SAMPLE_COMM_VI_SetMipiAttr enWDRMode: 0
linear mode
Aptina AR0130 sensor 720P30fps init success!c) cbr.v) vbr.f) fixQp
please input choose rc mode!
c

按回车键两次退出编码

please press twice ENTER to exit this sampleprogram exit normally!
/mnt/mpp/sample/venc #

可以看到录制的视频

/mnt/mpp/sample/venc # ls -la
total 2636
drwxrwxr-x    2 1000     1000          4096 Mar  8  2021 .
drwxrwxr-x   11 1000     1000          4096 May 20  2016 ..
-rw-rw-r--    1 1000     1000           545 May 20  2016 Makefile
-rwxr-xr-x    1 root     root       1306463 Mar  7  2021 sample_venc
-rw-rw-r--    1 1000     1000         54483 May 20  2016 sample_venc.c
-rw-r--r--    1 root     root         46164 Mar  7  2021 sample_venc.o
-rw-r--r--    1 root     root        555840 Mar  8  2021 stream_chn0.h264
-rw-r--r--    1 root     root        583278 Mar  8  2021 stream_chn1.h264
-rw-r--r--    1 root     root        130649 Mar  8  2021 stream_chn2.h264

录制的多种不同分辨率的 stream_chnx.h264 裸流文件可以通过 VLC 播放器播放

sample_audio:音频编解码例程

在虚拟机 ubuntu 中进入 audio 文件夹执行编译命令

root@ubuntu:/home/swann/nfs/mpp/sample/venc# cd ../
root@ubuntu:/home/swann/nfs/mpp/sample# ls
audio  common  hifb  ive  Makefile  Makefile.param  readme  region  scene_auto  tde  venc  vio
root@ubuntu:/home/swann/nfs/mpp/sample# cd audio/
root@ubuntu:/home/swann/nfs/mpp/sample/audio# ls
inner_codec_readme.txt  Makefile  sample_audio.c  tlv320aic31_readme.txt
root@ubuntu:/home/swann/nfs/mpp/sample/audio# make

其实就是切换到audio 然后编译,生成sample_audio


root@ubuntu:/home/swann/nfs/mpp/sample/audio# make
ls: cannot access '/hiwork/osdrvhi3518e.C01': No such file or directory
arm-hisiv300-linux-gcc -Wall -g -I/home/swann/nfs/mpp/sample/audio/../common -I/home/swann/nfs/mpp/include -I/home/swann/nfs/mpp/component/acodec -I/home/swann/nfs/mpp/extdrv/tw2865 -I/home/swann/nfs/mpp/extdrv/tlv320aic31 -Dhi3518e -DHICHIP=0x3518E200 -DSENSOR_TYPE=APTINA_AR0130_DC_720P_30FPS -DHI_RELEASE -DHI_XXXX -DCHIP_ID=CHIP_HI3518E_V200 -lpthread -lm -ldl -DISP_V2 -Dhi3518ev200 -DHI_ACODEC_TYPE_INNER  -mno-unaligned-access -fno-aggressive-loop-optimizations -ldl -DLCD_ILI9342   -c -o sample_audio.o sample_audio.c
arm-hisiv300-linux-gcc -Wall -g -I/home/swann/nfs/mpp/sample/audio/../common -I/home/swann/nfs/mpp/include -I/home/swann/nfs/mpp/component/acodec -I/home/swann/nfs/mpp/extdrv/tw2865 -I/home/swann/nfs/mpp/extdrv/tlv320aic31 -Dhi3518e -DHICHIP=0x3518E200 -DSENSOR_TYPE=APTINA_AR0130_DC_720P_30FPS -DHI_RELEASE -DHI_XXXX -DCHIP_ID=CHIP_HI3518E_V200 -lpthread -lm -ldl -DISP_V2 -Dhi3518ev200 -DHI_ACODEC_TYPE_INNER  -mno-unaligned-access -fno-aggressive-loop-optimizations -ldl -DLCD_ILI9342 -lpthread -lm -o sample_audio sample_audio.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_vpss.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_vi.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_isp.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_audio.o /home/swann/nfs/mpp/sample/audio/../common/loadbmp.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_ive.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_vo.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_venc.o /home/swann/nfs/mpp/sample/audio/../common/sample_comm_sys.o /home/swann/nfs/mpp/lib/libmpi.a /home/swann/nfs/mpp/lib/libive.a /home/swann/nfs/mpp/lib/libmd.a /home/swann/nfs/mpp/lib/libmpi.a /home/swann/nfs/mpp/lib/libive.a /home/swann/nfs/mpp/lib/libVoiceEngine.a /home/swann/nfs/mpp/lib/libupvqe.a /home/swann/nfs/mpp/lib/libdnvqe.a /home/swann/nfs/mpp/lib/libisp.a /home/swann/nfs/mpp/lib/libsns_ar0130.a /home/swann/nfs/mpp/lib/lib_cmoscfg.a /home/swann/nfs/mpp/lib/lib_iniparser.a /home/swann/nfs/mpp/lib/lib_hiae.a /home/swann/nfs/mpp/lib/lib_hiawb.a /home/swann/nfs/mpp/lib/lib_hiaf.a /home/swann/nfs/mpp/lib/lib_hidefog.a
root@ubuntu:/home/swann/nfs/mpp/sample/audio# ls
inner_codec_readme.txt  Makefile  sample_audio  sample_audio.c  sample_audio.o  tlv320aic31_readme.txt

在开发板 linux 系统下运行该程序

/mnt/mpp/sample/venc # cd ../audio/
/mnt/mpp/sample/audio # ls
Makefile                sample_audio            sample_audio.o
inner_codec_readme.txt  sample_audio.c          tlv320aic31_readme.txt
/mnt/mpp/sample/audio # ./sample_audio/************************************/
please choose the case which you want to run:0:  start AI to AO loop1:  send audio frame to AENC channel from AI, save them2:  read audio stream from file, decode and send AO3:  start AI(AEC/ANR/ALC process), then send to AOq:  quit whole audio samplesample command:0
ai(0,0) bind to ao(0,0) okplease press twice ENTER to exit this sample
set volume 0

此时接上麦克风和喇叭,对着麦克风说话,可以听到喇叭也发出同样的声音
视频为证

海思3518ev200 sample

想要看视频还需要最有一点努力
在虚拟机上进入目录
/home/swann/nfs/mpp把原来的sample文件夹重名吧备份一下,然后找到客服给的

文件解压后重命名为sample上传到/home/swann/nfs/mpp
然后进入到venc目录
执行

make clean
make

生成sample_venc
在开发板的linux系统下进入该目录

然后在局域网内的电脑上打开 vlc 播放器,输入地址:
rtsp://192.168.1.10/live.sdp 或者 rtsp://192.168.1.10/test.264
就可以看到摄像头了。

好了海思3518ev200开发板至此已经有了一个比较熟悉的了解,接下来祝你好运
因为新手,全都是按照客服给的文档整的,这里只是记录一下,怕到后期重头再来没有头绪。
有啥不对的地方欢迎指正。

有啥需要交流的我在这里等你v//x\公众号:“dasha500”

海思3518ev200学习记录(1)- 根据用户手册烧录系统镜像相关推荐

  1. 海思3518ev200学习记录(2) - 交叉编译官方webRTC

    系列文章目录 海思3518ev200学习记录(1)- 根据用户手册烧录系统镜像 海思3518ev200学习记录(2) - 交叉编译官方webRTC 海思3518ev200学习记录(3) - 编译 am ...

  2. 海思项目学习记录 -2、解析mmp的sample

    1.分析mmp的sample工程 注意:建立SI工程的时候注意要把外面的那个include文件夹加载进来 sample_venc的大体分析 (1)从main入手,main的传参分析 (2)几个基本概念 ...

  3. 海思3518ev200处理器封装MP4的音频和视频同步OK

    今天用海思3518ev200处理器封装MP4的音频和视频同步OK,记录一下. 封装mp4用的GPAC开源代码,GitHub上可以搜到. 使用别人封装好的从gpac提取总结的接口函数,网络搜索MP4Wr ...

  4. 海思SDK学习(7)海思媒体处理软件平台MMP(6)视频编码VENC

    视频编码 1.概述 VENC模块,即视频编码模块.本模块支持多路实时编码,且每路编码独立,编码协议和编码profile 可以不同.本模块支持视频编码同时,调度Region 模块对编码图像内容进行叠加和 ...

  5. 海思3516开发记录-AAC音频解码

    海思平台播放AAC文件 1.说明 2.音频解码 音频API 参考: 解码aac流程: 音频设置 音频解码相关错误码 1.说明 海思3516平台内置了aac解码库,可以直接解码aac音频文件,但要支持m ...

  6. 2020华为海思实习生面试记录

    来自微信公众号:数字芯片联合实验室 2020年4月12日,投简历.我投的是华为海思的数字芯片岗位.首先先是从简历上,你的简历上一定要写清楚自己从大学开始到现在的学习经历,项目经历,自己的知识储备,自己 ...

  7. 海思SDK学习(10)海思媒体处理软件平台MMP(9)AUDIO音频

    音频 1.概述 AUDIO 模块包括音频输入.音频输出.音频编码.音频解码四个子模块.音频输入和输出模块通过对Hi35xx 芯片音频接口的控制实现音频输入输出功能.音频编码和解码模块提供对G711.G ...

  8. 海思linux中编译,linux 编译安桌系统 海思

    linux 编译安桌系统 海思0 zzydesbz2015.11.30浏览27次分享举报 root@dm-desktop:~/HiSTBAndroidV600R001C00SPC060# make b ...

  9. 华为的鸿蒙系统是海思_华为智慧屏将应用鸿蒙系统,搭载海思鸿鹄818芯片

    (观察者网 文/一鸣)7月26日,荣耀总裁赵明在2019年GMIC全球移动互联网大会上,公布了与荣耀智慧屏有关的重磅消息.他表示,荣耀智慧屏将搭载海思鸿鹄818智慧芯片和升降式AI摄像头,并从即日起启 ...

最新文章

  1. javascript的typeof返回哪些数据类型
  2. db2 最近三个月_2020.8.11 腰椎微创三个月后
  3. springcloud出现org.springframework.boot.context.properties.ConfigurationPropertie错误
  4. OpenCV离散傅立叶变换DFT的实例(附完整代码)
  5. 【机器学习】神经网络BP理论与python实例系列
  6. html canvas直线进度条,js+HTML5 canvas 实现简单的加载条(进度条)功能示例
  7. es 吗 查询必须有sort_ElasticSearch DSL之From/Size,Sort
  8. WEB.NET error:请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping 解决方案
  9. Apache并发请求数及其TCP连接状态故障排除
  10. springboot redis mysql 自动同步_BAT一线互联网常考面试题:Spring+并发编程+JVM+设计模式+Redis...
  11. 软件设计师-8.算法分析与设计
  12. 【单片机小白屑作】基于清翔QX-MCS51单片机的精简版定时炸弹
  13. [随心译]2017.8.5-你家毛茸茸的宠物的荤粮正在加速气候变化
  14. VMware 10M网卡变1000M兆网卡
  15. 【小算法】求约数个数
  16. 宝山区企业技术中心、区级工程技术研究中心给予奖励20万元
  17. 数据,数据元素,数据项,数据对象
  18. Vue最low的路由嵌套【电竞杜小帅】
  19. 漏洞payload 靶机_【HTB系列】靶机Bitlab的渗透测试
  20. 【每天play】为了学好python需要从脚下做起,Linux基础-远程管理命令P50-60

热门文章

  1. 纯HTML+CSS+Jquery实现的修改密码框(密码强度动态验证,再次确认验证,密码长度动态显示)均实现,可直接运行使用
  2. 两台三菱PLC通过485通讯控制
  3. asp.net core + 前端H5 页面视频站制作尝试
  4. WPS通配符(正则表达式)
  5. 微软实习生面试经验分享
  6. 仿京东商城左侧商品分类导航-JS网页特效
  7. rgb 光谱 转换_使用深度学习将RGB图像转换为高光谱
  8. 数字化工厂解决方案——OA办公自动化与ERP
  9. python ddos攻击_DDoS攻击工具
  10. Day109.尚医通:集成Nacos、翻译字段、医院列表分页条件、下拉列表查询、医院状态、医院详情