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

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

3天内不再提示

基于ZYNQ的multiBoot测试说明

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-16 16:21 次阅读

1、软件版本vivado202001。

2、其中程序的源文件都是拷贝过来的只是稍作修改,对其中的操作步骤做细化分析,参考文档UG585
https://blog.csdn.net/weixin_41922484/article/details/104037513

3、串口打印FSBL中启动信息
只需要在以下位置的的fsbl_debug.h中,添加一个宏定义即可。

#define FSBL_DEBUG_INFO

pYYBAGIMpOOAPp3vAAUvN8aqfnI461.png

4、新建两个app
hello_test1.c

#include
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"
#include "sleep.h"

#define PSS_RST_CTRL_REG 0xF8000200 //PSS_RST_CTRL寄存器,绝对地址,
#define SLCR_UNLOCK_ADDR 0xF8000008 //SLCR_UNLOCK寄存器,绝对地址,
#define UNLOCK_KEY 0xDF0D //使能码
#define PSS_RST_MASK 0x01 //复位码

void PsSoftwareReset(void)
{
Xil_Out32(SLCR_UNLOCK_ADDR, UNLOCK_KEY); //写使能
Xil_Out32(PSS_RST_CTRL_REG, PSS_RST_MASK); //复位
}

#define XDCFG_MULTIBOOT_ADDR_OFFSET_REG 0xF800702C //MULTIBOOT寄存器,绝对地址,
#define XDCFG_UNLOCK_OFFSET_ADDR 0xF8007034 //XDCFG_UNLOCK_寄存器,绝对地址,
#define UNLOCK_XDCFG_KEY 0x757BDF0D //使能码

#define APP1_LOCATION 0
#define APP2_LOCATION 128

void ModifyMultiBoot(void)
{
Xil_Out32(XDCFG_UNLOCK_OFFSET_ADDR , UNLOCK_XDCFG_KEY ); //写使能
Xil_Out32(XDCFG_MULTIBOOT_ADDR_OFFSET_REG , APP2_LOCATION ); //更改MULTIBOOT
}

int main()
{
init_platform();
print("111111111111111111111111111111111111111\r\n");
sleep(5);
ModifyMultiBoot();
PsSoftwareReset();
cleanup_platform();
return 0;
}

hello_test2.c

#include
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"
#include "sleep.h"

#define PSS_RST_CTRL_REG 0xF8000200 //PSS_RST_CTRL寄存器,绝对地址,
#define SLCR_UNLOCK_ADDR 0xF8000008 //SLCR_UNLOCK寄存器,绝对地址,
#define UNLOCK_KEY 0xDF0D //使能码
#define PSS_RST_MASK 0x01 //复位码

void PsSoftwareReset(void)
{
Xil_Out32(SLCR_UNLOCK_ADDR, UNLOCK_KEY); //写使能
Xil_Out32(PSS_RST_CTRL_REG, PSS_RST_MASK); //复位
}

#define XDCFG_MULTIBOOT_ADDR_OFFSET_REG 0xF800702C //MULTIBOOT寄存器,绝对地址,
#define XDCFG_UNLOCK_OFFSET_ADDR 0xF8007034 //XDCFG_UNLOCK_寄存器,绝对地址,
#define UNLOCK_XDCFG_KEY 0x757BDF0D //使能码

#define APP1_LOCATION 0
#define APP2_LOCATION 128

void ModifyMultiBoot(void)
{
Xil_Out32(XDCFG_UNLOCK_OFFSET_ADDR , UNLOCK_XDCFG_KEY ); //写使能
Xil_Out32(XDCFG_MULTIBOOT_ADDR_OFFSET_REG , APP2_LOCATION ); //更改MULTIBOOT
}

int main()
{
init_platform();
print("222222222222222222222222222222222\r\n");
sleep(5);
ModifyMultiBoot();
PsSoftwareReset();
cleanup_platform();
return 0;
}

