什么是BSP?理解LINUX BSP

2023-05-16

BSP 可支持操作系统更好地运行于硬件主板。BSP(Board Support Package)指板级支持包。对于一般的嵌入式系统,硬件部分需要嵌入式硬件工程师设计硬件电路,而新出厂的电路板需要BSP 来保证其能稳定工作,在此基础之上才能进行下一步的软件开发。BSP 是介于主板硬件和操作系统之间的系统软件之一,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。

BSP 是相对于操作系统而言的,不同的操作系统对应于不同定义形式的 BSP。

例如 VxWorks 的BSP 和 Linux 的 BSP 相对于某一 CPU 来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写 BSP 一定要按照该系统 BSP 的定义形式来写,这样才能与上层 OS 保持正确的接口。由于 BSP 处于在硬件和操作系统、上层应用程序之间,因此 BSP 程序员需要对硬件、软件和操作系统都要有一定的了解。

 

Linux BSP 板集支持包

  • Linux Board Support Package(BSP) contains various components as shown in the picture.
  • These components work together to create complete Linux system running on NXP’s S32V2 processors.

U-boot

It is a boot loader program. 

u-boot是一个引导加载程序。

Provides architectural and platform support

提供架构和平台支持

Provides minimal drivers and does initial configurations
提供最少的驱动程序并执行初始配置

Supports different booting flows (sdhc/ftp/qspi, secure boot)
支持不同的引导流(sdhc/ftp/qspi、安全引导)

 U-boot是什么?

  • 一个通用的引导加载程序
  • 一个硬件平台的开源固件
  • Bootloader广泛应用于嵌入式领域

 U-boot它有什么作用?

  • 使电路板在复位后处于正常状态
  • 将OS(Linux)映像加载到板上并启动操作系统

U-boot的启动过程:

  1. Reset vector points to SRAM
  2. Begins execution in SRAM
  3. Initializes UART
  4. Checks info on version numbers, clocks and displays on screen
  5. Initializes DDR
  6. Relocates itself to RAM
  7. Continues execution in RAM
  8. Initializes higher level devices : Ethernet, SDHC, etc.
  9. Begins command interpreter
  10. Starts Kernel

U-boot的启动过程:

  1. 将矢量点重置为SRAM
  2. 在SRAM中开始执行
  3. 初始化UART
  4. 检查屏幕上的版本号、时钟和显示信息
  5. 初始化DDR
  6. 将自身重新定位到RAM
  7. 在RAM中继续执行
  8. 初始化更高级别的设备:以太网、SDHC等。
  9. 开始命令解释器
  10. 启动内核

 

 

Linux Kernel

It is actual Linux Kernel and core of the OS.

它是真正的Linux内核和操作系统的核心。

Provides architectural and platform support

提供架构和平台支持

Full support for device drivers and device tree
完全支持设备驱动程序和设备树

Continues the HW initialization of the target.
Provides HW and user space interfaces.

继续目标的硬件初始化。
提供硬件和用户空间接口。

 Linux Kernel: Device Tree

  • Linux Kernel comes with Device Tree Blob(.dtb) file
  • A device tree is a tree data structure that describes the physical devices in a system − So, it isolates hardware configuration from actual Linux Kernel
  • This makes Linux Kernel independent of the description of the machine hardware. − This also makes Linux Kernel easy to port to new platforms and removes lot of redundant code
  • Device Tree is OS independent
  • Supported platforms: ARM, PowerPC, MIPS
  • DTS format is technically described in ePAPR (Embedded Power Architecture Platform Requirements) specification
  • DeviceTree    链接---------------------------------》

Linux Kernel: Device Tree

Linux内核附带设备树Blob(.dtb)文件
设备树是描述系统中物理设备的树数据结构− 因此,它将硬件配置与实际的Linux内核隔离开来
这使得Linux内核独立于机器硬件的描述。− 这也使得Linux内核易于移植到新平台,并删除了大量冗余代码


设备树与操作系统无关
支持的平台:ARM、PowerPC、MIPS
DTS格式在ePAPR(嵌入式电力架构平台需求)规范中有技术描述

 

 

 

