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

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

3天内不再提示

基于Zynq-7000面向小型微型自动化监测系统的BSP设计与实践

电子设计 来源:2018年电子技术应用第9期 作者:宋 凯,高 寒 2020-12-31 11:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

实现一种基于Zynq-7000全可编程片上系统(AP SoC)的板级支持包(BSP)设计方法及应用流程。该BSP设计主要面向工业自动化监测领域,提供了一种行之有效的嵌入式系统BSP实现流程,有利于提高工业自动化监测系统的开发效率。针对使用串行通信方式的工业监测设备,设计面向小型自动化监测系统的FPGA工程,并使用专门针对基于FPGA的片上系统而设计的PetaLinx工具构建嵌入式Linux系统。最后通过自行研制的基于Zynq XC7Z010系列型号芯片的硬件平台验证了BSP设计的正确性及稳定性。

0 引言

物联网及嵌入式技术的发展推动了信息化与工业化的快速融合。作为一种新型产业模式,工业物联网(Industrial Internet of Things,IIoT)在过去几年的研究和实践中受到很大关注[1-2]。IIoT的迅速发展使得自动化监测系统的设计与研发成为新的科技热点。IIoT将传感器网络与自动化系统相结合,已被用于多个行业,以提高生产力和安全性[3-4]。自动化监测系统在IIoT感知层与应用层间起着重要作用,随着涉及的业务需求日益复杂,它的实现也变得越来越具挑战性。在工业应用场景中软件体系结构设计对于自动化系统的高效运行非常重要。先进的软件工程解决方案对自动化系统设计的效率影响很大[5]。Xilinx Zynq AP SoC通过集成处理器的软件可编程性与FPGA的硬件可编程性,实现了优异的设计灵活性,可提供面向嵌入式领域可重配置的软件工程解决方案,从而加速生产力。

BSP在嵌入式系统中扮演着关键角色,主要用来适配特定类型的硬件平台。它通常包含了用来配置可定制电路的硬件比特流、引导加载操作系统的基础支持代码以及主板上所有设备的驱动程序。BSP开发目的在于屏蔽底层硬件,提供操作系统与硬件驱动,使操作系统能稳定运行于主板环境[6-7]。由于传统BSP设计存在不可或不易修改、难以复用以及设计流程复杂等问题,本文面向工业监测领域中的自动化系统,采用Xilinx提供的Vivado集成开发套件及用于构建和部署嵌入式系统到Xilinx全可编程处理器平台的PetaLinux工具,完成了基于Zynq-7000 AP SoC的BSP设计与实现。

1 BSP总体结构

BSP设计最终生成对应用层提供支撑的镜像文件为BOOT.BIN和image.ub。BSP的总体架构如图1所示。BOOT.BIN启动镜像主要负责系统硬件部分配置,用于上电后配置Zynq芯片的处理器系统(Processing System,PS)及可编程逻辑(Programmable Logic,PL),并为Linux操作系统准备运行环境。image.ub支持内核升级,功能可裁剪,由PeteLinux工具编译打包生成。

13696-39634-tu1bspzongtijiegou.gif

第一阶段引导加载器(First Stage Boot Loader,FSBL)在启动存储区之后运行,启动存储区在ARM核上电启动时自动执行,负责加载FSBL至片上存储器(On Chip Memory,OCM)或在线性Flash存储介质上直接运行。对于运行在Zynq平台的Linux系统而言,第二阶段引导加载器(Second Stage Boot Loader,SSBL)即为通用引导加载器(Universal Boot Loader,U-Boot)。Xilinx提供了用于适配不同系列Zynq主板的U-Boot。基于Zynq-7000 AP SoC的BSP各个组成部分对应的功能说明如下:

(1)FSBL。FSBL负责初始化Zynq AP SoC PS端资源并使用硬件比特流文件配置PL端资源。

