Zynq7000启动流程介绍

合集下载

Xilinx All Programmable SoC Zynq7000 总结(2)PPT课件

Xilinx All Programmable SoC  Zynq7000 总结(2)PPT课件

Zc702定制IP的设计流程
基于产生的IP模板,需要修改处理器外设定义MPD文件、IP RTL 文件 led_ip.hdl 和user_logic.v
MPD在pcores\lcd_ip_v1_00_a\data子目录
led_ip.hdl在 pcores\lcd_ip_v1_00_a\hdl\vhdl子目录
6
创建LED_IP
Zc702定制IP的设计流程
Create Peripheral-(Optional)Peripheral Simulation Support界面,用默认配置,Next 出现如下图所示的界面,使用Verilog编辑代码,要选中Verilog instead VHDL 出现如下图所示的Create Peripheral-Congratulations界面,点 “Finish”完成
Language :C OS Platform:Standalone; 选择Create New:empty_application_0_bsp; 选择Empty Application模板。 Finish 。
主要内容
Zynq 7000平台简介 Zc702基本系统的建立和运行 Zc702定制IP的设计流程 基于Zc702的linux3.3系统移植
基于Zc702的 Android2.3系统移植
1
Zc702 定制IP设计
Zc702定制IP的设计流程
目标
介绍定制IP核的设计流程 基于定制IP核应用程序的设计方法
将LED_IP作为外设添加到AXI总线,需要以下几步:
添加和连接LED_IP外设到AXI总线。 使led_ip的用户定义的逻辑端口和外部端口连接。 并给led_ip定制外设分配地址。 在system.ucf中添加PL引脚约束

zynq的启动方式

zynq的启动方式

Zynq-7000AP SOC器件有效利用了片上CPU来帮忙配置。

在没有外部JTAG的情况下,处理系统(PS)与可编程逻辑(PL)都必须依靠PS来完成芯片的初始化配置。

ZYNQ的两种启动模式:从BootROM主动启动,从JTAG被动启动。

ZYNQ的启动配置分多级进行的。

配置至少需要两步,但通常按如下三个阶段进行:阶段0:该阶段简称为BootROM,控制着整个芯片的初始化过程。

放在BootROM中的代码是固化的,不可修改的,处理器核在上电或者热启动时自动执行这部分代码。

阶段1:该阶段的启动加载器(FSBL)也可以由用户代码控制。

阶段2:这阶段通常可以是用户的PS端的设计代码,当然也可以是第二阶段的启动加载器(SSBL),这个阶段可以完全由用户控制,是可选的。

ZYNQ外部启动条件:1、电源要求:在阶段0 BootROM状态时,PS与PL的电源要求如表所示:在阶段1 FSBL时,PS与PL都是必须上电的,因为PL将在这个阶段进行配置,而PS将负责配置的过程。

2、时钟要求:必须满足时钟3、复位要求:主要有两个外部复位源将影响BootROM的执行。

(电源复位信号,系统复位信号)4、启动引脚设置:需要配置好引脚才能正确启动平台。

BootROM1、BootROM的作用:上电复位以后,PS端即开始进行配置。

在不使用JTAG的情况下,ARM将在片上的BootROM中开始执行代码。

BootROM中的代码对NAND、NOR、Quad-SPI、SD与PCAP的基本外设控制器进行初始化,使得ARM核可以访问、使用这些外设。

而DDR等其他外设将在阶段1或者之后进行初始化。

BootROM中的代码还负责加载阶段1的启动镜像。

PS的启动源是由外部模式引脚的高低电平来选择的,也就是指BootROM将根据外部配置引脚的设置来从不同的外部存储中加载阶段1的启动镜像,当然也支持在线性Flash 上直接运行。

需要注意的是PL的配置并不在BootROM中完成,BootROM只为配置PL做好准备。

可扩展处理平台Zynq的启动过程

可扩展处理平台Zynq的启动过程

可扩展处理平台Zynq的启动过程
本文主要介绍zynq启动过程,主要包括BootROM和FSBL等的执行过程。

硬件启动过程
重新上电或POR复位后进行硬件启动过程
扫描启动引脚设置,并存入只读寄存器slcr.BOOT_MODE中
若使能pll,则等到pll输出时钟;若旁路pll,则直接使用ps_clk时钟
更详细硬件启动过程可以参考下图
BootROMBootROM在POR复位后经过硬件启动后自动运行,也可在非POR复位后直接运行(不经过硬件启动),其内容固化在内部ROM中,不能修改,主要初始化MMU和一些系统资源(以使其满足BootROM执行的要求)以及加载FSBL程序段等。

