- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 Linux其他类型锁
一、读写自旋锁现在有个学生信息表,此表存放着学生的年龄、家庭住址、班级等信息,此表可以随时被修改和读取。此表肯定是数据,那么必须要对其进行保护,如果现在使用自旋锁对其进行保护。每次只能一个读操作或者写操作,但是,实际上此表是可以并发读取的。只需要保证在修改此表的时候没人读取,或者在其他人读取此表的时候没有人修改此表就行了。也就是此表的读和写不能同时进行,但是可以多人并发的读取此表。像这样,当某个数据结构符合读/写或生产者/消费者模型的时候就可以使用读写自旋锁。读写自旋锁为读和写操作提供了不同的锁,一次只能
2021-11-30 15:52:21 947
原创 Linux并发与竞争
Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源,就和共享单车一样。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。比如共享单车,大家按照谁扫谁骑走的原则来共用这个单车,如果没有这个并发访问共享单车的原则存在,只怕到时候为了一辆单车要打起来了。在Linux驱动编写过程中对于并发控制的管理非常重要。一、并发与竞争1、并发与竞争简介Linux系统是个多任务操作系统,会存在多个任务同时访问同一片内存区域,这些
2021-11-30 15:03:27 1420
原创 Linux新字符设备驱动
一、分配和释放设备号使用register_chrdev函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会带来两个问题:①、需要事先确定好哪些主设备号没有使用。②、会将一个主设备号下的所有次设备号都使用掉,比如现在设置LED这个主设备号为200,那么0~1048575(2^20-1)这个区间的次设备号就全部都被LED一个设备分走了。这样太浪费次设备号了!一个LED设备肯定只能有一个主设备号,一个次设备号。解决这两个问题最好的方法就是要使用设备号的时候向Linux内核申请,需要几个就申请几
2021-11-27 11:27:33 1080
原创 Linux地址映射函数以及内存访问函数
一、地址映射先简单了解一下MMU这个神器,MMU全称叫做Memory Manage Unit,也就是内存管理单元。在老版本的Linux中要求处理器必须有MMU,但是现在Linux内核已经支持无MMU的处理器了。MMU主要完成的功能如下:①、完成虚拟空间到物理空间的映射。②、内存保护,设置存储器的访问权限,设置虚拟存储空间的缓冲特性。我们虚拟空间到物理空间的映射,也叫做地址映射。对于32位的处理器来说,虚拟地址范围是2^32=4GB,但物理内存却没有这么大,经过MMU可以将其映射到整个4GB的虚拟
2021-11-22 19:19:21 896
原创 Linux设备号
一、设备号的组成为了方便管理,Linux中每个设备都有一个设备号,设备号由主设备号和次设备号两部分组成,主设备号表示某一个具体的驱动,次设备号表示使用这个驱动的各个设备。Linux提供了一个名为dev_t的数据类型表示设备号,dev_t定义在文件include/linux/types.h里面,定义如下:typedef __u32 __kernel_dev_t;......typedef __kernel_dev_t dev_t;可以看出dev_t是__u32类型的,而__u32定义在文件incl
2021-11-19 17:48:00 896
原创 Linux设备具体操作函数
一、填充file_operations结构体file_operations结构体就是设备的具体操作函数,file_operations结构体类型的变量test_fops,但是还没对其进行初始化,也就是初始化其中的open、release、read和write等具体的设备操作函数。现在就来完成变量test_fops的初始化,设置好针对chrtest设备的操作函数。在初始化test_fops之前需要分析一下需求,也就是要对chrtest这个设备进行哪些操作,只有确定了需求以后才知道我们应该实现哪些操作函数。假
2021-11-19 17:30:01 704
原创 Linux驱动模块加载和卸载以及设备注册与注销
一、驱动模块的加载和卸载Linux驱动有两种运行方式,第一种就是将驱动编译进Linux内核中,这样当Linux内核启动的时候就会自动运行驱动程序。第二种就是将驱动编译成模块(Linux下模块扩展名为.ko),在Linux内核启动以后使用“insmod”命令加载驱动模块。在调试驱动的时候一般都选择将其编译为模块,这样修改驱动以后只需要编译一下驱动代码即可,不需要编译整个Linux代码。而且在调试的时候只需要加载或者卸载驱动模块即可,不需要重启整个系统。总之,将驱动编译为模块最大的好处就是方便开发,当驱动开发
2021-11-18 16:15:55 7362 1
原创 ARM Linux驱动开发简介
一、Linux驱动分类Linux的驱动主要分为三种,分别为字符设备驱动、块设备驱动、网络设备驱动。其中字符设备驱动是最多的一类驱动,因为字符设备最多,从最简单的点灯到I2C、SPI、音频等都属于字符设备驱动的类型。块设备和网络设备驱动要比字符设备驱动复杂。所谓的块设备驱动就是存储器设备的驱动,比如EMMC、NAND、SD卡和U盘等存储设备,因为这些存储设备的特点是以存储块为基础,因此叫做块设备。网络设备驱动就更好理解了,就是网络驱动,不管是有线的还是无线的,都属于网络设备驱动的范畴。一个设备可以属于多种设
2021-11-18 15:26:01 1656
原创 Linux文件系统
一、“/”根目录重要文件夹详解上图中列举出了根目录“/”下面的所有文件夹,这里仔细观察一下,当进入到根目录“/”里面以后终端提示符“ $ ”前面的符号“ ~ ”变成了“ / ”,这是因为当在终端中切换了目录以后“ $ ”前面就会显示切换以后的目录路径。来看一下根目录“ / ”中的一些重要的文件夹:/bin 存储一些二进制可执行命令文件,/usr/bin也存放了一些基于用户的命令文件。/sbin 存储了很多系统命令,/usr/sbin也存储了许多系统命令。/root 超级用户root的根目录文
2021-11-02 11:21:38 145
原创 VI/VIM编辑器
linux中最常用的编辑器就是vim编辑器。VIM编辑器是VI编辑器升级版本,VI/VIM编辑器都是一种基于指令式的编辑器,不需要鼠标,也没有菜单,仅仅使用键盘来完成所有的编辑工作需要先安装VIM编辑器,命令如下:sudo apt-get install vim一、输入模式安装完成以后就可以使用VIM编辑器了,VIM编辑器有3种工作模式:输入模式、指令模式和底行模式,通过切换不同的模式可以完成不同的功能。使用命令 vim test.txt新建文档,并且用VIM打开。试着在文本中输入数字,发现根本没法
2021-11-01 21:07:03 142
原创 Shell常用命令大全
嵌入式开发用的最多就是Shell命令,Shell命令是所有的Linux系统发行版所通用的,并不是说我在Ubuntu下学会了Shell命令,换另外一个Linux发行版操作系统以后就没用了,所以学习Shell命令非常有必要。1、目录信息查看命令文件浏览是最基本的操作了,Shell下文件浏览命令为ls,格式如下: ls [选项] [路径]Is命令主要用于显示指定目录下的内容,列出指定目录下包含的所有的文件以及子目录,它的主要参数有:-a显示所有的文件以及子目录,包括以“”开头的隐藏文件。-l
2021-11-01 20:37:08 28041 2
基于单片机的温度控制(PID,PWM)Proteus仿真
2023-06-19
基于51单片机的空气质量检测(空气质量、温度、湿度、DHT11)
2023-06-19
基于51单片机的空气检测系统(空气质量、温度、湿度)
2023-06-19
交通灯1(8255,数码管,固定时间)Proteus仿真
2023-06-19
基于51单片机的步进电机控制(12864)
2023-06-19
基于51单片机16X64点阵滚动显示屏设计设计广告牌C语言源程序与仿真
2023-06-19
AT89C51单片机音乐盒(倒计数)
2023-06-19
基于51单片机的直流电机(角度控制、Protues仿真)
2023-06-19
基于51单片机智能大棚温湿度控制系统-2路测量(proteus仿真+源程序+开题报告)
2023-06-19
基于51单片机直流电压电流表设计LCD1602液晶实训仿真
2023-06-19
基于51单片机的冰箱除霜系统(温控,除霜、Proteus仿真)
2023-06-19
RLC测量仪电路方设计(原理图+源码+仿真)
2023-06-19
基于51单片机电子称仿真HX711传感器原理图1602显示proteus电子设计
2023-06-19
基于51单片机的红外遥控器设计proteus仿真(注释全)
2023-06-19
基于51单片机的LCD1602矩阵键盘密码锁(proteus仿真设计)
2023-06-19
基于单片机篮球计时-计分器(proteus仿真+源程序+参考报告)
2023-06-19
基于51单片机的手机键盘(矩阵 Proteus仿真)
2023-06-19
基于51单片机的日历(温度,闹钟)
2023-05-19
基于51单片机的空气检测(源代码 + 原理图)Proteus仿真
2023-05-19
基于stm32的电子时钟万年历温度OLED显示(源码+实物图+硬件连接)
2023-05-19
stm32f103c8t 时钟万年历1602显示(原理图+PCB+源码)
2023-05-19
基于单片机的数字万用表电压电流电阻测量液晶显示(proteus仿真+源程序)
2023-05-19
基于51单片机计数器设计-静态数码管-74ls164扩展芯片(proteus仿真+源程序)
2023-05-19
基于51单片机环境监测控制系统(proteus仿真+源程序+原理图)
2023-05-19
基于51单片机的报警器(厨房温湿度,烟雾,CO,粉尘)Proteus仿真
2023-05-19
单片机PT100温度计/PT100测温/PT100电桥测温/proteus仿真
2023-05-19
基于51单片机的火灾报警(温度PT100,烟雾,数码管)Proteus仿真
2023-05-19
基于51单片机的温度测量显示设计(1602显示DS18B20测温能测量零下温度带报警功能源程序与仿真
2023-05-19
基于51单片机的自动调光灯(光照,超声波距离)Protues仿真
2023-05-19
基于51单片机的正弦波发生器仿真电路图
2023-05-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人