基于Zynq7000面向小型微型自动化监测系统的BSP设计与实践.docx
- 文档编号:484457
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:10
- 大小:623.35KB
基于Zynq7000面向小型微型自动化监测系统的BSP设计与实践.docx
《基于Zynq7000面向小型微型自动化监测系统的BSP设计与实践.docx》由会员分享,可在线阅读,更多相关《基于Zynq7000面向小型微型自动化监测系统的BSP设计与实践.docx(10页珍藏版)》请在冰豆网上搜索。
基于Zynq7000面向小型微型自动化监测系统的BSP设计与实践
基于Zynq-7000面向小型微型自动化监测系统的BSP设计与实践
实现一种基于Zynq-7000全可编程片上系统(APSoC)的板级支持包(BSP)设计方法及应用流程。
该BSP设计主要面向工业自动化监测领域,提供了一种行之有效的嵌入式系统BSP实现流程,有利于提高工业自动化监测系统的开发效率。
针对使用串行通信方式的工业监测设备,设计面向小型自动化监测系统的FPGA工程,并使用专门针对基于FPGA的片上系统而设计的PetaLinx工具构建嵌入式Linux系统。
最后通过自行研制的基于ZynqXC7Z010系列型号芯片的硬件平台验证了BSP设计的正确性及稳定性。
0引言
物联网及嵌入式技术的发展推动了信息化与工业化的快速融合。
作为一种新型产业模式,工业物联网(IndustrialInternetofThings,IIoT)在过去几年的研究和实践中受到很大关注[1-2]。
IIoT的迅速发展使得自动化监测系统的设计与研发成为新的科技热点。
IIoT将传感器网络与自动化系统相结合,已被用于多个行业,以提高生产力和安全性[3-4]。
自动化监测系统在IIoT感知层与应用层间起着重要作用,随着涉及的业务需求日益复杂,它的实现也变得越来越具挑战性。
在工业应用场景中软件体系结构设计对于自动化系统的高效运行非常重要。
先进的软件工程解决方案对自动化系统设计的效率影响很大[5]。
XilinxZynqAPSoC通过集成处理器的软件可编程性与FPGA的硬件可编程性,实现了优异的设计灵活性,可提供面向嵌入式领域可重配置的软件工程解决方案,从而加速生产力。
BSP在嵌入式系统中扮演着关键角色,主要用来适配特定类型的硬件平台。
它通常包含了用来配置可定制电路的硬件比特流、引导加载操作系统的基础支持代码以及主板上所有设备的驱动程序。
BSP开发目的在于屏蔽底层硬件,提供操作系统与硬件驱动,使操作系统能稳定运行于主板环境[6-7]。
由于传统BSP设计存在不可或不易修改、难以复用以及设计流程复杂等问题,本文面向工业监测领域中的自动化系统,采用Xilinx提供的Vivado集成开发套件及用于构建和部署嵌入式系统到Xilinx全可编程处理器平台的PetaLinux工具,完成了基于Zynq-7000APSoC的BSP设计与实现。
1BSP总体结构
BSP设计最终生成对应用层提供支撑的镜像文件为BOOT.BIN和image.ub。
BSP的总体架构如图1所示。
BOOT.BIN启动镜像主要负责系统硬件部分配置,用于上电后配置Zynq芯片的处理器系统(ProcessingSystem,PS)及可编程逻辑(ProgrammableLogic,PL),并为Linux操作系统准备运行环境。
image.ub支持内核升级,功能可裁剪,由PeteLinux工具编译打包生成。
第一阶段引导加载器(FirstStageBootLoader,FSBL)在启动存储区之后运行,启动存储区在ARM核上电启动时自动执行,负责加载FSBL至片上存储器(OnChipMemory,OCM)或在线性Flash存储介质上直接运行。
对于运行在Zynq平台的Linux系统而言,第二阶段引导加载器(SecondStageBootLoader,SSBL)即为通用引导加载器(UniversalBootLoader,U-Boot)。
Xilinx提供了用于适配不同系列Zynq主板的U-Boot。
基于Zynq-7000APSoC的BSP各个组成部分对应的功能说明如下:
(1)FSBL。
FSBL负责初始化ZynqAPSoCPS端资源并使用硬件比特流文件配置PL端资源。
(2)硬件比特流。
硬件比特流由Vivado集成开发工具构建的FPGA系统生成,包含FPGA编程信息,用于配置FPGA器件。
(3)SSBL。
SSBL负责初始化内存和必要的外设资源,设置Linux内核的启动参数以及加载Linux系统到内存中运行。
(4)Linux内核镜像。
Linux内核镜像是Linux操作系统的核心,提供硬件抽象层、进程及内存管理、磁盘与文件系统控制等功能。
(5)根文件系统。
根文件系统基于BusyBox源码构建,负责管理Linux系统启动及运行时所必需的目录和关键性文件。
(6)设备树。
设备树文件用于描述部分硬件信息并在Linux系统加载设备驱动时传递配置参数。
2FPGA工程设计
传统工业监测设备中很多是符合RS232、RS422或RS485等串行数据通信标准的设备。
对于自动化监测系统而言,如何面向这些监测设备提供可重配置的接口,成为一个需要解决的关键问题。
许多传统工业设备所提供的功能在出厂时便已在固件中完成烧录定义,无法面向新的业务需求进行修改或扩展。
然而,对于许多应用场景,固定功能的硬件会因为难以进行资源复用而导致成本提升。
FPGA器件因为具有动态可重构的特性,被认为是数字可演化硬件系统一个很好的平台[8]。
Xilinx使用硅片堆叠技术设计出了高容量的FPGA,用于满足低功耗、低延时及高带宽的应用需求。
2.1工程构建
在进行FPGA系统设计时往往需要重用已有的功能模块,于是类似于软件开发库文件的IP核应运而生。
IP核通常是预先设计好的电路功能模块,主要被用于ASIC或FPGA系统。
Xilinx提供了可连接到高级可扩展接口(AdvancedeXtensibleInterface,AXI)的通用异步收发器(UniversalAsynchronousReceiver/Transmitter,UART)Lite。
每一个AXIUARTLiteIP核都可以实际对应一个串行通信接口,为工业监测设备接入自动化监测系统提供支持。
AXIUARTLiteIP核可以为异步串行数据传输提供控制器接口。
它的设计目的在于和AXI4-Lite协议实现连接。
AXIUARTLite的主要性能和优势[9]如下:
(1)基于AXI4-Lite规格的AXI接口;
(2)一个发送通道和一个接收通道(全双工);
(3)16个字符的发送和接收先进先出队列(FirstInputFirstOutput,FIFO);
(4)单个字符的数据比特位(5~8)数量可配置;
(5)校验位(奇偶或无)可配置;
(6)波特率可配置。
Xilinx提供了Zynq7处理器系统IP封装,用于加速嵌入式系统的设计与配置。
在Vivado集成开发环境中搭建基于Zynq-7000的小型自动化监测系统FPGA工程,工程结构如图2所示。
工程中添加了ZYNQ7处理器系统模块、3个AXIUARTLite模块以及AXI互联模块等IP核,AXIInterconnectIP负责将一个或多个AXI存储器映射的主器件连接到一个或多个存储器映射的从器件。
在进行FPGA系统设计时还预留了部分GPIO接口资源,方便对系统功能进行扩展。
2.2资源配置
2.2.1PS端资源配置
2.2.2PL端资源配置
Zynq中的PL主要用于扩展功能。
通过使用多个特殊引脚和信号,可以将Zynq-7000内的PS和PL紧密或松散地耦合在一起[10]。
XC7Z010主芯片包含用于连接外设和某些特殊功能引脚的IO接口资源。
特殊引脚最主要用于实现复位、状态指示、系统配置、模式配置等功能,通过特定引脚和功能复用引脚来实现。
XC7Z010的主要特殊引脚的配置说明如表2所示。
3PetaLinux工程设计
使用PetaLinux工具构建基于ZynqAPSoC的嵌入式Linux操作系统。
PetaLinux工具包括定制的BSP生成工具、Linux配置工具以及软件开发工具。
使用这些工具可以实现引导加载程序、Linux内核以及Linux应用程序的灵活配置,有利于开发者在Xilinx处理系统上定制、构建和调配嵌入式Linux解决方案。
3.1系统顶层配置
基于Zynq工程模板创建PetaLinux工程,导入固件工程生成的硬件描述文件并进行系统顶层配置,系统顶层配置项包括Linux组件选择、自动配置项设置、子系统硬件自动配置项设置、内核引导参数设置、U-Boot设置、镜像文件打包配置等。
其中子系统硬件自动配置项设置为必选项,允许自定义系统范围的硬件设置,如:
以太网卡设置、Flash设置、串口设置、实时时钟(Real-TimeClock,RTC)芯片设置、SD卡设置等。
Petalinux工具将根据系统顶层配置解析硬件描述文件,以便更新设备树所需的硬件信息。
3.2Linux内核配置
Linux内核主要提供五大功能,分别为虚拟文件系统、网络服务、内存管理、进程管理和设备管理。
Xilinx提供了免费的PetaLinux开发工具,使开发人员可以轻松在ZynqAPSoC上配置、构建和部署Linux系统及应用,提高软硬件设计开发效率。
Linux内核配置基于Linux4.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>;
};
};
≥m0{
compatible="cdns,zynq-gem","cdns,gem";
status="okay";
phy-mode="rgmii-id";
xlnx,ptp-enet-clock=<0x69f6bcb>;
local-mac-address=[000a35001e53];
};
4BSP总体测试
在基于XC7Z010的硬件平台中对BSP进行总体测试,设备上电后,处理器自动执行片内BootROM中的代码,初始化CPU和一些外围设备,以便读取烧录在NORFlash中的BOOT.BIN引导镜像,BOOT.BIN引导镜像加载存储在eMMC上image.ub到DDR3中运行。
然后,文件系统中的mystartup.sh脚本启动存储在eMMC中的系统初始化脚本文件,执行系统初始化配置。
PetaLinux系统部分启动信息如图3所示。
图3(a)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Zynq7000 面向 小型 微型 自动化 监测 系统 BSP 设计 实践