0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

大大简化AMP配置与使用的Linux

电子工程师 来源:网络整理 作者:工程师黄明星 2018-06-06 12:56 次阅读

嵌入式系统一般分为两大类:需要硬实时性能的;和不需要硬实时性能的。过去,我们不得不做出艰 抉择,即选择实时操作系统的性能还是我们钟爱的 Linux 系统的丰富特性,然后努力弥补不足之处。

典型的 AMP配置在很多方面类似于基于 PCI 的系统,即 Linux 域起到主机作用,RTOS 域起到适配器作用,并有一个或多个共享存储器域用来实现两个域之间的通信。不过与 PCI 不同,AMP 配置能更方便、动态地为一个或另一个域分配资源(标准外设和自定义逻辑)。此外,Linux/RTOS AMP 系统能根据运行时间要求——例如各种外部设备的有无——动态地重新配置可编程逻辑。

灵活程度通常会与建立 AMP 系统所涉及的复杂性和难度息息相关。不过请放心,Linux开发社区已经将很多功能引入到核心,能大大简化AMP配置与使用。

LINUX 多处理简介

就多处理而言,Linux 核心分为两种:单处理器 (UP) 核心和对称多处理器 (SMP) 核心。无论有多少个内核,UP 核心只能在单个内核上运行。AMP 系统可包含两个或更多个单处理器内核的实例。

SMP 核心可在一个内核或同时在多个内核上运行(图 1)。可选的核心命令行参数控制系统初始化之后 SMP 核心所使用的内核数量。核心运行时,各种命令行实用程序会控制分配给核心的内核数量。能够动态地控制内核所使用的内核数量,这是 SMP 核心比 UP 核心更受 AMP 开发人员青睐的主要原因。

大大简化AMP配置与使用的Linux

图 1 — 对称多处理。SMP 核心可在多个内核上同时运行。

远程处理器 (remoteproc) 框架是一种 Linux 组件,负责启动和停止各个内核(远程处理器),以及在 AMP 系统中加载内核的软件。例如,我们可以将图 1 所示的 SMP 系统动态地重新配置为图 2 所示的 AMP 系统,然后再使用 remoteproc 的功能配置回 SMP。

我们可以通过用户空间应用程序或系统初始化脚本完全控制重配置。重配置控制功能使用户应用可以根据系统的动态需求停止、重新加载和运行多种 RTOS 应用程序。

大大简化AMP配置与使用的Linux

图 2 — 具有 Linux SMP 核心的 AMP

内核的软件(本例中是指 RTOS 和用户应用程序)从标准的可执行和可链接格式 (ELF) 文件中加载,该文件包含一个资源表的特殊段。资源表类似于 PCI 配置空间,用来描述 RTOS 需要的资源。这些资源中包括 RTOS 代码和数据所需的存储器。

追踪缓冲区

追踪缓冲区是自动在 Linux 文件系统中作为文件出现的存储器区域。顾名思义,追踪缓冲区向远程处理器提供基本追踪功能。远程处理器向缓冲区写入追踪、调试和状态消息,以便通过 Linux 命令行或定制应用进行检查。

能够动态地控制核心所使用的内核数量,这是 SMP 核心比 UP 核心更受 AMP 开发人员青睐的主要原因。

在资源表中输入条目,以请求一个或多个追踪缓冲区。尽管一般包含纯文本,但追踪缓冲区也会包含二进制数据,例如应用状态信息或警报指示。

虚拟 I/O 设备

我们还可使用资源表定义虚拟输入/输出设备 (VDEV),这种设备主要是支持 Linux 核心与远程处理器之间消息传送的几对共享存储器队列。VDEV 定义包括用来设定队列大小的字段,以及用来在处理器之间发信号的中断。

Linux 核心可处理虚拟 I/O 队列的初始化。远程处理器上运行的软件只需要在其资源表中包含一个 VDEV 描述,然后在开始执行时使用队列;剩下的都由核心来处理。

远程处理器消息框架

