自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 linux 自旋锁(spinlock)和互斥锁(mutex)

互斥锁(mutex)无法获取到互斥锁时,会发生上下文切换并休眠,上下文切换的开销相对较大,因此在需要保护的临界区较小时,宜选用自旋锁,否则选用互斥锁。互斥锁在原子操作API的基础上实现,同一时间只能有一个任务持有互斥锁,而且只有这个任务可以对互斥锁进行解锁。3、使用场景:互斥锁(mutex)只能在进程上下文中使用,不能在中断上下文中使用,而自旋锁(spinlock)可以在中断上下文中使用。与自旋锁不同,互斥锁不能进行递归锁定或解锁,只能在同一线程里对应使用,所以它只能用于线程的互斥。

2024-05-29 16:04:36 195

原创 Linux 进程管理

与一般的函数不同,exec族函数执行成功后一般不会返回调用点,因为它运行了一个新的程序,进程的代码段、数据段和堆栈等都已经被新的数据所取代,只留下进程ID等一些表面信息仍保持原样,虽然还是旧的躯壳,但是其实质内容已经全部变化了。此时可能会有一个疑问,既然代码共享,并且子进程是拷贝了父进程的PCB,虽然他们各自拥有自己的进程虚拟地址空间,但其中的数据必然是相同的(拷贝而来),并且通过页表映射到同一块物理内存中,那么又如何做到数据独有呢?而这个新创建出来的进程被称为原进程的子进程,原进程被称为该进程的父进程。

2024-05-29 15:51:33 695

原创 Linux Udev和Uevent

linux内核最初的设备管理是通过devfs来实现的,但是由于诸多问题,如不确定的设备映射、设备号不足、设备文件过多以及命名不灵活等,出现了新的设备管理策略udev。udev则是devfs的替代者,是一个在用户空间运行的程序,用于动态管理设备节点。它利用Linux内核提供的uevent机制,在系统启动时运行一个守护进程udevd,通过监听内核发送的uevent来执行相应的热插拔动作。这些动作包括创建或删除设备节点、加载或卸载驱动模块等。

2024-05-22 17:12:40 620

原创 Linux systemd 介绍和使用