BootROM 在CPU 0执行,而CPU 1执行WFE指令
主要过程如下:
硬件启动后BootROM将初始化MMU、NAND、NOR、QSPI、SD和PCAP等基本外设判断启动设备(决定于硬件启动过程时扫描的启动模式引脚,即寄存器slcr.BOOT_MODE)并搜索boot镜像头信息,各启动模式搜索范围:
Quad-SPI,头16 MB空间搜索
NAND,头128MB空间搜索
NOR,头32MB
SD卡中只加载一次,不会搜索
BootROM会根据启动模式配置MIO,还会根据读取的boot镜像头信息的寄存器初始化参数部分配置时间优化寄存器
从指定启动设备中加载SFBL到OCM(加载时也会读取头部信息确定加密状态,文件长度等,若加密则还需解密后加载到OCM,BootROM头信息都不会加密),另外还支持直接在QSPI或NOR中执行(从头部信息中文件长度为0时,这时就不用加载到OCM了)。

XilinxZYNQ-7000平台简介

XilinxZYNQ-7000平台简介

XilinxZYNQ-7000平台简介平台介绍Zynq7000是赛灵思公司(Xilinx)推出的⾏业第⼀个可扩展处理平台Zynq系列。

旨在为视频监视、汽车驾驶员辅助以及⼯⼚⾃动化等⾼端嵌⼊式应⽤提供所需的处理与计算性能⽔平。

在2010年4⽉硅⾕举⾏的嵌⼊式系统⼤会上,赛灵思发布了可扩展处理平台的架构详情,这款基于⽆处不在的ARM处理器的SoC可满⾜复杂嵌⼊式系统的⾼性能、低功耗和多核处理能⼒要求。

赛灵思可扩展处理平台芯⽚硬件的核⼼本质就是将通⽤基础双ARMCortex-A9MPCore 处理器系统作为“主系统”,结合低功耗28nm⼯艺技术,以实现⾼度的灵活性、强⼤的配置功能和⾼性能。

由于该新型器件的可编程逻辑部分基于赛灵思28nm7系列FPGA,因此该系列产品的名称中添加了“7000”,以保持与7系列FPGA的⼀致性,同时也⽅便⽇后本系列新产品的命名。

Zynq-7000系列的可编程逻辑完全基于赛灵思7系列FPGA架构来设计,可确保28nm系列器件的IP核、⼯具和性能100%兼容。

最⼩型的Zynq-7000、Zynq-7010和Zynq-7020均基于专门针对低成本和低功耗优化的Artix-7系列;较⼤型的Zynq-7030和Zynq-7040器件基于包括4⾄12个10.3Gbps收发器通道,可⽀持⾼速⽚外连接的中端Kintex-7系列。

所有四款产品均采⽤基于2个12位1MspsADC(模数转换器)模块的新型模拟混合信号模块。

Zynq®-7000 SoC 系列集成 ARM® 处理器的软件可编程性与 FPGA 的硬件可编程性,不仅可实现重要分析与硬件加速,同时还在单个器件上⾼度集成 CPU、DSP、ASSP 以及混合信号功能。

Zynq-7000 系列包括单核 Zynq-7000S 器件和双核 Zynq-7000 器件,是单位功耗性价⽐最⾼的全⾯可扩展的 SoC 平台,可充分满⾜您的独特应⽤需求。

ZYNQ7000开发平台用户手册说明书

ZYNQ7000开发平台用户手册说明书

文档版本控制目录文档版本控制 (2)一、开发板简介 (6)二、AC7Z020核心板 (8)(一)简介 (8)(二)ZYNQ芯片 (9)(三)DDR3 DRAM (11)(四)QSPI Flash (14)(五)时钟配置 (16)(六)电源 (17)(七)结构图 (18)(八)连接器管脚定义 (19)三、扩展板 (23)(一)简介 (23)(二)CAN通信接口 (24)(三)485通信接口 (24)(四)千兆以太网接口 (25)(五)USB2.0 Host接口 (27)(六)USB转串口 (28)(七)AD输入接口 (29)(八)HDMI输出接口 (30)(九)MIPI摄像头接口(仅AX7Z020使用) (32)(十)SD卡槽 (33)(十一)EEPROM (34)(十二)实时时钟 (34)(十三)温度传感器 (35)(十四)JTAG接口 (36)(十五)用户LED灯 (36)(十六)用户按键 (37)(十七)扩展口 (38)(十八)供电电源 (40)(十九)底板结构图 (41)芯驿电子科技(上海)有限公司 基于XILINX ZYNQ7000开发平台的开发板(型号: AX7Z020B )2022款正式发布了,为了让您对此开发平台可以快速了解,我们编写了此用户手册。