(2)硬件比特流。硬件比特流由Vivado集成开发工具构建的FPGA系统生成,包含FPGA编程信息,用于配置FPGA器件。

(3)SSBL。SSBL负责初始化内存和必要的外设资源,设置Linux内核的启动参数以及加载Linux系统到内存中运行。

(4)Linux内核镜像。Linux内核镜像是Linux操作系统的核心,提供硬件抽象层、进程及内存管理、磁盘与文件系统控制等功能。

(5)根文件系统。根文件系统基于BusyBox源码构建,负责管理Linux系统启动及运行时所必需的目录和关键性文件。

(6)设备树。设备树文件用于描述部分硬件信息并在Linux系统加载设备驱动时传递配置参数。

2 FPGA工程设计

传统工业监测设备中很多是符合RS232RS422RS485等串行数据通信标准的设备。对于自动化监测系统而言,如何面向这些监测设备提供可重配置的接口,成为一个需要解决的关键问题。许多传统工业设备所提供的功能在出厂时便已在固件中完成烧录定义,无法面向新的业务需求进行修改或扩展。然而,对于许多应用场景,固定功能的硬件会因为难以进行资源复用而导致成本提升。FPGA器件因为具有动态可重构的特性,被认为是数字可演化硬件系统一个很好的平台[8]。Xilinx使用硅片堆叠技术设计出了高容量的FPGA,用于满足低功耗、低延时及高带宽的应用需求。

2.1 工程构建

在进行FPGA系统设计时往往需要重用已有的功能模块,于是类似于软件开发库文件的IP核应运而生。IP核通常是预先设计好的电路功能模块,主要被用于ASIC或FPGA系统。Xilinx提供了可连接到高级可扩展接口(Advanced eXtensible Interface,AXI)的通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)Lite。每一个AXI UART Lite IP核都可以实际对应一个串行通信接口,为工业监测设备接入自动化监测系统提供支持。AXI UART Lite IP核可以为异步串行数据传输提供控制器接口。它的设计目的在于和 AXI4-Lite协议实现连接。AXI UART Lite的主要性能和优势[9]如下:
(1)基于AXI4-Lite 规格的AXI 接口;

(2)一个发送通道和一个接收通道(全双工);

(3)16个字符的发送和接收先进先出队列(First Input First Output,FIFO);

(4)单个字符的数据比特位(5~8)数量可配置;

(5)校验位(奇偶或无)可配置;

(6)波特率可配置。

Xilinx提供了Zynq7处理器系统IP封装,用于加速嵌入式系统的设计与配置。在Vivado集成开发环境中搭建基于Zynq-7000的小型自动化监测系统FPGA工程,工程结构如图2所示。工程中添加了ZYNQ7处理器系统模块、3个AXI UART Lite模块以及AXI互联模块等IP核,AXI Interconnect IP负责将一个或多个AXI存储器映射的主器件连接到一个或多个存储器映射的从器件。在进行FPGA系统设计时还预留了部分GPIO接口资源,方便对系统功能进行扩展。

o4YBAF_tScuAUR4kAALwxRXEFfc953.png

2.2 资源配置

2.2.1 PS端资源配置

根据实际应用需求配置Zynq XC7Z010处理器系统,并规划XC7Z010的PS端MIO资源。MIO是I/O外设连接的基础。XC7Z010芯片通过MIO最多可以引出54个三态通用输入输出(General Purpose Input Output,GPIO)引脚。这些GPIO引脚都是在程序上可控的,并且支持动态修改配置。它们可以单独配置为输入、输出或中断的功能。PS端部分资源规划结果如表1所示。

o4YBAF_tSdqAQbt4AAGuTOCNl6w300.png

2.2.2 PL端资源配置

