自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据结构:内核kfifo的实践

实践了内核的数据结构kfifo记录下,其特点分析看了下这篇博客写的很详细。fifo.c 实现kfifo的主干函数接口,但是很多有用的接口没有扩展,需要的时候再扩展。

2024-04-07 11:46:48 256

原创 数据结构:内核list的实践

记录下C语言中数据结构链表的2种方式,其中内核的表达方式可谓是经典。

2024-04-01 18:27:38 356

转载 转:PCIe扫盲——PCIe总线基本概念

在PCIe的Spec中,并没有特别详细的关于Root Complex的定义,从实际的角度来讲,可以把Root Complex理解为CPU与PCIe总线系统通信的媒介。Endpoint处于PCIe总线系统拓扑结构中的最末端,一般作为总线操作的发起者(initiator,类似于PCI总线中的主机)或者终结者(Completers,类似于PCI总线中的从机)。PCIe相对于PCI总线的另一个大的优势是其的Scalable Performance,即可以根据应用的需要来调整PCIe设备的带宽。

2023-12-12 19:25:52 84

转载 转:PCIe扫盲-PCIe总线事务层入门(三)

而报告的方式是,接收方向发送方发送Flow Control的DLLP(数据链路层包),且这种DLLP的收发是由硬件层面上自动完成的,并不需要人为的干预。在PCI总线中,发送方在发送前并不知道接收法是否有足够的Buffer来接收数据(即接收方是否就绪),因此经常需要一些Disconnects和Retries的操作,这将会严重地影响到总线的传输效率(性能)。当然也有那些只有一个VC Buffer的,此时不管包的TC值如何,都只能缓存在同一个VC Buffer中,自然也就没有办法保证按优先级传输了。

2023-12-12 17:09:08 74

转载 转:PCIe扫盲-PCIe总线事务层入门(二)

Root对读请求的包进行解码后,并从中识别出操作的地址,然后锁存数据,并将数据发送至Endpoint,即包含数据的Completion包,ClpD。需要注意的是,PCIe允许每个包的最大数据量(Max Data Payload)为4KB,但实际上设计者往往会采用较小的Max Payload Size(比如128,256,512,1024和2048)。Locked请求实际上是PCIe为了兼容早期的PCI总线而设置的一种方式,对于非PCI兼容的设计中,是不允许使用Locked操作的。

2023-12-12 16:59:08 52

原创 转:PCIe协议好文摘要

PCIe协议专栏

2023-12-11 14:59:47 29

转载 转:PCIe扫盲-PCIe总线事务层入门(一)

PCIe协议-事务层

2023-12-11 14:44:32 42

原创 Linux-Prnt1: 初始Linux系统下打印机插件配套问题

打印机的跨系统跨平台支持

2023-11-24 16:18:00 435

原创 常见的噪声:高斯、泊松和椒盐噪声

图像处理常见的噪声总结

2023-10-15 20:12:30 1790

原创 fscanf/fscanf_s和fgets使用差异

5、fscanf_s和fgets,读取CSV一行数据时,当读取过程中的长度大于一行字节数时,文本一行末尾原有的’\r\n’,会被保留且追加字符串结尾的’\0’,做字符轮询判断的时候,要5、特别注意判定条件的改变。对文本按照格式"%c"、"%d"、"0x%x"、"%f"读取,都可以省略长度值传参,但是,实际上上述使用,第二个实参format约束了固定字节长度。4、fscanf_s的字符串读入使用,效果和fgets相同,fgets默认按照char* 类型做读操作,4、接口的入参明确,更加适合字符串读。

2023-10-10 17:18:18 342

原创 转:有效管理微处理器超长启动周期中的看门狗

原理分析:无论何种原因触发复位信号,上电/掉电、按键接地或看门狗溢出,RESET输出0电平,即555电路TRIG引脚的输入信号vi为0电平,由于vi连接至555定时器内部比较器的同相端,该比较器的反相端通过内部分压电路连接到1/3VCC,此时vi<1/3VCC,该比较器输出为0,即内部RS触发器的置1端为0,则RS触发器输出1,OUT引脚输出1,vo为1,模拟开关COM选通到悬空通道NO,看门狗禁止。另外,为保证在程序跑飞时系统可自恢复,在许多对可靠性要求较高的应用中,外置看门狗定时器也是不可或缺的。