这款ZYNQ7000 FPGA 开发平台采用核心板加扩展板的模式,方便用户对核心板的二次开发利用。

核心板使用XILINX 的Zynq7000 SOC 芯片的解决方案,它采用ARM+FPGA SOC 技术将双核ARM Cortex-A9 和FPGA 可编程逻辑集成在一颗芯片上。

另外核心板上含有2片共512MB 高速DDR3 SDRAM 芯片和1片256Mb 的QSPI FLASH 芯片。

在底板设计上我们为用户扩展了丰富的外围接口,比如2路CAN 通信接口,2路485通信接口,2路XADC 输入接口, 1路千兆以太网接口,1路USB2.0 HOST 接口,1路HDMI输出接口,Uart 通信接口,SD 卡座,40针扩展接口等等。

AUMO ALINX ZYNQ-7000产品手册说明书

AUMO ALINX ZYNQ-7000产品手册说明书

ZYNQ-7000产品手册ZYNQ-7000 Product Guide2023关于我们官方合作伙伴业务范围芯驿电子科技(上海)有限公司,成立于2012年,总部位于上海松江临港科技城,是一家车载智能产品和FPGA 技术方案公司,拥有“AUMO”和“ALINX”两大品牌,其中AUMO 品牌专注车载智能产品,ALINX 品牌专注于FPGA 产品和方案定制。

经历十年发展,公司产品已经远销海外30多个国家。

2018年,公司通过高新技术企业认证,并通过ISO9001质量体系认证;2019年,荣获上海市松江区九亭镇“科技创新奖”;2020年,荣获上海市“专精特新企业“称号;2021年,申请通过上海市科技型中小企业技术创新资金项目,通过了国家级科技型中小企业认定,并通过了高新技术企业认证复审;2022年获得上海市张江国家自主创新示范区专项发展资金并通过“上海市创新型中小企业”认证。

ALINX 是全球的FPGA 芯片龙头企业XILINX 官方合作伙伴,国内FPGA 芯片龙头企业紫光同创官方合作伙伴,同时作为百度AI 合作伙伴,为百度定制了国产AI飞桨系统的Edgeboard 系列边缘设备。

通过多年的研发投入,已经推出100多款FPGA SoM 模组和配套板卡,积累了1000多家企业批量用户,上万个独立开发者,市场占有率遥遥领先。

通过产品+定制化服务的经营方式,ALINX 将继续加大对产品研发和技术研究的投入,不断与垂直行业客户合作,聚焦高端设备领域,协助客户解决行业的技术难题。

主要聚焦于FPGA + AI 解决方案,FPGA 国产化,FPGA 开发套件, ALINX 自有品牌产品。

公司提供的设计解决方案涉及人工智能、自动驾驶、轨道交通、半导体、5G 通信、医疗设备、工业互联、仪器仪表、数据中心、机器视觉、视频图像处理等行业。

紫光同创国内唯一的FPGA 板卡官方合作伙伴,XILINX 官方重要合作伙伴,百度AI合作伙伴。

ZYNQMPSoc的启动过程

ZYNQMPSoc的启动过程

ZYNQMPSoc的启动过程ZYNQ启动是由ARM引导FPGA,以及用户程序的加载。

预配置阶段Pre-configuration stage1. 通过上电复位(POR),将PMU(平台管理单元/Platform Management Unit)从复位状态唤醒,提供如下操作:o复位低压域LPD寄存器o复位全电源域FPD寄存器o复位PMU的RAMo复位PMU处理器的TLB内存o检查LPD、AUX、专用IO等区域电压o复位CSU、LPD、FPD的内存区2.执行PMU ROM中的预启动代码,以执行复位操作(包括配置安全单元CSU)复位),该阶段结束的标志是CSU复位的释放。

预启动代码进行的初始化操作:•初始化PS Sysmon单元和启动所需要的PLL•清除PMU RAM 和 CSU RAM区域•验证PLL锁•利用PS Sysmon验证LPD、AUX、I/O的范围•清除低压域(LPD)和全电源域(FPD)配置阶段Configuration stageCSU复位后,初始化OC-RAM,将FBSL加载到OC-RAM(on-chip RAM),CSU加载PMU用户固件(PMU FW:firmware)到PMU RAM,若没有则不加载。

在ZYNQ上运行程序的时候,Boot Rom直接固化在硬件中,开发者无法修改。

FSBL(first stage boot loader)是第一阶段的加载程序,经过这个阶段,后面系统才能够运行裸奔程序或者是引导操作系统的u-boot。

用户可以选择用cortex-a53制作启动的FSBL文件,也可以选择用cortex-r5来制作启动的FSBL文件。

处理器开始执行FSBL代码。

