精华内容
下载资源
问答
  • zynq fsbl 学习笔记

    2017-12-13 11:25:33
    zynq fsbl 学习笔记,主要记录fsbl的生成过程。还有fsbl的流程含义。
  • zynq_fsbl_flash.elf

    2019-05-23 16:20:51
    黑金提供的文件,开源的在这里提供下载也没问题吧,方便看到教程的直接下载。
  • xilinx zynq 7000 FSBL启动分析(一)

    千次阅读 2018-04-19 10:00:53
    花了几天看完了FSBL的代码,在这里做个总结,分析一下zynq的启动过程。 众所周知,xilinx zynq 7000系列的芯片中包括两个部分,PS和PL,也就是FPGA的逻辑编程的部分跟嵌入式ARM的部分,ARM部分是双核的A9处理器。...

      花了几天看完了FSBL的代码,在这里做个总结,分析一下zynq的启动过程。

      众所周知,xilinx zynq 7000系列的芯片中包括两个部分,PS和PL,也就是FPGA的逻辑编程的部分跟嵌入式ARM的部分,ARM部分是双核的A9处理器。关于FPGA的部分在这里就不说了。其实说的简单点,可以吧这个芯片看成一个带有FPGA外设的ARM处理器,下面详细分析一下启动流程。

      所有的芯片都是从0地址启动的,所以首先找到0地址的代码,在..xxxx.sdk\standalone_bsp_0\ps7_cortexa9_0\libsrc\standalone_v5_1\src\asm_vectors.S中的开头也就是0地址的地方有这样得一段代码:
      这里写图片描述
      其中71行B _boot就是一条跳转命令,跳转到_boot的地方继续运行,在boot.s文件中_boot结束的地方有
      这里写图片描述
      这样的代码,跳转到_start的地方,在xil-crt0.s中我们找到了_start的地方
      这里写图片描述

      可以看见最终跳转到了main函数,从这里开始才真正的进入到了FSBL的代码中执行。打开FSBL的main函数,顺便一提我用的版本是2015.2的SDK。

      我们从main函数开始一步一步的分析:

      1. Status = ps7_init();这条语句是初始化cpu,也就是对寄存器进行设置,设置的依据就是从vivado生成的硬件的信息。

      2. GetSiliconVersion();得到PS的版本,我得到的是3.1的版本

      3. BootModeRegister = Xil_In32(BOOT_MODE_REG);得到boot模式,在这里我使用的是qspi的启动模式。

      4.这里写图片描述

      所以会执行上面这段代码,进行初始化QSPI FALSH,在InitQspi()函数中由于我使用的QSPIFLASH是16M的所以LinearBootDeviceFlag就被赋值为1了。

      下面一句QspiAccess函数赋值给MoveImage函数指针,找到QspiAccess函数:
      这里写图片描述

      这个函数的作用是从FLASH的SourceAddress地址开始复制一段长度为LengthBytes的数据到DDR内存中。所以MoveImage也就有了同样的功能。

      5.这里写图片描述
      FlashReadBaseAddress是在InitQspi()函数中赋值的,就是qspi falsh的起始地址为0xFC000000,在zynq7000的数据手册UG585中可以看到。

      6.HandoffAddress = LoadBootImage();这条语句是整个FSBL中最关键的,这个函数主要做两个事情,一个是分析烧录到qspi中的数据的头的部分,其次是根据分析的结果把数据拷贝到DDR中。在这里还要岔开一下,说明一下烧录到QSPI的数据是怎么生成的。

      zynq 7000的启动方式有很多种,其中包括从QSPI FALSH,SDcard,NOR FLASH,NAND FALSH等地方启动,我这里选用QSPI FALSH启动方式为例进行说明,首先要生成.bin文件,然后把这个文件通过SDK烧录到QSPIflash中。那么怎么生成.bin文件呢,一般来说bin文件中包含fsbl代码,FPGA部分生成的代码,在后面就是用户的应用程序了。

      通过SDK中的Create Boot Image工具生成,打开Create Boot Image,
      这里写图片描述
      可以看见其中MY_FSBL.elf就是对应的FSBL,top.bit就是FPGA生成的流文件,HELLO_WORLD.elf跟rsc_ucosii.elf这两个文件都是应用程序,一般来说一个应用程序就可以了,这里我多添加一个是为了更好地演示。这几个文件的顺序是不能变动的。添加完成之后点击Create Image生成.bin文件,在这之后通过sdk带的Programe Flash进行烧录。

      这回先分析到这里,下次对LoadBootImage()进行详细分析。

      展开全文
    • ZYNQ_FSBL学习

      千次阅读 多人点赞 2020-06-28 21:57:30
      zynq内部的BootROM存储有一段在CPU复位后固定执行的代码。称为stage-0启动代码。 这段代码用来配置一个ARM CPU和一些必要外设,从而能从一个启动设备中获取FSBL(first stage boot loader)执行。BootROM是一个ROM,...

      1 FSBL介绍

      1.1 fsbl涉及的启动流程

      • zynq内部的BootROM存储有一段在CPU复位后固定执行的代码。称为stage-0启动代码。
      • 这段代码用来配置一个ARM CPU和一些必要外设,从而能从一个启动设备中获取FSBL(first stage boot loader)执行。BootROM是一个ROM,不可写,PL的配置不是通过BootROM实现的。BootROM不能使用DDR和SCU,因为它们还没有初始化。
      • FSBL通常存储在FLASH中,BootROM从选定的FLASH中拷贝FSBL到片上存储器OCM中执行。FSBL也支持QSPI-EMMC模式,在这种情况下,我们可以把FSBL放在QSPI-FLASH中,把镜像文件其它较大的部分放在EMMC FLASH中。
      • 下图描述了BootROM读取FSBL到OCM中的流程:ARM上电后执行BootROM,发现有合法镜像(BOOT.BIN)后判断是否要在FLASH中执行(利用XIP技术就不用把代码读到RAM中了,NOR FLASH支持),若没有合法镜像则到下一个32K的偏移处寻找镜像。如果不XIP,则将FSBL载入到OCM中执行,因为此时OCM是不能使用DDR的,之后开始执行FSBL。

      1.2 fsbl的功能

      • 初始化PS的配置,具体的配置方法由Xilinx硬件配置工具提供。
      • 如果镜像中有bitstream文件部分,则用它配置PL部分。
      • 从非易失性存储器(NAND/NOR FLASH)中加载SSBL(second stage boot loader,u-boot)或裸机程序到RAM(DDR)中,并将执行权限移交给它。
      • 注意,在将权限移交给SSBL或裸机程序之前,FSBL会关闭cache和MMU,因为u-boot在执行开始时假设它们都是关闭的。
      • 下图是FSBL的执行流程:
        在这里插入图片描述

      1.2 fsbl EMMC启动模式的支持

      • 一般情况下fsbl,bitstream和u-boot都在FLASH中,从单一FLASH中启动,此时我们不使能MMC_SUPPORT标志。但FSBL也支持EMMC FLASH的设备。
      • 当我们的QSPI FLASH容量较小,而镜像文件较大时,我们可以把fsbl放在QSPI FLASH中,把镜像文件的其他部分放在eMMC中。
      • 配置流程如下所示:
      1. Create a BSP with the library and set enable_mmc in the SDK options. For more details, see the library documentation.
      2. Enable the MMC_SUPPORT flag through SDK and build FSBL. The FSBL image build
        (fsbl.elf) now has eMMC support.
      3. Stitch the boot image with FSBL as the only partition (using Bootgen).
      4. Place the boot image in the QSPI flash.
      5. Stitch an image (using Bootgen) with all the other required partitions (like the bitstream
        or the U-Boot) and place it in the eMMC flash.
      6. Set the boot mode to QSPI.
      7. Power cycle the board.

      2.FSBL分析

      2.1 工程结构

      • 在Vivado中定制好硬件后,包括bitstream导出到SDK。如下图所示:
        在这里插入图片描述
      • xillydemo_hw_platform_0是我导出的硬件工程,其中包含了在Vivado对PS部分的定制情况,主要包含一些外设寄存器的地址和相应的配置函数。
      • fsbl_bsp是fsbl工程的板级支持包,在建立fsbl工程时根据xillydemo_hw_platform_0而产生,主要给fsbl工程提供底层的硬件访问的支持。
      • fsbl工程调用了fsbl_bsp中的函数,编译后生成fsbl.elf文件。

      2.2 源码分析

      1. 在fsbl_bsp的asm_vectors.S文件中,给Cortex A9初始化了一个向量表。上电后,BootROM将fsbl读到OCM中执行,fsbl跳转到boot.S中标号为_boot的代码处执行。
        在这里插入图片描述
      2. 在boot.S的注释中,给出了boot.S的作用。在boot.S中,进行了一些最简化的配置从而使处理器从初始化状态运行,下面是一系列在控制进入main函数之前要完成的配置顺序。最后跳转到xil-ctrl0.S文件中的_start标号中执行。
        在这里插入图片描述
        _boot标号在这里:
        在这里插入图片描述
        进行上面描述的一系列操作后,在这里跳转到xil-ctrl0.S文件的_start标号去。
        在这里插入图片描述
      3. xil-ctrl0.S文件中的_start标号如下,一开始就跳到_cpu_init标号中
        在这里插入图片描述
      4. _cpu_init标号在cpu_init.S文件中,用于CPU的特定初始化。
        在这里插入图片描述
        完成了一系列初始化后,在boot.S文件中跳转至main函数开始执行。
        在这里插入图片描述
      5. main.c中有关于FSBL功能的描述。FSBL在OCM中运行,根据启动模式的选择,FSBL从FLASH中复制启动镜像的其他部分。如果有bitstream,那么就加载到FPGA中。如果有应用程序存在,那么就加载到DDR中并将执行权限移交给它。
        在这里插入图片描述
      6. 在main函数中定义了一些常量后,调用ps7_init()函数进行板级的初始化,MIO、PLL、CLK、DDR。
        在这里插入图片描述
        在ps7_init()函数中,先调用ps7GetSiliconVersion()函数获取PS版本号,根据不同的版本号选择不同的初始化数据。
        在这里插入图片描述
        ps7GetSiliconVersion()函数如下所示,通过访问一个寄存器特定的位值获取版本号。在地址 0xF8007080处的高4bit是要获取的值。详情可见ug585,p1162。
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在下面调用ps7_config()函数初始化相应的外设。
        在这里插入图片描述
      7. 然后main函数调用SlcrUnlock()解锁SLCR寄存器。在ug585 p114有关于SLCR寄存器的描述。
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
      8. 然后在main函数中可以定义宏FSBL_PERF,进行FSBL的性能测试,计算FSBL的运行时间。
        在这里插入图片描述
        在这里插入图片描述
      9. 调用Xil_DCacheFlush()函数清除D-Cache,调用Xil_DCacheDisable()函数关闭D-Cache。
        在这里插入图片描述
      10. 调用RegisterHandlers()函数注册异常错误代码。在该函数中初始化向量表。在ARM遇到这些异常情况时,就执行相应的异常处理程序。异常处理程序主要打印了遇到的异常状态。
        在这里插入图片描述
        在这里插入图片描述
      11. 打印FSBL的标志,SDK的版本以及编译fsbl的时间等等。在这里插入图片描述
      12. 然后进行DDR读写测试,验证DDR是否可用。向DDR在CPU系统总线的物理地址范围内写两个数,并读出判断是否相同,若相同则DDR初始化完成。
        在这里插入图片描述
        在这里插入图片描述
      13. 进行PCAP初始化。PCAP用来与PL进行通信加载bitstream。
        在这里插入图片描述
        在初始化PCAP的函数中初始化了devcfg接口驱动。
        在这里插入图片描述
      14. 获取PCAP控制器的设置。判断是否使用看门口。
        在这里插入图片描述
      15. 存储FSBL的运行状态到Reboot Status Register。
        在这里插入图片描述
        在这里插入图片描述
      16. 读取启动模式寄存器。见ug585 p1623。
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
      17. 对启动模式进行判断处理。并对相应模式下的控制器进行初始化。
        在这里插入图片描述
        QSPI模式:
        在这里插入图片描述
        NOR模式:
        在这里插入图片描述
        SD模式:
        在这里插入图片描述
        MMC模式:
        在这里插入图片描述
        JTAG模式:
        在这里插入图片描述
      18. 下面对SD模式进行分析。在InitSD()函数中,传进了启动镜像的文件名BOOT.BIN。InitSD函数挂载并打开SD设备,MoveImage是一个函数指针,函数SDAccess()用于对SD类型的设备进行访问,可用于对SD及EMMC设备进行统一访问。
        在这里插入图片描述
        在这里插入图片描述
        SDAccess()函数用于读取SD FLASH地址中的数据到用户的地址空间当中。f_open、f_read、f_leek、f_close都是操作FatFs文件系统的函数。
        在这里插入图片描述
      19. 然后检查FLASH类型的设备地址是否有效。
        在这里插入图片描述
        20.调用LoadBootImage()函数加载启动镜像文件,并返回移交到的执行地址。
        在这里插入图片描述
      20. 下面对LoadBootImage函数进行分析。
        首先定义了很多标志和变量:
        在这里插入图片描述
        如果芯片版本SILICON_VERSION_1,那么进行下面的操作。获取重启状态寄存器的值,如果上一次启动失败,那么更新该值。
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        然后从一个给定的寄存器中读取镜像开始的地址。
        在这里插入图片描述
        如果芯片版本较高,那么读取multiboot寄存器值,并据此计算镜像开始的地址。
        在这里插入图片描述
        得到了镜像的开始地址ImageStartAddress后,读取镜像头BootHeader的一些信息到全局变量中。
        在这里插入图片描述
        FSBL忽略第一Partition的头,因为它描述的是FSBL本身的信息。MMC启动时启动镜像内不含有FSBL,所以此时不用略过。
        在这里插入图片描述
        接下来遍历所有Partition的头,读取头中信息并保存在局部变量中。
        在这里插入图片描述
        当Partition的所有权是FSBL时,FSBL
        在这里插入图片描述
        当Partition是bitstream或ps程序时,将相应的标志位置位。
        在这里插入图片描述
        进行一系列的RSA校验和加载地址校验后,获取ps部分程序的加载地址。
        在这里插入图片描述
        从启动设备中将partitions移动到指定的地址,并完成bitstream加载。
        在这里插入图片描述
      21. 最后在FsblHandoff函数中将执行权限移交给u-boot或裸机程序。FsblHandoff中调用了FsblHandoffExit函数。
        在这里插入图片描述
        21.在fsbl_handoff.S文件中,目标地址被放入链接寄存器LR中,最后BX LR将执行流跳转至LR中存储的地址处,ARM开始从此处执行DDR中的elf文件。至此FSBL的使命结束,bitstream完成加载,裸机程序或u-boot程序被启动。
        在这里插入图片描述
      展开全文
    • ZYNQ 启动问题 :FSBL

      千次阅读 2020-05-14 18:41:48
      fsbl.h : #define EFUSE_STATUS_REG (0xF800D010) /**< Efuse Status Register */ #define EFUSE_STATUS_RSA_ENABLE_MASK (0x400) /**< Status of RSA enable */ eFuse Write Protection (2-bits) = Bit[8:...

      0、ZYNQ外部启动条件

      1、 电源要求:
      在阶段0 BootROM时,安全模式下PS与PL都是必须上电的;非安全模式PS需要上电,如图:
      在这里插入图片描述
      在阶段1 FSBL时,PS与PL都是必须上电的,因为PL将在这个阶段进行配置,而PS将负责配置的过程。

      2、 时钟要求:必须满足时钟 。

      3、 复位要求:主要有两个外部复位源将影响BootROM的执行。(电源复位信号,系统复位信号)

      4、 启动引脚设置:需要配置好引脚才能正确启动平台。

      1、Stage 0 :BootROM

      1、 上电复位以后,PS端即开始进行配置。在不使用JTAG的情况下,ARM将在片上的BootROM中开始执行代码。

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

      3、加载阶段1的启动镜像(Bin文件:包含fsbl应用程序,bit文件、应用程序)到OCM。

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

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

      PS的启动源是由外部模式引脚的高低电平来选择的,也就是指BootROM将根据外部配置引脚的设置来从不同的外部存储中加载阶段1的启动镜像。


      在non-POR或者POR以后,Zynq会完成:
      1锁存配置引脚,如下图所示,
      2初始化PLL(根据复位时锁存的进行选择初始化或者不初始化)
      3初始化APU(由两个ARM CPU构成)
      4ROM CRC check
      5初始化boot用的引脚(Q-spi,NOR,SD,NAND等等),根据上一步锁存的配置引脚进行选择。
      6出发并等待PL完成初始化,前提是PL部分上电已经完成的话。如果此时PL上电没有完成,这这一步直接跳过
      7开始搜索BootROM Header,如果搜索到了一个合法的header,就会基于这个header加载FSBL(加密或不加密)
      8被加载的FSBL可能是XIP(execute in place,在存储器里直接运行)或者是被加载到了DDR中,加载完毕后BootROM完成任务,将控制权交给了FSBL。


      2、Stage 1 :FSBL

      1、 FSBL是在BootROM之后启动的引导程序。由BootROM加载到OCM或者直接在线性Flash上运行。FSBL主要完成以下工作:

      1) 根据XPS(或vivado)中的配置,完成PS端的初始化。(MIO 、Clock 、DDR)

      2) 使用比特流文件对PL进行配置 。

      3) 加载第二阶段引导程序(SSBL)或者裸跑程序(无操作系统时)到DDR。

      4) 跳转到DDR执行SSBL或者裸跑程序。
      注意:FSBL在跳转到SSBL或者裸跑程序前,并不使能MMU。这是因为许多操作系统,例如linux假设MMU在启动时是禁用的。FSBL启动流程:

      另外需要注意的是:(fsbl.elf、PL的比特流文件、SSBL或裸跑的应用程序) 等都必须组织成Bin镜像。FSBL将会遍历分区头表来寻找比特流文件、SSBL或裸跑程序所在的位置,然后进行加载DDR或配置。

      3、Stage 1 :SSBL(无操作系统时,则不需要)

      1、SSBL的引导程序称为BootLoader。Zynq平台中的嵌入式linux就是U-Boot,FSBL帮助我们引导U-Boot到内存中。

      2、U-Boot拥有非常强大的功能,提供了许多用户指令、读写内存、flash、USB设备。U-Boot会帮助我们完成linux内核启动之前所必须的硬件初始化,例如串口、DDR控制器等。

      4、Linux启动过程:

      嵌入式linux从软件层面考虑可以分为以下四个部分:
      引导程序(BootLoader)、
      linux内核、
      文件系统、
      应用程序。

      U-Boot将为linux内核初始化内存和必要的外设,设置好启动参数。在zynq平台中,采用设备树来传递驱动部分的参数,所以U-Boot还将为内核拷贝设备树镜像文件到内存中。由U-Boot传递给内核的启动参数中通常包含了设备树的地址,文件系统的类型、地址等信息。而后U-Boot将把系统控制权交给linux内核。

      当linux内核拥有系统的控制权后,将先进行初始化,建议起内核的运行环境。Linux内核在完成了虚拟地址到物理地址映射后,还有就是驱动设备初始化与挂载。在zynq平台中,采用设备树的方式传递设备驱动的信息,如果有为PL中的IP核编写了驱动程序,也可以使用模块化的方式,待linux启动后再进行挂载。

      Linux内核将根据U-Boot传递过来的参数信息选择挂载文件系统的格式与挂载点。最后linux内核将运行init函数,这是内核引导的终点,也是系统所有进程的起点。应用程序都是放在文件系统中。


      原文链接:https://www.sohu.com/a/343257597_467791


      -------------------------------------分割线------------------------------------------------------------------------------------------
      FSBL时间测试:

      软重启开始:

      到Status = ps7_init()结束; ----------------约107ms

      到 DDRInitCheck 结束 ------约1ms

      到PcapCtrlRegVal = XDcfg_GetControlRegister(DcfgInstPtr); ----------约0ms

      到HandoffAddress = LoadBootImage(); 结束----------约676ms

      FsblHandoff(HandoffAddress); 进入该函数内部后运行到 FsblHandoffExit(FsblStartAddr); 直接退出fsbl主程序 -----约2ms

      上面步骤结束到进入应用程序------约721ms (应该是FSBL加载应用程序到OCM的时间)

      ∴软重启到应用程序开始:耗时1.507s 。

      fsbl.h :

      #define EFUSE_STATUS_REG			(0xF800D010)  /**< Efuse Status Register */
      #define EFUSE_STATUS_RSA_ENABLE_MASK (0x400)  /**< Status of RSA enable */
      

      eFuse Write Protection (2-bits) = Bit[8:9]

      OCM ROM 128KB CRC Enable = Bit[10]

      RSA Authenticaiton Enable = Bit[11]

      DFT JTAG Disable = Bit[12]

      DFT Mode Disable = Bit[13]

      Bit value : 0 = unprogrammed; 1 = programmed

      展开全文
    • zynq Mpsoc fsbl

      2021-03-31 11:22:20
      zynq MPsoc启动需要多级加载启动,所以有这么一个fsblfsbl生成 fsbl可以建立工程自动生成,不需要添加修改任何代码,但是还是需要建立一个工程来生成。 sdk->new->applicant project 工程名就为fsbl-&...

      fsbl是什么

      first stage bootloader。简单理解就是一个BootLoader。

      xilinx zynq MPsoc启动需要多级加载启动,所以有这么一个fsbl。

      fsbl生成

      fsbl可以建立工程自动生成,不需要添加修改任何代码,但是还是需要建立一个工程来生成。

      sdk->new->applicant project

      工程名就为fsbl,然后点击next选择fsbl 模板程序。

      这个过程在uart  hello world工程中有详细说明。

      https://mp.csdn.net/editor/html/115321575

      修改fsbl启动打印信息

      fsbl不做任何修改,可以工作,只是启动的过程被影藏。如果想要了解fsbl启动引导过程,可以把内部详细流程信息打印出来。只需要添加一行代码。

      如果想了解更多,可以详细阅读下fsbl源码。

      fsbl工程中,在源码debug文件中,添加一个宏定义,打印启动详细信息:

      fsbl打印全部详细信息,启动信息如下:

      Xilinx Zynq MP First Stage Boot Loader 
      Release 2017.4   Mar 31 2021  -  10:49:42
      Reset Mode      :       System Reset
      Platform: Silicon (4.0), Cluster ID 0x80000000
      Running on A53-0 (64-bit) Processor, Device Name: XCZU9EG
      Board Configuration successful 
      Processor Initialization Done 
      ================= In Stage 2 ============ 
      SD1 with level shifter Boot Mode 
      SD: rc= 0
      File name is BOOT.BIN
      Multiboot Reg : 0x0 
      Image Header Table Offset 0x8C0 
      *****Image Header Table Details******** 
      Boot Gen Ver: 0x1020000 
      No of Partitions: 0x3 
      Partition Header Address: 0x440 
      Partition Present Device: 0x0 
      Initialization Success 
      ======= In Stage 3, Partition No:1 ======= 
      UnEncrypted data Length: 0x65216F 
      Data word offset: 0x65216F 
      Total Data word length: 0x65216F 
      Destination Load Address: 0xFFFFFFFF 
      Execution Address: 0x0 
      Data word offset: 0x72E0 
      Partition Attributes: 0x26 
      Destination Device is PL, changing LoadAddress
      Non authenticated Bitstream download to start now
      DMA transfer done 
      PL Configuration done successfully 
      Partition 1 Load Success 
      ======= In Stage 3, Partition No:2 ======= 
      UnEncrypted data Length: 0x5012 
      Data word offset: 0x5012 
      Total Data word length: 0x5012 
      Destination Load Address: 0x0 
      Execution Address: 0x0 
      Data word offset: 0x659450 
      Partition Attributes: 0x116 
      Partition 2 Load Success 
      All Partitions Loaded 
      ================= In Stage 4 ============ 
      Protection configuration applied
      Running Cpu Handoff address: 0x0, Exec State: 0
      Exit from FSBL    #这里正式推出FSBL程序,跳转到app程序运行。
      Hello World

      展开全文
    • ZYNQ fsbl阶段的调试方法

      千次阅读 2017-03-25 09:58:32
      在我们面对客户单板的时候,fsbl阶段的调试多少会有些问题,在这个过程中怎么快速定位客户的问题,并将有效的信息反馈给希望能帮助到你的人是决定解决问题时间长短的一个重要因素,在这里我写下一些我个人的调试经验...
    • ZYNQ平台学习--(2)生成FSBL

      千次阅读 2016-08-25 16:25:34
      1.ZYNQ启动流程ZYNQ是一个可扩展处理平台,可以看成一个有FPGA外设的A9核处理器。它的启动流程自然也和传统的ARM处理器类似。 ZYNQ支持从多种设备启动,包括JTAG,NAND,parallel NOR,Serial NOR (Quad-SPI),以及...
    • zynq fsbl启动调试模式

      千次阅读 2016-11-24 11:35:10
      zynq fsbl启动调试模式
    • ZynqMP 调试 FSBL 代码

      2021-09-30 16:40:04
      1、首先创建一个平台工程 ...These libraries which FSBL requires are missing in Board Support Package: xilffs xilsecure xilpm. You can go back to the previous pages to select a different platfor...
    • 搭建petalinux工程

      2020-08-13 15:36:05
      目录 先找一个准备存放工程的地方,(home...将在PRO目录下面,创建一个工程:petalinux-create --type project --template zynq --name h1_petalinux_testh1_petalinux_test是工程名,该命令会自动在PRO文件夹里创建h1
    • ZYNQFSBL代码分析

      2021-08-01 22:08:14
      刷DCache缓存、禁用DCache缓存3、注册异常处理函数4、DDR读写测试5、PCAP的初始化6、读取BOOT_MODE寄存器7、逐个比较BOOT_MODE寄存器值,确定ZYNQ当前的启动方式8、加载启动镜像9、跳转到U-Boot运行地址启动U-Boot ...
    • Zynq-Linux移植学习笔记之四-fsbl

      万次阅读 多人点赞 2017-02-09 22:18:36
      zynq上运行程序的时候,加载过程中肯定需要用到一个文件,那就是fsblfsbl的全称为first stage boot loader,从字面上就能够看出这是zynq启动第一阶段的加载程序,经过了fsbl这一阶段,后面系统才能够运行裸奔...
    • ZYNQ Ultrascale+调试 1.简介 平台Zynq UltraScale+ xcu19eg-ffvc1760-2-i Vivado 17.4 petalinux17.4 2.环境搭建 1.1. 手动更新镜像源:阿里云 sudo apt-get update 安装软件包 sudo apt-get install -y ...
    • FPGA - Zynq - 加载 - FSBL源码解析1

      千次阅读 多人点赞 2019-06-29 13:54:33
      FPGA - Zynq -加载 - FSBL源码解析1前文回顾FSBL的构成:数据段和代码段如何链接欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的...
    • 1,什么情况下会使用zynq fsbl的启动调试模式? 答:我们在进行zynq开发,常把项目生成bin文件或者mcs文件,然后加载到板子上进行调试运行。然而有时候把文件加载后,上电板子没任何响应,这时则需要启动zynq fsbl...
    • 1, ZYNQ启动方式及FSBL制作

      千次阅读 2019-04-17 01:52:09
       创建FSBL工程时,Hardware Platform可以直接选择zed_hw_platform(pre_defined), (这里我的理解是一个公版参考)  也可以直接使用从vivado导出的platform,但是有两点注意:   1, SD启动时,必须在ZYNQ IP核中...
    • xilinx zynq7000开发记录(uboot_fsbl移植)

      热门讨论 2013-12-14 17:48:16
      详述了xilinx zynq7000 uboot和fsbl移植过程
    • Zynq7020 生成fsbl文件和bit文件

      千次阅读 2018-08-30 16:57:09
      查询了Xilinx的数据手册,我们需要6个文件来进行,分别是:bit文件,dtb文件,fsbl文件,uboot文件,uImage文件,文件系统镜像文件。但是我在最后还差bit和fsbl这两个文件,不知如何生成,最终咨询了他们的FAE,这里...
    • 参考资料: https://blog.csdn.net/zhaoxinfan/article/details/54958641 ... ... SDK版本:2017.4 写在前面: ...该文档不足以使你清楚FSBL启动的寄存器级的操作细节,但可以让你看明白整个ZYNQ700
    • petalinux 2018.2 在QSPI启动

      千次阅读 2018-10-03 13:13:07
      liwenz@ubuntu:~/pro/gpio/images/linux$ petalinux-package --boot --fsbl zynq_fsbl.elf --fpga system.bit --u-boot --kernel INFO: Getting system flash information... rlwrap: warning: your $TERM is '...
    • 开发板:Zynq7030数据采集板 PC平台:Ubuntu-18.04 + Moba...学习目标:生成 fsbl.elf 文件 一、Zynq-7000系列启动顺序 Zynq-7000是一个可扩展处理平台,具有ARM核心和FPGA可编程单元。整个启动过程包括了PS端AR...
    • 1,以fsbl/fs-boot为例生成源码 petalinux-config -c bootloader 2, # 以内核为例 petalinux-config -c kernel --defconfig xilinx_zynq_base_trd_defconfig # 以 uboot 为例 petalinux-config -c u-boot --...
    • 将APP程序拉起来运行 3.3 FSBL代码分析 入口 (/ps_uart_wrapper/zynq_fsbl/zynq_fsbl_bsp/ps7_cortexa9_0/libsrc/standalone_v7_5/src/asm_vectors.S) .globl _vector_table .section .vectors _vector_table: B ...
    • ZYNQ开发学习笔记(一):BOOT.bin,fsbl文件,将程序固化到板上的QSPI_Flash中 文章目录ZYNQ开发学习笔记(一):BOOT.bin,fsbl文件,将程序固化到板上的QSPI_Flash中1、环境介绍:2、正文:vivado工程方面:vitis...
    • zynq无DDR设计参考

      2018-10-07 09:50:37
      zynq无DDR设计参考,已经在项目上实施,需要更改FSBL才可以。资料里包括微博的内容以及官方原版英文的资料。
    • https://china.xilinx.com/support/answers/69269.html ...I am debugging my FSBL on a Zynq UltraScale+ MPSoC and I cannot see the source code when debuggi...
    • 花了几天看完了FSBL的代码,在这里做个总结,分析一下zynq的启动过程。众所周知,xilinx zynq 7000系列的芯片中包括两个部分,PS和PL,也就是FPGA的逻辑编程的部分跟嵌入式ARM的部分,ARM部分是双核的A9处理器。关于...

    空空如也

    空空如也

    1 2 3 4 5 ... 20
    收藏数 1,392
    精华内容 556
    关键字:

    fsblzynq