- 博客(34)
- 收藏
- 关注
原创 【TTY子系统】printf与printk深入驱动解析
tty子系统是一个庞大且复杂,也是内核维护者所头大的子系统。乍一看,TTY 层似乎并没有那么具有挑战性。毕竟,它只是一个简单的字符设备,负责在两个明确定义的点之间传输面向字节的数据流。但问题比看起来更难。大部分 TTY 代码都源于实现 RS-232 标准的古老硬件,这是最宽松、变化最多的标准之一。TTY 驱动程序还必须监视数据流并从中提取信息;该职责可以包括Q 流量控制、奇偶校验和控制字符检测。控制字符可能会变成带外信息,必须传送到用户空间;
2023-08-21 20:00:04
478
转载 FIFO存储器和结构模型
FPGA或者ASIC中使用到的FIFO一般指的是对数据的存储具有先进先出特性的一个存储器,常被。,其中双时钟FIFO又可以分为普通双时钟(DCFIFO)和混合宽度双时钟FIFO(DCFIFO_MIXED_WIDTHS)。混合:输入数据和输出数据的数据宽度不同。
2023-06-15 21:06:55
458
原创 利用audacity和ffmpeg获得相对应格式的音频文件
在音频测试中经常会用到很多类型的音频文件对程序,对应用进行一个测试。-acodec pcm_s16le:输出pcm格式,采用signed 16格式,小端字节序(大端的话使用be)点击菜单栏中轨道-重采样,将采样频率设为16000。使用audacity导入音频文件 qlx_48k_stereo.mp3。点击菜单中文件-导出,选择导出mp3。-i qlx_16k_stereo.mp3 :指明源文件。qlx_16k_stereo.pcm:输出文件名。-ar 16000: 待输出文件的采样频率。
2023-05-06 15:53:51
678
原创 Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc
用于申请内核空间的内存;内存以字节为单位进行分配;所分配的内存虚拟地址上连续;kzalloc 是强制清零的 kmalloc 操作;(以下描述不区分 kmalloc 和 kzalloc)kmalloc 分配的内存大小有限制(128KB),而 vmalloc 没有限制;kmalloc 可以保证分配的内存物理地址是连续的,但是 vmalloc 不能保证;kmalloc 分配内存的过程可以是原子过程(使用 GFP_ATOMIC),而 vmalloc 分配内存时则可能产生阻塞;
2023-04-11 11:59:01
1215
原创 【实用工具】在Ubuntu 18.04下使用flameshot工具自动贴图(平替snipaste)
打开【Settings】——【Devices】——【keyboard】–pin这个指令是为了截完图之后,自动贴图。中键入所设置的快捷键,我的为。拉倒最下边,找到加号,点击。
2023-04-03 12:27:13
477
1
原创 SDR单向差分模式与DDR双向差分模式
我在百度上找了半天也没有找到有关SDR的内容,好不容易找到,记录一下!SDR模式在时钟相关概念中通常指的是,也称为单端模式或非差分模式。在时钟传输中,SDR模式是一种数据传输模式,其中数据是通过**单一的传输线(称为信号线)**发送和接收的。这种模式通常使用具有单个数据输入和单个时钟输入的IC(集成电路)。与SDR模式相反的是差分模式(双向差分模式,也称为Differential Data Receiver mode),在这种模式下,数据是通过一对互补的传输线(差分信号线)进行传输的。
2023-03-28 16:37:15
2852
原创 在Ubuntu 18.04下使用flameshot工具自动贴图(平替snipaste)
- linux系统里面最好用的截屏工具- 支持图形化截图- 支持命令行截图
2023-03-07 16:25:20
402
2
转载 关于驱动开发,你应该了解的细节
软件开发者的常用习惯,是用一块开发板,然后验证自己的代码功能,常年累积的习惯,让你拿到一个新设计的硬件电路板时,下意识地以为它是好用的,当测试一个功能时,结果没有按照正常的功能逻辑执行,第一反应是怀疑代码出了问题,一顿操作修改,却迟迟没有怀疑硬件方面的问题。驱动测试最重要的还是思维方式,要以测试硬件为主,而不是软件开发,当思维转换之后,会顺利很多,调试的时候不要想着一个人搞定,多问问其他人,烦闷了就休息一下,这是一个过程,当你把这个过程体会完之后,你会发现,自己收获的内容,N篇纸都写不完。
2023-02-20 21:28:17
259
原创 学习使用getopt_long命令行传参
在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNU C提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。
2023-02-20 21:24:54
384
原创 【FFmpeg】FFmpeg日志输出系统av_log的移植
av_log()函数是FFmpeg日志输出的核心函数,在FFmpeg内部的所有打印信息全部采用的都是av_log()接口进行打印的.在一开始的时候,我记得ffmpeg里是无法使用printf函数的,如果你在代码里加了一句打印,那么他会屏蔽掉,但现在忘记是在什么地方限制了av_log()
2023-01-09 16:12:26
475
原创 【深入Linux内核驱动】CLK_OF_DECLARE使用及其内在机制
CLK_OF_DEVICE是在CLK子系统里所使用到的一个宏定义,它的主要功能是:声明兼容时钟并将其与初始化函数关联
2022-12-10 16:49:22
804
1
原创 【Linux设备树】设备树基础 DTS,DTSI,DTC及DTB之间的关系
设备树是一种描述硬件的数据结构,它起源于。在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在和中,采用设备树后,许多硬件的细节可以直接通过它传递给Linux,而不再需要在内核中进行大量的冗余编码。设备树由一系列被命名的节点()和属性()组成,而节点本身可包含子节点。所谓属性,其实就是成对出现的名称和值。在设备树中,可描述的信息包括(原先这些信息大多被硬编码在内核中):它基本上就是画一棵电路板上CPU、总线、设备组成的树,会将这棵树传递给内核,然后内核可以识别这棵树,并根据它展开出Linux内核
2022-12-08 11:28:59
5424
转载 【深入Linux内核驱动】通用时钟框架驱动 Common Clk Framework(CCF)【转】
在一个 SoC 中,晶振、 PLL 、驱动和门等会形成一个时钟树形结构,在 Linux 2.6 中,也存有、、、等通用 API ,但是这些 API 由每个 SoC 单独实现,而且各个 SoC 供应商在实现方面的差异很大,于是内核增加了一个新的通用时钟框架以解决这个碎片化问题。
2022-12-01 11:50:51
1329
转载 【DMA】DMA 引擎 API 指南
下面是设备驱动程序编写者如何使用 DMA 引擎的 Slave-DMA API 的指南。这仅适用于从 DMA 使用。
2022-11-22 15:35:56
1346
原创 【并发与竞争】spin自旋锁
自旋锁不管是内核编程,还是应用层编程都会用到;自旋锁和互斥量类似,它不是通过休眠使进程阻塞,而是在获取锁之前一直处于忙等(也就叫自旋)状态。互斥锁和自旋锁,他们俩是最底层的锁,很多高级的锁都是基于他们去实现的。
2022-11-18 15:21:01
590
原创 【实用工具】使用Typora+Picgo+Github实现md图床,开发记录文档环境
对于一个从事嵌入式这个高门槛行业的我来说,琐碎的知识点、繁多的代码、众多的问题、XX的任务(以我贫瘠的语文水准,真的找不到形容词了),对于我这个记忆力差,脑容量小的人来说,好记性不如烂笔头,就需要去记笔记。那用什么样的工具可以尽可能的提升效率呢,那么这篇文章所写就是一个比较不错的选择
2022-11-17 15:03:32
337
原创 【Linux设备驱动】platform设备驱动编写及编译
`platform总线`是区别于`USB`、`SPI`、`I2C`的虚拟总线,**所有直接通过内存寻址的设备都映射到这条虚拟总线上**来
2022-11-16 17:27:29
754
6
翻译 学习的 85% 法则
如果你总是成功,就很难知道要改进什么。如果你经常失败,你就不会知道什么是有效的。只有当我们混合成功和失败时,我们才能在好策略和坏策略之间做出对比。
2022-11-15 16:40:29
515
1
原创 【Linux设备驱动】使用class_create()和device_create()自动创建设备节点
之前[【Linux设备驱动】最简单的 字符设备驱动编写]一文已经对最简单的字符设备驱动编写做了一个简答的叙述,但手动创建设备节点,还是差那么点意思.Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在`/dev`目录下创建相应设备节点,并在卸载模块时删除该节点
2022-11-15 16:11:20
1794
1
原创 【Linux设备驱动】如何挂载和卸载驱动 lsmod insmod rmmod和modprobe
如何挂载卸载以及查看linux设备驱动呢,主要包含insmod,rmmod,lsmod以及modprobe
2022-11-14 17:24:57
5328
3
原创 【DMA】DMA 控制器文档
这本书有助于 DMAengine 内部 API 和 DMAEngine 设备驱动程序编写者指南。有助于去理解DMA工作原理以及需求及其方式,该文章由内核官方手册翻译而来,其中有我在阅读时觉得必要重要的地方做的笔记
2022-11-13 13:50:33
862
2
原创 【深入Linux内核驱动】【Linux设备驱动】驱动编译进内核和编译成模块有什么区别
该文阐述了驱动编译进内核和编译成模块有什么区别,主要通过Makefile文件进行深入
2022-11-13 13:36:45
891
1
转载 【学习进阶】提问的智慧【转载】
在黑客的世界里,当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。本指南将教你如何正确的提问以获得你满意的答案。
2022-11-12 11:44:48
212
3
原创 【音视频开发】 I2S协议及标准
I2S(Inter—IC Sound)总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的音频数据传输。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。
2022-11-12 11:12:16
2592
原创 【Linux设备驱动】最简单的 字符设备驱动编写
了解如何编写最基础的驱动后,这一篇对最简单的字符设备驱动,做一个概述;并对代码中涉及的知识点进行一个罗列,方便大家的学习
2022-11-12 10:30:46
713
11
原创 【Linux设备驱动】编写Linux设备驱动基础知识
在了解最基础的linux设备驱动如何编写之后,其背后存在的知识点有哪些,这里做了一个小的总结
2022-11-11 12:08:19
744
8
Linux设备驱动程序+字符驱动sample程序
2022-11-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人