FSBL(first-stage boot loader)的作用如下: 1.初始化PS端配置,如:MIO、PLL、DDR、QSPI、SD等。

2.加载PL端程序,即:加载bitstream 3.搬运用户程序到DDR,并跳转执行。

Xilinx ZYNQ7000系列安全配置策略

Xilinx ZYNQ7000系列安全配置策略

Xilinx ZYNQ7000系列安全配置策略ZYNQ7000与传统FPGA有着巨大的差异,它将自己定位为一款All Programmable Soc(软硬件可编程片上系统),视其为以FPGA作为外设的双核ARM A9处理器更加准切。

它的启动过程体现了以处理器为核心这一特点,以往植入处理器硬核的FPGA的启动过程是先启动逻辑部分,再启动处理器,ZYNQ7000相反,先启动处理器再启动逻辑部分。

一、ZYNQ7000配置过程ZYNQ7000的配置按先后顺序分为3个阶段:stage0、stage1、stage2(可选)。

表3图1图2图3(UG821)二、ZYNQ7000安全策略ZYNQ7000提供诸多安全防范模块供客户调用,根据模块的特性可以分为被动和主动两类,被动模块主要包括多种加密、认证策略,主动模块包括JTAG关闭、温度电压监测、代码一致性检测、特异性检测(器件DNA)等,表4详细地列出这些部件,客户可根据设计需要调用。

表4:主被动防护模块主被动模块相互配合完成工程的安全设计,以下对常用的部分安全策略进行简介。

(1)、RSA用户认证:在某些情况下,设备对程序来源的合法性有很高要求:必须由合法的组织提供的程序才能启动设备,以确保设备工作在设定的情景中,任何非法程序或对合法程序的篡改将无法让设备工作。

Xilinx Z7芯片提供的RSA用户认证功能即是为了满足对程序进行合法性认证而引入的。

RSA是一种非对称加密技术,将其与数字签名技术配合使用,就能对相关数据的合法性进行认证。

Xilinx采用2组公私钥,1组固定,1组可替换,由此来确保更高的安全性。

固定的1组称为PPK/PSK(primary public key/primary secret key),替换组为SPK/SSK(secondary public key/secondary secret key)。

需要做认证的数据在其后加入1段认证代码,其包括:PPK,SPK,PSK加密SPK后得到的SPK 签名,SHA-256摘要算法对FSBL做摘要,得到的摘要用SSK进行加密获得签名,此签名也存放到认证代码,因此,认证代码包含上述4块数据。

Zynq启动流程

Zynq启动流程

Zynq启动流程前⾔Zynq启动流程和ARM处理器类似,PS部分是启动和配置过程的主设备,芯⽚引导必须由处理器驱动,系统上电复位后会读取设备模式引脚来决定从什么设备启动芯⽚。

如下表Boot Devices条⽬所⽰,其中黄⾊代表该条⽬下的默认设置,⽐如Boot Devices默认设置是SD Card,默认从SD卡启动芯⽚下图中的JP7-JP11的5个条线帽就是⽤于设置设备模式引脚电平的启动步骤PS确定好从什么设备启动后,接着的启动过程分为以下三个阶段0. Stage-0 执⾏BootROM代码,不可修改1. Stage-1 执⾏FSBL(first boot loader)代码,⽤户可修改。

如果是裸机程序也可以不需要这个阶段直接跳到下⼀阶段。

2. Stage-2 执⾏⽤户裸机程序或者操作系统的启动引导程序SSBL(second boot loader)关于BootROM:位于Zynq⽚内,功能是初始化L1 cache和基本的总线系统,以及从指定的外部存储器加载Stage-1的FSBL代码到⽚内存储器(OCM)。

但是要使Stage-0之后的代码被Stage-0的BootROM识别,还需要为Stage-0之后的代码(可能是Stage-1的FSBL,也可能是Stage-2的裸机程序,因为没有调⽤BSP函数的裸机程序是可以不需要FSBL的)添加⼀个头部,制作成引导镜像。

可以使⽤SDK的BootGen⼯具为裸机程序elf⽂件创建引导镜像Boot.bin,将其复制到SD卡中,并且设置板⼦从SD卡启动就可以执⾏程序。

使⽤SDK⼯具创建SD卡启动镜像BOOT.BIN= f(FSBL.elf+PL.bit+PS.elf)PL.b it和PS.e lf采⽤中⽣成的PL.bit和PS.elf。

制作F SB L.e lf 新建Zynq FSBL⼯程等待⼯程建⽴完毕,FSBL.elf就在⼯程⽂件夹的Debug⽂件夹下制作B OOT.B I N使⽤SDK的Create Boot Image选择好output路径放置⽣成的BOOT.BIN和output.bif。

