ZYNQ 双核裸机程序从QSPI FLASH启动

        zynq的双核裸机程序如果要烧写到FLASH里启动,其实和单核的烧写步骤差不多,只是多了一个在CPU0启动CPU1的过程。具体内容如下。

        1. 创建FSBL工程,选择官方的FSBL例程即可,一般来说可以不用修改直接用。

        2. 创建CPU0工程,CPU选择ps7_cortexa9_0 , 在主函数中添加下列代码以便启动CPU1

        void start_CPU1(unsigned int PC ){
                 //Disable cache on OCM

                Xil_SetTlbAttributes(0xFFFF0000,0x14de2);

                // S=b1 TEX=b100 AP=b11, Domain=b1111, C=b0, B=b0

                *(volatile unsigned int *) (0xfffffff0)  =  PC  ;
                dmb();
                __asm__("sev");
                    }

                参数PC为CPU1的程序起始地址,COU0和CPU1的存储地址要间隔开。

    3. 创建CPU1工程, CPU选择ps7_cortexa9_1.

    4. 生成烧写文件BOOT.BIN或BOOT.mcs , bin文件用来烧写到SD卡,mcs文件用来烧写到QSPI flash中 , 这里生成MCS文件, 可以选择SDx里的Create Boot Image 选项生成,也可以使用其他的生成工具。

    5 . 将生成好的BOOT.mcs文件通过 program flsh烧写到你的板卡里。

### 回答1: 这种情况一般是由于Flash启动时的配置问题导致的。在Zynq裸机的调试过程中,我们需要将启动代码和数据从Flash中加载到内存中,因此Flash的配置必须正确。 一种可能的情况是,Flash中的启动代码和数据没有正确配置。在这种情况下,我们需要确认Flash中的起始地址、大小、以及加载到内存中的地址是否正确,以及是否确实存在于Flash中。此外,还需要检查Flash中的起始代码是否能够正确地执行,并且是否存在相关的配置选项,如时钟配置、引脚配置等等。 另一种常见的情况是,Flash芯片的型号或者厂家不同,导致程序无法正确启动。在这种情况下,我们需要确认芯片的型号和厂家,然后根据实际情况进行修改或升级。 最后,在进行Zynq裸机的调试过程中,我们需要充分发挥调试工具的作用,如JTAG、Logic Analyzer、Serial Terminal等等,以便更好地排查和解决问题。同时,我们也需要细心、耐心地排查问题,还要不断学习、积累经验,才能更好地掌握Zynq裸机的开发技术。 ### 回答2: 这种情况通常是因为flash启动过程中有些问题,导致程序无法正常加载。可能的原因包括: 1. flash芯片型号或者接口选择不正确,导致无法正常加载程序。需要检查flash型号和zynq芯片是否匹配,是否有正确的引脚连接和配置。 2. flash启动时钟频率不正确,导致无法正确读取flash中的程序。需要检查时钟频率设置和时钟源选择是否正确。 3. flash中的程序没有按照规定格式存储,导致无法正常加载。需要检查程序存储格式是否正确,例如是否使用正确的编译器选项和链接选项。 4. flash中的程序有错误或者bug,导致在启动时出现问题。需要检查程序的代码,修复错误和问题。 在调试时,建议使用调试器进行分析和定位问题。可以通过调试器查看程序执行状态、CPU寄存器状态和内存内容等信息,分析程序的运行情况和问题发生的原因。在找到问题后,需要进行逐步排除,并逐步验证解决方案的正确性,最终实现flash启动。 ### 回答3: 对于这种情况,可以先检查一下以下几点: 首先,检查一下是否正确配置了flash的芯片与地址。如果没有正确配置,也就意味着zynq是无法识别flash的,因此无法从flash启动。 其次,建议对zynq芯片做一次全面的硬件测试,以确保芯片的正常运作。如果zynq芯片有硬件问题,那么它在启动时就有可能出现问题。 此外,还可以通过JTAG接口来进行一些调试。这样可以帮助我们寻找到故障的根本原因。通过JTAG接口,可以检查一下zynq芯片的内部寄存器、寄存器内容等信息,从而确定一些特定的问题。 最后,可以对已经启动裸机程序进行调试。通过对开发板上的LED灯进行控制,可以确定程序是否正在运行。如果程序正在运行,但是一直无法从flash启动,那么就有可能是flash本身出现了问题。 总之,要想解决这个问题,就需要有系统性的思路,通过逐步分析找到问题的所在,并采取相应的解决措施。只有这样才能有效地解决问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值