[转]QNX_BSP包分析

2023-11-04

如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意

声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正

锋影

email:174176320@qq.com

 

这篇文章主要分析QNX BSP的大体框架,并以BSP包示例

 

1. 介绍

BSP,Board Support Packages,板级支持包,是嵌入式系统中介于硬件平台和操作系统之间的中间层软件,主要目的是为了屏蔽底层硬件的多样性,根据操作系统的要求完成对硬件的直接操作,向操作系统提供底层硬件信息并最终启动操作系统。

QNX的BSP包,典型的包括以下几个部分:

  • IPL, Initial Program Loader
    最低限度地配置硬件以创建允许启动程序以及微内核运行的环境;
  • startup
    它的目的是复制和解压缩映像,如有必要,配置硬件,确定系统配置,并启动内核;
  • default buildfile
    指定镜像中要包含的任何文件和命令、可执行文件的启动顺序、文件和可执行文件的加载选项、命令行参数和可执行的环境变量等;
  • networking support
  • board-specific device drivers,system managers,utilities,etc

QNX BSP包以zip压缩包的形式提供(soc_vendor-soc-board.zip),有两种方式来使用:第一种,使用unzip来解压缩,以命令行的形式使用;第二种,import到IDE环境中,在集成开发环境中使用。

2. BSP结构

当解压一个BSP压缩包后,一个典型的代码组织结构如下图:

 

  • /src
    该目录放置所有的源代码,在该目录下子目录有:/hardware, /lib, /utils,其中/hardware目录中存放了各类设备驱动代码、startup代码。Build BSP时,会将该目录下所有代码进行编译。一般在src目录中会包含一个或多个主构建文件,通常是放在src/hardware/startup/boards/目录下,当make install的时候,构建文件会拷贝到install/target/boot目录下,target指的是处理器的类型,比如aarch64。

  • /prebuilt
    该目录放置了预构建的二进制文件及头文件,当BSP在build时,会将/prebuilt目录中的文件拷贝到/install目录下,所有处理器特定的二进制文件都位于以该处理器类型命名的目录下,/prebuilt的路径可能如下所示:

     

  • /install
    该目录放置了从/prebuilt目录拷贝过来的文件,此外还有编译生成的文件,当使用mkifs工具来构建QNX镜像文件系统时,会首先使用这个目录下的文件;

  • /image
    该目录存放了最终的引导镜像,这个目录至少包含构建镜像所需的Makefile文件,此外还可以放置其他文件,比如:1)custom buildfiles(for flash, etc.);2)EFS buildfiles;3)IPL build scripts等;

上述讲到的几个文件夹在每个BSP的压缩包中都有,至于文件夹中涉及到的子目录及内容,则随着SDP的版本迭代而存在一些变化,总体来说,大同小异。

比如,在SDP 6.6.0版本中,各个子目录下内容如下表所示,其中{BSP_ROOT_DIR}指的是压缩包解压后的根目录,{CPU_VARIANT}指的是CPU的架构,比如在R-Car中使用的是aarch64.

 

此外,文件名字约定如下,其中board_name指的是板子名字

 

3. 编译

解压后BSP zip压缩包后,进入该压缩包的根目录,可以使用make命令来进行编译:

  • make all
    进行所有的操作,包括install、links,还有编译链接目标image;
  • make prebuilt
    将/prebuilt目录下的文件内容,拷贝到/install目录下;
  • make install
    执行该命令后,首先触发make prebuilt操作,然后进入/src目录,再执行两步:1)make hinstall,将/src目录中的公共头文件拷贝到/install目录下;2)make install去把/src目录中的文件进行编译,并将编译后的结果放置到/install目录中,此外也会拷贝src/hardware/startup/boards/下的构建文件,并重命名为board.build,board指的是开发板;
  • make links
    从install/cpu/boot/build/board.build到images/board.build创建符号链接,其中cpu指的是处理器类型,board指开发板;
  • make images
    进入images目录中,并执行该路径中的Makefile文件,根据make links目标期间的构建文件生成一个IFS(Image File System)文件;
  • 直接执行make的话,相当于make all。

4. 部署