详细解读Zynq的三种启动方式(JTAG,SD,QSPI)

详细解读Zynq的三种启动方式(JTAG,SD,QSPI)

详细解读Zynq的三种启动方式(JTAG,SD,QSPI)本文介绍zynq上三种方式启动文件的生成和注意事项,包括只用片上RAM (OCM)和使用DDR3两种情况。

JTAG方式JTAG方式是调试中最常用的方式,在SDK中在Project Explorer窗口工程上右键-Debug As-Debug ConfiguraTIons可以看到以下窗口首次打开左边窗口中Xilinx C/C++ applicaTIon(GDB)下没有子项,这时双击Xilinx C/C++ applicaTIon(GDB)即可新建一个调试;这时右边窗口会自动填充如上图,若没有则手动填入;在右边ApplicaTIon窗口指定要下载调试的.elf文件;在右边STDIO Connection可以指定标准输入输出串口,即printf打印串口,若这里选择开发板上uart的com口,则调试时printf的信息打印到调试时Console窗口,同时也可从Console窗口输入数据,以此将数据通过串口发送到开发板上以上设置完成后点击Debug即可开始调试;若以上在Project Explorer窗口工程上右键-Run As-Run Configurations;配置与此类似,最后点击run即可开始运行,只是不是调试而是直接上板运行。

只用OCM只用OCM指不使用DDR3的方式,与使用DDR3的方式略有不同。

这里不用FSBL来加载PL部分的.bit文件和第二阶段启动程序(裸机程序),而直接用BootROM加载裸机程序到OCM,即将裸机程序当做FSBL来运行,当然还要以下处理才可以:包含进头文件:#include ps7_init.h在裸机程序main函数开始处调用:ps7_init()从design_1_wrapper_hw_platform_1目录复制ps7_init.c和ps7_init.h文件到裸机程序所在的src目录中注意:这里样调用ps7_init()只适用于只用OCM的情况,经测试打开DDR3后再这样调用会在ps7_init()中初始化失败,调试发现在初始化PLL时失败(原因未知)。

zynq7000 linux开发流程

zynq7000 linux开发流程

zynq7000 linux开发流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!Zynq7000芯片的Linux开发流程详解Zynq7000系列是Xilinx公司推出的一种基于ARM Cortex-A9双核处理器的可编程系统芯片(System on Chip, SoC),集成了处理系统和可编程逻辑两大部分。

Zynq7000从零开始之一

Zynq7000从零开始之一

Zynq7000从零开始之一使用myir的z-turn开发板,做一个从uart打印hello world的实验,只用PS,不用PL部分,程序从SD卡启动,跑在PS的内部RAM.zynq 7000的PS虽然也是CPU,但是开发方法不像普通的CPU 只需要一个SDK就可以了,它还需要vivado硬件设计软件.所以ZYNQ 7000的PS开发需要两个工具,一个是vivado-- 另一个是SDK-- .1. 打开vivado软件-->Create New Project,工程名和目录:2. next->选RTL Project->Add Sources,Add existing IP和Add constraints界面直接点next3. New Parts界面4. 添加IP,在Flow Navigator的IP Integrator下点Create Block DesignCreate Block Design如下,点OK在Diagram界面点击Add IP双击ZYNQ7 Processing System,添加CPU5. 设置CPU在Diagram界面点击Run Block Automation,不做修改,点Finish就可以。

在Diagram界面双击进入设置界面,我们把所有的接口去掉,只留下FIXED_IO.1> PS-PL Configuration->General->Enable Clock Resets->去掉FCLK_RESET0_N2> PS-PL Configuration->GP Master AXI Interface->去掉 MAXI GP0 interface3> Clock Configuration->PL Fabric Clocks->去掉FCLK_CLK04> DDR Congiguration->去掉Enable DDR5> 设置SD和UART引脚MIO Configuration->Bank1 IO Voltage选LVCMOS 1.8V.MIO Configuration->IO Peripherals->选上SD 0, SD 0的引脚配置:MIO Configuration->IO Peripherals->选上UART 1, UARRT 1的引脚配置:6. 点击OK返回Diagram界面, 把DDR接口删掉,配置之后的界面7. 生成设计文件右击system项->Generate Output Products->直接点Generate, 之后会提示文件生成成功.右击system项->Create HDL Wrapper选下面一项,点OK注意:如果重新修改了CPU配置,上面两个步骤一定要重新实行。

XilinxVivadozynq7000入门笔记-图文

XilinxVivadozynq7000入门笔记-图文

