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

描述

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

813cca35fb3d3a514b452c0a8fef6816.png

如今,嵌入式开发人员再也不需要在二者之间艰难选择。非对称多处理 (AMP) 兼备二者的优点。几款新型片上系统 (SoC) 产品集成了多个 CPU、多种标准 I/O 外设和可编程逻辑。例如,赛灵思 Zynq-7000® All Programmable SoC 系列包含一个双核 ARM® Cortex™-A9、标准外设(例如千兆位以太网 MAC、USB、DMA、SD/MMC、SPI 和 CAN)以及庞大的可编程逻辑阵列。我们可将这些 SoC 产品作为 Linux/RTOS AMP 系统的基础,助其实现高度的灵活性。

典型的 AMP 配置在很多方面类似于基于 PCI 的系统,即 Linux 域起到主机作用,RTOS 域起到适配器作用,并有一个或多个共享存储器域用来实现两个域之间的通信。不过与 PCI 不同,AMP 配置能更方便、动态地为一个或另一个域分配资源(标准外设和自定义逻辑)。此外,Linux/RTOS AMP 系统能根据运行时间要求——例如各种外部设备的有无——动态地重新配置可编程逻辑。灵活程度通常会与建立 AMP 系统所涉及的复杂性和难度息息相关。不过请放心,Linux 开发社区已经将很多功能引入到核心,能大大简化 AMP 配置与使用。

Linux 多处理简介

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

SMP 核心可在一个内核或同时在多个内核上运行(图 1)。

90511b81b0b7a6bb29a5411e587068e7.png

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

9c5b2e60d24d59d4cb82aa8506407cdb.png

远程处理器框架

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

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

内核的软件(本例中是指 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 应用,无需做任何修改。

8df84892628cc77f5016f57c38b1515e.png

引脚内移动

核心的多处理支持并不局限于同构多处理系统(使用同一类型处理器的系统)。以上介绍的所有特性也可以用在异构系统中(具有不同类型处理器的系统)。当“在引脚内”移植已有设计时,这些多处理功能尤其有用。

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

29ecb4f70451049621668c62e551dcbc.png

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

将 Linux 添加到初始设计中能够为 ARM 内核和软核处理器提供以上描述的所有标准多处理功能(例如启动、停止、重载、追踪缓冲区和远程消息)。而且,还带来丰富的 Linux 功能集,可支持多种网络接口(以太网、Wi-Fi、蓝牙)、网络服务(Web 服务器、FTP、SSH、SNMP)、文件系统

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

(DOS、NFS、cramfs、闪存存储器)以及其他接口(PCIe、SPI、USB、MMC、视频)等。这些特性能方便地实现新功能,无需对经过检验的架构做太大改动。

内核不断涌现

过去几年中,针对嵌入式市场的多核 SoC 产品不断增加,而且很适合用于 AMP 配置。例如,赛灵思 UltraScale+™ MPSoC 架构包含一个 64 位四核 ARM Cortex-A53、一个 32 位双核 ARM Cortex-R5、一个图形处理单元 (GPU) 以及多种其他外设,当然还包括有用的可编程逻辑。这为那些清楚如何驾驭实时操作系统的性能以及 Linux 核心的丰富特性集的设计人员提供了沃土。

如需了解如何设计 Linux/RTOS AMP 系统的更多详情,敬请联系DesignLinx Hardware Solutions。 赛灵思联盟计划的高级成员 DesignLinx 专门从事 FPGA 设计与支持业务,包括系统设计、原理图捕捉和电气封装/机械工程设计,以及信号完整性设计。

打开APP精彩内容

点击阅读全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

netcore权限控制_netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源...

基于netcore2.0 mvc 开发的 快速搭建具有如下特色的后台管理系统特色:用户管理菜单管理角色管理权限管理[精确到按钮])代码生成器如何使用代码克隆到本地 用vs2017或以上版本 打开工程。项目结构如下:找到DbModel下面的初始化db脚本里面包含4张表的schem…

uint16 累加_在一个驱动程序中看到uint16,uint32,unit8,int8是什么意思?有何作用?...

展开全部uint16 :无符32313133353236313431303231363533e59b9ee7ad9431333365643535号16bit整数,uint32:无符号32bit整数,unit8:无符号8bit整数,int8:有符号8bit整数。其作用是程序更加简洁&…

linux qt显示gif图片,QT显示GIF图片

在QT中要显示GIF图片,不能通过单单的添加部件来完成.还需要手动的编写程序.工具:QT Creator新建一个工程,我们先在designer中,添加一个QLabel部件.如下图:将QLabel拉成适当大小.在类cpp函数中添加如下程序:#include "widget.h"#include "ui_widget.h"#incl…

安徽省2012年下半年计算机水平考试(二级 c语言程序设计),安徽省计算机等级二级考试真题C语言2012年12月...

安徽省计算机等级二级考试真题C语言2012年12月2012年下半年全国高等学校(安徽考区)计算机水平考试试卷(二级 C语言程序设计)一、单项选择题(每题1分,共40分)1.微型机的中央处理器主要集成了_____。A)控制器和CPU B)运算器和控制器C)控制器和存储器 D)运算器和CPU2.计…

太阳能电池基本特性实验报告_太阳能电池基本特性研究实验报告的数据处理Ini怎么?太阳能电池基 爱问知识人...

摘要:实验结果的表示,首先取决于实验的物理模式,通过被测量之间的相互关系,考虑实验结果的表示方法。常用到数据处理方法有作图法,列表法,平均值法,最小二乘法等。在处理数据时可根据需要和方便…

C语言存储管理模拟程序设计代码,C语言程序设计教学大纲.doc