远程处理器消息 (rpmsg) 框架是基于 Linux 核心的虚拟 I/O 系统的软件消息总线。该消息总线类似于局部区域子网络,单个处理器可在其中通过共享存储器创建可寻址端点和交换信息。

核心的 rpmsg 框架起到开关的作用,根据消息中包含的目的地址将消息传送到相应端点。由于消息报头包含源地址,因此可在不同处理器之间建立专用连接。

命名服务

处理器可通过向 rpmsg 框架的命名服务发送消息,以动态宣布特定服务。命名服务功能本身用途不是很大。不过,rpmsg 框架允许将服务名称关联到设备驱动程序,以支持驱动程序的自动加载和初始化。

例如,如果远程处理器宣布 dlinx-h323-v1.0 服务,那么核心可以搜索、加载和初始化与该名称关联的驱动程序。如果系统中服务被动态安装在远程处理器上,那么这样可大大简化驱动程序管理。

管理中断

中断管理有些棘手,尤其在启动和停止内核时更是如此。最终,系统需要在远程处理器启动时动态地将特定中断重定向至远程处理器域,然后当远程处理器停止时收回中断。此外,系统必须保护中断,防止其被错误配置的驱动程序误分配。简言之,必须在系统层面管理中断。

对于 Linux SMP 核心而言,这是一个常规事件,而且是 SMP 核心在 AMP 配置中更受青睐的另一个原因。远程处理器框架能方便地管理中断,只需来自设备驱动程序的最小支持。

设备驱动程序

设备驱动开发是个始终需要关注的问题,因为所需的技能组合可能无法立刻提供。幸运的是,Linux 核心的 remoteproc 和 rpmsg 框架完成大部分重活;驱动程序只需要实现几个标准驱动程序例程。功能完整的驱动程序可能只需要几百行代码。核心源代码树包含嵌入式开发人员可根据自身要求进行调整的驱动程序范例。

厂商还提供通用的开源设备驱动程序。DesignLinx Hardware Solutions 提供针对 Linux 和 FreeRTOS 的通用 rpmsg 驱动程序。由于通用驱动程序没有假定所交换消息的格式,因此嵌入式开发人员可将其用于多种 AMP 应用,无需做任何修改。

大大简化AMP配置与使用的Linux

引脚内移动

新型 SoC 产品使设计人员能够方便地将各种硬件设计从印刷电路板移植到片上系统(图 3)。过去在 PCB 上作为分立处理器和组件的部分可以完全在 SoC 的引脚内实现。

例如,我们可以使用赛灵思 Zynq-7000 系列 SoC 实现图 3 中的初始 PCB 硬件架构,将其中一个 ARM 处理器作为可编程逻辑中的控制 CPU 和软处理器(例如赛灵思 MicroBlaze™ 处理器),以替代分立处理器。我们可以使用剩余的 ARM 处理器运行 Linux SMP 核心(图 4)。

将 Linux 添加到初始设计中能够为 ARM 内核和软核处理器提供以上描述的所有标准多处理功能(例如启动、停止、重载、追踪缓冲区和远程消息)。而且,还带来丰富的 Linux 功能集,可支持多种网络接口以太网Wi-Fi蓝牙)、网络服务(Web 服务器、FTP、SSH、SNMP)、文件系统(DOS、NFS、cramfs、闪存存储器)以及其他接口(PCIe、SPI、USB、MMC、视频)等。这些特性能方便地实现新功能,无需对经过检验的架构做太大改动。

大大简化AMP配置与使用的Linux

新型 SoC 产品使设计人员能够方便地将各种硬件设计从印刷电路板移植到片上系统。

内核不断涌现

过去几年中,针对嵌入式市场的多核 SoC 产品不断增加,而且很适合用于 AMP配置。

例如,赛灵思 UltraScale+™ MPSoC 架构包含一个 64 位四核 ARM Cortex-A53、一个 32 位双核 ARM Cortex-R5、一个图形处理单元 (GPU) 以及多种其他外设,当然还包括有用的可编程逻辑。这为那些清楚如何驾驭实时操作系统的性能以及 Linux 核心的丰富特性集的设计人员提供了沃土。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9091

    浏览量

    367453
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3589

    浏览量

    129456
  • Linux
    +关注

    关注

    87

    文章

    11300

    浏览量

    209403