XilinxVivadozynq7000入门笔记-图文IPIntegratorflow1.创建RTL工程2.创建IPIntegratorBlockDeign3.添加zynq处理器ip中搜索zynq,添加zynq7ProceingSytem,其中的BFM版本为先前的IP处理器版本。

鼠标右键点击FI某ED_IO和DDR接口,选择makee某ternal,连接到芯片外部。

但此时处理是完全未经过配置的,双击处理器进行配置。

自动添加的外部接口:(参考ug585文档)FI某ED_IO,是专用的内部固化的外设IO,作用?54个MIO口,DDR_VRN,DDR_VRP:DDRDCIvoltagereferencepin,refertoUG933,Zynq-7000APSoCPCBDeignandPinPlanningGuide.PS_SRSTB:Debugytemreet,activeLow.Forcetheytemtoenterareetequ ence.PS_CLK:SytemreferenceclockPS_PORB:Poweronreet,activelowDDR接口,处理器ddr内存寻址接口;M_A某I_GP0_ACLK,M_A某I_GP0,在PS-PLConfiguration中可取消对GPMaterA某ITnterface的选择FCLK_CLK0:PLPabricClock,不使用可在ClockConfiguration中diable。

FCLK_RESET0_N:时钟复位使能,可在General中diable4.配置proceingSytem,通用配置:(1)MIO配置:Bank0与Bank1分区的IO对应FPGA处理器可配置的IO,由硬件决定电平还是芯片已经指定电平?由硬件决定。

UART1映射到MIO[48:49]zedboardBank0IOVoltage:LVCMOS3.3VzedboardBank1IOVoltage:LVCMOS1.8VzedboardPS与PL电源部分是完全独立,但是无论什么时候有PL电源供电就必须有PS电源供电。

Xilinxzynq-7000系列FPGA移植Linux操作系统详细教程

Xilinxzynq-7000系列FPGA移植Linux操作系统详细教程

Xilinxzynq-7000系列FPGA移植Linux操作系统详细教程Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程⼀:前⾔最近⼿上压了⼀块⽶联客的Miz7035,⼀块xilinx zynq-7000系列的开发板,想着正好学习⼀下linux在ARM9上的移植,⽹上基本都是ZC702、zed的教程,这对于买了⾮标准板的⼈来说就不太友好,很多⽂件都不知道是怎么⽣成的。

本着学习加分享的⼼态,把这两天移植linux的过程写下来,尽可能详细。

驱动和系统移植不是我的专长,很多地⽅我也是知其然不知其所以然,写得不对的地⽅欢迎指正。

⼆:前期准备1、⼀台安装好linux系统的主机,我安装的是centos7.2.2、⼀块zynq-7000系列的FPGA开发板,我⼿上的是⽶联客miz7035,其他zynq系列⼀样通⽤。

3、vivado开发环境,我安装的2018.2版本三:操作步骤1.设置交叉编译环境因为最终运⾏在arm9上,所以uboot、内核,⽂件系统编译都需要⽤arm-linux交叉编译⼯具,zynq2000使⽤的是arm-linux-gnueabihf,交叉编译⼯具可以从⽹上单独下载,也可直接使⽤vivado⾃带的交叉编译⼯具。

使⽤⽅法也很简单source /opt/Xilinx/SDK/2018.2/settings64.sh或者gedit /opt/Xilinx/SDK/2018.2/.settings64-SDK_Core_Tools.sh将该⽂件中的内容全部复制到bashrc,更新环境变量,这样在新的终端中打开,环境变量也不会消失。

2.u-boot编译进⼊u-boot⽂件夹,make distclean //清除配置⽂件和编译中间结果make CROSS_COMPILE=arm-linux-gnueabihf- zynq_mz7x_defconfig //重新配置,⽣成makefile,具体板⼦不⼀样,在U-Boot/configs⽂件夹下make CROSS_COMPILE=arm-linux-gnueabihf- tools //编译开发所需要的⼯具make CROSS_COMPILE=arm-linux-gnueabihf- //编译,完成后⽣成⼀个elf⽂件u-boot,uboot.bin,u-boot.srec等⽂件最后把编译⽣成的u-boot后缀改成.elf,连同u-boot.img和spl/boot.bin,⼀共三个⽂件拷贝出来。

flash启动说明

flash启动说明

背景说明:通过SD卡启动后,在“Miz702 ZYNQ开发教程(裸机部分20160508).pdf”中有提到flash启动,然后此资料中的flash启动说明很简单,只提到demo板上的拨码开关如何处理,以及如何down程序到板子上,可操作性不强;后查询了些资料,在“flash启动资料”中,有说明flash启动的相关资料;这里再对具体操作过程进行说明和总结。

