- 博客(34)
- 资源 (5)
- 收藏
- 关注
原创 操作系统面经
每个进程中访问临界资源的那段程序称为临界区,一次仅允许一个进程使用的资源称为临界资源。如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入,如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;进入临界区的进程要在有限时间内退出。如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。什么是死锁在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。
2024-03-01 11:22:55
988
原创 嵌入式开发——面试题操作系统(上下文)
上下文是指程序或者系统当前所处的执行环境和状态(抽象的概念),它包括了程序的状态、寄存器值、内存映射、文件描述符等信号。上下文是一个抽象的概念,它描述了程序或者系统的执行环境和运行状态。在操作系统中,上下文通常分为进程上下文和中断上下文两种类型。
2024-02-29 10:15:40
541
原创 嵌入式开发——面试题操作系统(调度算法)
若进程使用完了整个时间片后,其运行任务并未完成(也没有产生V/O请求),仍然要求运行,则该进程被剥夺处理机,同时它被放入下一级队列的末是,当第1级队列为空后,调度程序才去调度第2级队列中的进程。循环扫描(Circular Scan, CSCAN )规定:只有磁头朝某个特定方向移动时,才处理磁道访问请求,而返回时直接快速移动至最靠边缘的磁道,也就是复位磁头,这个过程是很快的,并且返回中途不处理任何请求,该算法的特点,就是磁道只响应一个方向上的请求。该算法的优点是,可以用于分时系统,保证及时响应用户要求。
2024-02-28 11:06:32
862
原创 linux下驱动学习—平台总线 (3)
在代码中添加of_device_id类型结构体数组。platform驱动是如何被加载的。就是通过.compatible匹配完成的。如下所示{},##注意两点:1.这个MODULE_DEVICE_TABLE宏一定不能忘记。不写不会报错。但是匹配不到。2.my_of_id是一个数组,且最后一项必须空值。否则一定出错。修改设备树在根节点下添加这个东西,简单就是美呀。hehe{
2024-01-08 10:46:04
1026
1
原创 Linux下驱动开发(一)
这段代码也就是定义了一个叫 __initcall_hello_init6的函数指针,他指向hello_init这个函数,gcc的链接选项__attribute__和__section__将该指针变量链接到linux内核映像的.initcall段中。这里的*__section*为gcc链接选项,他表示把该函数链接到Linux内核映像文件的相应段中,这样hello_init将会被链接进.init.text段中,而hello_exit将会被链接进.exit.text段中。最大的好处就是方便。
2023-09-29 16:35:38
109
原创 STM32io口基本模式
1,四种输入模式 接下来就遇到了两个开关和电阻,与VDD相连的为上拉电阻,与VSS相连的为下拉电阻。再连接到施密特触发器就把电压信号转化为0、1的数字信号存储在输入数据寄存器(IDR)。我们可以通过设置配置寄存器(CRL、CRH),控制这两个开关,于是就可以得到GPIO的上拉输入(GPIO_Mode_IPU ) 和下拉输入模式(GPIO_Mode_IPD )了。 从它的结构我们就可以理解,若GPIO引脚配置为上拉输入模式,在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,.
2022-01-22 12:52:27
802
原创 实战iic协议
概述I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。经常IIC和SPI接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)和协议层(主机,从机,时钟极性,时钟相位)。iic的通信原理起始条件:当SCL为高电平的时候,SDA线上由高到低的跳变被定义为起始条件,
2021-07-04 08:51:41
185
原创 学习笔记 DHT11的驱动设计
DHT11产品概述DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系
2021-07-03 09:12:01
2261
原创 进程间通信学习 1信号学习
进程间通信有以下这七种方法:信号 ( Sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生;管道(Pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系(通常是指父子进程关系)的进程间使用;命名管道FIFO:命名管道(Named Pipe)也是半双工的通信方式,但是它允许无亲缘关系进程间的通信;命名socket或UNIX域socket(Named Socket或Unix Domain Socket):socket也是一种进程间通信机制,与其
2021-04-15 20:20:19
162
树莓派实时温度上报项目
树莓派加上温度传感器实现室内温度监控。可用于家庭,轿车,工业,农业 等许多方面。可做温度预警,自动降温等操作。各位小伙伴可自行脑补发挥。1.硬件准备a.树莓派(Raspberry Pi)一个b.DS18B20温度传感器一个c.4.7kΩ电阻一个 或 DS18B20模块一个d.杜邦线(双头母)2.软件准备a.sqlite3数据库b.socket编程c.多路复用编程d.json数据传输格式3.流程图****服务器程序主要源码int main(int argc, char ...
2021-04-08 16:48:42
399
原创 Cjson学习
我学习cJSON是为了数据更好的兼容,通过cJSON这种格式可以方便的与其他程序员交换数据,减少出错可能,下文我将介绍我对cJSON的认识与理解。 JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式,易于让人阅读。同时也易于机器解析和生成。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON解析器和JSON库支持许多不同的编程语言。由于我的项目在linux中部署,我直接使用下...
2021-04-07 10:05:17
146
3
原创 多路复用学习
一、五种网络I/O模型假设有这样一个需求:我们需要在一个程序里要查看按键是否要按下,同时他还要从串口里读取数据进行处理,也要处理网络 上来的数据。按照我们以前阻塞的模式来写的话这个程序的伪代码逻辑就是:...
2021-03-14 14:08:37
90
原创 linux信号机制
信号 Linux信号机制基本上是从Unix系统中继承过来的。早期Unix系统中的信号机制比较简单和原始,信号值小于SIGRTMIN的信号都是不可靠信号。这就是"不可靠信号"的来源,它的主要问题是信号可能丢失。随着时间的发展,实践证明了有必要对信号的原始机制加以改进和扩充。由于原来定义的信号已有许多应用,不好再做改动,最终只好又新增加了一些信号,并在一开始就把它们定义为可靠信号,这些信号支持排队,不会丢失。我们可以使用 kill -l 命令查看当前系统支持的信号,需要注意的是不同的系统支持的信号是不一样
2021-02-02 18:35:39
56
原创 多进程获取树莓派温度
通过多进程获取树莓派温度在linux里面通过调用ds18b20可以得到传感器温度,通过这一理论写出获取树莓派温度的多进程代码。通过这一指令可以调取温度。我们就可以通过多进程c代码来实现温度的文件获得,通过system函数和dup2函数对输入进行改变,再打开文件io来获取温度代码如下: 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <string.h> 4 #include <err
2021-02-01 14:42:21
285
原创 湖北省电子设计大赛 无线运动传感器节点设计(A题)省级特等奖
无线运动传感器节点设计摘要本系统基于TI模拟前端芯片ADS1292、温度传感器LMT70和陀螺仪MPU6050设计制作而成的无线运动传感器节点。实现测温,心电图显示,测试心率以及测量步数和路程的功能。测试结果表明,本设计能够实现精确测量心率,温度,步数以及路程,心率,步数与路程测量精度优于5%,温度测量精度优于2度。关键字 LMT70 ADS1292 MPU6050 传感器 数据传输一、系统方案方案描述1、系统框图:2、系统描述:系统通过采集测试对象的手温,心电以及路程和步数数据,分别将温
2021-01-20 13:44:15
4756
11
原创 结构体对齐问题
大家一定对c语言结构体sizeof()有疑问吧。比如struct s{ int x; double s1; char z; }; int main(int argc, char** argv) { printf("%d",sizeof(s)); return 0; }这里面输出的结构体大小是多少呢?这里就存在结构体对齐问题我电脑下默认对齐值8int 4字节char 1字节double 8字节int 对齐为8字节char 对齐为8字节所以=24字节#include
2021-01-17 17:24:10
60
原创 socket编程连接
Socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”。在许多操作系统中,套接字API最初是作为UNIX操作系统的一部分而开发的,所以套接字API与系统的其他I/O设备集成在一起。应用程序要为因特网通信而创建一个套接字(socket)时,操作系统就返回一个小整数作为描述符(descriptor)来标识这个套接字。然后应用程序以该描述符作为传递参数,通过调用相应函数(如read、write、close等)来完成某种操作(如从套接字中读取或写入数据)。在生活中,A要电话给..
2021-01-17 12:16:52
235
2
原创 云服务器上ftp的搭建
一、安装并配置vsftpd在Linux中,可供我们选择的FTP服务器种类众多。但如果我们想在树莓派上 搭建一个安全、高性能且稳定性好的FTP服务器,那么就非vsftpd莫属了。Vsftpd 的全称是Very Secure FTPDaemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的FTP服务器,可以运行在Linux、BSD、Solaris、 HP-UX以及Irix等系统上面。同时,vsftpd也支持很多其他传统的FTP服务器不支持的良好特性,用八个字概括其特点就是
2021-01-16 17:08:30
655
原创 c语言学生信息管理系统
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h>#include <windows.h> #include <string.h> typedef struct person ...
2019-06-10 15:10:25
872
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人