当完成编译后,可以将生成好的Image部署到开发板中运行,有以下几种方法来load:

 



作者:Loyen
链接:https://www.jianshu.com/p/6ebd4d5a8083
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

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

[转]QNX_BSP包分析 的相关文章

  • 两个黑莓模拟器之间的短信

    如何编写程序以使用 BlackBerry JDE 在两个 BlackBerry 模拟器之间发送和接收 SMS 您需要使用以下参数从命令行启动模拟器 sms source port uint sms destination port uint
  • BlackBerry 是否支持其应用程序开发人员的演示/测试版?

    我有兴趣为 BlackBerry 设备开发应用程序 想知道他们是否支持应用程序开发人员的演示版或测试版概念 我的意思是能够将我的应用程序的测试版或演示版部署给有限 受限的受众 例如业务合作伙伴 客户 外部测试人员等 他们中没有任何内容测试和
  • 使用 Java SE 功能的 BlackBerry 问题

    我已将 net rim api jar 导入到我的项目中 我还想使用标准 rt jar 中的 StringTokenizer 和 PrintWriter 等非 j2me 类 但是当我运行该应用程序时 它给出了错误 java io UTFDa
  • make:安装:找不到命令

    当我尝试安装时git从它的源头开始qnx 我收到以下错误 请注意 pound 是 sudo 的提示qnx configure without iconv with perl usr pkg bin perl with python usr
  • BlackBerry 线程模型

    我读过很多评论 其中提到 BlackBerry 线程模型偏离了 Java 标准 可能会导致问题 但无论进行多少次谷歌搜索都没有让我明白这到底意味着什么 我一直在为 BlackBerry 开发一个相当大的业务应用程序 尽管我以前没有任何 Ja
  • 黑莓 - 应用程序已在商店上架;我可以更改代码签名密钥吗

    不久前 我们为客户构建了一个应用程序 使用我们公司的密钥对其进行签名 并将其放在 BlackBerry App World 商店中 此后我们终止了与客户的合同 他们现在已经对该应用程序进行了进一步的 内部 开发 并要求我们提供签名密钥 以便
  • Blackberry Web Works 如何在每次启动应用程序时触发事件

    h1 Hello World h1 我有一个使用 Blackberry WebWorks 构建的应用程序 与上
  • 黑莓 Twitter 集成以发布照片

    我正在开发一个应用程序 用户可以在运行 OS 5 0 的 BlackBerry Storm 和 Torch 系列手机上将照片分享到 Facebook 和 Twitter 对于 Facebook 我使用了草莓项目 但对于 Twitter 我找
  • 将新图像添加到资源文件夹后出现类未找到异常

    该应用程序在模拟器和设备上运行得非常好 添加一组新图像后 它开始在每次运行时 在模拟器上和在设备上显示类未找到异常 当尝试删除一些图像以查找原因时 我在运行时找不到不同的类 编译和打包应用程序不会生成警告或错误 他们甚至得到签名 我得到的一
  • 开发 BlackBerry OS6 需要哪个版本的 Blackberry JRE

    我下载了适用于 BlackBerry 的 Eclipse 插件 默认情况下具有 BlackBerry OS 7 运行时 我需要定位 BlackBerry OS 6 和 OS 7 设备 这也适用于 BlackBerry OS 6 还是我需要更
  • 多平台加密java移动存储系统的思路

    您好 我有一些关于在 Android Blackberry 和 J2ME 上实现加密存储 一种加密文件系统 的问题 请阅读 疑问 部分 我密码学大师们需要您的建议 我知道这个问题有点长 可能太冗长 但请尝试读到最后 我有很多相关的问题 我无
  • 如何在黑莓中裁剪特定形状的图像?

    大家好 感谢阅读我的回答希望你能帮助我 我正在黑莓手机上进行图像裁剪 在我的应用程序中包含 3 个主要内容 1 将图像加载到屏幕上 2 选择裁剪区域的形状 3 在下一个屏幕上显示裁剪图像而不丢失其形状 第1步 我可以完成图像加载部分 步骤2
  • 如何在与 gcc 链接时绕过“多个定义的符号”

    我使用的是具有 gcc 2 95 3 的旧系统 我必须链接两个对象 尽管它们彼此无关 但它们每个都有相似的命名方法 我无法重命名它们中的任何一个 但我希望有一种方法来构建它们 以免链接器抱怨 它所抱怨的方法都是由对象内的类在内部调用的 我能
  • 如何在黑莓中创建选项卡栏应用程序用户界面...?

    如何在 BB 中制作选项卡栏基础应用程序 应用程序的每个屏幕都将有此选项卡 并且每个选项卡将有单独的导航控制器堆栈 以便我们可以轻松地推送屏幕 您必须使用水平字段管理器创建选项卡栏 然后将字段添加到水平字段管理器 然后将管理器设置为屏幕的标
  • 如何在黑莓 7 中捕获列表字段滚动到底部

    我有一个包含许多数据的列表字段 首先我从服务器加载 10 条记录 我想在滚动移动到底部时捕获事件 以便我可以从服务器加载更多记录 我实现了 ScrollChangeListener public class DataListScreen e
  • BlackBerry Simulator 中的图形加速错误

    当我在模拟器上运行任何程序时 它会打开并显示错误 图形加速错误 BlackBerry 9900 Simulator 检测到您当前的图形加速存在问题 设置 具有最新视频的 OpenGL 1 x 兼容显卡 图形加速需要驱动程序 请尝试较低的 通
  • 开发支持 Web 应用程序的移动应用程序的方法

    我的公司构建了自己的项目管理 Web 应用程序 这就像打了类固醇的大本营 该应用程序的核心功能是 创建任务列表 将任务分配给团队成员 跟踪任务项目的工时 我希望构建移动应用程序作为网络应用程序的扩展 移动应用程序必须 重现上述功能 连接到与
  • 来自 Blackberry Phonegap 应用程序的 Ajax 请求

    我正在为 Blackberry 操作系统 5 0 及更高版本 创建一个应用程序 我过去没有任何移动开发经验 我创建了一个运行良好的示例应用程序 按照中提到的准则http wiki phonegap com w page 31930982 G
  • 如何将 SqLite 与 BlackBerry OS 4.5 一起使用?

    我目前在 BlackBerry 中使用持久存储 我想在 BlackBerry OS 4 5 中使用 SqLite 数据库 但我找不到任何相关教程 我可以在 BlackBerry OS 4 5 中使用 SqLite 还是需要其他版本的 Bla
  • 适用于 BlackBerry 的 QR 码阅读器

    是否有 BlackBerry 库 组件 开源或商业 可集成到我自己的应用程序中充当 QR 码阅读器 我想将它完全集成到我的应用程序中 或者 有没有办法使用开源中兴图书馆 http code google com p zxing 与相机结合使