收藏 人收藏

    评论

    相关推荐

    基于Linux内核的透明代理配置方案

    本内容提供了基于Linux内核的透明代理配置方案,先解释为什么要配置透明代理,如何利用Linux内核来实现
    发表于 11-03 16:47 860次阅读

    Linux内核配置系统的组成

    Linux内核源码很多,有上千条配置选项,配置相当复杂。
    发表于 07-14 15:17 653次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>配置</b>系统的组成

    Linux环境下USB的原理、驱动和配置

    本文对 Linux 环境下USB 的原理、驱动和配置进行详细介绍。随着生活水平的提高,人们对 USB 设备的使用也越来越多,鉴于Linux 在硬件配置上尚不能全部即插即用,因此关于
    发表于 01-16 16:57 33次下载

    ADI宽带RFIC实现重大威廉希尔官方网站 突破,大大简化设计

    ADI宽带RFIC实现重大威廉希尔官方网站 突破,大大简化设计 随着多种标准在中国的共存,射频器件需要满足多种频段的需求。目前的情况是移动终端的射频已开始走向部分集成,支持
    发表于 01-04 14:10 741次阅读

    实用的Linux网络配置工具netconf

    实用的Linux网络配置工具netconf 很多用户不使用Linux网络的原因是配置的复杂性与困难性,下面的内容介绍使用Linux下的GU
    发表于 01-29 11:24 918次阅读

    简化FPGA配置设计过程

    本文着重介绍了 Xilinx Platform Flash PROM 如何帮助系统和电路板设计人员简化 FPGA 配置设计。用于配置 FPGA 的可选解决方案有很多,但它们通常都需要大量的前期设计工作和时间。Platform
    发表于 03-14 15:18 64次下载

    Linux主机IP配置

    Linux如何进行静态IP的设置,在主机下运行IP配置的指令
    发表于 06-03 14:30 0次下载

    linux下网卡配置详解

    linux下网卡配置详解
    发表于 12-15 22:38 0次下载

    第8章 Linux软件开发平台及软件配置

    Linux软件开发平台及软件配置 8.1 Linux 体系结构 8.2 Linux开发基础 8.2 Linux嵌入式系统开发平台
    发表于 04-11 14:38 3次下载

    Linux内核配置系统详解

    ,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解
    发表于 11-01 15:45 4次下载

    Linux中如何配置DNS

    ----DNS的功用是把计算机的名称转换为 IP地址。DNS的使用简化了系统管理员及客户对主机文件的操作和维护。 Intranet服务器的系统配置 ----硬件配置:Pentium 133 CPU
    发表于 11-07 10:44 3次下载

    基于Linux 简化 AMP 配置使其更方便更动态地分配资源

    )以及庞大的可编程逻辑阵列。我们可将这些 SoC 产品作为 Linux/RTOS AMP 系统的基础,助其实现高度的灵活性。 典型的 AMP 配置在很多方面类似于基于 PCI 的
    发表于 11-17 01:41 2599次阅读
    基于<b class='flag-5'>Linux</b> <b class='flag-5'>简化</b> <b class='flag-5'>AMP</b> <b class='flag-5'>配置</b>使其更方便更动态地分配资源

    Linux网络概念和IP怎样合理的配置

    Linux网络概念和IP配置教程
    发表于 11-06 14:08 1101次阅读
    <b class='flag-5'>Linux</b>网络概念和IP怎样合理的<b class='flag-5'>配置</b>

    Linux下网络怎样来配置总结

    Linux下网络配置总结
    发表于 11-07 11:35 900次阅读

    Linux网络基本配置与管理

    Linux是一种开源操作系统,被广泛用于服务器和网络设备中。在Linux中,网络配置和管理是一个重要且复杂的任务。本篇文章将详细介绍Linux网络基本
    的头像 发表于 11-27 16:51 996次阅读