5、分别生成bin文件,且需要注意生成的bin文件大小,因为是分段烧写flash,第一个bin与第二个bin的间隔要比第一个bin的文件要大,且间隔为32KB的整数倍,此次实验中,生成的bin都是2.2MB,所以把第二个的bin起始地址设置为128*32KB。

6、在JTAG模式下烧写FLASH

poYBAGIMpOeAfo3lAAZNmFyRIwU100.png

pYYBAGIMpOqAQZAVAAZYQe3Id4A946.png

7、在QSPI模式下启动
串口打印输出
[15:07:38.243]收←◆
Xilinx First Stage Boot Loader
Release 2020.1 Mar 24 2021-03:07:57
Devcfg driver initialized
Silicon Version 3.1
Boot mode is QSPI
Single Flash Information
FlashID=0xEF 0x40 0x19
WINBOND 256M Bits
QSPI is in single flash connection
QSPI is in 4-bit mode
QSPI Init Done
Flash Base Address: 0xFC000000
Reboot status register: 0x60480000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 3
Partition Number: 1
Header Dump
Image Word Len: 0x0007F2E8
Data Word Len: 0x0007F2E8
Partition Word Len:0x0007F2E8
Load Addr: 0x00000000
Exec Addr: 0x00000000
Partition Start: 0x000065D0
Partition Attr: 0x00000020
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFE7BF06
Bitstream
In FsblHookBeforeBitstreamDload function

[15:07:38.610]收←◆P
[15:07:38.640]收←◆CAP:StatusReg = 0x40000A30
PCAP:device ready
PCAP:Clear done
Level Shifter Value = 0xA
Devcfg Status register = 0x40000A30
PCAP:Fabric is Initialized done
PCAP register dump:
PCAP CTRL 0xF8007000: 0x4C00E07F
PCAP LOCK 0xF8007004: 0x0000001A
PCAP CONFIG 0xF8007008: 0x00000508
PCAP ISR 0xF800700C: 0x0802000B
PCAP IMR 0xF8007010: 0xFFFFFFFF
PCAP STATUS 0xF8007014: 0x50000F30
PCAP DMA SRC ADDR 0xF8007018: 0x00100001
PCAP DMA DEST ADDR 0xF800701C: 0xFFFFFFFF
PCAP DMA SRC LEN 0xF8007020: 0x0007F2E8
PCAP DMA DEST LEN 0xF8007024: 0x0007F2E8
PCAP ROM SHADOW CTRL 0xF8007028: 0xFFFFFFFF
PCAP MBOOT 0xF800702C: 0x0000C000
PCAP SW ID 0xF8007030: 0x00000000
PCAP U
[15:07:38.694]收←◆NLOCK 0xF8007034: 0x757BDF0D
PCAP MCTRL 0xF8007080: 0x30800100

DMA Done !

FPGA Done !
In FsblHookAfterBitstreamDload function
Partition Number: 2
Header Dump
Image Word Len: 0x00002002
Data Word Len: 0x00002002
Partition Word Len:0x00002002
Load Addr: 0x00100000
Exec Addr: 0x00100000
Partition Start: 0x000858C0
Partition Attr: 0x00000010
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFD744C8
Application
Handoff Address: 0x00100000
In FsblHookBeforeHandoff function
SUCCESSFUL_HANDOFF
FSBL Status = 0x1
11111111111111111111111111111111111111111

[15:07:43.911]收←◆
Xilinx First Stage Boot Loader
Release 2020.1 Mar 24 2021-03:07:57
Devcfg driver initialized
Silicon Version 3.1
Boot mode is QSPI
Single Flash Information
FlashID=0xEF 0x40 0x19
WINBOND 256M Bits
QSPI is in single flash connection
QSPI is in 4-bit mode
QSPI Init Done
Flash Base Address: 0xFC000000
Reboot status register: 0x60480000
Multiboot Register: 0x0000C080
Image Start Address: 0x00400000
Partition Header Offset:0x00400C80
Partition Count: 3
Partition Number: 1
Header Dump
Image Word Len: 0x0007F2E8
Data Word Len: 0x0007F2E8
Partition Word Len:0x0007F2E8
Load Addr: 0x00000000
Exec Addr: 0x00000000
Partition Start: 0x000065D0
Partition Attr: 0x00000020
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFE7BF06
Bitstream
In FsblHookBeforeBitstreamDload function

