【第一季】全面认识海思HI3518E方案和SDK环境搭建

2023-05-16

文章内容来自朱有鹏的《朱老师物联网大讲堂》的嵌入式企业级项目–海思HI3518E方案视频编解码传输深度学习,转载请注明出处

目录

  • 一,视频设备开发的技术流
  • 二,HI3518E方案系统整体架构介绍
  • 三,海思SDK编译及问题解决
  • 四,flash分区和系统镜像(uboot,kernel,rootfs)的烧写
    • 1.裸机烧录uboot
    • 2.kernel和rootfs烧录与启动系统
  • 五,mpp的部署研究和实战
  • 六,sample的编译和测试


一,视频设备开发的技术流


1、视频从产生到被消费的整个流程
(1)基本认知:视频是由单帧图像以每秒x帧的速率连续组成的,单帧图像类似位图。
(2)原始视频产生:镜头和sensor(镜头把光线都聚集到sensor上,sensor把光信号转换成模拟电信号,由内部集成的AD转换器转换成二进制数列)
(3)图像处理:ISP(image signal processing)
(4)视频编码压缩:h.264/h.265压缩算法,运算,内置DSP进行压缩运算的。
(5)视频流传输:网络传输、http/rtsp等
(6)视频存储:打包成MP4等格式存储,等待调阅
(7)视频回放:解码+播放

2、视频行业的商业角度分段
(1)主芯片商、sensor、镜头等分立原件厂商
(2)模组厂商:买来芯片,sensor和镜头等原件进行基础开发,让设备能够采集视频并处理后,通过视频编码压缩,最终能进行传输
(3)视频服务器厂商,类似大拿这种
(4)面向解决方案的方案开发商:买来模组厂商的模组和视频服务器厂商的服务,在应用层进行各种满足解决方案需求的开发
(5)工程商或销售商

3、几个疑问点
(1)视频为什么要编码和解码?
原始的视频太大了,通过网络传输,因为网络也有一定的带宽,把视频进行编码是为了更好地通过网络进行传输

(2)HI3518E主要解决什么问题?
视频的编解码算法

(3)为什么使用linux而不是其他os?
Linux里面的网络协议栈和各种网络的资源最多。


二,HI3518E方案系统整体架构介绍


1、硬件上
(1)HI3518E单芯片提供:CPU+DSP+内置64MB DDR + ETHERNET MAC
(2)外置16MB的SPIFlash用来存放程序(uboot、kernel、rootfs、app)
(3)SDcard扩展提供用户数据区
(4)板载ethernet PHY和USB HOST扩展WIFI提供联网能力
(5)sensor接口(并行数据通道+I2C控制通道)提供主板和sensor链接
(6)串口作为调试口和linux系统控制台

2、软件上
(1)SPIFlash分区烧录uboot.bin、zImage、rootfs,并设置合理的环境变量使系统启动。
(2)sensor、ethernet等硬件均需要驱动支持
(3)app实现视频采集、编码压缩、网络传输等核心工作
(4)各种专业工作(譬如利用内置DSP实现h.264编码压缩)都由海思开发好并以ko的形式提供,有API文档参考,app编写者在sample的帮助下逐步实现自定义的功能。


三,海思SDK编译及问题解决

在这里插入图片描述


海思的SDK编译问题解决1

海思的SDK编译问题解决2

四,flash分区和系统镜像(uboot,kernel,rootfs)的烧写

1、flash分区

(1)因为嵌入式系统为了简化,没有使用分区表来自动管理flash,所以都是事先定死的。所以在部署一个嵌入式系统前都要人为的定下一个分区
(2)原则1:每个分区要足够放镜像;原则2:尽量留一点扩展余地。原则3:在满足1和2情况下你随便分区。
(3)经过上个阶段我们编译完SDK就可以得到uboot,kernel,rootfs(_64K.jffs2)三种镜像,所以按照以下分区进行烧录即可

在这里插入图片描述

分区名分区大小起始地址截至地址
bootloader:1M0x000000000x00100000
kernel:3M0x001000000x00400000
rootfs:12M0x004000000x01000000

1.裸机烧录uboot

(1)什么叫裸机烧录?设备是空白的,未经烧录的,就叫裸机。
(2)裸机烧录一个设备有2种方案:

  • 第一种是用外部烧录器来烧录板载flash(外部烧录器烧录SPIFLASH时和HI3518E没有关系,有时候经常SPIFLASH先单独通过烧录器和支架来烧录好镜像,然后再把烧录过镜像的SPIFLASH焊接到板子上。现在很多烧录器也可以在板子上直接烧了)
  • 第二种是通过主芯片提供的isp下载的机制来间接烧录板载flash,我们现在就是用第二种

