RISC-V MCU中文社区

【分享】 整理关于在Nuclei IDE中烧写程序无法成功的原因及部分解决办法

发表于 全国大学生集成电路创新创业大赛 2021-05-21 10:32:04
1
5548
5

团队介绍

大家好,我们团队的名字是Hey Siri,参赛编号是CICC1584,我们团队昨天下午忽然发现无法用NucleiStudio烧写程序到板子上了,今天一直在尝试解决,发现论坛里有不少人都曾出现过这个问题,我们最终找到胡灿老师在这篇帖子的回复中贴出的一个解决方案,链接:https://www.rvmcu.com/community-topic-id-609.html

尝试后以后成功解决问题,征得胡老师同意后,我们团队整理了解决问题的过程以及方案,希望可以帮助遇到同样问题的大家。

 

问题介绍

最开始无法烧录的报错信息是:


之前也遇见过这种情况,单看报错信息是由于没有soc的核引起的,重新烧录一遍官方自带的mcs文件,问题还是没有得到解决。经过讨论问题可能存在于板子、调试器、IDE软件以及soc软核这四个方面,同时也整理一下平时遇见同样问题的解决办法。


问题原因

1.      Fpga软核

软核一般不去修改芯来的开源rtl代码的话,应该不会出现问题,我们团队接了协处理器的接口,为了以防万一,还是重新烧录了官方给的单核的mcs文件,但是软件IDE还是无法烧录程序,问题不在核上。

2.      IDE软件

平时用软件烧录程序时,在刚刚烧录完一次代码后,偶尔会出现无法烧录的情况,这时候可以尝试按IDE上的红色按钮暂停工程,或者重启板子、插拔调试器也都能解决。而我们在团队三台电脑的IDE上都尝试烧写程序,但是出现相同报错,说明也不是软件的问题。


3.      调试器

如果调试器接口没有插对,比如插到了FPGAjtag接口上,会出现这种JTAG all one的报错,有出现这种报错朋友可以看看这篇贴子:

https://rvmcu.com/column-topic-id-464.html


我们接口经过检查都是没问题。刚好学校里有别的同学手头上也有板子跟调试器,借用之后,首先用他们的调试器下载,发现依旧报错,调试器的问题也被排除。接着用我们的调试器连接同学的板子,则烧写成功,可以明确问题出在板子上面。

 

4.      板子

接着用我们的调试器连接同学的板子,则烧写成功,可以明确问题出在板子上面。

尝试将程序下到ILM中,同样无法成功,我们猜测是板子mcuflash出了问题,可能每次上电程序自动从flash中运行,里面有些东西使得板子无法下载新的程序,需要擦除flash中的数据,但具体怎么操作方式我们也不知道。


板子问题解决方案

胡老师的解决方案如下所示:

 

1. 修改fpga/mcu200t/src/system.v

assign dut_io_pads_bootrom_n_i_val = 1'b0;

重新生成mcu200tmcs文件,下载至FPGA

 

2. lim中运行蜂鸟的helloworld程序,若成功则执行步骤3

 

3. 下载helloword程序至flash中运行

 

关于bootrom,百度说是嵌入式处理器芯片内的一小块掩膜ROM或写保护内存。它包含处理器在上电或复位时执行的第一个代码,我们猜测对这个引脚进行修改的话,应该可以使板子上电后不首先执行flash

vivado里修改引脚值后重新生成mcs文件。


之后按照胡老师的方法,在RV-Tools里打开SDK configuration Tools,在DownLoad这里把FLASH修改为ILM,重新烧写程序,这次就成功了。把程序切换回FLASH之后也可以正常烧写,恢复正常,问题成功解决!


 

小结

这篇贴子总结了一些IDE烧写程序失败的解决方案,能力有限,难免出现疏漏,不足之处希望大家海涵,也欢迎大家有问题也在论坛里跟我们交流,大家共同学习进步,祝各参赛队比赛顺利!


喜欢5
用户评论 (1)
羽

实名认证

懒的都不写签名

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