[15:07:44.276]收←◆PCAP:StatusReg = 0x40000A30
PCAP:device ready
PCAP:Clear done
Level Shifter Value = 0xA
Devcfg Status register = 0x40000A30
PCAP:Fabric is Initialized done
PCAP register dump:
PCAP CTRL 0xF8007000: 0x4C00E07F
PCAP LOCK 0xF8007004: 0x0000001A
PCAP CONFIG 0xF8007008: 0x00000508
PCAP ISR 0xF800700C: 0x0802000B
PCAP IMR 0xF8007010: 0xFFFFFFFF
PCAP STATUS 0xF8007014: 0x50000F30
PCAP DMA SRC ADDR 0xF8007018: 0x00100001
PCAP DMA DEST ADDR 0xF800701C: 0xFFFFFFFF
PCAP DMA SRC LEN 0xF8007020: 0x0007F2E8
PCAP DMA DEST LEN 0xF8007024: 0x0007F2E8
PCAP ROM SHADOW CTRL 0xF8007028: 0xFFFFFFFF
PCAP MBOOT 0xF800702C: 0x0000C080
PCAP SW ID 0xF8007030: 0x00000000
PCAP UNLOCK 0xF8007034: 0x757BDF0D
PCAP MCTRL 0xF8007080: 0x30800100

DMA Done !

FPGA Done !
In FsblHookAfterBitstreamDload function
Partition Number: 2
Header Dump
Image Word Len: 0x00002002
Data Word Len: 0x00002002
Partition Word Len:0x00002002
Load Addr: 0x00100000
Exec Addr: 0x00100000
Partition Start: 0x000858C0
Partition Attr: 0x00000010
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFD744C8
Application
Handoff Address: 0x00100000
In FsblHookBeforeHandoff function
SUCCESSFUL_HANDOFF
FSBL Status = 0x1
22222222222222222222222222222222222222222

测试成功。

审核编辑:符乾江

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

    关注

    8

    文章

    4664

    浏览量

    125461
  • Zynq
    +关注

    关注

    9

    文章

    601

    浏览量

    46849
