一、团队介绍
大家好,我们是293小分队,报名编号为CICC1363。本次我们将分享软件编译中遇到的问题及其解决办法。水平有限,如果有错误希望大家多多批评指正。
二、Windows下Nuclei 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中读取代码。重新生成bit和mcs文件并烧录到开发板,重启开发板,此时MCU并不会锁死,因此可以用HelloWorld程序替换掉之前Flash中错误的程序。之后再将bootrom值恢复成1’b1,重新烧录开发板,问题解决。建议在完全确定代码正确之前,可以采用“make dasm”命令进行编译,或者采用ILM方式烧写程序,观察结果是否正确。
至此所有问题解决,可以顺利加载程序,并通过串口助手成功打印信息。
三、Ubuntu下HBird 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”命令,可以删除之前生成的bit或mcs等文件,否则直接运行“make bit FPGA_NAME=mcu200t”命令会报告无需生成bit文件。
②当硬件代码烧录到FPGA后,需要重启开发板,使其从FPGA Flash中读取新的配置数据。