自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux线程同步(三)---互斥锁源码分析

linux互斥锁源码分析

2021-10-31 22:29:55 1684

原创 Linux线程同步(二)---互斥锁实现线程同步

一 why先给自己打个广告,本人的微信公众号:嵌入式Linux江湖,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。在博客《Linux线程同步(一)—“初识篇”》中,介绍了为什么需要线程同步,从本篇博客开始介绍如何实现线程同步,本篇主要介绍的是互斥锁实现线程同步。二 how互斥锁:只能被一个线程拥有,比如线程A拥有了这把锁,其他线程都无法拥有这把锁。只有获得这把锁的线程才可以访问临界区,其他没有获得这把锁的线程都无法访问临界区

2021-09-05 22:34:46 374

原创 Linux线程同步(一)---“初识篇”

初识线程同步

2021-07-01 22:15:53 321

原创 视音频学习基础篇(二)----YUV格式像素数据处理

先给自己打个广告,本人的微信公众号:嵌入式Linux江湖,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。本文主要思想是基于雷神的博客,做了一些修改,绝大部分思想仍然是参考的雷神的文章,以此纪念雷神,并查看自己的掌握程度。一 why前面的博文《视音频学习基础篇(一)----YUV采样格式和存储格式》,介绍了YUV各种格式,本文主要介绍如何对YUV420P格式的像素数据做处理,以加深我们对YUV格式的理解,其他YUV格式的像素数据处

2020-12-07 09:07:34 534

原创 视音频学习基础篇(一)----YUV采样格式和存储格式

先给自己打个广告,本人的微信公众号:嵌入式Linux江湖,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。本系列主要介绍视频中的基础知识,我们都知道视音频方向主要处理视频和音频,视频是由连续的图像组成的,而图像的基本单元是像素,像素可以是RGB格式的,也可以是YUV格式的。自然世界中的景色经过光学sensor之后,就会变成RGB格式的像素,一般地,在计算机处理领域会首先将RGB格式的像素,转换成YUV格式的像。RGB像素和YUV像素

2020-12-06 17:10:52 918

原创 视音频学习入门---ffmpeg篇(五)---基于windows平台的SDL显示

先给自己打个广告,本人的微信公众号:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。一 what前面的几篇博文详细介绍了ffmpeg的开发环境搭建,本篇来看一下SDL环境的搭建,在搭建SDL环境之前,先思考一个问题:SDL到底是什么?在回答这个问题之前,我们先思考:如何将一张图显示在屏幕上,不知道大家是有有做过LCD/LED屏幕显示的驱动程序。这个过程简单的分为几个部分:硬件屏幕,驱动程序,应用程序。SDL不直接关注

2020-09-28 09:19:00 253

原创 视音频学习入门---ffmpeg篇(四)---基于windows平台的ffmpeg开发(二)

先给自己打个广告,本人的微信公众号:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。一 what在《视音频学习入门—ffmpeg篇(三)—基于windows平台的ffmpeg开发(一)》中,我们已经成功搭建了windows平台下visual studio的开发环境,本篇我们就开始使用ffmpeg头文件中提供的API接口来实现打印出ffmpeg的基本配置信息,这是我们入门ffmpeg的基础。那么。ffmpeg的配置信息

2020-09-23 08:32:50 406

原创 视音频学习入门---ffmpeg篇(三)---基于windows平台的ffmpeg开发(一)

先给自己打个广告,本人的微信公众号:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。一 前言环境准备1.3个版本的基于windows平台的ffmpeg压缩包2.visual studio开发环境IDE,大家可以根据自己的喜好以及自己电脑的硬件选择比较合适的版本,本篇博客基于的是2019年的版本Visual Studio 2019 (v142)。一 why不知道大家平时在使用的视频播放器有哪些?也不知道各位是否想

2020-09-05 19:50:29 241

原创 视音频学习入门---ffmpeg篇(二)---ffmpeg官方源文件的区别

