Linux device driver BSP与设备驱动程序

Linux device driver BSP与设备驱动程序,linux-device-driver,device-driver,vxworks,bsp,Linux Device Driver,Device Driver,Vxworks,Bsp,虽然我对每一个都有自己的理解(也许没有),但我似乎还远远没有理解两者之间的实际差异 据我所知,BSP是一个驱动程序和配置设置包,它允许内核映像启动主板(并且是主板的一部分)。 单个设备驱动程序在特定组件(HW)上运行,一边与核心内核接口,另一边与设备本身接口 看看Linux内核,我不清楚BSP角色从哪里开始,设备驱动程序角色从哪里结束。具体来说,我习惯于看到每个映像每个板一个BSP,但是,通用Linux内核可以加载到具有相同映像的任何体系结构系列上(很明显,对于不同的系列,有不同的映像:x86、

虽然我对每一个都有自己的理解(也许没有),但我似乎还远远没有理解两者之间的实际差异

据我所知,BSP是一个驱动程序和配置设置包,它允许内核映像启动主板(并且是主板的一部分)。 单个设备驱动程序在特定组件(HW)上运行,一边与核心内核接口,另一边与设备本身接口

看看Linux内核,我不清楚BSP角色从哪里开始,设备驱动程序角色从哪里结束。具体来说,我习惯于看到每个映像每个板一个BSP,但是,通用Linux内核可以加载到具有相同映像的任何体系结构系列上(很明显,对于不同的系列,有不同的映像:x86、amd64、arm等),其中特定的板和外围设备驱动程序根据需要从initrd加载

普通Linux内核发行版是否有BSP? 或者BSP仅适用于特殊情况板

这种行为在其他内核上类似吗?VxWorks


最后一个问题,合并不同的BSP/s以生成适合不同板的单个映像是否常见?

根据我的经验,BSP的范围要大得多。它包括引导加载程序、rootfs、内核和驱动程序等,这意味着拥有一个BSP可以使您的板能够自我引导。驱动程序使设备工作,只是BSP的一部分


驱动程序不等于BSP。

我认为BSP和设备驱动程序之间的关系是“has-a”。板支持包包括设备驱动程序

BSP和内核之间的区别不容易区分。内核将指令转换为硬件。内核经常被写入,因此它们不像看上去那样可移植或通用。它相当于每个体系结构系列的不同代码排列

BSP的作用是相反的:它提供了使用该板特定硬件集的工具和指令。在特定的受控情况下,内核可以完成这项工作。但是,BSP允许任何兼容的内核/操作系统/应用程序堆栈使用该板,方法是遵循它的命令

如果您只需要访问CPU周期和内存,可能需要一些协议(USB、以太网、两种视频类型),一个具有广泛架构支持的内核是非常棒的,曾经有一段时间,硬件抽象的广度受到了重视。但是现在,考虑板可能有(加速度计,磁强计,陀螺仪,光,接近,大气压力等),电话,可能有多个CPU,多个GPU,等等。如果/当有人使用这些特定的硬件包时,可以编写内核来提供VGA/DVI/HDMI/DisplayPort和几种CPU/GPU组合,但与使用为特定板构建的BSP相比,编写对所有理论环境的支持并不实际。即便如此,这也只适用于一个内核;该板能够支持Linux、Windows、Android、Symbian等


这就是为什么像这样的努力存在,进一步解耦内核和硬件BSP使硬件集可扩展到一两个内核/os/app堆栈之外,而内核使特定的os/app堆栈可在多个硬件体系结构上移植

板支持包包括应用程序使用板所需的一切。这些包括板上设备的设备驱动程序和应用程序程序员的实用软件。多媒体板上还提供窗口环境。系统工程师可以进一步向电路板添加扩展。有些应用程序需要重新实现bsp的某些部分以增强功能。在这里,bsp扮演着参考实现或此类需求的起点的角色

困惑在于商业模式。参考或开发板不像移动设备那样是终端/消费品。它在设计和开发iPhone或三星Galaxy等产品方面发挥着重要作用

一般bsp在大多数情况下都缺乏优化,因此您只能期望针对新手模型使用一般bsp,或者在需要进行优化的地方使用一般bsp。在廉价电路板的情况下,bsp是相当通用的,因为生产商将投入较少的投资


不要过分强调内核和用户空间,因为也有微内核可用。这里的驱动程序是用户空间的一部分!再想一想低功耗板,它只有一段代码,没有任何内核。因此,它可以归结为支持电路板完成其工作的软件。

如今,为了提高可重用性,东西都是模块化的,嵌入式系统的软件开发通常分为三层

  • 内核(包含任务处理、调度、内存管理)
  • 堆栈(是设备驱动程序的上层,为I2C、SPI、以太网、SDIO、串行、文件系统、网络等提供协议实现)
  • BSP=设备驱动程序(提供对硬件上任何控制器寄存器的访问,如I2C、SDIO、SPI、Ethernet_MAC、UART(串行)和中断处理(ISR)寄存器)

板支持包(设备驱动程序)驱动程序是一个程序,它像设备的行为一样对内核说……设备可以是USB设备、摄像头、蓝牙或任何东西。根据操作的大小,我们将其分为三个字符、块、网络。但它只包括ives访问每个设备…它仅配置设备,不配置内存、Cpu速度。它不为处理器或控制器提供指令。它是在处理器或控制器上工作。谁启用定义功能的微控制器,…谁给出微控制器的起点…谁给出指令是的,现在来了
 # Uncomment some or all of these to enable the optional hardware interfaces
 #dtparam=i2c_arm=on
 #dtparam=i2s=on
 #dtparam=spi=on
 dtoverlay=lirc-rpi 
 dtparam=gpio_out_pin=16 
 dtparam=gpio_in_pin=17
 dtparam=gpio_in_pull=down