Resources

  • http://free electrons.com/ com/+ LXR

  • http://elinux.org/Device_Tree

  • http://elinux.org/Device_drivers

  • https://lwn.net/Kernel/LDD3/

  • www.devicetree.org/

  • https://www.kernel.org/doc/Documentation/arm64/booting.txt

  • https://www.yoctoproject.org/

Board Support Package顾名思义,就是板级支持包,说白了就是最底层底层的驱动+与某种操作系统的接口。

学过单片机或arm的都知道驱动,如果这些驱动能够支持某种操作系统(如linux)运行在这个板子上,那么就说它是这个操作系统在这个板子上的bsp。

比如你编译不同版本嵌入式linux操作系统时,低的版本可能只支持到2410,2440,高的支持到6410板子以上,通用的linux已经根据一定标准把流行的几种的硬件板子的bsp都做好了,所以不用开发bsp,但是特殊的板子或者特殊的需求(比如有的功能需要绕开操作系统做到最底层)都需要开发bsp,没有它操作系统运行不了

软件定义汽车时代下,智能汽车软件架构逐步向 SOA 演进_搜狐汽车_搜狐网

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是BSP?理解LINUX BSP 的相关文章

  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • Docker忽略limits.conf(试图解决“打开文件太多”错误)

    我正在运行一个 Web 服务器 该服务器正在处理数千个并发 Web 套接字连接 为了实现这一点 在 Debian linux 我的基本镜像是 google debian wheezy 在 GCE 上运行 上 打开文件的默认数量设置为 100
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 为什么 Linux 原始套接字的 RX 环大小限制为 4GB?

    背景 我试图mmap 我的原始套接字的 RX 环形缓冲区64 bitLinux 应用程序 我的环由 4096 个块组成 每个块大小为 1MB 总共 4GB 请注意 每个 1MB 块中可以有许多帧 如果您好奇 请参阅此文档了解背景信息 htt
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos

