驱动与固件的区别是什么?
展开全部
从计算机领域来说,驱动和固件从来没有过明确的定义,就好像今天我们说内存,大部分人用来表示SDRAM,但也有人把Android里的“固化的Flash/Storage"称为“内存”,你不能说这样说就错了,因为这确实是一种“内部存储”。
但在Linux Kernel中,Driver和Firmware是有明确含义的,其中Driver是控制被操作系统管理的外部设备(Device)的代码段。很多时候Driver会被实现为LKM,但这不是必要条件。driver通过register_dirver()注册到总线(bus_type)上,当某个device被注册到同样的总线的时候,driver和device会通过一定的策略进行binding,最终在probe()函数中由driver实际控制对应的设备,并把对该设备的控制接口注册到Linux的其他子系统上(例如字符设备,v4l2子系统等)。
而Firmware,是表示运行在非“控制处理器”(指不直接运行操作系统的处理器,例如外设中的处理器,或者被用于bare metal的主处理器的其中一些核)中的程序。这些程序很多时候使用和操作系统所运行的处理器完全不同的指令集。这些程序以二进制形式存在于Linux内核的源代码树中,根据配置,可以直接集成到最终的映像中,或者被拷贝到指定的位置。当driver对device进行初始化的时候,通过load_firmware()等接口,可以把指定的firmware加载到内存中,由驱动传输到指定的设备上。
所以,总的来说,其实driver和firmware没有什么直接的关系。
但在Linux Kernel中,Driver和Firmware是有明确含义的,其中Driver是控制被操作系统管理的外部设备(Device)的代码段。很多时候Driver会被实现为LKM,但这不是必要条件。driver通过register_dirver()注册到总线(bus_type)上,当某个device被注册到同样的总线的时候,driver和device会通过一定的策略进行binding,最终在probe()函数中由driver实际控制对应的设备,并把对该设备的控制接口注册到Linux的其他子系统上(例如字符设备,v4l2子系统等)。
而Firmware,是表示运行在非“控制处理器”(指不直接运行操作系统的处理器,例如外设中的处理器,或者被用于bare metal的主处理器的其中一些核)中的程序。这些程序很多时候使用和操作系统所运行的处理器完全不同的指令集。这些程序以二进制形式存在于Linux内核的源代码树中,根据配置,可以直接集成到最终的映像中,或者被拷贝到指定的位置。当driver对device进行初始化的时候,通过load_firmware()等接口,可以把指定的firmware加载到内存中,由驱动传输到指定的设备上。
所以,总的来说,其实driver和firmware没有什么直接的关系。
展开全部
简单地说驱动是写在操作系统里的,固件是写在相关的device里的,因为固件“驱动”着设备,所以听上去好像驱动和固件很大关系似的哈哈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2021-11-24 · 百度认证:北京一天天教育科技有限公司官方账号,教育领域创作者
关注
展开全部
首先我们来了解一下固件、驱动和软件之间的设计目的:
固件:赋予设备硬件生命的程序;
驱动:是操作系统和硬件组件之间的中间商;
软件:可直接操作硬件。
下面,我们来详细介绍下:
| 固件:
写入ROM中的程序,主要负责系统最基础、最底层的工作,可直接控制硬件,比如计算机开机后第一个启动的程序BIOS,它可以与硬件交互,并检查是否有错误,可以在很多设备上看到固件,比如计算机、手机、游戏机、智能手表、USB驱动器和各种嵌入式系统。
| 驱动:
简单来说就是添加到操作系统中的一小块代码,其中包含有关硬件设备的信息,当计算机程序与某个硬件设备交互时,它充当硬件设备与使用它的程序之间指令的转换器;
操作系统并不支持机器上的所有硬件,所以一般来说,硬件厂商都要为自己的硬件编写驱动程序;
驱动程序的开发需要非常注意,因为它直接与硬件打交道,同时也会与操作系统打交道,如果驱动存在问题,可能会导致系统崩溃;
| 软件:
与硬件不同,软件是运行在电脑中的,看不见也摸不着;
如果用户编写了一个软件,想要操作硬件,如光驱、U盘等,他必须通过操作系统提供的接口来实现,无法直接与硬件交互;
需要注意的是,软件是一个广义的术语,比如我们在日常使用中所说的软件,一般就是嘤嘤软件,比如:谷歌浏览器、网易云音乐、QQ、微信等。
固件:赋予设备硬件生命的程序;
驱动:是操作系统和硬件组件之间的中间商;
软件:可直接操作硬件。
下面,我们来详细介绍下:
| 固件:
写入ROM中的程序,主要负责系统最基础、最底层的工作,可直接控制硬件,比如计算机开机后第一个启动的程序BIOS,它可以与硬件交互,并检查是否有错误,可以在很多设备上看到固件,比如计算机、手机、游戏机、智能手表、USB驱动器和各种嵌入式系统。
| 驱动:
简单来说就是添加到操作系统中的一小块代码,其中包含有关硬件设备的信息,当计算机程序与某个硬件设备交互时,它充当硬件设备与使用它的程序之间指令的转换器;
操作系统并不支持机器上的所有硬件,所以一般来说,硬件厂商都要为自己的硬件编写驱动程序;
驱动程序的开发需要非常注意,因为它直接与硬件打交道,同时也会与操作系统打交道,如果驱动存在问题,可能会导致系统崩溃;
| 软件:
与硬件不同,软件是运行在电脑中的,看不见也摸不着;
如果用户编写了一个软件,想要操作硬件,如光驱、U盘等,他必须通过操作系统提供的接口来实现,无法直接与硬件交互;
需要注意的是,软件是一个广义的术语,比如我们在日常使用中所说的软件,一般就是嘤嘤软件,比如:谷歌浏览器、网易云音乐、QQ、微信等。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询