RISC-V MCU中文社区

【分享】 程序加载过程中遇到的问题及其解决方法

发表于 全国大学生集成电路创新创业大赛 2021-06-08 18:21:45
1
2241
2

一、团队介绍

大家好,我们是293小分队,报名编号为CICC1363。本次我们将分享软件编译中遇到的问题及其解决办法。水平有限,如果有错误希望大家多多批评指正。

二、WindowsNuclei Studio开发

基于Nuclei Studio的开发流程可以参照蜂鸟E203 SoC配套文档:https://doc.nucleisys.com/hbirdv2/quick_start/ide.html

1)遇到的问题1:在创建好项目后,运行配置设置为ILM,可以编译成功;当修改运行配置为Flash后,编译失败;重启软件,仍会遇到类似问题。

解决方法:这个问题大多出现在最初使用Nuclei Studio工具进行项目开发的时候,这是因为从官网下载的Nuclei Studio存在Bug。在Nuclei Studio界面,在菜单栏中进入Help -> Install New Software,点击右下方的already installed,找到Nuclei Studio IDE,若该版本为1.0.8,则将其升级为1.0.9版本。重新启动Nuclei Studio,该问题解决。


2)遇到的问题2:下载程序显示未连接到开发板,报错界面如下图所示。




解决方法:在配套文档中,只要求安装HBird_Driver.exe驱动,这其实是不够的,可以参考https://rvmcu.com/column-topic-id-464.html进行驱动安装,之后就可以正常下载程序。

 

3)遇到的问题3:下载程序显示JTAG all ones,报错界面如下图所示。


在硬件电路中,MCU被设计为上电即从Flash中读取代码并开始运行,如果写入MCU Flash中的代码存在错误,那么MCU的运行会停在代码发生错误的地方,此时MCU锁死,内部程序无法终止,开发板重新上电和MCU Reset只会重复从Flash读取代码并运行锁死的过程,从而Flash无法烧写。

解决方法:e203_hbird/fpga/mcu200t/src/system.v文件中,将bootrom值修改1’b0,即启动MCU时默认不从Flash中读取代码。重新生成bitmcs文件并烧录到开发板,重启开发板,此时MCU并不会锁死,因此可以用HelloWorld程序替换掉之前Flash中错误的程序。之后再将bootrom值恢复成1’b1,重新烧录开发板,问题解决。建议在完全确定代码正确之前,可以采用“make dasm”命令进行编译,或者采用ILM方式烧写程序,观察结果是否正确。


至此所有问题解决,可以顺利加载程序,并通过串口助手成功打印信息。

三、UbuntuHBird SDK开发

开发工具Nuclei Studio具有界面直观、操作简单且容易上手的优点,但是其驱动配置比较麻烦,而且编译和下载速度相对较慢,因此可以考虑使用Ubuntu下的HBird SDK开发工具。基于HBird SDK的开发流程可以参照蜂鸟E203 SoC配套文档https://doc.nucleisys.com/hbirdv2/quick_start/sdk.html

HBird SDK遇到的问题相对较少,主要问题与Nuclei Studio中的问题3类似,即Flash程序错误,MCU锁死,其报错界面如下图所示。可以按照上述问题3中的方法加以解决。


正常下载的界面如下所示:


此外需要注意的点:

①当修改e203_hbird文件夹中的rtl代码后,在fpga文件夹下运行“make clean FPGA_NAME=mcu200t”命令,可以删除之前生成的bitmcs等文件,否则直接运行“make bit FPGA_NAME=mcu200t”命令会报告无需生成bit文件。

②当硬件代码烧录到FPGA后,需要重启开发板,使其从FPGA Flash中读取新的配置数据。

喜欢2
用户评论 (1)
  • markman

    2023-12-02 22:20:58 markman 1#

    不用仿真器,能用串口刷c编译的bin文件到rom里面运行么?  另外 c编译的bin文件怎么固化到fpga的?

未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板