Linux/RTOS
文章平均质量分 57
Linux总结
尼古拉斯儿
雄关漫道真如铁,而今迈步从头越
展开
-
vim编辑器重要快捷键及vim设置
1.全选:ggVG2.跳转到文本最后一行:shift+g3.跳转到文本第一行:gg4.跳转到光标所选行的行首位置:05.跳转到光标所选行的行尾位置:shift+46.全部替换(替换无需确认)::%s/src/dst/g7.全部替换(每次替换需要确认)::%s/src/dst/gc8.查找:/string9.高亮显示查找到的内容::set hlsearch10.显示vim行号::set nu!11.到注释的开始:[/12.到注释的结束:]/13.撤销上一次操作:原创 2022-04-03 22:11:56 · 5664 阅读 · 0 评论 -
音频PCM介绍
一、音频基础知识1)pcm文件:对声音进行采样、量化过程被称为脉冲编码调制(Pulse Code Modulation),简称PCM。PCM数据时最原始的音频数据,完全无损,所以PCM数据虽然音质优秀但体积庞大,为了解决这个问题先后诞生了一系列的音频格式,这些音频格式运用不同的方法对音频数据进行压缩,其中有无损压缩(ALAC、APE、FLAC)和有损压缩(MP3、AAC、OGG、WMA)两种。2)声道数:即声音的通道数目,很好理解,有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成原创 2022-03-14 21:54:04 · 12619 阅读 · 1 评论 -
Linux init机制
一、init机制我们都知道,linux对驱动程序提供静态编译进内核和动态加载两种方式,当我们试图将一个驱动程序编译进内核时,开发者通常提供一个xxx_init()函数接口以启动这个驱动程序同时提供某些服务。那么,根据常识来说,这个xxx_init()函数肯定是要在系统启动的某个时候被调用,才能启动这个驱动程序。最简单直观地做法就是:开发者试图添加一个驱动程序时,在内核启动init程序的某个地方直接添加调用自己驱动程序的xxx_init()函数,在内核启动时自然会调用到这个程序。但是,回头一想,这种做法在原创 2022-03-14 21:21:07 · 546 阅读 · 0 评论 -
Linux内核中操作文件数据的方法
一、背景有时候需要在Linux kernel(大多是在需要调试的驱动程序)中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有:filp_open()、filp_close()、vfs_read()、vfs_write()、set_fs()、get_fs()等,使用这些函数的时候需要包含头文件<linux/fs.h>和<asm/uaccess.h>二、API//filename:表明要打开或创建文件的名称,包含路径部分,原创 2022-03-13 14:12:25 · 522 阅读 · 0 评论 -
Linux DebugFs子系统
debugFs是一种用于内核调试的虚拟文件系统,内核通过debugfs和用户空间交换数据,类似procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是linux内核运行起来后才建立的。通常情况下,最常用的内核调试手段是printk,但打印的数据如果过多,printk就显得没有那么好用,我们真正关心的数据在大量的输出里不是那么一目了然;或者我们在调试时可能需要修改某些内核变量,这种情况下printk就无能为力,而如果为了修改某个值重新编译内核或者驱动又过于低效,此时就需要一个临时的文件系统可原创 2022-03-13 13:25:56 · 1716 阅读 · 0 评论 -
Linux poll机制
一、在用户空间应用程序向驱动程序请求数据时,有以下几种方式:1.不管查询,条件不满足的情况下就是死循环,非常耗cpu2.休眠唤醒的方式,如果条件不满足,应用程序则一直睡眠下去3.poll机制:如果条件不满足,休眠指定的时间,休眠时间内条件满足唤醒,条件一直不满足时间到达自动唤醒4.异步通知:应用程序注册信号处理函数函数,驱动程序发信号。类似于QT的信号与槽机制二、函数2.1.函数原型int poll(struct pollfd *fds, nfds_t nfds, int ti原创 2022-03-13 09:50:52 · 5046 阅读 · 0 评论 -
Linux pinctrl子系统
一、pinctrl子系统介绍在许多soc内部都包含有pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。在软件方面,为了统一各soc厂商的pin脚管理,Linux内核提供了pinctrl子系统。pinctrl子系统提供的功能有如下三点:(1)管理系统中所有的可以控制的pin,在系统初始化的时候,枚举所有可以控制的pin,并标识这些pin。(2)管理这些pin的复用(Multiplexing)。对于SOC而言,其引脚除了配置成普通的GPIO之外,若干个引脚还可以组成一个pin原创 2022-03-13 09:15:17 · 2178 阅读 · 0 评论 -
Linux completion机制
一、completion介绍二、API#define DECLARE_COMPLETION(work) \struct completion work = COMPLETION_INITIALIZER(work)//定义和初始化struct completion completion;static inline void init_completion(struct completion *x);//等待完成量,此函数不可中断,即对临界区进行枷锁void __sched wait_原创 2022-03-13 08:24:46 · 514 阅读 · 0 评论 -
自旋锁、互斥锁、信号量、原子操作
一、自旋锁1.1解释自旋锁和互斥锁比较类似,都是为了解决对 某项资源的互斥使用,无论是自旋锁还是互斥锁,在任何时刻,最多只能有一个保持者,使用互斥锁,如果资源申请者拿不到锁,那么只能进入睡眠状态,但是自旋锁不会引起调用者睡眠,会一直处于忙等待过程中,消耗cpu资源二、互斥锁2.1解释是用来解决线程间的同步和互斥问题的一种机制,当一个线程占用了当前共享资源,使用互斥锁将其上锁后,其他线程无法访问,必须等到unlock之后,其他线程才能利用共享资源里的内容,互斥锁是睡眠的,不是忙等锁三、原创 2022-03-11 22:21:13 · 643 阅读 · 0 评论 -
Linux Debugfs子系统
Linux Debugfs子系统原创 2021-12-22 22:53:34 · 1280 阅读 · 0 评论 -
Linux GPIO子系统速览
Linux GPIO子系统原创 2021-12-08 08:12:06 · 712 阅读 · 0 评论 -
进程间通信
进程间通讯原创 2021-12-03 20:05:33 · 2833 阅读 · 0 评论 -
Linux内核源码下载
Linux kernel内核源码下载原创 2021-12-02 23:05:13 · 27482 阅读 · 1 评论