一、systemd介绍systemd是一个Linux系统基础组件的集合,提供了一个系统和服务管理器,运行为PID 1并负责启动其它程序。systemd采用并行化任务,可以提高系统的启动速度(SysV-init采用串行启动除此之外,systemd还具有日志进程、控制基础系统配置、维护登陆用户列表以及系统账户、运行时目录和设置等功能。其次,systemd可以运行容器和虚拟机,管理网络配置、网络时间同步、日志转发和名称解析。

2024-05-22 16:41:28 1114 1

原创 Linux AMBA驱动框架分析

AMBA 驱动框架分析

2023-07-07 14:28:26 971

原创 Linux v4l2-util移植及使用

v4l2-util 使用

2022-08-24 16:57:40 423

原创 Android/inux系统开机启动流程

芯片上电解复位后执行第一段程序的执行地址指向0x00000000或0xffff0000,这段程序被称为Bootrom loader,该段程序在芯片制造过程中固化到其内部的ROM空间,只读不可修改

2022-07-11 20:14:38 2401 1

原创 Linux ALSA驱动框架分析

ALSA(Advanced Linux Sound Architecture-高级linux声音架构),目前已经成为了linux的主流音频体系结构,ALSA在内核部分提供alsa-driver对音频驱动进行耦合和管理,在用户空间空间提供alsa-lib,应用开发人员可以使用alsa-lib接口控制声卡。

2022-06-18 16:11:13 7512 1

原创 Linux DTS介绍

在linux内核源码的3.1版本之前,linux内核都是通过大量的platfrom-device文件来描述板级配置信息,这使得内核人员维护很困难,因此设备树(Device Tree)被采用

2022-06-08 21:06:31 3341

原创 MP4视频格式解析

MP4视频格式解析

2022-06-06 19:22:07 7821

原创 RK-MPP硬件编解码库介绍和使用

RK-MPP硬件编解码库介绍和使用

2022-06-02 19:40:18 17502 32

原创 Linux libdrm使用

DRM 是linux 下的图形渲染架构(Direct Render Manager),是linux内核对显示框架进行分层设计的思想,相比于直接操作fb,...

2022-05-29 16:12:37 8948 4

原创 Linux TinyAlsa使用

一、tinyalsa介绍ALSA(Advanced Linux Sound Architecture)是一个开源项目,涵盖了用户空间和内核空间对音频设备的操作接口,通过应用层使用alsalib可以实现对音频设备的控制TinyAlsa是android推出的一个精简的ALSA库,当然alsa-driver这块没有改动alsa包含:1、内核 alsa-driver 2.用户空间 alsa-lib(android使用的TinyAlsa)二、tiny...

2022-05-27 10:39:13 3342

原创 在linux上使用spi-lcd屏 ST7735

一、ST7735介绍ST7735是一款spi驱动的lcd屏,通过spi发送用于操作lcd的寄存器指令和显示数据​​​​​​​ 二、ST7735操作模式 当DC引脚为低,命令模式,目的是设置芯片显示参数等当DC引脚为高,数据模式,发送的数据应该为图像rgb数据,保存在display ram并显示BLK是控制LCD背光(不开背光,无法显示)三、ST7735 ...

2022-05-27 10:26:45 4298 6

原创 Linux giflib库移植

一、libpng库和zlib依赖库下载路径giflib库链接:https://sourceforge.net/projects/giflib/二、ubuntu上验证GIFLIB1. 解压:tar -xzvf giflib-5.2.1.tar.gz && cd giflib-5.2.1,解压后的文件目录如下图2.修改gif2rgb.c并并修改代码#include <stdlib.h>#include &lt...

2022-05-24 19:44:07 770

原创 Linux libpng库移植

一、libpng库和zlib依赖库下载路径注意:libpng使用需要用到zlib库,因此需要安装zlip库libpng库链接:https://libpng.sourceforge.io/index.htmlzlib库链接:https://libpng.sourceforge.io/index.html二、ubuntu上安装libpng 解压:tar -xzvf libpng-1.6.37.tar.gz &...

2022-05-24 19:36:52 1173

原创 Linux libjpeg-turbo库移植

一、libjpeg-turbo库下载 libjpeg-turbo是libjpeg的升级版,性能有所提升libpng库链接:https://libpng.sourceforge.io/index.html二、ubuntu上验证libjpeg-turbo 编译libjpeg-turbo库,tar -zxvf libjpeg-turbo-2.1.3.tar.gz && cd libjpeg-turbo-2.1.3 && mkdir build...

2022-05-24 19:27:45 751

原创 PNG图像格式解析

一、winhex查看png-32bit(5*5)文件数据块二、固定文件头 8字节89 50 4E 47 0D 0A 1A 0A 文件署名 8字节三、IHDR块 长度说明 4字节00 00 00 0D 说明IHDR块长度为0D(13个字节)四、IHDR块 标识 4字节49 48 44 52 IHDR标识数据块五、IHDR块 13个字节00 00 00 05 width00 00 ...

2022-05-17 19:53:00 1672

原创 JPEG图像格式解析

jpg/jpeg是24位的图像文件格式,也是一种高效率的压缩格式,文件格式是JPEG(联合图像专家组)标准的产物,是面向连续色调静止图像的一种压缩标准备注:JPEG文件一般有2个DQT段,为Y值(亮度)定义1个, 为C值(色度)定义1个DQT标识:FF DB数据长度:00 43 (段长度2个字节,QT信息1个字节)+QT量化表的长度,此处QT量化表的长度是64)QT信息:00 QT号为0 QT精度8bit。

2022-05-17 19:47:55 17176 1

原创 GIF 89a图像格式解析

89a是针对87a的升级版本,相比于后者增加了一些额外的控制块更加精确的控制GIF播放。现在常见的GIF图都是89a,下面将使用一张10x10的gif来理解GIF的图像格式。