运行海思官方的烧录软件Hi_tool来烧录uboot
在这里插入图片描述
在这里插入图片描述
扩展:各种常见flash的简单讲解
(1)买到的flash芯片,其实是内部的flash存储颗粒+外部封装的控制器来构成的。
(2)像EMMC、SD、MMC、SPIFLASH、NANDFLASH等差异都在于控制器。
(3)SPIFLASh的优势就是接口简单,主芯片只需要支持SPI接口就可以外接。很多MCU或者CPU在需要外扩一个8M/16M/32M/64M这么大级别的外部存储器时,选择SPIFLASH是很好的。
(4)NANDFLASH其实控制器是最老的,像EMMC、SD等都比NANDFlash要更新一些,更好一些。


2.kernel和rootfs烧录与启动系统


1、烧录kernel
(1)SDRAM地址范围:80000000-83FFFFFF
(2)前提是tftp得能ping通,能下载,才能烧录。 网络地址:ipaddr 192.168.1.10, serverip 192.168.1.141

在这里插入图片描述

2、烧录rootfs
烧录命令如下


tftp更新并重新烧写uboot的命令序列

mw.b 0x82000000 ff 0x100000   			 //memory write .byte   (从起始地址0x82000000写全ff,长度为0x100000,即1MB)
tftp 0x82000000 u-boot-hi3518ev200.bin   //tftp把uboot镜像下载到0x82000000
sf probe 0                               //选中spiflash 0
sf erase 0x0 0x100000					 //从SPIFLASH的0x0起始地址开始擦除长度为0x100000的内容,即1MB
sf write 0x82000000 0x0 0x100000		 //把SDRAM地址0x82000000长度为长度为0x100000的内容,即1MB的内容写到SPIFLASH的0x0起始地址

tftp更新并重新烧写kernel的命令序列

mw.b 0x82000000 ff 0x300000
tftp 0x82000000 uImage_hi3518ev200
sf probe 0
sf erase 0x100000 0x300000
sf write 0x82000000 0x100000 0x300000

tftp更新并重新烧写rootfs的命令序列

mw.b 0x82000000 ff 0xc00000
tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2
sf probe 0
sf erase 0x400000 0xc00000
sf write 0x82000000 0x400000 0xc00000

3、uboot的各环境变量介绍和设置

附2:正确的bootcmd和bootargs对应的设置命令:(设置完成记得save命令保存)

set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
		//选中SPIFLASH  从SPIFLASH的0x100000地址读取长度为0x300000,即3MB(内核的大小)到SDRAM的地址0x82000000,然后启动
set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)

参数解析:
mem=32M :					给内核空间分配32MB的DDR空间,剩下的32MB留给mmp
console=ttyAMA0,115200:	选中串口0,波特率115200
root=/dev/mtdblock2:		文件系统在分区表第三分区(0,1,2)
rootfstype=jffs2mtdparts:	手动传参分区表,覆盖内核默认分区表1024K(boot),3072K(kernel),12288K(rootfs)

在这里插入图片描述


参考博客:分析rootfs启动后做了什么



五,mpp的部署研究和实战


1、mpp的文件结构详解
(1)ko
(2)lib
(3)sample
(4)其他几个
参考博客:mpp的文件分析

2、部署ko文件和lib文件

SDRAM范围:80000000-83FFFFFF
烧录到板子的linux系统内存: 0x80000000-0x81FFFFFF
MMZ内存(mpp所需的内存):0x82000000-0x83FFFFFF

在这里插入图片描述

3、开发板启动自动挂载主机
(1)在/etc/profile中添加设置网卡IP地址
(2)在/etc/profile中添加自动挂载主机nfs服务器
(3)开机自动安装mpp的各种模块驱动
在这里插入图片描述


六,sample的编译和测试


1、sample的编译
(1)sample结构简单浏览:sample程序在osdrv同级目录下的mmp文件夹中
(2)Makefile研究:首先先看一下Makefile.param,发现里面的两个需要修改的地方

1、默认选中的事HI3516C,所以我们屏蔽掉默认的,打开我们的HI3518E_V200;
2、镜头默认选中的是SONY的镜头,同样,我们屏蔽默认的,打开AR130之后就没有什么需要改动的了。

在这里插入图片描述
(3)编译得到sample_venc
在这里插入图片描述

2、sample的部署和测试
(1)nfs方式运行sample
(2)得到录像文件xx.h264
(3)导出xx.h264到windows下用vlc播放器播放验证
在这里插入图片描述
在这里插入图片描述

3、镜像重新制作
(1)在编译目录的osdev/pub/下找到rootfs_uclibc.tgz,解压开
(2)按照上节和本节验证成功的部署步骤部署整个rootfs

在这里插入图片描述

(3)手工制作rootfs.jffs2镜像,再烧录测试即可

osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【第一季】全面认识海思HI3518E方案和SDK环境搭建 的相关文章

