历史上的今天
返回首页

历史上的今天

今天是:2025年08月21日(星期四)

正在发生

2021年08月21日 | 1_5.5.1_字符设备驱动程序之概念介绍_P

2021-08-21 来源:eefocus

之前讲了uboot,它的任务是启动内核;


内核的任务是启动应用程序;


应用程序,里面肯定会涉及很多文件操作,比如读写文件,还有很多硬件操作,比如点灯,获取按键值等。


对于写应用程序的人,他们通常不会去查看芯片手册看这些硬件要怎么操作,而是直接调用open,read,write这些接口来调用底层驱动。


最简单的一种对应方法就是,open函数,read函数,write函数分别会来调用底层驱动的led_open函数,led_read函数,led_write函数。

在这里插入图片描述

现在我们来看一下,应用程序的open,read这些函数,是怎么最终调用我们底层驱动的led_open,led_read这些函数的,中间有哪些东西。


假如我们写一个应用程序如下:


int main(void)

{

    int fd1, fd2;

    int val = 1;

    

    fd1 = open("/dev/led", O_RDWR);

    write(fd1, &val, 4);

    

    fd2 = open("hello.txt", O_RDWR);

    write(fd2, &val, 4);

}


这里面的open,write这些函数,都不是我们实现的,那是谁实现的吗?


答:C库。它一样属于应用层,当我们的应用程序调用这些open,read,write这些系统调用接口的时候就会进入到内核,驱动也属于内核的一部分。

在这里插入图片描述

那么C库是怎么进入内核的呢?


答:open,read,write这些系统调用,实质上都是执行一条swi指令,后面加上某个值val(swi val),这样就会进入到内核的异常处理函数。


有一个system call interface系统调用接口,它会根据发生中断的原因调用不同的处理函数(sys_open,sys_read,sys_write等),这一层叫做VFS(virtual file system虚拟文件系统)。

在这里插入图片描述

我们点灯和写文件都使用了open,write函数,但是这两个行为显然不一样,那么,谁来实现这些不同的操作呢?


显然,LED灯有一套它自己的驱动程序,Flash文件也有另一套它自己的驱动程序。


sys_xxx函数就会根据打开的不同文件,找到不同的底层驱动程序,然后调用这些驱动程序来实现底层的write,read,open功能。

在这里插入图片描述

app里面的open,read,write这些函数怎么找到底层驱动的对应的xxx_open,xxx_read这些函数,就是通过驱动框架,怎么对应起来的,这个就是下一节的内容。

在这里插入图片描述

推荐阅读

史海拾趣

东科半导体(DK)公司的发展小趣事

面对电源管理芯片市场需求的不断增长,东科半导体(DK)公司决定投资扩产。公司投资数亿元建设新的生产线和研发基地,提升产能和研发能力。同时,公司还加大了对新技术、新产品的研发投入,不断推出具有竞争力的新产品。通过投资扩产和加大研发投入,东科半导体(DK)公司进一步巩固了其在电源管理芯片市场的领先地位。

以上五个故事从不同角度展现了东科半导体(DK)公司在电子行业中的发展历程和成就。这些故事不仅记录了公司的成长轨迹,也反映了公司在技术创新、产学研合作、市场拓展和品牌建设等方面的努力和成果。

集创北方(CHIPONE)公司的发展小趣事

近年来,集创北方在电子行业的地位日益稳固。从2019年到2021年,公司的营收实现了飞跃式增长,从14.47亿元增长至56.74亿元,复合增长率高达98%。这一成绩的背后,是公司不断创新、积极应对市场变化的结果。

台湾三礼(3L)公司的发展小趣事

1991年,三礼公司正式成立了美国分公司(3LU),此举标志着公司开始进军北美市场,将其作为货物管理中心,并与G-TEP合作组建了3L Global Co.(3LG),共同开拓和发展所有北美业务。这一战略决策为三礼公司打开了新的增长通道,使得公司能够更好地服务全球客户,提升品牌影响力。

對餘科技(DIOFIT)公司的发展小趣事