硬件拨码:有6个拨码(1~6),分别对应的是SPI-DQ0、SPI-DQ1、SPI-DQ2、SPI-DQ3、SPI-CLK、LD-MIO(“Zynq-7000 MiZ702 SOC硬件使用手册.pdf”),而这几个脚又分别对应的是MIO2、MIO3、MIO4、MIO5、MIO6、MIO7,再根据“Zynq-7000 MiZ702 SOC硬件使用手册.pdf”,即可看出QSPI启动,需要将MIO5置OFF状态,其他都是ON状态,即拨码4处于OFF 状态;Flash启动的uboot程序生成:在flash启动的时候,BOOT程序也是需要FSBL.elf、system.bit、uboot.elf生成,最终生成的文件名称为BOOT.mcs,同样是使用Xilinx Tool来生成的;然后通过Xilinx Tool->Program flash烧写到板子中,烧写完成后,重新上电,在串口中能看到uboot启动的信息,走到内核处停掉,因为内核程序没有烧写;(可查看“ZYNQ-7000 QSPI Flash和SD 卡启动Linux的方式_零阶简正波”网页资料)Flash启动内核、文件系统:1、首先需要确定内核启动在flash中的基地址,这个通过“linux-digilent-3.6-digilent-13.01\arch\arm\boot\dts\digilent-zed.dts”,查找ps7_qspi_linear_0,查看“reg = < 0xfc000000 0x1000000 >;”,说明flash基地址为0xFC000000;(可查看“设备树历史最详解- Klaus_Wei的专栏- 博客频道- ”网页资料)2、此时,在uboot的“u-boot-digilent-2012.04-digilent-13.01\include\configs”下的zynq_zed.h,“qspiboot”下配置启动地址"qspiboot=echo Copying Linux from QSPI to RAM...;" \"sf probe 0 0 0;" \"sf read 0x8000 0xFC700000 0x270000;" \"sf read 0x1000000 0xFCC00000 0x8000;" \"sf read 0x800000 0xFCC20000 0x400000;" \"go 0x8000\0" \这里的“sf probe 0 0 0”是初始化flash;0x8000地址对应内核的DDR地址;0x1000000地址对应设备树的DDR地址;0x800000地址对应文件系统的DDR地址;0xFC700000地址对应内核在flash地址;0xFCC00000地址对应设备树在flash地址;0xFCC20000地址对应文件系统在flash地址;0x270000是内核文件的大小;sf read 0x8000 0xFC700000 0x270000表示从0xFC700000地址读取0x270000长度的数据到0x8000,即完成从flash导入ddr的操作;重新编译uboot;然后再是生成全包程序,通过Xilinx Tool来生成,需要按顺序加载FSBL.elf、system.bit、uboot.elf、zImage、devicetree.dtb、ramdisk8M.image.gz,其中zImage、devicetree.dtb、ramdisk8M.image.gz在添加的时候,需要加上偏移地址,分别为0x700000、0xC00000、0xC20000;然后生成qspi_image.bin,再通过Xilinx Tool->Program flash烧写到板子中,烧写完成后,重新上电,即可看到系统正常启动;(可查看“zedboard spi flash启动配置流程-guo443193911-ChinaUnix博客”网页资料)这里,为什么偏移地址是0x700000、0xC00000、0xC20000,尚还不清楚,需要将此值改为其他的值再查看下,才知道是否只是按照需要的空间进行修改即可,还是是固定写死的,如果是固定写死的,是在哪里写的;uboot烧写程序:在进入uboot倒数的地方,敲入回车,进入uboot下,通过手动的sf read、sf erase、sf write 来烧写flash,然后再启动,这里我是用tftp命令来下载文件的;(可查看“ZYNQ 7000 MicroZED通过QSPI启动linux内核(不需要SD卡)- 网布的世界- 博客频道- CSDN”网页资料),但是这里通过uboot下下载没有成功,可能和tftp下载文件的存放的地址有关,这个后期再研究;sf probe 0 0 0tftp 0x30100000 BOOT.binsf erase 0xFC000000 0x500000sf write 0x30100000 0xFC000000 0x500000tftp 0x30100000 zImagesf erase 0xFC500000 0x300000sf write 0x30100000 0xFC500000 0x300000tftp 0x30100000 devicetree.dtbsf erase 0xFC800000 0x40000sf write 0x30100000 0xFC800000 0x40000tftp 0x30100000 filesys.jffs2sf erase 0xFC840000 0x500000sf write 0x30100000 0xFC840000 0x500000这里的烧写偏移量要和uboot中的配置参数以及flash的分区配置一致;。

从SD卡启动ZYNQ(裸机)

从SD卡启动ZYNQ(裸机)

