vivado工程移植与固化(MicroBlaze)

学习日记

刚拿到工程的时候发现用的是A7100t的芯片需要移植到A7200t上,如果只是PL部分还好,但是工程用了一个MicroBlaze软核,对于初次接触的我有点懵,下面记录下过程以防下次踩坑

一、第一打开设置选择需要移植的器件

操作完后需要更新一下IP

更新完后对工程进行编译 (默认IO约束都是pin to pin 如果不是改了io约束后再生成bit文件)

成功生成bit文件后,在生成csa文件,因为改变了平台软核的硬件平台需要更改

然后创建vitis工程 打开vitis

创建工程名字

选择导出的xsa文件

一路next

然后把需要需要移植的.c文件.h文件全部复制过来

然后对工程进行编译 至此工程移植完成

二、工程固化

带MicroBlaze的工程固化分两种,一种是在vitis上跟zynq固化方式相似另一种是生成elf文件导入到vivado工程里生成bin文件直接烧录到flash,本文用第二种

导入elf文件(在vitis工程里编译成功后就会自动生成elf文件)

导入成功后就会在Design Sources看到elf文件夹 然后在vivado工程里面生成bit文件就可以了   (elf文件相当于把软核里面的代码打包类似于PL的bit文件,工程编译后会把这些数据直接存到BRAM里面等到程序运行直接读出对应的数据,等于是生成的bit文件包含FPGA的和vitis里面的  只是vitis的存在了BRAM里)

问题汇总

1.更改芯片型号时MicroBlaze工程报错,删除重新添加后一直报BRAM地址冲突,最后发现是地址为配置,配置完后报错消除

2.我在编译工程时把vitis的工程删除了,导致报错检测不到elf文件,最终发现是Design Sources里面的elf忘记删除了,因为要重新生成vitis工程所以这些都需要重新加载