Zynq中的PL主要用于扩展功能。通过使用多个特殊引脚和信号,可以将Zynq-7000内的PS和PL紧密或松散地耦合在一起[10]。XC7Z010主芯片包含用于连接外设和某些特殊功能引脚的IO接口资源。 特殊引脚最主要用于实现复位、状态指示、系统配置、模式配置等功能,通过特定引脚和功能复用引脚来实现。XC7Z010的主要特殊引脚的配置说明如表2所示。

pIYBAF_tSeeAB9dFAADxlqWsomY052.png

3 PetaLinux工程设计

使用PetaLinux工具构建基于Zynq AP SoC的嵌入式Linux操作系统。PetaLinux工具包括定制的BSP生成工具、Linux配置工具以及软件开发工具。使用这些工具可以实现引导加载程序、Linux内核以及Linux应用程序的灵活配置,有利于开发者在Xilinx处理系统上定制、构建和调配嵌入式Linux解决方案。

3.1 系统顶层配置

基于Zynq工程模板创建PetaLinux工程,导入固件工程生成的硬件描述文件并进行系统顶层配置,系统顶层配置项包括Linux组件选择、自动配置项设置、子系统硬件自动配置项设置、内核引导参数设置、U-Boot设置、镜像文件打包配置等。其中子系统硬件自动配置项设置为必选项,允许自定义系统范围的硬件设置,如:以太网卡设置、Flash设置、串口设置、实时时钟(Real-Time Clock,RTC)芯片设置、SD卡设置等。Petalinux工具将根据系统顶层配置解析硬件描述文件,以便更新设备树所需的硬件信息。

3.2 Linux内核配置

Linux内核主要提供五大功能,分别为虚拟文件系统、网络服务、内存管理、进程管理和设备管理。Xilinx 提供了免费的PetaLinux开发工具,使开发人员可以轻松在Zynq AP SoC上配置、构建和部署Linux系统及应用,提高软硬件设计开发效率。Linux内核配置基于Linux 4.6.0内核进行,主要包括USB串口驱动配置、以太网驱动配置、GSM和CDMA调制解调器的USB驱动配置、Xilinx-uartlite串口驱动配置、DS18B20温度传感器驱动配置、GPIO支持等。PetaLinux工程基于开源的协作软件Yocto创建。Yocto致力于创建可定制的嵌入式产品和统一嵌入式Linux系统的开发标准,它提供了许多模板、工具和方法,使得开发者无需关心硬件体系,避免许多重复工作,从而提高开发效率和产品质量。Linux内核的更新以打补丁的方式实现,内核源码的更新不影响已修改的系统配置项。

3.3 设备树配置

Linux内核通过设备树文件获取板级硬件的细节信息从而加载设备驱动。设备树可以对硬件进行规范化描述,支持多平台内核镜像,具备简化的板卡端口,使用更少的平台描述代码以及更精简的设备驱动代码[11]。PetaLinux设备树配置关联文件主要有pcw.dtsi、plnx_aarch64-system.dts、system.dts、system-conf.dtsi、system-top.dts。这些文件统一由PetaLinux工程自动生成,开发者通过修改system-top.dts文件来满足特定的系统需求。基于Zynq-7000的小型自动化监测系统具备网口调试、RTC时钟支持、温湿度监测、网络数据传输等功能。需要在system-top.dts文件中进行相应节点信息的修改或添加新的硬件描述节点。例如在设备树配置文件system-top.dts中添加RTC时钟硬件描述信息及修改后的网卡芯片节点信息如下:

&i2c0 {

status = "okay";

rtc@51 {

compatible = "nxp,pcf8563";

reg = <0x51>;

};

};

&gem0 {

compatible = "cdns,zynq-gem", "cdns,gem";

status = "okay";

phy-mode = "rgmii-id";

xlnx,ptp-enet-clock = <0x69f6bcb>;

local-mac-address = [00 0a 35 00 1e 53];

};

4 BSP总体测试