2023-04-28 10:13:57 256 1

原创 瑞芯微RK3568开发:GPIO实践篇

RK3568 GPIO

2023-03-29 15:44:50 2002

原创 Linux的SOCKET编程详解(转载)

socket编程

2023-01-11 21:43:31 633

转载 形象易懂讲解算法——小波变换

知乎转载,是我看到把小波变换解释的很清楚的文章,特定转载一下。从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常清晰的思路。下面我就按照傅里叶-->短时傅里叶变换-->小波变换的顺序,讲一下为什么会出现小波这个东西、小波究竟是怎样的思路。(反正题主要求的是通俗形象,没说简短,希望不会太长不看。。)一、傅里叶变换关于傅里叶变换的基本概念在此我就不再赘述了,默认大家现在正处在理解了傅里叶但还

2020-07-12 21:58:20 4177

转载 OpenCV--HSV颜色模型及颜色分量范围

转载HSV颜色模型HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。HSV颜色空间模型[1]色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;饱和度S:取.

2020-07-08 19:51:33 1006

原创 深度学习,CPU、GPU、DSP、FPGA运算能力对比

一:CPU一般来讲最弱的是cpu。虽然cpu主频最高,但是单颗也就8核,16核的样子,一个核3.5g,16核也就56g,再考虑指令周期,每秒最多也就30g次乘法。还是定点的。二:DSPdsp虽然主频不如cpu,但是胜在乘法器多,随随便便带16个乘法器,还是浮点的。再来个4核,8核,还有特定的算法硬件加速,所以虽然主频只有1,2g但是运算能力还是比cpu强。当然现在出现了带专用乘法器...

2020-02-22 17:13:02 3491

转载 OpenCL:图像处理基础note(转)

使用图像对象的理由虽然对于图像也可以把它的像素数据当做一般的缓存数据来处理,但是如果把它当做图像来处理有如下好处:在GPU中,图像数据是保存在特殊的全局内存中,即纹理内存,它和一般的全局内存不相同,它是被缓存的,用于高速访问处理。GPU中有专门支持图像读写的硬件,使用内置读写函数可以充分发挥这个优势。 只要OpenCL支持该图像格式,那么就可以不用考虑图像格式的前提下使用读写图像数据的函...

2020-02-16 20:35:17 1161 1

转载 GLSL入门一

OpenGL Shading Language GLSL作为一种着色语言是纯粹的和GPU打交道的计算机语言。因为GPU是多线程并行处理器,所以GLSL直接面向SIMD模型的多线程计算。GLSL编写的着色器函数是对每个数据同时执行的。每个顶点都会由顶点着色器中的算法处理,每个像素也都会由片段着色器中的算法处理。因此,初学者在编写自己的着色器时,需要考虑到SIMD的并发特定,并用并行计算的思路来思考问...

2019-09-01 21:34:33 636

原创 FFMPEG中分配图像内存以及初始化的函数用法

前面分析了ffmpeg中结构体AVFrame的使用方法,在网上看到一些相关的其他内容,整理以下。一、ffmpeg中av_image_alloc()是这样定义的。此函数的功能是按照指定的宽、高、像素格式来分析图像内存。参数说明: pointers[4]:保存图像通道的地址。如果是RGB,则前三个指针分别指向R,G,B的内存地址。第四个指针保留不用 linesizes[4]:保...

2019-06-20 14:27:42 1469 1

转载 ffmpeg sws_scale详细分析

FFmpeg里面的sws_scale库可以在一个函数里面同时实现:1.图像色彩空间转换;2.分辨率缩放;3.前后图像滤波处理。其核心函数主要有三个:// 初始化sws_scalestruct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat,...

2019-06-20 13:59:29 2294

原创 FFMPEG结构体详细记录:AVFrame