随机推荐

  • MySQL定时备份

    MySQL定时备份实例 xff1a 每周一晚上3 00 xff0c 备份数据库服务器上webdb库的所有数据到系统的 mysqlbak目录中 xff0c 使用系统日期做备份文件名 xff01 span class token operato
  • 一篇文章完全讲解C语言指针

    https mp weixin qq com s biz 61 MzU3NDU5NDczMw 61 61 amp mid 61 2247504309 amp idx 61 5 amp sn 61 5421ee86fb1be92b43d99f
  • 读懂Adaptive Autosar架构-基础应用篇

    对于Adaptive AUTOSAR xff0c 咱们经常会看到这句话 xff1a Write once Adopt everywhere 但实际上理想很丰满 xff0c 现实很骨感 毕竟Classic Platform xff08 后面简
  • 软件架构的定义

    一 软件架构的定义 我们先讨论一下什么是软件架构 xff1f 对于软件架构并没有一个标准的定义 xff0c 但是你和软件工程师谈到架构的时候 xff0c 他们会知道这些都会是架构的内容 是不是要分层 xff0c 如何处理事件 xff0c 如
  • 一文了解V2X技术栈及其产业链

    C V2X会给未来出行交通带来怎样的改变 xff1f 会在哪些场景下发挥作用 xff1f 这条产业链里面的公司又是哪些 xff1f 大厂们在V2X上的投入又是如何呢 xff1f 本文可以给你一个答案 1 为什么需要V2X 随着C V2X及5
  • 精力管理分享

    你是否长时间工作却没有时间休息 是否总是感到压力很大 xff0c 时间不够用 xff1f 是否经常觉得很疲惫 xff0c 怎么调整都找不到状态 xff1f 然而 xff0c 不论是工作还是生活 xff0c 我们每个人都需要进行自我能量的调节
  • 目标管理

    业务能力很突出 xff0c 管理能力跟不上 xff0c 怎么办 xff1f 这节课帮你补全管理必修模块 xff0c 掌握全面的管理视角 学了很多管理手段 xff0c 总是用不上怎么办 xff1f 用工具统一管理语言 xff0c 拿来就能用
  • 深入浅出理解SOME/IP

    详解SOME IP协议文档 1 知乎 知乎 xff0c 中文互联网高质量的问答社区和创作者聚集的原创内容平台 xff0c 于 2011 年 1 月正式上线 xff0c 以 让人们更好地分享知识 经验和见解 xff0c 找到自己的解答 为品牌
  • SOME/IP-SD 深入浅出

    文章中 xff0c 我们了解了一条完整的SOME IP报文应该长什么样子 xff0c 但这显然是不够的 xff0c 至少还有以下这几个问题并没有得到明确的解决 xff1a Client如何发现服务 当服务不可用时 xff0c 如何通知Cli
  • Segmentation Fault错误原因总结

    一 什么是 Segmentation fault in Linux 所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间 xff0c 通常这个值是由gdtr来保存的 xff0c 他是一个48位的寄存器 xff0c 其中的32位是保存
  • 漫谈QNX(架构/进程,线程,同步,进程间通信IPC)

    1 架构 说起Blackberry的QNX操作系统 想必大家都听说过 xff0c 但到底为什么QNX能如此有名 xff1f 难道微软的Windows和Linux都不能与之抗衡 xff1f 美国NASA的太空接驳飞船也使用QNX操作系统 QN
  • Linux系统安装后需要做什么?

    安装完linux系统之后需要做的事情 以centos7为例 xff1a 1 用root用户登录 2 tab键补全安装包 yum span class token operator span y install bash span class
  • ETAS Adaptive AUTOSAR 自适应平台示例视频教程

    ETAS AP AUTOSAR自适应平台示例视频教程 本系列文章旨在提供一个详细的操作指南 xff0c 以构建ETAS AP AUTOSAR自适应平台的示例 实践练习的目标是加强AUTOSAR自适应平台中的理论概念 xff0c 并更好地理解
  • 什么是微内核,看这一篇就够了

    微内核是将服务转移到进程上的一种内核模式 宏内核是一种传统的内核结构 xff0c 它将进程管理 xff0c 内存管理等各项服务功能都放到内核中去 xff0c 通常用在通用式的内核上 xff0c 如unix xff0c linux等 两个系统
  • AUTOSAR的E2E通信安全

    AUTOSAR标准的安全通信为支持功能安全 xff0c AUTOSAR标准结合ISO 26262功能安全标准 xff0c 在基础软件层从安全执行 安全通信以及安全内建测试三个方面做出了规范 xff0c 并规范 AUTOSAR标准的安全通信
  • bridged networking(桥接模式)和network address translation(NAT模式)

    在NAT模式下 xff1a 王五的主机里面的虚拟机有一个虚拟的网卡有一个IP地址192 168 100 88 xff0c 可以在内部生成一个虚拟的地址192 168 100 xff19 xff19 与之通信 xff0c 然后通过代理利用主机
  • Linux 目录结构

  • Adaptive AUTOSAR 简介 (2021版)

    目录 1 Adaptive AUTOSAR 简介 Adaptive平台 一种新的 AUTOSAR 1 1 Adaptive的案例 1 2 经典平台与适应性平台的比较 1 3 单一系统 1 4 架构 逻辑架构 1 5 软件架构 本文图片来源
  • 从Adaptive AUTOSAR的角度看SOA

    前言 身处汽车行业的我们深知 xff0c 新技术的应用或者新概念的提出 xff0c 一定是事出有因的 通常是为了抢夺新技术高地 xff0c 让汽车更好地满足未来的需求 那么 xff0c 汽车电子电气架构领域掀起的这股SOA热潮是由什么导致的
  • 什么是BSP?理解LINUX BSP

    BSP 可支持操作系统更好地运行于硬件主板 BSP xff08 Board Support Package xff09 指板级支持包 对于一般的嵌入式系统 xff0c 硬件部分需要嵌入式硬件工程师设计硬件电路 xff0c 而新出厂的电路板需