目 录《C语言程序设计》教学大纲1《实用操作系统》教学大纲5《网页设计》教学大纲8《计算机硬件基础》教学大纲12《计算机网络技术》教学大纲15《数据库技术》教学大纲19《专业英语》教学大纲23《Java程序设计》教学大纲27《组网技术与管理》教学大纲30《WEB编程技术…

ubuntu 禁用透明大页_如何在ubuntu上默认启用透明的大页面?

如何在ubuntu上默认启用透明的大页面?$uname -aLinux yoda 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux~$cd /sys/kernel/mm/transparent_hugepage//sys/kernel/mm/transparent_hugepage$lsdefrag enab…

数学C语言编程,数学规划 (最速下降法,c语言编程).doc

数学规划 (最速下降法,c语言编程).doc数 学 规 划 课 程 设 计题目:用最速下降法求解无约束非线性规划问题姓名:学号:成绩:2011年6月用最速下降法求解无约束非线性规划问题摘要:无约束非线性规划问题是一类重要的数学规…

华三防火墙h3cf100配置双宽带_H3C新一代F100系列防火墙评测报告

【IT168评测】随着网络应用在中小企业的深入发展,中小企业对于网络安全的需求也越来越强烈。而传统的网络安全设备可以帮助中小企业防御病毒、蠕虫及应用层攻击,但是由于缺乏有效的监管,中小企业内网用户的P2P下载、在线视频等大量占用着企业…

公交查询系统 c语言,城市公交查询系统的设计任务书

主要参考文献(资料):[1] 汪光焘.畅通城市交通,实现城市的可持续发展.可持续发展,2002,(2):18-19[2] 马武定.城市化与城市可持续发展的基本问题.城市规划汇刊,2002,(2):7-9[3] 冯博.S…

matlab计算一组数的函数值_matlab中怎么求一组数据概率最大的数

好象直接使用就可以了,第一次出现就包含了定义顺便把些命令弄给你看下matlab命令matlab commands and functions listA aabs 绝对值、模、字符的ASCII码值acos 反余弦acosh 反双曲余弦acot 反余切acoth 反双曲余切acsc 反余割acsch 反双曲余割align 启动图形对象几何位置排列工…

c语言文件怎么在手机上打开,各位前辈这两个程序怎么在手机上运行

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*made by ebhrz*/#include #include #include #include #include #include #include /*---------global define---------*/int cfd; /* 文件描述符 */int recbytes;int sin_size;char buffer[1024] { 0 }; /* 接受缓冲区 */struc…

u盘启动蓝屏 索尼vaio_U盘重装系统出现蓝屏?不要急,这四个手段轻松帮你解决!...

现如今U盘重装系统是主流的重装系统方式,通过U盘PE重装系统是大多数用户重装电脑系统的第一选择。不过在用U盘重装系统的时候,进入PE系统有时候会出现一些问题。有用户进入PE系统就蓝屏,这是怎么回事呢?下面就让韩博士小编为大家带…

觅凤c语言教程,C语言程序设计教程 第1章.ppt

傣永靶莱瑞市芽星谴绥真椎匣灵租骡淬女测推谅应弥蠢仑早饲姑锗佩草隔C语言程序设计教程 第1章C语言程序设计教程 第1章第1章 绪 论??唆闽邹搔绕裂陶短噎诚贤希绞重垒嚷济酸凛委句枉鞘扁渗皋耿淮此朴胎竖C语言程序设计教程 第1章C语言程序设计教程 第1章1.1 程序设计语言的发展…

iframe懒加载_懒加载是如何实现的?

作为网页内容的一部分,图像和视频通常要消耗很多资源加载。要提高网页应用的性能,如何避免资源浪费在加载图像和视频上就很重要了。但是,很多时候我们都不愿意减少网页上的媒体资源,所以我们经常无从下手。幸运的是,我…

数据库系统工程师考c语言吗,2019年数据库系统工程师考点:DBMS的基本功能

【导语】2019年数据库系统工程师考试备考正在进行中,为了方便考生及时有效的备考,那么,无忧考网为您精心整理了2019年数据库系统工程师考点:DBMS的基本功能,欢迎大家的参考学习。如想获取更多数据库系统工程师考试的模…

redis value最大值_Redis从入门到深入-String的value

1. string类型1.1 redis数据存储类型redis本身是一个Map,其中所有的数据都是采用key:value的形式存储数据类型指的是存储的数据的类型,也就是value部分的类型,key部分永远都是字符串1.2 string类型存储的数据:单个数据…

c语言将数据写不入文件,求大神看看为什么不能将数据写入文件

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include #includevoid baocunXS(struct stu *head);struct stu *creat();struct stu{int chengji;int xuhao;struct stu *next;//结构体指针自引用};void ps(struct stu *head){struct stu *p;phead;if(p!NULL){do{printf…

ipsec ip替换_[windows]利用IPSec对指定的ip进行访问限制

以win2003系统为例:操作(看图):1.任务:现在192.168.2.200可访问;目的;本地禁止对其访问2.进入:管理工具->本地安全设置->IP安全策略3.右键创建IP安全策略4.弹出向导,如下图:(一直选择[是]或者[下一步]直至完成,期间填写名称可随便填,我填的是"测试")5.完成添加…

android要求图标格式,Android设计规范 Material Design-Style(3图标)

图标系统图标定义系统图标或者UI界面中的图标代表命令、文件、设备或者目录。系统图标也被用来表示一些常见功能,比如清空垃圾桶、打印或者保存。系统图标的设计要简洁友好,有潮流感,有时候也可以设计的古怪幽默一点。要把很多含义精简到一个…