<think>好的,我需要帮助用户解决MicroBlaze在SDK中被复位的问题。首先,我得理解用户遇到的问题是什么。根据用户提供的错误信息,主要是在Vivado SDK中启动程序时出现“Cannot stop MicroBlaze.MicroBlaze is held in reset”或类似的提示,说明MicroBlaze处于复位状态无法正常启动。 接下来,我需要参考用户提供的引用内容,看看里面提到的可能原因和解决方法。首先,引用[1]提到供电电压过小可能导致MicroBlaze一直处于复位状态,但更换更大功率的供电器后问题依旧。这说明电源问题可能是一个原因,但可能还有其他因素。引用[2]指出复位信号极性设置错误,需要选择active low,并且器件配置需要注意。这提示我需要检查复位信号的配置是否正确。引用[4]和[5]提到了类似的错误,可能涉及硬件配置、时钟或复位信号的问题,比如XDC文件中的复位引脚约束是否正确,或者仿真时的复位信号时序是否合理。 接下来,我需要将这些可能的解决方法整理成一个结构清晰的步骤指南。首先从硬件连接和电源开始检查,然后检查复位信号的配置,包括极性和引脚约束。接着查看时钟信号是否正常,是否有正确的频率和稳定性。然后检查Vivado中的设计是否正确生成比特流,SDK中的配置是否匹配。此外,还需要考虑软件代码中的复位控制部分,比如是否有意外的复位操作。 在整理步骤时,需要注意逻辑顺序,从简单到复杂,比如先检查硬件连接,再检查配置,最后考虑代码问题。同时,每个步骤需要给出具体的操作建议,例如如何检查XDC文件中的复位引脚约束,如何验证时钟信号等。 另外,用户还要求生成相关问题,我需要根据主题提出几个相关的问题,帮助用户进一步排查或理解问题。比如询问如何验证复位信号时序,或者如何调试MicroBlaze启动流程。 最后,确保回答符合格式要求,使用中文,正确引用标注,并且行内公式用$...$,独立公式用$$...$$,但在这个问题中可能不需要数学公式,所以可能不需要使用。但如果有涉及到的技术参数,比如时钟频率,可能需要用LaTeX表示,例如时钟频率为$50\ \text{MHz}$。 总结一下,我的回答应该分为几个步骤,每个步骤详细说明可能的解决方法和操作,最后列出相关问题。同时引用对应的参考资料,例如引用[2]提到复位信号极性设置错误,需要在回答中提及这一点并标注引用。 现在开始组织回答的结构: 1. 检查硬件供电和连接:引用[1]提到供电不足可能导致复位问题,需要确保电源足够且稳定。 2. 验证复位信号配置:引用[2]指出复位信号极性(active low)是否正确,检查XDC文件中的复位引脚约束是否正确设置,如引用[5]中提到的修改XDC文件中的复位引脚约束。 3. 时钟信号验证:确保时钟信号正确生成,频率和稳定性符合要求,可能需要使用示波器或仿真工具检查,如引用[5]提到的仿真验证。 4. 检查Vivado设计流程:确保生成比特流时所有约束正确,硬件设计正确导出到SDK,引用[3]提到移植时的步骤可能影响配置。 5. 软件调试代码检查:检查软件中是否有过早的复位操作,如引用[5]中的仿真代码示例,复位信号是否在适当时间解除。 6. 更新工具和固件:确保Vivado和SDK版本兼容,固件更新可能解决问题。 然后列出相关问题,比如如何验证复位信号时序,如何调试MicroBlaze启动流程,优化复位电路设计的方法,以及SDK调试技巧。 在引用部分,每个步骤对应的引用标注需要正确,比如步骤2引用[2]和[5],步骤3引用[5]等。 最后确保语言口语化,结构清晰,分点说明,帮助用户逐步排查问题。</think>### 解决MicroBlaze在SDK中被复位的步骤指南 #### 1. **检查硬件供电连接** - **电源稳定性**:确保开发板供电充足且电压符合设计要求。若使用外部电源,需确认其功率足够(如引用[1]提到供电不足可能导致复位问题)[^1]。 - **物理连接**:检查JTAG、串口等接口是否接触良好,避免因通信中断导致复位信号误触发。 #### 2. **验证复位信号配置** - **复位极性设置**:在Vivado中确认复位信号极性是否正确。例如,若复位为低电平有效(active low),需在约束文件中明确配置(如引用[2]指出极性错误是常见原因)[^2]。 - **XDC约束文件检查**: 打开Vivado中的.xdc文件,确认复位引脚开发板手册一致。例如: ```tcl set_property PACKAGE_PIN MIO4 [get_ports rst_n] # 根据实际硬件调整引脚名称[^5] ``` - **仿真验证**:通过Vivado仿真工具观察复位信号的时序,确保复位在系统启动后正确解除(如引用[5]中建议的仿真步骤)。 #### 3. **确认时钟信号正常** - **时钟频率稳定性**:检查时钟源是否按设计要求输出(如$50\ \text{MHz}$),可通过示波器或逻辑分析仪验证。 - **时钟约束**:在XDC文件中添加时钟约束,例如: ```tcl create_clock -period 20 [get_ports clk] # 周期20ns对应50MHz ``` #### 4. **检查Vivado设计流程** - **比特流生成**:确保Vivado综合实现无报错,并正确生成比特流文件(.bit)。 - **硬件导出配置**:在导出到SDK时,需包含MicroBlaze处理器、时钟和复位模块的完整配置(参考引用[3]中硬件软件协同设计的步骤)[^3]。 #### 5. **软件调试代码检查** - **复位控制代码**:检查应用程序中是否包含手动复位操作,例如过早触发复位寄存器。 - **调试初始化**:在SDK调试配置中,确认“Reset entire system”选项未错误启用,避免重复复位[^4]。 #### 6. **更新工具固件** - **Vivado/SDK版本兼容性**:确保使用的工具版本开发板支持列表匹配。 - **固件升级**:部分开发板需更新固化在Flash中的引导程序,以修复硬件初始化问题。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值