收藏 人收藏

    评论

    相关推荐

    ad9236+ad8331利用zynq采样,显示获得的信号失真是为什么?

    有这个问题存在。(AD9236的D0-D11通过杜邦线连接ZYNQ开发板) 已经测试的可能问题:1.更换直流电源测试,仍然出现这个问题。 2. 更换信号连接线为同轴线缆,仍然出现这个问题。3.
    发表于 05-28 06:11

    没用过zynq今天在看解析是发现汽车的CID上有用这个,不知道zynq有什么优势?

    没用过zynq今天在看解析是发现汽车的CID上有用这个,不知道zynq有什么优势?
    发表于 04-23 15:01

    AMD Xilinx 7系列FPGA的Multiboot多bit配置

    Multiboot是一种在AMD Xilinx 7系列FPGA上实现双镜像(或多镜像)切换的方案。它允许在FPGA中加载两个不同的配置镜像,并在需要时切换。
    的头像 发表于 02-25 10:54 695次阅读
    AMD Xilinx 7系列FPGA的<b class='flag-5'>Multiboot</b>多bit配置

    基于Zynq FPGA对雷龙SD NAND的测试

    文章目录一、SDNAND特征1.1SD卡简介1.2SD卡Block图二、SD卡样片三、Zynq测试平台搭建3.1测试流程3.2SOC搭建四、软件搭建五、测试结果六、总结一、SDNAND
    的头像 发表于 12-22 17:45 311次阅读
    基于<b class='flag-5'>Zynq</b> FPGA对雷龙SD NAND的<b class='flag-5'>测试</b>

    基于Zynq FPGA对雷龙SD NAND的测试

    文章目录 一、SD NAND特征 1.1 SD卡简介 1.2 SD卡Block图 二、SD卡样片 三、Zynq测试平台搭建 3.1 测试流程 3.2 SOC搭建 四、软件搭建 五、测试
    发表于 12-22 17:43

    使用 PCIE 更新 AMD ZYNQ™ 的 QSPI Flash 参考设计

    简介 AMD ZYNQ™ 7000 的 S_AXI 端口提供了外设访问 PS 内部外设控制器的接口,这其中包括 4 个 S_AXI_HP 端口以及两个 S_AXI_GP 端口。一般来说,可以访问
    发表于 11-30 18:49

    负载瞬态测试简化说明

    电子发烧友网站提供《负载瞬态测试简化说明.pdf》资料免费下载
    发表于 11-16 16:11 0次下载
    负载瞬态<b class='flag-5'>测试</b>简化<b class='flag-5'>说明</b>

    Zynq-7000 SoC的安全启动应用说明

    电子发烧友网站提供《Zynq-7000 SoC的安全启动应用说明.pdf》资料免费下载
    发表于 09-13 11:46 1次下载
    <b class='flag-5'>Zynq</b>-7000 SoC的安全启动应用<b class='flag-5'>说明</b>

    电机控制同步电角度测试说明

    在使用 ST FOC 电机库时,当使用 Hall 信号作为位置信号时,需要输入同步电角度数据,这个数据根据当前使用电机的特性进行输入,会在每次 Hall 信号变化时同步电角度,如果角度偏差较大时会影响控制效果,可能带来效率或者电机的震荡,初始测试还是有必要的,本文详细说明
    发表于 09-11 07:43

    嵌入式HLS 案例开发步骤分享——基于Zynq-7010/20工业开发板(4)

    目 录5 sobel_demo 案例 395.1 HLS 工程说明 405.2 编译与仿真 435.3 IP 核测试 45 前 言本文主要介绍 HLS 案例的使用说明,适用开发环境: Windows
    发表于 08-24 14:54

    BCM4389性能测试应用说明

    电子发烧友网站提供《BCM4389性能测试应用说明.pdf》资料免费下载
    发表于 07-20 10:09 2次下载
    BCM4389性能<b class='flag-5'>测试</b>应用<b class='flag-5'>说明</b>

    《基于“矿板”低成本学习Zynq系列》之七-memory测试

    《基于“矿板”低成本学习Zynq系列》之七-memory测试
    的头像 发表于 07-19 19:27 1117次阅读
    《基于“矿板”低成本学习<b class='flag-5'>Zynq</b>系列》之七-memory<b class='flag-5'>测试</b>

    《基于“矿板”低成本学习Zynq系列》之六-DDR测试

    《基于“矿板”低成本学习Zynq系列》之六-DDR测试
    的头像 发表于 07-19 19:19 2331次阅读
    《基于“矿板”低成本学习<b class='flag-5'>Zynq</b>系列》之六-DDR<b class='flag-5'>测试</b>

    Xilinx Zynq7035算力指标

    本文介绍广州星嵌DSP C6657+Xilinx Zynq7035平台下Xilinx Zynq7035算力指标。
    的头像 发表于 07-07 14:15 1067次阅读
    Xilinx <b class='flag-5'>Zynq</b>7035算力指标

    ZYNQ与DSP之间EMIF16通信

    本文主要介绍说明XQ6657Z35-EVM 高速数据处理评估板ZYNQ与DSP之间EMIF16通信的功能
    的头像 发表于 07-07 14:14 574次阅读
    <b class='flag-5'>ZYNQ</b>与DSP之间EMIF16通信