从SD卡启动ZYNQ(裸机)从SD卡中启动ZYNQ7020中的linux系统(裸机)看了⼀整的⽂档,就为了从SD卡中启动ZYNQ中的系统,⽹上的资料⼤同⼩异,主要还是⽣成BOOT.bin⽂件(现在先是进⾏裸机的运⾏)。

这个⽂档打算从以下⼏个⽅⾯进⾏说明:⼀、现在将⽹上的⽣成的BOOT.bin⽂件的流程做⼀个总结(或者说是copy过来)⾸先讲⼀下BOOT.bin⽂件的构成:BOOT.bin⽂件=PL部分.bit+FSBL.elf+PS部分.elf⽂件。

(design.bit⽂件就是⽣成的⽐特流⽂件;FSBL.elf⽂件是在Vivado的SDK中⽣成的,下⾯有这部分的介绍;⼯程的.elf⽂件就是在SDK中运⾏程序时建⽴的⽂件)由于上⾯⽤到了FSBL.elf⽂件,所以这⾥要讲解⼀下如何⽣成FSBL.elf⽂件。

打开SDK软件,在菜单栏中依次选择“File——New——Application Project”,出现下⾯的界⾯:,并写⼊FSBL,在Hardware Platform中选择如何圈中的选项(很重要)!再在点击Next,出现如下界⾯,选择zynq FSBL,点击finish,等待编译(⾃动编译)完成即可。

⾄此,FSBL.elf⽂件就已经⽣成完毕了。

将三个⽂件拷贝到⼀个独⽴的⽂件下⾯,为制作BOOT.bin做准备⼯作。

现在制作BOOT.bin所需的⽂件都已经准备完毕了,接下来就来讲解如何利⽤SDK软件来⽣成BOOT.bin⽂件。

步骤如下:依次执⾏xilinx tools---creat biit image,之后出现如下界⾯:在output BIF file path中选择⽣成⽂件的⽬录(这个⽬录可以任意)。

第⼆步,点击add将三个⽂件添加进来。

点击add之后出现如下界⾯,需要注意两点:第⼀点是:三个⽂件的添加顺序必须是FSBL.elf、PL部分.bit、PS部分.elf。

第⼆点是:在添加三个⽂件时FSBL.elf⽂件在下图中的Partitiontype选择bootloader,其余两个⽂件选择datafile。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Zynq7000启动流程介绍
打了半天。

一不小心碰到鼠标后退键,啥都木了。

再来吧
一开始呢,我以为Zynq7000是一个加上了双核A9处理器的FPGA芯片。

但是看了资料后,才发现,其实不是这么回事
Zynq7000就如同他的名字一样,Zynq-7000 Extensible Processing Platform,是一个可扩展处理平台,简单说就是有个FPGA做外设的A9双核处理器。

所以,它的启动流程自然也和FPGA完全不同,而与传统的ARM处理器类似。

Zynq7000支持从多种设备启动,包括Jtag, NAND, parallel NOR, Serial NOR (Quad-SPI), 以及SD卡。

按手册说明除了Jtag之外的启动方式均支持安全启动,使用AES、SHA256加密后的启动代码(不过在勘误里说到,当前硅片版本的无法正常使用secure configuration功能,所以俺就不介绍它鸟)
还是按照时间顺序来介绍下具体流程吧
1.在器件上电运行后,处理器自动开始Stage-0 Boot,也就是执行片内BootROM中的代码
2.BootROM会初始化CPU和一些外设,以便读取下一个启动阶段所需的程序代码,FSBL(First Stage Bootloader)。

不过这又有一个问题了----之前说到,Zynq支持多种启动设备,BootROM怎么知道从哪个启动设备里去加载FSBL?这就得靠几个特殊的MIO引脚来选择了,具体见下图
BootROM会去读取MIO[2..8],从而确定启动设备,将选定设备的头192Kbyte内容,也就是FSBL,复制到OCM中,并将控制器交给FSBL,。

3,FSBL启动时可以使用整块256Kb的OCM,当FSBL开始运行后,器件就正式由咱自己控制了。

Xilinx 提供了一份FSBL代码,如果没什么特殊要求,可以直接使用。

按照手册说明,FSBL应该完成以下几件事。

1). 使用XPS提供的代码,继续初始化PS
2). 将bitstream写入PL(配置FPGA),不过这一步也可以以后再做
3). 将接下来启动用的Second Stage Bootloader(SSBL,一般就是U-Boot一类的东西),或者裸奔程序,复制到内存中
4). 跳到SSBL运行去
4,接下来的步骤就没啥特别了,Uboot开始运行,初始化好Linux启动环境,然后开始运行Linux系统。

初步看资料的收获,如果有啥地方没说对,欢迎指正。

相关文档
最新文档