AVFrame用来存储解码后的(或原图)音频或视频数据,位于avcodec.h文件中。AVFrame必须由av_frame_alloc()分配内存,同时必须由av_frame_free()释放。AVFrame分配内存后通过av_frame_ref 能够被多次用来存储不同的数据(例如:decoder解码后的帧),类似与引用的概念。与av_frame_ref 对应的av_frame_unref释放...

2019-06-18 13:57:54 763

转载 linux性能监控与调优-vmstat命令

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。指令所在路径:/usr/bin/vmstat输出字段意义:Procs r: The number of processes waiting for run...

2019-04-17 10:20:48 269

转载 系统级性能分析工具perf的介绍与使

测试环境:Ubuntu16.04 +Kernel:4.4.0-31系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。代码优化的目标是针对具体性能问题而优化代码或编译选项,以改善软件性能。在性能剖析阶段,需要借助于现有的profiling工具,如perf等。在...

2019-04-17 10:11:41 536

转载 perf工具使用统计函数调用

1、perf命令简要介绍性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果;perf recordperf report举例:sudo perf record -e cpu-clock -g -p 2548-g 选项是告诉perf record额外记录...

2019-04-17 10:04:17 11230

原创 load average 定义

1. load average 定义linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。通过系统命令"w"查看当前load average情况上边0.31,0.30,0.31表示第一位0.31:表示最近1分钟平均负载第二位0.30:表示最近5分钟平均负载...

2019-04-17 10:02:41 361

转载 top命令输出解释以及load average 详解

昨天nagios报警warning,没来得及留下报警截图,nagios值设定的值是当1分钟多于15个进程等待,5分钟多于10个,15分钟多于5个则为warning状态当1分钟多于30个进程等待,5分钟多于25个,15分钟多于20个则为critical状态--------------------------------------------------------------...

2019-04-17 09:57:37 829

转载 PROC系列之---/proc/pid/stat

/proc/ /stat包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。[root@localhost ~]# cat /proc/6873/stat6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 42949...

2019-04-17 09:49:37 3845

转载 高效率之sendmmsg 和 recvmmsg

在上周的一次非正式谈话中,我偶然听同事说:“Linux 的网络栈太慢了!你别指望每秒在每个核上传输超过 5 万的数据包”。这让我陷入了沉思,虽然对于任意的实际应用来说,每个核 5 万的速率可能是极限了,但 Linux 的网络栈究竟可能达到多少呢?我们换一种更有趣的方式来问:在 Linux 上,编写一个每秒接收 100 万 UDP 数据包的程序究竟有多难?我希望,通过对这个问题的解答,我...

2019-04-12 20:55:13 7061 1

转载 gettimeofday 实现原理和优化

一、原理描述https://blog.csdn.net/lqxandroid2012/article/details/51487547二、问题描述Easydarwin中大量使用gettimeofday来获取系统时间,对系统性能造成了一定的影响。我们来做个测试:While(1){ Gettimeofday(&tv,NULL);}每秒执行次数为约30...

2019-04-01 14:02:38 3275 1

转载 栈溢出导致脏数据

最近遇到一个很奇怪的指针引用问题。局部指针指向一个全局互斥锁变量,通过一层封装引用后,互斥锁unlock的时候失败。原因类型以下的这种分析情况。记得之前看过一篇文章说,最好查的bug是语法错误,因为编译器会告诉你,最不好查的bug是栈溢出,因为啥,因为不仅编译器不会告诉你,连你自己有可能都找不到原因出在哪。经过了一段时间的摸索,算是基本搞清楚了栈溢出的原理,写下来以防日后出现问题无从下手。...

2019-03-30 11:09:16 936

转载 海思Hi3516智能分析引擎应用介绍

  安防监控正在步入高清化、智能化时代,海思推出的Hi3516正是针对高清IPCamera的一款专业高端SOC芯片,除了[email protected]多码流编码、优异的ISP和编码视频质量优势外,其高性能的智能视频分析加速引擎和基于此的智能视频分析集成应用更是该产品的一大亮点。  从图1中我们可以看到Hi3516在图像处理系统中增加了IVS ENGINE,即智能视频加速引擎,简称IVE。...