在基于XC7Z010的硬件平台中对BSP进行总体测试,设备上电后,处理器自动执行片内BootROM中的代码,初始化CPU和一些外围设备,以便读取烧录在NOR Flash中的BOOT.BIN引导镜像,BOOT.BIN引导镜像加载存储在eMMC上image.ub到DDR3中运行。然后,文件系统中的mystartup.sh脚本启动存储在eMMC中的系统初始化脚本文件,执行系统初始化配置。PetaLinux系统部分启动信息如图3所示。

图3(a)为PL部分扩展的AXI UART Lite模块注册加载信息,在Linux下作为标准串口分别对应设备文件描述符ttyUL1、ttyUL2及ttyUL3。图3(b)为内存技术设备(Memory Technology Device,MTD)驱动加载信息,MTD是用于访问存储介质的Linux的子系统,此处表示NOR Flash存储器,共创建了boot、bootenv、kernel以及spare 4个MTD子分区,其中spare分区为空闲分区,可用于烧录设备唯一序列号。图3(c)为GSM模块USB接口连接检测信息及网口芯片启动状态信息,其中GSM模块对应Linux系统下的设备文件描述符ttyUSB0、ttyUSB1、ttyUSB2、ttyUSB3及ttyUSB4。

5 结论

本文实现一种面向自动化监测系统的BSP设计方法,并完成了面向小型微型自动化监测系统的BSP设计与实践。用于评测BSP功能及性能的硬件平台选用Xilinx Zynq XC7Z010芯片作为硬件系统主控制器,BSP部分针对自动化监测系统应具备的基本功能在嵌入式Linux系统中添加了相应的设备驱动,可充分满足工业监测领域的业务需求。实际测试结果表明,该BSP具有开发便捷、通用性强、便于进行功能扩展和Linux内核升级、运行稳定等特点,验证了基于Zynq-7000的自动化监测系统BSP设计的可行性与正确性,对于工业自动化系统的BSP设计与实现有一定的参考价值和实际指导意义。由于自动化监测系统的功能日益复杂,该BSP设计仍需在实践中不断进行完善。
编辑:hfy

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

    关注

    88

    文章

    11854

    浏览量

    219828
  • 监测系统
    +关注

    关注

    8

    文章

    3112

    浏览量

    84709
  • Zynq
    +关注

    关注

    10

    文章

    636

    浏览量

    49631
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    水库安全监测自动化系统:构建智能可靠的监测体系

    水库安全监测是确保水利工程长期稳定运行的重要技术手段。随着物联网与自动化技术的发展,传统的人工观测方式已逐步被自动化系统取代。水库安全监测
    的头像 发表于 05-08 17:21 329次阅读
    水库安全<b class='flag-5'>监测</b><b class='flag-5'>自动化</b><b class='flag-5'>系统</b>:构建智能可靠的<b class='flag-5'>监测</b>体系

    TRACO POWER TBL系列工业电源:自动化应用的理想之选

    TRACO POWER TBL系列工业电源:自动化应用的理想之选 在工业自动化和建筑自动化领域,可靠且高效的电源供应是确保系统稳定运行的关键。TRACO POWER的TBL系列工业电源
    的头像 发表于 04-26 13:50 157次阅读

    通用自动化测试系统:FCT、ATE、ICT、PCBA功能测试

    制造商完成对每一件产品的高效检测和精准判定。为了满足这些需求,通用的自动化测试管理系统应运而生,提供了一个全面的解决方案。系统概述我们的通用测试管理系统(Test Manager)是一
    发表于 04-13 14:54

    五个问题助您应对自动化系统设计中的挑战

    自动化控制系统广泛应用于各类工业领域的工厂自动化场景——从化工厂到工厂生产线。
    的头像 发表于 03-12 10:49 600次阅读

    新西兰服务器运维必备:自动化监控与故障预警实践

    在现代互联网运维中,服务器的稳定运行至关重要。新西兰的服务器运维同样不例外,高效的监控和预警系统能够显著提高运维效率,降低服务中断的风险。本文将探讨如何通过自动化监控与故障预警,实现高效的服务器运维
    的头像 发表于 02-26 14:26 397次阅读

    SICK工业线缆在自动化系统中的应用与选型

    在工业自动化系统中,传感器和执行器的稳定信号传输是系统可靠运行的基础。作为全球领先的传感器与自动化设备供应商,SICK, Inc. 的工业电缆及线束组件被广泛应用于
    的头像 发表于 01-29 17:28 903次阅读

    高频交直流探头在工业自动化与电机控制中的系统化应用

    高频交直流探头在工业自动化中用于精准监测电机和变频器电流,提升控制精度与系统效率。
    的头像 发表于 01-20 09:23 1649次阅读

    沉降仪如何打造无人值守实现自动化监测?

    自动化系统的深度融合,为实现无人值守的远程监测提供了坚实的技术基础。实现自动化的核心在于沉降仪的数字输出能力。以磁致式沉降仪为例,其输出
    的头像 发表于 12-25 15:53 434次阅读
    沉降仪如何打造无人值守实现<b class='flag-5'>自动化</b><b class='flag-5'>监测</b>?

    高压电力综合自动化系统:技术解析与应用实践

    角度解析高压电力综合自动化系统的应用现状、功能特点与实现方法,并探讨其在实际工程中的实践意义。 一、高压电力综合自动化系统的应用背景 高压电
    的头像 发表于 11-17 16:12 1044次阅读
    高压电力综合<b class='flag-5'>自动化</b><b class='flag-5'>系统</b>:技术解析与应用<b class='flag-5'>实践</b>

    小型自动气象站:精细化气象监测的技术革新与应用拓展

    小型自动气象站:精细化气象监测的技术革新与应用拓展 柏峰【BF-QX】随着气象服务向“精细化、精准、智能”升级,传统气象观测站点密度不足
    的头像 发表于 10-23 10:53 1183次阅读
    <b class='flag-5'>小型</b><b class='flag-5'>自动</b>气象站:精细化气象<b class='flag-5'>监测</b>的技术革新与应用拓展

    订单退款自动化接口:高效处理退款流程的技术实现

    高效的订单退款自动化接口,涵盖核心概念、技术实现、代码示例和最佳实践。我们将使用RESTful API作为基础,并以Python示例展示具体实现。 1. 什么是订单退款自动化接口? 订单退款
    的头像 发表于 10-21 10:41 590次阅读
    订单退款<b class='flag-5'>自动化</b>接口:高效处理退款流程的技术实现

    Zynq7100 BSP移植,MSH终端不能正确显示是为什么?

    由于新版本的RT Thread的BSP不再提供Zynq7000的支持。所以同事从RT Thread(4.0.3)中的Zynq7000移植了一份Zynq 7100的
    发表于 09-19 06:26

    SaltStack自动化部署实践

    今天,我想和大家分享一个真实的案例:我们团队如何通过SaltStack将原本需要3天的部署时间缩短到30分钟,并且实现了零失误率。这不是魔法,而是自动化运维的力量。
    的头像 发表于 09-17 16:18 860次阅读

    多参数微型水质监测微型水质监测站微站地表水地下水水质监测

    微型水质检测站”是指一种小型化、集成化、智能的水质在线监测设备或系统。它相较于传统的大型固定式水质
    的头像 发表于 08-07 17:33 644次阅读

    基坑智能监测系统方案 自动化监测与云平台一体 全方位保障基建安全的科技解决方案

    基坑智能监测系统方案 自动化监测与云平台一体 全方位保障基建安全的科技解决方案 监测系统意义: 
    的头像 发表于 07-09 10:51 748次阅读
    基坑智能<b class='flag-5'>监测</b><b class='flag-5'>系统</b>方案 <b class='flag-5'>自动化</b><b class='flag-5'>监测</b>与云平台一体 全方位保障基建安全的科技解决方案