双Nios II软核在嵌入式系统中的应用
2 程序下载
本文引用地址:http://www.amcfsurvey.com/article/82696.htm2.1 方案确定
下面是对2个CPU的写入探讨。
方案一
指导思想:将硬件配置信息和cpu2写入EPCS中,将CPU的程序写入Flash中。具体步骤:
①CFI_FLASH的3个时间改为50、160、50;
②cpul——reset Address CFI_FLASH
Exception Address sdram-3/sl;
③cpu2——reset Address onchip_memory-0
Exception Address onchip_memory-0;
④将整个硬件编译成功;
⑤将memery-test编译,进行Flash测试,测试成功转下一步;
⑥分别编译newniosl和newnios2的工程;
⑦将整个硬件进行二次编译,此时pof文件中已经包含了newnios2的程序;
⑧将pof文件下载到EPCS中去;
⑨将硬件工程换成只有一个CPU的,将newniosl的程序下载到CFI_FLASH中去;
⑩重新上电启动。
方案二
指导思想:将2个CPU的程序均下载到Flash中,硬件配置在EPCS中。
①CFI_FLASH的3个时间改为50、160、50;
②cpul——reset Address EPCS_CONTROLLER
Exception Address sdram-3/sl
③cpu2——reset Address onchip_memory-0
Exception Address onchip_memory-0
④将整个硬件编译成功;
⑤将memery_test编译,进行Flash测试,测试成功转下一步;
⑥分别编译new-nios1和newnios2的工程;
⑦重新进行硬件的编译;
⑧将pof文件下载到EPCS中去;
⑨newnios1和new-nios2的程序下载分别指定为0、1或1、2;
⑩重新上电启动。
方案三
指导思想:将2个CPU的程序均下载到EPCS中,硬件配置在EPCS中。
①首先在SOPCbuilder中将2个作CPU如下配置:
cpu1——reset Address EPCS_CONTROLLER
Exception Address sdram-3/sl
cpu2——reset Address onchip_memory-0
Exception Address onchip_memory-0
这代表将CPU的程序在EPCS中进行存储,而程序运行在SDRAM中;而CPU_0的存储和运行都在片上存储器中。
②先将SOPC进行编译,成功后选择“Exit”,硬件提示是否进行升级,选择“yes”,进行升级,然后将整个硬件全编译。
③硬件编译通过后,通过SOPC Builder打开IDE,在IDE下分别编译newnios1和newnios2的工程,由于第2个CPU的程序在内部存储器,则生成一个以内部存储器为名称的hex文件。
④重新进行硬件的编译,会发现硬件将HEX文件当作一个部件,编到整个硬件中了。编辑完毕后,查看SOF和pof的大小,其实都没什么变化,但时间修改了。
⑤利用命令行指令:
sof2flash--epcs--input=new.sof--output=my1.flash,
该命令将new.sof转换成EPCS中存储的格式;将POF文件下载到EPCS中去。
Elf2flash--epcs--after=my1.flash--input=newniosl.elf--output=my2.flash
⑥下面有2种处理方法都可以下载成功。
第1种方法:将另一个只有CPU的工程(sof)下载到EP2C20中(QuartusII无法在下载过程中识别2个CPU),然后利用以下命令:
Nios2-flash-programmer--epcs--base=0x02900800 my1.flash
Nios2-flash-programmer--epcs--base=0x02900800 my2.flash
重新上电,就可以了
第2种方法:将instance参数带上,方法同上,进行Flash文件的转换,然后将整个工程sof下载到硬件中。
利用命令:
Nios2-flash-programmer--epcs--base=0x02900800--instance 1 my1.flash
Nios2-flash-programmer--epcs--base=0x02900800--instance 1 my2.flash
注意,instance后面的参数为1。如果为0,就会出现错误:no EPCS register found。如果是2,则会发生如下情况:
There are no niosII processors available which match the value specified,please check your PLD……
⑦重新上电启动即可。
2.2命令行在EPCS中的写入过程
①将sof文件下载到FPGA中,并将sof文件转换成.flash烧写中间格式,使用命令:
sof2flash--epcs--input=./new.sof--output=my1.flash
然后用.flash文件烧写epcs--base项为nios2工程中epcs在avalon总线中的地址位:
nios2--flash-programmer--epcs--instance=1--base=0x02900800 my1.flash
②将elf文件也转换为.flash格式,并且要加入一些参数。--after是后来刷写的内容,不会冲掉前面的数据,使用命令:
elf2flash--epcs--after=my1.flash--input=newniosl.elf--output=my2.flash
烧写:nios2-flash-programmer--epcs--instance=1--base=0x02900800 my2.flash
③重新上电启动。
3 小 结
本文结合视频点播服务器的设计,阐述了双NiosII软核嵌入到FPGA并通过SOPC技术将IP核嵌入并构建系统的过程及方法,充分发挥FPGA的高速优势,提供系统性能。其创新点是,将双NiosII软核应用到嵌入式系统中,通过IP核的设计实现底层驱动,提高系统集成度,充分发挥SOPC技术的优势。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论