海思Hi3518E开发笔记
文章平均质量分 83
Spark!
路人
展开
-
海思3518E开发笔记6.2——RTSP分包H264源码分析
源码HI_S32 VENC_Sent(char *buffer,int buflen){ HI_S32 i; int is=0; int nChanNum=0; for(is=0;is<MAX_RTSP_CLIENT;is++) { if(g_rtspClients[is].status!=RTSP_SENDING) { continue; } int heart = g_rtspClients[is].seqnum % 10000; cha原创 2021-08-13 16:55:00 · 873 阅读 · 1 评论 -
海思3518E开发笔记6.1——RTSP实时图传源码分析
目录源码框架分析RtspServer_initSAMPLE_VENC_720P_CLASSIC详细分析RtspServer_init源码框架分析主函数中只有两部分,初始化rtsp服务和视频编码程序RtspServer_init我们在编写代码前的设想是让开发板作为服务器,windows作为客户端。于是服务器一定是先运行,然后像socket那样初始化完成后阻塞监听,等待客户端连接。S(server)C(client)模式,基本都是这样的结构。初始化部分代码如下void RtspServer_in原创 2021-08-13 13:04:55 · 2428 阅读 · 1 评论 -
海思3518E开发笔记5.2——MT7601U网卡STA模式移植
目录前言STA模式USB-WIFI的驱动移植与部署源码修改驱动部署移植wpa_supplicant移植openssl移植wpa_supplicantSTA模式USB-WIFI的ORTP视频传输测试ORTP视频传输测试无限调试环境搭建前言HI2518E+WIFI做STA,PC做STA,外部路由器做AP,实现局域网内ortp视频传HI2518E+WIFI做STA,PC做STA,外部路由器做AP,实现局域网全程无线调试STA模式USB-WIFI的驱动移植与部署源码修改参考上一篇修改Makefil原创 2021-08-04 14:24:01 · 801 阅读 · 0 评论 -
海思3518E开发笔记5.1——MT7601U网卡AP模式移植
目录前言MT7601U驱动编译Makefile修改并编译MT7601U驱动部署MT7601U局域网图传前言WIFI模块与SoC的接口有多种,如SDIO、USB、串口(低带宽)等。AP(Access Poin,接入点t),一般指(有线或者无线的)路由器。STA(Station,站点),指的是连接到路由器的终端设备,比如手机笔记本等等。USB-WIFI网卡选作AP、STA模式USB-WIFI的模式选项,就是让你选择,你这(拥有USB-WIFI模块的)设备,是作为站点还是作为接入点。如果它作为原创 2021-08-04 10:27:48 · 1616 阅读 · 1 评论 -
海思3518E开发笔记4.7——sensor驱动的寄存器操作
目录前言代码前言关于sensor的驱动,前面分析的很明白了,这里具体研究最底层的实现代码int sensor_write_register(int addr, int data){#ifdef HI_GPIO_I2C i2c_data.dev_addr = sensor_i2c_addr; i2c_data.reg_addr = addr; i2c_data.addr_byte_num = sensor_addr_byte; i2c_data.data = dat原创 2021-08-03 15:01:28 · 1769 阅读 · 0 评论 -
海思3518E开发笔记4.6——黑电平校正实战
目录黑点平代码中的体现重新编译流程黑点平显示方面指在经过一定校准的显示装置上,没有一行光亮输出的视频信号电平。定义图像数据为0时对应的信号电平,调节黑电平不影响信号的放大倍数,而仅仅是对信号进行上下平移。如果向上调节黑电平,图像将变暗如果设置5度为0度,那么现在的20度就变成了原来的15度,本来现在应该是25度。如果设置100为黑电平,那么现在的255就变成155,图像变暗。如果向下调节黑电平图像将变亮如果设置-5度为0度,那么现在20度就变成了原来的25度。如果设置-100为黑电平,那么现在原创 2021-08-02 20:20:33 · 1242 阅读 · 0 评论 -
海思3518E开发笔记4.5——ISP的框架解读(sensor、3A框架))
目录3A海思文档结构ISP firmware设计思路3A自动对焦(AF)自动曝光(AE)自动白平衡(AWB)海思文档结构Hi3518EV200_ISP_3A 版本依赖于相应的 SDK 大版本,通过一系列数字图像处理算法完成对数字图像的效果处理。主要包含 Firmware 框架及海思 3A 库, Firmware 提供算法的基本框架,处理统计信息,驱动数字图像处理算法,并包含坏点校正、去噪、色彩增强、镜头阴影校正等处理。 3A 库以注册的方式(应用层驱动),添加到 Firmware 中,完成曝原创 2021-08-02 14:47:06 · 3799 阅读 · 0 评论 -
海思3518E开发笔记4.4——sensor驱动源码分析
目录驱动目录驱动目录在SDK的\Hi3518E_SDK_V1.0.3.0\package\mpp\ko底下hi3518e_isp.ko是isp相关部分驱动sensor部分的源码在\Hi3518E_SDK_V1.0.3.0\package\mpp\component\isp\sensor中可以通过Makefile看到编译出来的驱动编出来的驱动放到了lib目录中...原创 2021-08-01 18:49:56 · 2190 阅读 · 1 评论 -
海思3518E开发笔记4.3——sensor接口引脚复用设置
目录为什么要引脚复用查看引脚定义框图找到相应设置寄存器himm以AR0130分析sensor引脚复用为什么要引脚复用CPU的引脚数量有限,但外设所需要的引脚非常多。不管是简单的单片机还是复杂的CPU,引脚的复用都是不可避免的。复用需要用软件去设置,让复用工作在某种特定的条件下,一般是有一些寄存器。每个平台的复用方法不尽相同,本片分析海思平台的复用方法但复用的思路都是一样的查看引脚对应框图找到相应设置的寄存器himm工具如果引脚较少,四五个功能都复用在同一个引脚上,这个时候就会很麻烦。原创 2021-07-31 12:45:31 · 1614 阅读 · 0 评论 -
海思3518E开发笔记4.2——sensor数据交互接口(MIPI、LVDS、DVP并口),以AR0130和OV9712为例
目录前言DVP(并口)LVDSMIPI(MIPI-CSI2)总结前言摄像头是一个独立的芯片,和主控芯片是弧线独立的,两者通过接口进行交互,交互的信息有控制信号和数据信号控制信号常用I2C、SPI,I2C用的最多数据信号常用的有MIPI、LVDS、HISPI、并口本文主要介绍数据交互接口DVP(并口)以AR0130为例控制信号通过I2C两根总线进行传递时钟信号通过SENSOR_CLK传递,对AR0130来说它是输入线,对HI3518E来说是输出线通过时钟控制同步异步是非常常见的,通过时钟原创 2021-07-29 16:14:32 · 7369 阅读 · 0 评论 -
海思3518E开发笔记4.1——sensor替换
目录为什么用不同的sensor进行学习查看SDK中sensor相关文档更换sensor总结为什么用不同的sensor进行学习有时候sensor采图像出不来,需要通过驱动的角度进行学习。如果拿到一个芯片,如何知道这块芯片支持什么样的sensor?拿到一个sensor,如何知道使用的芯片是否支持这个sensor?—这个时候就需要查看SDK中的相应文档,重点关注SOC对Sensor的支持半导体行业是越新的产品性能越好,越便宜。在软件设计的时候需要考虑对未来新能更好的sensor留下空间,这是一种行业素原创 2021-07-29 11:50:13 · 1218 阅读 · 0 评论 -
海思3518E开发笔记3.5——ORTP实时图传源码分析
目录RTP实时图传源码分析传输中的分包处理一包传完的情况需要分包的情况RTP实时图传源码分析RTP实时视频传输,是基于海思的sample实现的。实际就是接入ORTP,将编码后的H264视频流通过ORTP的API传出去,再通过VLC实时预览。实际修改sample的代码,是参考ortp库中的/src/tests/rtpsend.c代码进行编写的。ortp源码阅读首先,在sample编码初始化部分,即从venc通道中拿码流准备文件存储部分之前,将ORTP初始化 #if ORTP_ENABLE原创 2021-07-28 17:19:27 · 728 阅读 · 0 评论 -
海思3518E开发笔记3.4——ORTP源码分析
目录ORTP库概览ORTP库sample分析ORTP库概览库提供一堆功能函数(本身没有main),都在src目录下库的使用给了案例(有main),在src/tests目录下相关数据结构和头文件,在include/ortp目录下ortp实现了rtp和rtcp协议,前者负责传输,后者负责控制和同步协调ORTP库sample分析在音视频项目使用的比较多的就是使用rtp传输视频流,参考的代码是src/tests/rtpsend.c首先对命令行参数的传参依次进行处理,接着就是对or原创 2021-07-27 16:08:43 · 864 阅读 · 1 评论 -
海思3518E开发笔记3.3——ORTP的使用
目录在官方SDK的sampe中添加rtp传输代码环境准备开发板部署并运行实时预览在官方SDK的sampe中添加rtp传输代码首先,在/venc/sample_venc.c中添加s32ChnNum = 1;将码流控制为1路然后修改common/sample_common_venc.c,在第一个函数上添加#define ORTP_ENABLE 1#if ORTP_ENABLE#include <ortp/ortp.h>#include <signal.h>#incl原创 2021-07-23 15:58:00 · 689 阅读 · 4 评论 -
海思3518E开发笔记3.2——ORTP的移植
目录源码准备源码修改安装库查看相关文件源码准备https://github.com/dmonakhov/ortp下载好后存放到临时工作目录并解压源码修改ortp是通过网络传输信息,但是不限于视频。由于我们下载的源码中没有h264的payload,所以要手动添加avprofile.c的357行将h264的payload加上rtp_profile_set_payload(profile,96,&payload_type_h264);安装库进入ortp目录执行./autogen.sh原创 2021-07-23 11:01:51 · 375 阅读 · 1 评论 -
海思3518E开发笔记3.1——ORTP介绍
目录基于库进行开发视频网络传输的2种方式基于下载: http or ftp基于实时的:RTP/RTSP/RTCPORTP介绍基于库进行开发功能的实现若是一行一行完全由自己写,那么会非常的麻烦,若使用前人封装好的库,那对我们而言,要做的就是将库移植过来,基于库做一个快速开发。好处是快速开发缺点是对底层原理不够了解视频网络传输的2种方式基于下载: http or ftp要播放视频,就需要将视频文件从服务器上下载下来比如在网上看电影,如果下载的速度能赶上播放速度,那么播放就是实时的,否则就会卡原创 2021-07-23 09:47:10 · 488 阅读 · 0 评论 -
海思3518E开发笔记2.8——海思VENC(Video Encode)模块get stream详解
目录代码代码/******************************************************************************* funciton : start get venc stream process thread******************************************************************************/HI_S32 SAMPLE_COMM_VENC_StartGetStream原创 2021-07-20 16:13:28 · 1973 阅读 · 1 评论 -
海思3518E开发笔记2.7——海思VENC(Video Encode)模块详解
目录海思Video Encode模块架构介绍海思Video Encode相关概念码率控制海思Video Encode模块架构介绍VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码独立,编码协议和编码 profile (BP、MP、HP)可以不同。本模块支持视频编码同时,调度 Region 模块对编码图像内容进行叠加和遮挡。海思Video Encode相关概念VENC 模块的输入源包括三类:用户态读取图像文件向编码模块发送数据;视频输入( VIU)模块采集的图像经视频处理子系统原创 2021-07-19 15:51:32 · 4526 阅读 · 7 评论 -
海思3518E开发笔记2.6——海思VPSS(Video Process Sub-System)模块详解
目录海思Video Process Sub-System模块架构介绍海思Video Process Sub-System相关概念VI、VPSS的离、在线模式海思Video Process Sub-System模块功能介绍函数调用关系相关数据结构流程分析海思Video Process Sub-System模块架构介绍VPSS( Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行(隔行扫描转为逐行扫描,以前隔行扫描好做,现在为了兼容需要去隔行,一般不会碰到,看原创 2021-07-15 22:15:26 · 4829 阅读 · 1 评论 -
海思3518E开发笔记2.5——海思VI(video input)模块详解
目录海思video input模块架构介绍海思video input模块功能介绍结构体说明函数调用关系流程分析step 1: mipi configurestep 2: configure sensor and ISP(include WDR mode)step 3: run isp threadstep 4 : config & start vicap devStep 5: config & start vicap chn (max 1)海思3518的sample中,创建好视频缓存池及初原创 2021-07-15 12:49:46 · 3796 阅读 · 0 评论 -
海思3518E开发笔记2.4——海思MPP初始化详解及blocksize的计算
目录变量定义step 1: init sys variable计算blocksizestep 2: mpp system init为了兼容性的问题,海思为多个版本的3518e编写了sample我们分析这一路变量定义这里有几个关键性的变量playload数组中有3个成员,对应3个通道。编码尺寸也对应3个通道typedef struct hiVB_CONF_S{ HI_U32 u32MaxPoolCnt; /* max count of pools, (0,VB_MAX_PO原创 2021-07-14 11:24:25 · 1411 阅读 · 1 评论 -
海思3518E开发笔记2.3——海思mpp架构及sample程序流程分析
目录MPPMPP系统架构海思媒体处理平台架构sampleMPP海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速开发。通俗点就是海思提供的这套ko、lib、api,对内存的管理。对内部进行视频编码的dsp的封装。这一套体系就是mppMPP系统架构硬件层硬件层由 Hi35xx 芯片加上必要的外围器件构成。外围器件包括 Flash、 DDR( Double Data-Rate)、视频 Sensor 或 AD、音频 AD (模数转换器)等。原创 2021-07-13 17:52:36 · 2613 阅读 · 0 评论 -
海思3518E开发笔记2.2——音视频基础概念
目录常用分辨率颜色的学问rawRGB和图像采集过程常用分辨率VGA——640X480D1——720X5764K——4096X21608K——8192X43201080p——1920X1080720p——1280X720颜色的学问颜色是主观的还是客观存在的?颜色的本质是光的波长,但是因为有人去看了才有了颜色这个概念。是主观存在的概念。意思就是脱离人眼去研究颜色是没有意义的颜色的属性:亮度——亮度高就刺眼,亮度低就灰暗色度——色彩的纯度,如大红比粉红要红饱和度——颜色的鲜艳程原创 2021-07-09 10:26:44 · 637 阅读 · 0 评论 -
海思3518E开发笔记2.1——海思官方mpp sample总体分析
目录简介基本架构简介海思官方提供的sampe位于\Hi3518E_SDK_V1.0.3.0\mpp\sample中sample其实是很多个例程,所以有很多个Main,每一个例程面向一个典型应用。audio为音频相关功能common为功能函数,是一些经常用到的函数,供其他模块调用hifb——haisi framebuffer为视频的实时显示,实际上用于像手机拍照的实时显示ive—— Intelligent Video Engine是海思媒体处理芯片智能分析系统中的硬件加速模块。用户基于原创 2021-07-07 16:27:22 · 1538 阅读 · 0 评论 -
海思3518E开发笔记1.8——海思sample调试及rootfs制作
目录修改Makefile执行重新制作rootfs修改Makefile我们现在使用的是芯片是Hi3518EV200,sensor是ar0130于是将mpp中sample的Makefile.param的内容进行修改使能CHIP_ID ?= CHIP_HI3518E_V200SENSOR_TYPE ?= APTINA_AR0130_DC_720P_30FPS再屏蔽掉没有用到的东西进入/mpp/sample/venc下面make将编译出来的sample_venc丢到nfs共享文件夹中,在开发板中原创 2021-07-06 18:18:58 · 930 阅读 · 3 评论 -
海思3518E开发笔记1.7——mpp的部署研究和实战
目录mpp解析模块导入脚本如何导入配置libextdrv部署mppmpp是海思的视屏编解码的sdk\Hi3518E_SDK_V1.0.3.0\mpp\ko目录下的ko文件都是海思预先编译好的驱动模块,还有一些.a、.so、.h,用封装好的库、ko的形式提供主要是海思不想开源。一是为了版权保护;二是即使给你源码你也玩不来。以h264e(h264 enconde)为例,是通过操作3518e的内置dsp来进行硬件编码,需要操作非常多的寄存器,如果不是非常专业的话根本玩不来。所以海思预先开发好,预编原创 2021-07-06 14:01:21 · 1617 阅读 · 1 评论 -
海思3518E开发笔记1.6——rootfs及其启动流程分析
目录3518E的根文件系统3518E的根文件系统~ # cd /etc//etc # lsfs-version group inittab passwd profile servicesfstab init.d mtab passwd- protocols udev这块芯片的根文件系统里有这么多东西这些都是提前做好的挂载根文件系统后第一个启动的就是/etc/init.d/rcS文件其中/etc/fs原创 2021-07-05 15:32:58 · 1438 阅读 · 0 评论 -
海思3518E开发笔记1.5——flash分区及uboot、kernel、rootfs烧写并部署
目录规划分区烧写流程tftp更新并重新烧写uboot的命令序列tftp更新并重新烧写kernel的命令序列tftp更新并重新烧写rootfs的命令序列:裸机烧录uboot什么是裸机烧录方法烧录uboot烧录过程分析烧录kernel配置开发板网络烧录烧录根文件系统烧录完成后的步骤规划分区因为嵌入式系统为了简化,没有使用分区表来自动管理flash,所以都是事先定死的。所以在部署一个嵌入式系统前都要人为的定下一个分区规划原则每个分区要足够放镜像尽量留一点扩展余地满足上两个条件,其他随便搞分区规划原创 2021-07-01 19:13:39 · 2266 阅读 · 1 评论 -
海思3518E开发笔记1.4——Hi3518E_SDK_V1.0.3.0 编译海思SDK—osdrv
错误分析上篇已经完成了交叉编译工具链的安装,发现编译仍然有问题在制作uImage时出错。uImage在编译的时候,最后一步就是制作uImage,用到的命令就是mkimage我们进入uboot对应的文件夹中发现已经生成了uImagefile指令看一下没有问题,那么我们将其拷贝到usr/local/bin中再次编译即可编译策略分析整体编译,遇到问题解决问题部分编译,需要那部分单独编译哪部分在readme文档中介绍了部分编译的方法编译osdrv发现找不到zlib.h..原创 2021-07-01 10:35:06 · 820 阅读 · 0 评论 -
海思3518E开发笔记1.3——海思64位交叉编译工具链安装
目录分析安装兼容包错误解决分析在上一篇博文中,配置好makefile中的交叉编译工具链路径后依然显示找不到路径那么问题就在于交叉编译工具链可能是32位,而开发环境是64位的通过file指令查看果然是32位的,而虚拟机是64位的,所以不能运行有两个解决方案换32ubuntu装32位兼容包安装兼容包sudo apt-get updatesudo apt install gcc-multilibsudo apt-get install lib32z1解决标志是运行-v出现版本号原创 2021-06-19 16:03:22 · 1192 阅读 · 0 评论 -
海思3518E开发笔记1.2——海思SDK脚本学习
目录前言文档用户指南uboot应用开发指南SDK中相关脚本学习sdk.cleanup阅读sdk.unpack阅读scripts/common.shosdrv前言SDK中会做好很多功能,如果对SDK不熟悉那么很可能花很长一段时间进行开发结果发现SDK已经提供了接口。所以在项目开始前,对SDK进行学习非常有必要。文档用户指南介绍了环境搭建相关内容本次学习采用的HI3528E开发板主要使用了串口线及网线进行调试。JTAG虽然也提供了,但是没有用到。一般JTAG用于较为底层(uboot)的功能调原创 2021-06-18 19:10:11 · 1564 阅读 · 0 评论 -
海思3518E开发笔记1.1——HI3518E方案整体架构介绍
目录前言硬件软件前言在做一个项目之前,需要对这个项目在一个比较高的高度进行了解。如,硬件构成、软件是裸机的还是带操作系统的,带操作系统的是怎么样一个开发流程。得对项目由打到校进行了解,知道了架构之后再进行细节性的学习。这样就不会去迷失。在进行一个大框架项目的学习时,需要对其整体进行了解再进行细节性的学习硬件1、 HI3518E单芯片提供:CPU + DSP + 内置64MB DDR和ETHERNET MAC内部的DSP是进行一些ISP、编解码运算的。DDR内置就可以实现一个低成本,将来在做板原创 2021-06-18 09:51:42 · 2078 阅读 · 0 评论