2019-02-02 09:06:09 3766

转载 音频变时不变调处理

变时不变调时音频处理里的一个小方向,但又没那么简单,算法有很多,我就以soundtouch库为例来展开聊一下。soundtouch是一个音频处理开源库,其官网(http://soundtouch.surina.net),该库支持在windows、GNU、android平台的安装,有编译好的库也有源码。 soundtouch能处理wav格式的音频。 soundtouch支持音频的变时不变调处...

2018-12-07 09:32:06 1357

转载 视频会议十大开源编解码项目排行

   在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈、有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频会议开发当中,我们的开发效率肯定会事半功倍,下面我们列举一下视频会议相关的十大开源项目,并对其重要性及优缺点做一个全面的评价与排名。1、 OpenH323项目        (★★★★★)...

2018-10-23 09:43:44 422

转载 三种主流无线同屏技术介绍(Miracast、DLNA与AirPlay技术)

版权声明:本文为博主原创文章,未经博主允许不得转载 *作者:MingChaoSun *博客地址:http://blog.csdn.net/sunmc1204953974 https://blog.csdn.net/sunmc1204953974/article/details/39611357 ...

2018-10-18 13:57:00 17701

转载 基于DLNA实现iOS、Android投屏:基本概念

基础概念DLNADLNA的全称是DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟), 其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由索尼、英特尔、微软等发起成立、旨在解决个人PC,消费电器,移动设备在内的无线网...

2018-10-17 17:17:03 1536

转载 基于DLNA实现iOS,Android投屏:订阅事件通知

服务运行时,可能改变有些状态信息变量的值,这是需要及时地更新给控制点。因此控制点可以通过订阅操作,让服务通过发送事件消息来发布更新。事件消息包括一个或多个状态变量以及他们的当前数值。这些消息也是采用 XML 格式,遵循通用事件通知体系 GENA 规定。服务运行过程中,该服务的 服务描述文件SDD 中 状态变量 &lt;stateVariable&gt; 发生了变化并且该变量的 &lt;se...

2018-10-17 15:17:30 1222

转载 基于DLNA实现iOS,Android投屏:SOAP控制设备

UPdP网络中,控制点和服务之间使用简单对象访问协议(Simple Object Access Protocol,SOAP)根据基于DLNA实现iOS,Android投屏:SSDP发现设备收到设备描述文档(DDD)和服务描述文档(SDD),通过解析DDD获取&lt;controlURL&gt; 控制点可以知道该设备上某个服务的控制点地址。再通过解析 DDD 中 &lt;action&gt; 中...

2018-10-17 15:16:11 796

转载 基于DLNA实现iOS,Android投屏:SSDP发现设备

SSDP能够在局域网能简单地发现设备提供的服务。SSDP有两种发现方式:主动通知和搜索响应方式。寻址UPnP 技术是架构在 IP 网络之上。因此拥有一个网络中唯一的 IP 地址是 UPnP 设备正常工作的基础。UPnP 设备首先查看网络中是否有 DHCP 服务器,如果有,那么使用 DHCP 分配的 IP 即可;如果没有,则需要使用LLA技术来为自己找适合的IP地址。另外,在 UPnP ...

2018-10-17 15:09:20 1395

转载 傅里叶变换的意义和理解(通俗易懂)

这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解傅里叶分析。傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会死吗?会死吗?)所以我一直想写一个有意...

2018-10-16 10:13:20 839 1

转载 通过pcm音频数据计算分贝

最近开源了一个Android音频播放库《wlmusic》可以直接在gradle中导入集成。已经实现了音频播放所有逻辑,除了播放正常的网络音频和本地音频外,还可以播放raw和assets文件中的音频和循环不间断播放短音频等功能。这些做完了之后发现一个问题,怎么能动态显示声音的波形?于是想到了一个声音的关键词“分贝”,然后百度、谷歌了一番找到了一个有用的公式:参数:Pref:就是声音总的振幅最...

2018-09-30 14:49:45 9263 4

开关电源一个经典实例

这是一个开关电源不错的实例,对你了解开关电源工作原理的理解有很大帮助。

2012-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除