OpenIPC开源IPC之工程框架

2024-08-31 10:52
文章标签 框架 工程 开源 ipc openipc

本文主要是介绍OpenIPC开源IPC之工程框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenIPC开源IPC之工程框架

  • 1. 源由
  • 2. 介绍
    • 优点
    • 缺点
    • 适用
  • 3. 框架
  • 4. 举例
    • Step 1: 配置使能`wfb-ng`软件包
    • Step 2: 添加`wfb-ng`软件包
    • Step 3: 软件包版本配置
    • Step 4: 地面端配置OSD
  • 5. 参考资料

1. 源由

OpenIPC的工程框架使用了Buildroot,该构建工具与OpenWrt、OpenEmbedded、Yocto类似,被广泛应用于嵌入根文件系统自动化构建。

2. 介绍

Buildroot 通过使用交叉编译来简化和自动化构建嵌入式系统完整 Linux 系统。

Buildroot 作为一个用于构建嵌入式 Linux 系统的工具,有其独特的优缺点。以下是对其主要优势和劣势的概述:

优点

  1. 轻量化和简洁性

    • Buildroot 非常轻量化,且设计简洁。它的配置和使用相对简单,对于小型和中型嵌入式项目,特别是那些不需要高度定制的系统,Buildroot 是一个非常高效的工具。
  2. 快速构建

    • Buildroot 可以快速生成一个完整的 Linux 根文件系统、内核和引导加载程序。这使得它非常适合开发过程中频繁迭代测试的情况。
  3. 广泛的硬件支持

    • Buildroot 支持多种处理器架构(如 ARM、MIPS、PowerPC、x86 等)和大量现成的开发板,适合广泛的嵌入式应用。
  4. 简单的配置机制

    • Buildroot 使用的 make menuconfigmake xconfig 等配置工具类似于 Linux 内核的配置方式,使得用户能够轻松配置所需的工具链、软件包和其他系统组件。
  5. 良好的文档和社区支持

    • Buildroot 拥有良好的文档支持和一个活跃的开发者社区,用户可以快速找到所需的信息和帮助。
  6. 自包含的构建系统

    • Buildroot 的构建过程不依赖于宿主系统的许多软件包,而是通过下载并构建所需的一切(包括工具链),这减少了环境依赖性和不一致性的问题。

缺点

  1. 缺乏包管理系统

    • Buildroot 没有像 Yocto 或 OpenEmbedded 那样的包管理系统,这意味着在运行时不能方便地添加或移除软件包。所有的软件包都必须在构建时选择并编译进系统。
  2. 功能相对简单

    • Buildroot 的设计目标是简单和快速,因此它在复杂项目中的灵活性和功能性上可能不如 Yocto 等更强大的构建系统。如果项目需要高度定制和复杂的功能集成,Buildroot 可能不足以满足需求。
  3. 不支持多重构建缓存

    • Buildroot 通常是一次性构建所有内容,如果需要重新构建某个部分,通常需要重新构建整个系统。这与支持增量构建和更复杂缓存机制的 Yocto 有所不同,可能导致开发效率下降。
  4. 有限的系统集成能力

    • Buildroot 更适合简单或中等复杂度的系统。如果项目需要广泛的定制或复杂的集成,如定制 BSP 或复杂的中间件系统,可能需要更强大的构建工具。
  5. 软件包数量有限

    • 虽然 Buildroot 提供了许多常见的嵌入式软件包,但与 Yocto 等系统相比,其软件包数量和可用性要少一些。这可能意味着你需要自己编写新的包定义或补丁。

适用

Buildroot 主要对从事嵌入式系统开发的人有用,非常适合那些需要快速生成嵌入式 Linux 系统的项目,特别是对于资源有限的设备或不需要高度复杂和定制的系统。

3. 框架

Buildroot 基本上是一组 Makefile,它们负责下载、配置和编译软件,并确保使用正确的选项进行编译。它还包括为各种软件包提供的补丁,主要是与交叉编译工具链相关的软件包(如 gcc、binutils 和 uClibc)。

基本上,每个软件包都有一个对应的 Makefile,这些文件以 .mk 为扩展名。Makefile 分为许多不同的部分。

  • toolchain/ 目录包含了与交叉编译工具链相关的所有软件的 Makefile 和相关文件:如 binutils、gcc、gdb、kernel-headers 和 uClibc。
  • arch/ 目录包含了所有 Buildroot 支持的处理器架构的定义。
  • package/ 目录包含了所有用户空间工具和库的 Makefile 和相关文件,这些工具和库可以由 Buildroot 编译并添加到目标根文件系统中。每个软件包都有一个子目录。
  • linux/ 目录包含了 Linux 内核的 Makefile 和相关文件。
  • boot/ 目录包含了 Buildroot 支持的引导加载程序的 Makefile 和相关文件。
  • system/ 目录包含了系统集成的支持文件,例如目标文件系统框架和初始化系统的选择。
  • fs/ 目录包含了与生成目标根文件系统镜像相关的软件的 Makefile 和相关文件。

每个目录至少包含 2 个文件:

  • something.mk 是 Makefile,负责下载、配置、编译并安装名为 something 的软件包。
  • Config.in 是配置工具描述文件的一部分,描述了与该软件包相关的选项。

主 Makefile 在配置完成后执行以下步骤:

  1. 在输出目录(默认是 output/,可以使用 O= 指定其他值)中创建所有输出目录:如 staging、target、build 等。
  2. 生成工具链目标。如果使用的是内部工具链,这意味着生成交叉编译工具链。如果使用的是外部工具链,这意味着检查外部工具链的功能并将其导入 Buildroot 环境。
  3. 生成 TARGETS 变量中列出的所有目标。该变量由所有单独组件的 Makefile 填充。生成这些目标将触发用户空间软件包(库、程序)、内核、引导加载程序的编译以及根文件系统镜像的生成,这取决于配置。

4. 举例

ssc338q_fpv_openipc-urllc-aio_defconfig 目标OpenIPC AIO为例,定位底层实时传输代码wfb-ng,接下来我们看下如何集成该软件包。

Step 1: 配置使能wfb-ng软件包

OpenIPC/builder工程的devices/ssc338q_fpv_openipc-urllc-aio/br-ext-chip-sigmastar/configs/ssc338q_fpv_openipc-urllc-aio_defconfig.txt目标配置文件中配置使能软件包:

BR2_PACKAGE_WIFIBROADCAST=y

Step 2: 添加wfb-ng软件包

openipc/general/package/wifibroadcast/路径下,增加必要文件,包括:Config.inwifibroadcast.mk

openipc/general/package/wifibroadcast/
├── files
│   ├── drone.key
│   ├── gs.key
│   ├── htc_9271.fw.1
│   ├── htc_9271.fw.3
│   ├── setmcs
│   ├── wfb_drone.conf
│   ├── wfb_gs.conf
│   └── wifibroadcast
├── Config.in
└── wifibroadcast.mk

Step 3: 软件包版本配置

openipc/general/package/wifibroadcast/wifibroadcast.mk中配置版本信息:

WIFIBROADCAST_VERSION = 24.08

Step 4: 地面端配置OSD

./openipc/br-ext-chip-hisilicon/configs/hi3536dv100_fpv_defconfig中增加OSD配置项:

  • OpenIPC OSD is different from wfb_ng+wfb_ng_osd on ubuntu? #337
BR2_PACKAGE_VDEC_OPENIPC=y

5. 参考资料

【1】OpenIPC开源IPC之工程编译
【2】Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考

这篇关于OpenIPC开源IPC之工程框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123701

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1