DIOFIT公司自创立之初,便面临着激烈的市场竞争和技术挑战。创始人团队凭借对电子技术的深入理解和热情,决心打造一家专注于高端电子产品研发和生产的企业。在资金紧张、人才匮乏的情况下,他们坚持自主研发,不断优化产品设计,最终成功推出了一款具有创新性的智能家居控制系统,赢得了市场的认可,为公司的发展奠定了坚实的基础。

Daewoo公司的发展小趣事

随着金融危机的持续影响,Daewoo汽车公司最终未能幸免于难。2000年,大宇汽车公司宣告破产。然而,就在此时,美国通用汽车公司看到了Daewoo汽车公司的潜力和价值,决定对其进行收购。这一收购不仅为Daewoo汽车公司带来了新的生机,也使其能够借助通用汽车的技术和管理经验实现转型和升级。

EQCOLOGIC公司的发展小趣事

EQCOLOGIC的创始人在一次偶然的机会中,发现了一种新型电子材料的独特性能。这种材料不仅具有优异的导电性,还具有出色的热稳定性和耐腐蚀性。他敏锐地意识到这种材料在电子行业中的巨大潜力,于是决定成立EQCOLOGIC公司,专注于这种新型电子材料的研发和应用。经过几年的努力,EQCOLOGIC成功将这种材料商业化,并凭借其独特的性能,在电子行业中崭露头角。

问答坊 | AI 解惑

大家帮帮我,我在找工作啊,我仿真不出来啦!!!附原理图的。

我是想分别利用串口通信和IC总线向8个LED灯进行控制,为什么串口的时候,有些数据发送的时候可以,有些就不行,还有我用IC总线的时候没有什么反应,我的程序应该没有什么问题的,串口用的虚拟的com口,调试助手,应该怎么做呢???file:///C:/DOCU ...…

查看全部问答>

EVC 要如何关闭其它正在执行程序

EVC 要如何关闭其它正在执行程序. 目前使用 FindWindow 来做,但因窗口名称可能会改变,所以不太适用,有否直接针对该执行文件的文件名称关闭程序 …

查看全部问答>

wince启动信息

我现在板子的串口信息输出以下内容就 停了:(上略)OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45 +OALIoCtlHalInitRTC(...) -OALIoCtlHalInitRTC(rc = 0) OEMIoControl: Unsupported Code 0x101008c - device 0x0101 fu ...…

查看全部问答>

WinCE5.0与WinCE6.0的主要区别在那里?

我想了解下WinCE5.0和WinCE6.0的主要区别,那位能告诉我吗?…

查看全部问答>

09年全国大学生电子设计大赛优秀作品选集

本帖最后由 paulhyde 于 2014-9-15 09:35 编辑 09年全国大学生电子设计大赛优秀作品选集  …

查看全部问答>

维持2轮电车平衡你们都用的陀螺仪?还有其他方案吗

近年来2轮电车,4轴飞行器都变得很流行。大家都用过什么样型号的陀螺,什么方案来测量啊。求推荐一便宜又比较精准,好用的方案。 …

查看全部问答>

TA TB 比较锁存器

MSP430F5438的TB模块的比较功能比TA模块多一个比较锁存器,请问这样设置有什么好处吗 …

查看全部问答>

AD使用

刚刚下载了AD6.6,但是不会用,有没有什么教程可以快速学习????? …

查看全部问答>

有谁做过方向移动传感器?

前几天,朋友跟我说要做一系列智能家居,其中涉及到一款人体移动传感器;当时我说这种传感器不是多的是啊,后补充说需要识别人的运动方向,比如;“人从东边往西边走,可以识别,但反方向不反应”,那怕是有微弱的信号识别也行;希望大家提供相关信 ...…

查看全部问答>

我想问一下这个中断请求是怎么使能的?

上面写道:如果使能了更新中断或DMA请求。。。。我想说怎么使能请求?看完所有寄存器也没见使能请求的,倒是看见使能中断或DMA。 …

查看全部问答>