先给自己打个广告,本人的微信公众号:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。我们在前一篇博客《视音频学习入门—ffmpeg篇(一)—入门ffmpeg》已经讲过如何去ffmpeg官网下载适合windows平台的源文件了,关于下载,上一节漏了一个小细节,我们本篇在来详细说明一下。我们发现,当我们跳转到ffmpeg的windows下载的主页时,选择版本的未知一共有如下三个选项,分别是“static”、“Shared”

2020-09-03 09:02:49 366 1

原创 视音频学习入门---ffmpeg篇(一)---入门ffmpeg

先给自己打个广告,本人的微信公众号:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。一 前言ffmpeg是我们在视频处理过程中的常用工具,本系列文章就从如何下载,安装,使用,以及阅读source code来熟练掌握ffmpeg二 下载1.搜索“ffmpeg”,使用windows自带的edge浏览器的国际板搜索2.进入ffmpeg官网下载window版本,依次点击“download source code”—&g

2020-08-19 09:09:07 256

原创 shell脚本删除某个目录下除了某个文件之外的其他所有文件或者文件夹

一般地,我们有如下两种方式shopt -s extglobrm -rf !(AmbaConfig)shopt -u extglob或者#!/bin/bashdir=$(pwd)cd $dir/juju/pwdls |grep -v AmbaConfig |xargs rm -rf

2020-06-07 08:08:43 3326

原创 Linux之ALSA驱动框架(一)---编译alsa-lib和alsa-util使用声卡

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why当linux内核集成了ALSA驱动框架,并移植好了codec,machine以及platform的驱动之后,我们就需要使用声卡了,alsa-lib和alsa-util这两个lib就是方便user使用内核中提供的声卡驱动。二 how(1)编译alsa-lib下载去网页下载源码alsa-lib,上面会显示

2020-05-26 08:34:13 907

原创 linux之根文件系统编译、烧写

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 what二 why三 how(1)编译busyboxtar xjf busybox-1.20.0.tar.bz2设置交叉编译工具链make menuconfig Busybox Settings ---> Build Options ---> Cross Compiler

2020-05-18 22:35:39 521

原创 图像颜色处理(一)----由LCD屏幕显示像素格式引出的思考(调色板,CLUT)

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 what(1)显示原理我们知道,芯片控制LCD显示的时候,芯片会将需要显示的每个像素送给LCD,显然芯片内部是按照一个一个像素来处理的。但是一个像素并不等于一个Byte,这又是为什么呢?一般一个像素由RG...

2020-04-19 10:15:55 1504 1

原创 数据结构(一)----初识数据结构

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why数据结构是计算机的基础学科,在我们的应用程序和驱动程序中都是非常重要的,我们知道一个基础公式:程序 = 算法+数据结构,学好了数据结构方便我们写出更优美更高效的程序,好比我们学写字,学习数据结构相当于学...

2020-04-14 08:54:38 433

原创 linux进程间通信(六)----IPC篇----信号灯概念以及实现进程间通信

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 whylinux进程间IPC通信方式有三种,分别是共享内存、消息队列,以及信号灯。它们都存在于内核空间,之前我们已经探讨过共享内存以及消息队列的实现方式:linux进程间通信(五)----IPC篇----...

2020-04-12 12:01:42 362

原创 linux进程间通信(七)---信号通信

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why在之前的博文《linux进程间通信(一)----初识篇》中,我们知道了进程间通信主要分为三大类,分别是管道通信,信号通信,以及IPC通信;进程间通信主要是为了不同进程之间的数据共享,信号通信也不例外。二 what...

2020-04-10 08:42:05 260

原创 linux基本概念(四)----线程编程

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why在本系列的第一篇博文《linux基本概念(一)----进程和线程》中,我们谈到了线程,它是如何诞生,和进程之间的区别,以及什么时候需要线程的。在我们很多实际项目中,完成某一项工作并不需要多进程的方式,因为进程会消耗...

2020-04-10 08:29:02 173