随机推荐

  • IOS安全测试(资源学习笔记)

    客户端程序安全 位置无关代码 检测客户端是有启用Position Independent Executable PIE 编译选项 采用PIE选项编译的引用程序允许使用地址空间随机分布功能 ASLR Address Space Layout
  • PHPExcel导入导出操作总结

    PHPExcel 是用来操作Office Excel 文档的一个PHP类库 它基于微软的OpenXML标准和PHP语言 可以使用它来读取 写入不同格式的电子表格 如 Excel BIFF xls Excel 2007 OfficeOpenX
  • CocosCreator中TiledMap简单使用

    在开发游戏过程中 有时候会用到TiledMap 瓦片地图 我这边使用的是1 4 3版本的tiledmap 2 3 4版本的CocosCreator 其他版本的tiledmap会有做不了动画的问题 后面会说到 视频参考 B站UP主 阿信OL
  • 【UnityShader】模板Stencil测试

    效果 原理 使用后处理 在后处理阶段先渲染产生一张RenderTexture 包含要被描边的物体 使用描边色渲染 高斯模糊RenderTexture 会产生边缘 用高斯模糊的图片反向剔除未模糊的图 这样只保留模糊多出的部分 此时Render
  • Prim算法 与 Kruskal算法 求最小生成树

    一 Prim算法 普利姆 Prim 算法适用于求解无向图中的最小生成树 Minimum Cost Spanning Tree 下面是Prim算法构造最小生成树的过程图解 选择一个节点开始 比如V1进入集合U 剩下的集合的
  • Spring Boot多线程环境下,解决多个定时任务冲突问题

    问题引入 关于定时任务注解 Scheduled在之前的文章已经讲到 Spring Boot定时器默认的是单线程的 但是问题就来了 如果在线程争夺资源后 某个线程需要比较长时间才能执行完 那其他的定时器怎么办 都只能进入等待状态 时间越久 累
  • cmake 条件判断

    以下内容来自cmake官方文档 传送门 if 语法 if
  • C++11变长模板

    C 11变长模板 文章目录 简介 模板和函数参数包 模板参数包说明 解包 在可变参数模板中使用递归 进阶 不同的包拓展方式 简介 该篇博客主要介绍C 11中的变长模板 对变长模板的原理和使用方法进行介绍 本篇博客参考书籍深入理解C 11新特
  • 再淡spring jdbc 连接池断开重连设置

    先看一段错误日志 Error querying database Cause com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionException No operation
  • 安装Fortran语言编程环境全流程记录

    本文以Visual Studio 2017 Intel Parallel Studio XE 2019配置Fortran语言编译环境 系统版本Windows10 目录 版本问题 安装VS2017 安装Intel Parallel Studi
  • Win10 Snip & sketch无法保存截图

    如果你看到了我的博客 相信你也遇上了上面这个问题 在一次win10更新后发现 当按下Win Shift S使用截图后无法正常保存的问题 我寻找了很多文章也没有找到解决方案 最后找到了一个替代的软件 感觉挺好用的 微软官网上面找到的答案在 这
  • 【千律】C++基础:计算宽窄字节字符串所占用的字节数

    include
  • 【C ++ 】C++中的double和float区别

    文章目录 一 概述 二 精度的理解 三 存储空间 四 范围 五 运算精度 一 概述 在C 中 double和float是用于表示浮点数的两种数据类型 它们具有以下的详细介绍和区别 精度 double类型的变量具有更高的精度 即它可以表示更多
  • NPM详解

    NPM详解 介绍 命令 执行多个脚本 pre post 错误 静默消息 日志等级 从文件中引用路径 访问环境变量 传递参数 命名规则 前缀 在拿到一个项目之后 如何看入口文件 如何运行项目 我们都会找到 package json 中的 sc
  • 小点dian儿:pandas数据存入文件,行索引处理

    小点dian儿 存入数据的时候 我们希望对数据在系统的行名 保存或者不保存 参数 index None 类似 header False不保存列名 在我们不进行如上的设计的时候 系统或分配默认的行index 0 1 2 在我们将运行结果存入文
  • Python预测糖尿病

    今天给大家讲解一个实战案例 如何根据现有数据预测糖尿病 在这个案例开始之前 希望大家回忆一下大学里讲过的线性回归的知识 这是数据挖掘里非常重要的一部分知识 当然 鉴于大家都学过 本篇就不再赘述 一 数据集介绍 diabetes datase
  • 人工学习之预测2023年考研英语答案分布

    统计了2012 2022年共计11年的英语一完形和阅读答案 除了20年 ABCD四个选项基本都均匀分布 所以大概率是各自5个或者两个5一个4 20年类似13年 不管完形还是阅读 答案都是十分均匀分布 即5555型 至于原因 可能是老师的偏好
  • 计算机网络(第七版)谢希仁1-2章笔记

    笔记基于谢希仁老师的计算机网络笔记 第七版 第1 2章 1章 概述 2章 物理层 第1章 概述 1 1 计算机网络在信息时代的中的作用 1 21世纪的一些重要特征就是数字化 网络化和信息化 是一个以网络为核心的信息时代 2 三类网络 电信网
  • 登录功能的测试点大全

    登录功能的测试点大全 还是比较全面的 有什么考虑不到的 可以补上 功能性用例 1 输入已注册的用户名和正确的密码 验证是否成功登录 2 输入已注册的用户名和不正确的密码 验证是否成功失败 且提示信息正确 3 输入未注册的用户名和任意密码 验
  • [转]QNX_BSP包分析

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 这篇文章主要分