随机推荐

  • VDO---虚拟数据优化

    学习目标 xff1a 理解什么是VDO xff0c VDO有什么作用 学会使用VDO 内容前导 xff1a VDO xff08 Virtual Data Optimize xff0c 虚拟数据优化 xff09 是一种通过压缩或删除存储设备上
  • 阿里云轻量应用服务器centos7搭建hadoop伪分布式集群

    centos7上hadoop伪分布式集群配置 写在前面 云计算实验 xff0c hadoop完全式分布集群 xff0c 没那么多服务器就搞了个伪分布式 纯粹为了应付老师 xff0c 教程是一边查一遍弄的 xff0c 重复装了一次 xff0c
  • Eigen/Sparse稀疏矩阵SparseMatrix

    关于Eigen的稀疏矩阵的介绍 xff1a 原文链接 1 SparseMatrix的格式 SparseMatrix主要包含以下4个数组 xff1a Values stores the coefficient values of the no
  • SpringBoot事件监听器的四种方式

    Java事件监听 事件监听的概念 xff1a 事件监听就是让电脑通过你的操作得到一些数据并对这些数据做出反应 xff0c 反馈相应的行为或者指令的操作 java中的事件机制的参与者有3种角色 xff1b event object 事件状态对
  • OAI搭建步骤(EPC+eNB)

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 文章目录 一 系统概述二 搭建核心网EPC openair cn 2 1 准备主机2 2 更换内核2 3 获取openair cn
  • Layui网址

    http laizhefa com layer index html
  • Spring Security

    Spring Security简介 Spring Security是一个高度自定义的安全框架 利用Spring IOC DI和AOP功能 xff0c 为系统提供了声明式安全访问控制功能 xff0c 减少了为系统安全而编写大量重复代码的工作
  • Hibernate基本使用

    Hibrenate框架 一 Hibrenate 1 是一个持久层框架 xff0c 实现jdbc的封装 是一个全自动的ORM框架 2 ORM xff1a 对象 关系 数据库表 映射 xff0c orm致力于将数据库操作转换成Java程序熟悉的
  • Nginx学习笔记

    文章目录 一 Nginx初始二 正向代理和反向代理 xff08 一 xff09 正向代理 xff08 二 xff09 正向代理的使用场景 xff08 三 xff09 反向代理 xff08 四 xff09 反向代理的使用场景 三 Nginx的
  • Mybatis+Mybatis-plus+SpringBoot整合(完整版)

    文章目录 一 Mybatis xff08 一 xff09 Mybatis简介1 Mybatis历史2 Mybatis特性3 Mybatis下载4 和其它持久化层技术对比 xff08 二 xff09 搭建Mybatis1 MySQL不同版本的
  • SpringMVC+SSM整合(完整版)

    文章目录 一 SpringMVC xff08 一 xff09 SpringMVC简介1 什么是MVC2 什么是SpringMVC3 SpringMVC的特点4 MVC的工作流程 xff08 二 xff09 入门案例1 创建maven工程 引
  • C语言实现CNN的前向推理

    利用Python训练模型 xff0c 提取模型参数到C语言的头文件 xff0c C语言进行前向推理计算 目录 1 填充算子1 1多维数组实现1 2一维数组实现 2 卷积算子2 1多维数组实现2 2一维数组实现 3 池化算子3 1多维数组实现
  • 树莓派3B+安装系统

    系统镜像下载 树莓派官方镜像下载地址 xff1a https www raspberrypi org downloads xff08 如果找不到就点击See all download options xff09 https www rasp
  • ubuntu16.04安装中文输入法并设置显示中文

    参考自 xff1a https jingyan baidu com article bad08e1ef4b2f109c85121b7 html 原材料 xff1a ubuntu16 步骤 xff1a 1 在桌面的最左边选择设置 xff08
  • 用PrtSc键触发启动flameshot

    进入系统设置中的 键盘快捷键 先将系统默认的快捷键prt sc禁用 xff0c 否则可能不能再设置用这个快捷键 页面中会列出所有现有的键盘快捷键 xff0c 拉到底部会看见一个 43 按钮 点击 43 按钮添加自定义快捷键并输入以下两个字段
  • 在GitHub的README中使图片深浅主题自适应

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 在GitHub的Markdown文件中 xff0c 我们可以针对同一图片使用两份深浅主题的链接 xff0c 以保证在适应GitHu
  • P4:正则表达式(Regular Expression)学习笔记

    正则表达式学习 1 初始正则表达式1 1正则表达式练习11 2正则表达式练习21 3正则表达式练习3 2 正则表达式源码分析2 1 源码分析 matcher find 2 2源码分析 matcher group 0 2 3 整体代码2 4源
  • AutoML-sklearn and torch

    一 auto sklearn 1 1 环境依赖 额外安装swig 第三方库 linux 支持 mac xff0c windows不支持 1 2 示例代码 time left for this task 设定任务最大时间 per run ti
  • AB实验人群定向HTE模型5 - Meta Learner

    Meta Learner和之前介绍的Causal Tree直接估计模型不同 xff0c 属于间接估计模型的一种 它并不直接对treatment effect进行建模 xff0c 而是通过对response effect target 进行建
  • 【第一季】全面认识海思HI3518E方案和SDK环境搭建

    文章内容来自朱有鹏的 朱老师物联网大讲堂 的嵌入式企业级项目 海思HI3518E方案视频编解码传输深度学习 xff0c 转载请注明出处 目录 一 xff0c 视频设备开发的技术流二 xff0c HI3518E方案系统整体架构介绍三 xff0