2022-05-17 16:38:37 6967 1

原创 Rk3568移植openharmony-3.1beta

Rk3568移植openharmony-3.1beta

2022-05-17 16:00:49 246

原创 基于标准C,适用于小型嵌入式设备的PNG转RGB库,亲测可用

C语言使用lodepng.c和lodepng.h这两个文件就可以完成png转rgb的操作。

2021-05-24 16:21:29 739 2

原创 Linux内核中常用的功能实例

switch上报功能:通过switch类上报内核状态值

2021-04-12 09:27:38 347

原创 Linux常用的adb、git、shell命令及shell脚本语法记录

git常用命令:sudo get-apt install git:git安装git init: 创建git版本库git add xx:添加到暂存区git commit -m "说明信息":创建一个版本git log: 查看版本创建记录,ID号git reset --hard HEAD^: 回退一个版本git reset --hard HEAD~X: 回退X个版本git reset --hard ID:回退本地代码库至ID号之前的版本git reflog: 查看版本操作记录git res

2021-03-16 14:16:51 1124 1

原创 Linux驱动中platfrom-driver/device注册及probe执行过程分析

1、platform系统platfrom系统在linux内核中包含三个部分①platfrom-bus虚拟总线,是一个内核抽象出来的虚拟的总线,在linux内核中以链表的形式表示,platform-driver/device通过挂载在platform虚拟总线上,实现设备和驱动之间的匹配,在内核表现形式为一系列platform-driver/device结构体组成的链表形式;②platform-driver模型,内核中抽象出来的driver模型,表现形式为platfrom-driver的结构体,它的

2021-03-08 15:20:41 1650

原创 基于RK3328-I2C读写芯片寄存器

1、I2C协议解读I2C一共有两根线,一条时钟线SCL,一条数据线SDA总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平总线上连接的每一个从设备都有一个从设备地址,占7个bit位I2C总线数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s2、I2C时序如下图所示,当SCL为高电平时,SDA由高到低的跳变,表示产生一个起始条件;当时钟线SCL处于从低到高的变化期间,读取数据线SDA上的电平大小,为一个b.

2021-03-05 16:47:56 1141

原创 RK3328-SPI驱动移植

1、查看电路原理图,确定spi对应的引脚GPIO口2、根据RK-SPI手册添加dts节点并检查对应的GPIO口设置是否有问题,是否被占用 3、检查到有引脚(GPIO3_A2、GPIO3_B0)与spi的引脚占用,注释掉,不然编译后的系统可能会启动失败,或者驱动功能有问题 4、修改完后,将对应的驱动加载进内核,对应的文件如下:5、查看生成的spi节点,ls -l | grep spi,会出现类似spi32766.0的设备节点,如果没有...

2021-01-07 21:02:35 1596 3

原创 linux驱动数码管-基于74HC164D

1、查看电路原理图,确定驱动数码管对应的元件,及GPIO口2、这里我们用的uart2的引脚,复用为GPIO口3、上面确定了驱动数码管涉及的元器件为CS4021B(数码管)、74HC164D(移位寄存器)以及SOC的GPIO口,所以需要先找到74HC164D的芯片资料,查看该芯片是如何驱动A-G、A1-G1并输出特定的电平控制数码管4、当时钟信号(CP 对应 SCK)从低电平变为高电平时,芯片将读取DSA(B)输入的电平信号,并将电平信号保存到Q0上(同时Q0会输出该...

2021-01-07 16:46:57 1559

原创 RK3399平台适配TI-tlv320aic3111音频芯片

1、了解I2S协议在移植芯片驱动前,我们先简单的了解I2S协议,方便我们在移植音频驱动过程中排查问题,如图1,我的板子跟音频芯片之间的通道是采用I2S1。I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。在飞利浦公司的I2S标准中,I2S主要有三个信号:1.位时钟 BICK(也叫串行时钟SCLK),即对应数字音频的每一位数据,BCLK都有1

2020-12-24 16:06:36 1915 1

空空如也

空空如也

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

TA关注的人

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