原创 linux基本概念(三)----进程编程

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why我们要学习进程编程呢?在我们实际的项目开发过程中,一个实际的软件项目肯定要实现各种不同的功能,这些功能放在一个进程中实现肯定是不现实的,这样会造成项目十分冗余和繁杂,不适合项目的维护,也不适合项目的后续框架升级。因...

2020-04-08 07:41:38 171

原创 linux基本概念(二)----进程操作常用命令

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题(1)查看进程的状态以及信息1. ps 查看系统进程快照ps -ef ps -ef | moreps aux : 除了ef的功能外,还可以显示进程的状态2. top 查看进程动态信息主要可以看到各个...

2020-04-06 15:56:24 206

原创 linux基本概念(一)----进程和线程

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why今天这篇文章主要以基本概念为主,没有相关的源码,可能看起来比较抽象和枯燥,但是我还是建议大家认真读一读这个文章,在读的过程中多思考文章中提出的相关问题,这个对我们打好基础至关重要,我们不能只停留在编写代码实现功能的层...

2020-04-05 12:12:07 231

原创 linux内核模块编程(八)----中断下半部workqueue之使用

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why前一篇博文中, 我们介绍了中断下半部以及tasklet的实现方式,同时我们知道除了tasklet可以实现中断下半部处理之外,workqueue也可以实现中断下半部处理。那么为什么还需要workqueue呢?workq...

2020-03-30 21:25:04 326

原创 linux内核模块编程(七)----中断下半部之tasklet

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why前面的博文中,我们已经讨论过了中断,以及中断的实现方式。那么何为中断下半部呢?既然有下半部,那肯定有上半部,那么上半部又是什么意思?我们知道,当发生中断时,CPU会被抢断,当前正在执行的线程会被打断,CPU会跳转到...

2020-03-30 09:18:51 229

原创 linux内核模块编程(六)----字符设备驱动&中断开发

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why字符设备驱动在我们之前的博文中都已经有过比较详细的介绍了,为什么需要带上一个中断开发呢?我们知道CPU获取外设的数据有两种方式,一种是CPU主动去轮询外设,另一种就是外设通过中断的方式异步地将自己的数据上报给CPU。...

2020-03-29 21:51:17 482

原创 linux内核模块编程(五)----应用程序调用字符设备驱动

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why字符设备驱动既然不能单独执行,那么他们存在的意义是什么呢?当然是应用程序提供相应的接口API,使其能够控制硬件或者能够访问内核空间的内容。本文主要以内核空间和应用程序之间的数据交互为例,谈谈如何实现两者之间的数据交...

2020-03-29 16:38:48 477

原创 linux内核模块编程(四)----字符设备驱动开发几个关键函数分析

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why前一篇博客《linux内核模块编程(三)----字符驱动设备开发》,我们初步实现了一个linux内核字符设备驱动,主要是为了大家参照该驱动程序源码,学会如何进行字符设备驱动开发,不知道大家是否成功在自己的本地运行起来...

2020-03-28 20:36:34 316

原创 linux内核模块编程(三)----字符驱动设备开发

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 前言在正式开始今天的文章之前,先谈谈个人学习linux开发中的心得,将自己学习过程中遇到的问题呈现到大家面前,以便给大家一些启发,让大家少走一些弯路。之前我学习linux开发的过程,基本是沿用自己学习单片机开发的路径来的...

2020-03-25 21:45:50 378

原创 linux内核模块编程(二)----timer定时器

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why一般地,在我们嵌入式软件开发中,使用定时器的目的是为了实现周期性地执行某项工作;同样地,linux内核也实现了一种定时器,用于实现内核周期性执行某项工作。二 whatlinux内核实现的这种定时器,称之为动态定时...

2020-03-23 08:56:47 4772 2

原创 linux内核模块编程

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 what**1. 什么是linux内核模块编程?内核模块是具有独立功能的程序,它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在kerne space中运行。模块编程和...

2020-03-17 08:43:23 556

