linux基础知识
文章平均质量分 81
_Brave_
这个作者很懒,什么都没留下…
展开
-
Linux Input子系统
一 输入子系统分层1、输入子系统事件处理层(EventHandler).id_table 一个存放该handler所支持的设备id的表(其实内部存放的是EV_xxx事件 ,用于判断device是否支持该事件).fops 该handler的file_operation.connect 连接该handler跟所支持device的函数.disconnect 断开该连接.event 事件处理函数,让device调用.h_list原创 2020-09-26 18:53:23 · 220 阅读 · 0 评论 -
Linux 设备树dts介绍
一 概述 在写驱动的过程中,有很大一部分工作是在对设备信息进行管理,随着芯片种类的增加,这种管理工作变得越来越复杂。目前写驱动主要有三种方式:1、跟写单片机裸机驱动一样,直接把驱动和硬件信息写在一起。这种方式的优点是程序简单,缺点很明显,就是每当硬件信息改动的时候,比如简单的更换一下IO引脚,都需要去修改源文件的大部分内容,因此扩展性不强。2、使用总线-设备-驱动模型。这种模式使用上下分层,左右分离的思想,把设备和驱动分离,然后挂在一根总线上,使用一定的机制进行匹配。这种方式相对与第一种,...原创 2020-09-26 18:30:02 · 2213 阅读 · 1 评论 -
Linux链表操作
Linux里面链表使用非常频繁,下面来看看Linux是怎么玩链表的。下面代码均取自/include/linux/list.h一 Linux链表定义struct list_head { struct list_head *next, *prev;};Linux对链表抽象了一个最小的单位list_head,它只有两个成员:next指向后一个节点,pre指向前一个节点。二 链表操作1. 链表初始化把pre和next都指向自身!判断链表是否为空即判断xxx->next = xx.原创 2020-09-26 18:08:45 · 425 阅读 · 1 评论 -
LINUX下getopt函数的简单使用
英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。 再来看一下这家伙的原型(不是六耳猕猴):int getopt(int argc,char * const argv[ ],const char * optstring);前两个参数大家不会陌生,没错,就是老大main函数的两个参数!老大传进来的参数自然要有人接着!第三个...转载 2018-06-09 09:21:45 · 189 阅读 · 2 评论 -
内存、ram、 rom、 norflash,nandflash详细区别
1.什么是内存 什么是内存呢?在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存...转载 2018-03-25 15:09:26 · 2294 阅读 · 1 评论 -
I2S总线
转自:https://blog.csdn.net/greston/article/details/8076584引言I2S(InterIC Sound Bus)是飞利浦公司针对数字音频设备之间的音频数据传输而制定的一种总线标准,采用沿独立的导线传输时钟与数据信号的设计,通过分离数据和时钟信号,避免了时差诱发的失真。I2S总线简单有效,可以有效提升输出数据的质量,在各种嵌入式音频系统中有广泛应用。但...转载 2018-06-19 21:09:42 · 514 阅读 · 0 评论 -
浅谈ARM存储系统之cache
通常来讲,ARM处理器的主频为几十M甚至上百M,而一般的SDRAM的存储周期是很慢的,相对于CPU来说,这时,如果我们把程序和数据都存储在SDRAM中,那么CPU在读取指令和数据的时候,就会受到SDRAM速度的限制,大大地制约了整个系统的性能。那么有没有什么改善的办法呢?下面我们就来谈一下ARM的高速缓冲存储器(cache)。一,Cache的概念及工作原理1.1 概念 ...原创 2018-03-03 15:12:11 · 3957 阅读 · 0 评论 -
浅谈内核的Makefile、Kconfig和.config文件
本文转自百问科技公众号!Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。希望对你有启发。 三者的作用:简单来说就是去饭店点菜:K...转载 2018-06-21 19:17:08 · 487 阅读 · 0 评论 -
自旋锁和互斥锁
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:(1...转载 2018-05-23 18:19:10 · 203 阅读 · 0 评论 -
利用__attribute__((section()))构建初始化函数表与Linux内核init的实现
问题导入传统的应用编写时,每添加一个模块,都需要在main中添加新模块的初始化使用__attribute__((section()))构建初始化函数表后,由模块告知main:“我要初始化“,添加新模块再也不需要在main代码中显式调用模块初始化接口。以此实现main与模块之间的隔离,main不再关心有什么模块,模块的删减也不需要修改main。那么,如何实现这个功能呢?如何实现DECLARE_INI...转载 2018-06-03 20:11:20 · 8277 阅读 · 3 评论 -
USB设备开发---- usb描述符概述
转自:http://blog.csdn.net/saloon_yuan/article/details/7837492说到USB设备,不得不提到各种描述符(descriptors), 一般来说,描述符有如下几种: 1:设备描述符(Device Descriptors) 2:配置描述符(Configuration Descriptors) 2:接口描述符(Interface Des...转载 2018-05-27 14:31:28 · 1625 阅读 · 2 评论 -
深入分析linux内核链表
一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与...转载 2018-06-03 14:14:36 · 158 阅读 · 0 评论 -
进程、线程 及其在 linux中的实现
一 进程,线程是怎么来的?抛开技术细节,从使用角度来讲:1. 在单核计算机里,有一个资源是无法被多个程序并行使用的: cpuCpu,承担计算任务,单个cpu一次只能运行一个任务。没有操作系统的情况下,一个程序一直独占着全部cpu若有2个任务来共享一cpu,需要程序员安排程序运行计划,使得某时刻cpu被A程序独占,下一时刻cpu被程序B独占这种安排计划就是OS核心组件,被命名为‘sched...转载 2018-03-13 18:54:09 · 409 阅读 · 1 评论 -
如何手工挂载NFS到开发板
我们在练习驱动的时候,常常需要开发板共享服务器的文件,今天就来谈谈如何挂载NFS!一 NFS介绍NFS:Network File System(网络文件系统),NFS只是一种文件系统,本身并没有传输功能,是基于RPC协议实现的,为C/S架构。也就是说,NFS也只是文件系统而已,与jffs2,yaffs,ext4等是一类东西。但是NFS的特殊之处在于,它可以通过网络来挂载,而不用烧写到设备上。这就...原创 2018-03-06 10:05:48 · 688 阅读 · 0 评论