海思Hi3516开发日记之多线程和U盘的自动挂载卸载
1 线程线程,就是操作系统所能调度的最小单位。普通的进程,只有一个线程在执行对应的逻辑。我们可以通过多线程编程,使一个进程可以去执行多个不同的任务。相比多进程编程而言,线程享有共享资源,即在进程中出现的全局变量,每个线程都可以去访问它,与进程共享内存空间,使得系统资源消耗减少。
2 QT中多线程的实现官方文档里说, QThread 类提供了一种独立于平台的方法来管理线程。 QThread 对象在程序中管理一个控制线程。 QThreads 在 run()中开始执行。默认情况下, run()通过调用 exec()来启动事件循环,并在线程中运行 Qt 事件循环。您可以通过使用 QObject::moveToThread()将 worker对象移动到线程来使用它们。
QThread 线程类是实现多线程的核心类。 Qt 有两种多线程的方法,其中一种是继承 QThread的 run()函数,另外一种是把一个继承于 QObject 的类转移到一个 Thread 里。 Qt4.8 之前都是使用继承 QThread 的 run()这种方法,但是 Qt4.8 之后, Qt 官方建议使用第二种方法。本文使用 ...
海思Hi3516开发日记之UDP通信
1 UDP简介UDP(User Datagram Protocol,即用户数据报协议)是一个轻量级的,不可靠的,面向数据报的无连接协议。由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
UDP通信示意图如下:
UDP消息传送有三种模式,分别是单播、广播和组播三种模式。
①单播(unicast):单播用于两个主机之间的端对端通信,需要知道对方的IP地址与端口。
②广播(broadcast):广播UDP与单播UDP的区别就是IP地址不同,广播一般使用广播地址255.255.255.255,将消息发送到在同一广播(也就是局域网内同一网段)网络上的每个主机。
③组播(multicast):组播(多点广播),也称为多播,将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据。
在广域网上广播的时候,其中的交换机和路由器只向需要获取数据的主机复制并转发数据。主机可以向路由 ...
海思Hi3516开发日记之GPIO的使用
1 新建工程在Ubuntu的QT Creator中,新建工程Hi3516Project。
2 添加海思相关库文件到工程(1)复制SDK包中的文件,路径为
1./Hi3516CV500_SDK_V2.0.2.0/package/mpp_smp_linux/
(2)复制该文件夹下的lib、include以及/sample/common文件夹到工程目录。
(3)在工程名字上右键选择“Add Existing Directory…”,添加加入的头文件以及相关例程。
(4)在pro文件中,加入海思链接库
1234567891011LIBS += -L /lib -ltde -lmpi -lupvqe -ldnvqe\ -lhdmi -l_hiae -lsns_imx327 -lsns_gc2053 \ -lsns_ov12870 -lsns_imx307 -lsns_mn34220\ -l_hiawb -l_hiawb_natura -lhi_cipher -l_hidehaze -l_hidrc -ls ...
海思Hi3516开发日记之第一个QT程序
1 创建工程(1)在ubuntu中,打开QT软件,创建一个程序。创建时Kits选择之前新建的Hi3516套件。
(2)在UI界面,设置分辨率为1920*1080,放置一个按钮(pushButton)和一个文本框(lineEdit)。
(3)设置按钮的槽函数。
1234void MainWindow::on_pushButton_released(){ ui->lineEdit->setText("Hello World!");}
(4)保存并构建工程。
2 开发板验证(1)设置QT环境变量
12345678export QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mice;export QWS_SIZE=1920*1080;export QTDIR=/root/get/hisilicon/Qt-5.12.9-hi3516dv300;export QT_QPA_FONTDIR=/root/get/hisilicon/Qt-5.12.9-hi3516dv300/lib/fonts;exp ...
海思Hi3516开发日记之开机画面更改
1 前言Hi3516可以通过Uboot显示图片,Hi3516的Uboot代码提供功能如下:
提供boot环境下VO设备的开启和关闭,涵盖VO典型接口和时序。
提供boot环境下VO图形层的开启和关闭。
提供boot环境下VO视频层的开启和关闭。
提供boot环境下JPEG硬件解码输出RGB格式图像(仅Hi3559AV100支持),配合VO图形层显示。
提供boot环境下JPEG硬件解码输出YVU SEMI-PLANAR420格式图像,配合VO视频层显示。
VO图形层默认显示格式为ARGB1555,视频层默认显示格式为YVU SEMIPLANAR420。
2 制作开机画面使用PS制作一副1920*1080像素图片,导出格式为jpg。导出时注意不要勾选转换为sRGB!
3 编译内核准备好画面之后,可以使用内核定时器进行划线,以实现进度条效果。编译内核步骤如下:
(1)从 linux 开源社区下载 v4.9.37 版本的内核
①进入网站: www.kernel.org
②选择 HTTP 协议资源的 https://www.kernel.org/pub/选项,进入子页面
③选择 lin ...
海思Hi3516开发日记之开发环境搭建——交叉编译和安装QT5
1 qt的选择与下载在学习IMX6ULL时,ubuntu中安装的QT版本是5.12.9,因此这里我选择了此版本。
下载并解压:
123cd /optwget http://download.qt.io/archive/qt/5.12/5.12.9/single/qt-everywhere-src-5.12.9.tar.xztar xf qt-everywhere-src-5.12.9.tar.xz
2 创建海思的qmake.conf12cp /opt/qt-everywhere-src-5.12.9/qtbase/mkspecs/linux-arm-gnueabi-g++/ /opt/qt-everywhere-src-5.12.9/qtbase/mkspecs/arm-himix200-linux-g++ -rfvi /opt/qt-everywhere-src-5.12.9/qtbase/mkspecs/arm-himix200-linux-g++/qmake.conf
qmake.conf内容修改如下:
1234567891011121314151617181920212 ...
Hi35XXX海思媒体处理平台架构介绍
注:本文为转载,原文链接:https://blog.csdn.net/qq_17308321/article/details/79741432
海思的媒体处理平台(MPP,Media Process Platform),在系统中的位置如下图所示,内部主要分为视频输入(VI)、视频处理(VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、视频侦测分析(VDA)、音频输入(AI)、音频输出(AO)、音频编码(AENC)、音频解码(ADEC)、区域管理(REGION)等模块。
主要模块作用及流程(1)VI模块捕获视频图像,可对其进行剪切、缩放等处理,并输出多路不同分辨率的图像数据。
(2)VDEC对编码后的视频码流进行解码,并将其解析后的图像数据送给VPSS进行图像处理,亦可直接送给VO显示。
(3)VPSS接收VI和VDEC发送过来的图像,对其进行去燥,锐化,图像增强等处理,并实现同源输出多路不同分辨率的图像数据用于编码、预览或抓拍等。
(4)VENC接收VI捕获并经过VPSS处理后输出的图像数据,还可通过Region设置OSD图像,然后按不同协议进行编码输出 ...
PWM应用
1.PWM的相关参数PWM主要有三个参数:频率、占空比、分辨率。
频率(Frequency):是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期),也就是说一秒钟PWM有多少个周期。
占空比(Duty Cycle):是一个脉冲周期内,高电平的时间与整个周期时间的比例,占空比决定了PWM等效出来的模拟电压的大小,占空比越大,模拟电压越趋近于高电平。
分辨率(Resolution):就是占空比变化的快慢,占空比变化的细腻程度。占空比跳的快如按照1%跳变与按照0.1%跳变,那么0.1%的跳变就越细腻,越柔和。
2.PWM参数计算公式
PWM频率:Freq = CK_PSC / (PSC + 1) / (ARR + 1)
PWM占空比:Duty = CCR / (ARR + 1)
PWM分辨率:Reso = 1 / (ARR + 1)
注:
ARR: Automatic Reload Register,自动重装寄存器。计数到该值时,会重新计数,也就是重装的意思。
CCR: Catch Compare Register,捕 ...
采样中的相关定义
1. 采样频率(fs)采样频率也称为采样速度或采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,用Hz来表示。采样频率的倒数是采样周期或者叫做采样时间,他是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒中采集多少个信号。
2. 采样点数(N)采样点数是指采样的数目。在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max > 2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍。
3. 采样时间(Ts)
Ts = \frac{N}{ f_{s} }4. 信号的分辨率(f_{div})
f_{div} = \frac{ f_{s} }{ N } = \frac{ 1 }{ Ts }
USB键盘键位的键值功能
USB 设备与主机通信的数据格式USB 设备与主机通信的数据定义的数据格式如下表格所示。
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
第1字节
右 GUI
右 Alt
右 Shift
右 Ctrl
左 GUI
左 Alt
左 Shift
左 Ctrl
第2字节
保留 0x00
第3字节
0x00
第4字节
0x00
第5字节
0x00
第6字节
0x00
第7字节
0x00
第8字节
0x00
若要在电脑上使用复制功能(left Ctrl + C),那么键盘按下 left Ctrl 和 C 键(C 键对应 Key Code 为 0x06),设备向主机发送的数据格式 01,00,06,00,00,00,00,00,这样设备便向主机发送了 left CTRL 键和 C 键按下的信号,主机执行复制功能,下表格对应按下的按键键码数据。
Bit 7
Bit 6
Bit 5
Bit 4
B ...