原创 RTP视频码流分析

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 what一个rtp码流是由rtp header和stream组成的,如下:rtp header的定义在ortp开源库中的定义如下:typedef struct rtp_header{#ifdef O...

2020-03-08 21:51:17 1036

原创 linux进程间通信---本地socket套接字(八)---多路IO转接服务器实现一个server对应多个client---epoll反应堆实现

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**在前面的博客《linux进程间通信—本地socket套接字(七)—多路IO转接服务器实现一个server对应多个client—epoll实现》中,我们使用epoll机制来实现一个server...

2020-03-01 17:12:00 295

原创 linux多路IO--epoll(一)--水平触发和边沿触发

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**考虑这样一种场景,假设某个文件描述符发生了可读事件,一次可读的文件大小为1000Bytes,但是呢,实际上我们每次只会从这个文件描述符中读取500 Bytes;显然这个时候,该文件中还会剩下...

2020-02-20 13:21:14 676

原创 linux进程间通信---本地socket套接字(七)---多路IO转接服务器实现一个server对应多个client---epoll实现

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**在前面的博客《linux进程间通信—本地socket套接字(五)—多路IO转接服务器实现一个server对应多个client—poll实现》,我们介绍了多路IO转接服务器之poll方式实现,...

2020-02-19 22:19:58 317

原创 linux进程间通信---本地socket套接字(六)---线程池原理及C语言实现线程池

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why先谈谈为什么会有这篇博客,如果只是为了介绍线程池,我相信大家都有相关概念,或者去各大技术博客上也能搜到相关知识。那在这里我为什么还要谈谈线程池的知识呢?在前面的博客《linux进程间通信—本地sock...

2020-02-18 12:25:51 636

原创 linux进程间通信---本地socket套接字(五)---多路IO转接服务器实现一个server对应多个client---poll实现

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**在前面的博客《linux进程间通信—本地socket套接字(四)—多路IO转接服务器实现一个server对应多个client》中,我们使用了多路IO转接实现了一个server对应多个clie...

2020-02-16 19:18:56 258

原创 linux进程间通信---本地socket套接字(四)---多路IO转接服务器实现一个server对应多个client

一 why在前面的博客《linux进程间通信—本地socket套接字(三)—多线程实现一个server对应多个client》以及《linux进程间通信—本地socket套接字(二)—多进程程实现一个server对应多个client》中,我们采取的方式都是在server端的应用程序中,调用accept函数阻塞等待客户端的连接。这样做,有什么缺点呢?由于accept函数会发生阻塞,导致server...

2020-01-10 23:02:03 452

原创 linux进程间通信---本地socket套接字(三)---多线程实现一个server对应多个client

yi#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <string.h>#i...

2020-01-02 18:29:01 1358

原创 linux进程间通信---本地socket套接字(二)---多进程实现一个server对应多个client

**一 why**一般地,我们会遇到这样一个场景,一个server需要同时并发地处理多个client的连接以及数据交互。**二 what**一个server对应多个client的连接场景如下:实现原理对于父进程server.c来说父进程server.c用来监听每一个client,只实现accept的动作每次server.c父进程检测到一个新的client时,就会创建一个新...

2020-01-02 08:50:34 1287 2

原创 linux进程间通信---本地socket套接字(一)---一个server对应一个client

**一 what**socket套接字也是一种文件格式,只是和管道文件一样,它是一种伪文件,存在于内核的缓冲区中,大小不变,一直是0.套接字一定是成对出现的,有server套接字,就一定有client套接字,它是一种全双工通信方式,分别有读写缓冲区通信框图 cs架构 (bs架构,browser server) 服务器 server ...

2019-12-27 09:15:53 1007

原创 linux进程间通信(六)----消息队列篇

一 what消息队列也是进程间通信的一种通信方式,在内核中创建一个消息队列对象,不同的进程中,通过msgid来访问这个消息队列实现进程间通信 |---| |---| | A | | B | |---| |---|------------------------------------ |--...

2019-12-22 12:55:11 164

source insight4安装和破解

source insight4新版本代码阅读工具,安装和破解请阅读压缩包内的内容

2018-01-29

空空如也

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

TA关注的人

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