Nios程序烧写到EPCS方法总结
- 格式:pdf
- 大小:1.23 MB
- 文档页数:4
嵌入式烧写程序的步骤一、嵌入式烧写程序的基本概念嵌入式烧写程序是指将编写好的程序代码通过一定的工具和方法烧写到目标硬件上,使其具备特定的功能。
嵌入式系统广泛应用于工业自动化、智能家居、物联网等领域。
烧写程序是嵌入式系统开发过程中的重要环节,为了确保程序的正确性和稳定性,需要掌握一定的烧写技巧。
二、嵌入式烧写程序的步骤1.准备工具和文件在进行嵌入式烧写前,首先要准备好相应的工具和文件。
主要包括:(1)编程器:用于将程序代码烧写到目标硬件。
(2)编程软件:用于编写、编译和调试程序。
(3)目标硬件:如单片机、处理器等,用于接收和执行烧写的程序。
(4)程序代码:包括源代码和目标代码,通常以文本文件形式存储。
2.编写程序代码根据项目需求,使用编程语言(如C、汇编等)编写程序代码。
在此过程中,要注意代码的结构和规范,确保代码的可读性和可维护性。
3.编译和调试程序将编写好的程序代码编译为目标代码,并在仿真环境下进行调试,以验证程序的正确性和功能。
在调试过程中,可以利用调试工具(如逻辑分析仪、示波器等)对程序进行深入分析,找出潜在的问题并进行优化。
4.生成烧写文件根据目标硬件的型号和规格,使用编程软件生成相应的烧写文件。
烧写文件通常包括程序代码、配置信息、数据文件等,用于指导编程器将程序正确地烧写到目标硬件。
5.烧写程序到目标硬件将生成的烧写文件导入编程器,并通过编程器将程序烧写到目标硬件。
在烧写过程中,要确保编程器与目标硬件的连接稳定,避免因接触不良等原因导致的烧写失败。
6.测试与验证烧写完成后,对目标硬件进行功能测试,验证程序是否能正常运行。
测试过程中,要关注硬件的各项性能指标,如运行速度、功耗、稳定性等,确保程序在实际应用中的可靠性和稳定性。
通过以上六个步骤,即可完成嵌入式烧写程序。
在实际操作中,烧写程序的流程可能会因项目需求和硬件平台的不同而有所调整。
小梅哥NIOSII开发全纪录之总结NIOSII开发注意点(一)从开始接触Altera(现在应该叫intel PSG了)的NIOS II处理器,到现在,已经有6个年头了。
从开始的C语言都不懂,到现在能使用NIOS II开发一些实用的东西,中间的过程也是非常的曲折。
最开始的时候,完全是炼狱一般,走一步,十个坑,没人指导,填几天,再走一步,再填一个坑。
到了后来对这个东西开始心生敬畏,敬畏不是因为它有多么多么强大,而是在学习和使用它的过程中,让我对CPU架构,单片机系统实现思路和编程方法有了较为底层的认识,也算是一个升华吧,虽然在这个过程中还是常常掉入坑里好久才能爬出来。
到了现在,能够指导大家学习和使用NIOS II处理器结合FPGA RTL逻辑实现一些功能,自己也能做一些不大的小东西。
这6年,感觉就像是按照指数函数的曲线进步的,最开始很慢,后面越来越快。
想想自己能坚持到现在,可真不容易。
深知大家在自学这门技术的开始半年时间内有多么痛苦。
我一早就想出一点NIOS II方面开发的实用性书籍文档,可一直一个人打理着各种事情,实在没有精力。
我也深知当下讲解和使用NIOS II的开发已经有些不那么前沿了,毕竟现在嵌入硬核的FPGA应用已经较为成熟了,NIOS II这个处理器处于中间这样一个尴尬的位置,实用性和性价比值得思量。
但是,毕竟NIOS II和Xilinx的MicroBlaze处理器设计和开发思路异曲同工,MicroBlaze和Xilinx当前非常受欢迎的Zynq 硬核FPGA开发思路和过程很像,NIOS II和Intel(Altera)的SOC FPGA开发过程和思路很像,因此,学习NIOS II处理器,是一条经济轻巧的道路。
真正掌握了NIOS II处理器的应用和开发,迁移到Intel SOC FPGA上,也就需要3~5周的时间,换到Xilinx的MicroBlaze 或者Zynq平台上也只需要5~8周。
NIOS烧写epcs_flash关于Nios核的创建的可以参考网络上的文档,我主要是参考了黑金动力社区的两份文档。
列出如下。
《NIOSII那些事儿-Qsys_EP4CE15_v1.1.2》《NIOSII那些事儿-Qsys_v1.3.1》《Quartus_II_12.0 Qsys及Nios_II教程》在描述烧录过程之前,先给出一个我烧录过程中遇到的问题,贴图如下,大家想想为什么会出现这个问题?下面开始烧录的流程:1:器件选型2:引脚设置,参见下面两张图。
3:epcs_flash_controller的设置,重要哦。
4:连接好四个相关引脚。
5:先将sof文件下载进fpga,以确保fpga内有了nios核。
6:在nios的开发环境里面,选择Nios II -> Flash Programmer7: File -> New,打开如下界面,选择对应的xxxx.sopcinfo文件。
8: 选择Connections 在打开的界面中选好xxxx.qpf文件。
最好打钩以忽略掉system ID的选项。
9:点击Add按钮,一次添加好xxxx.sof文件和xxxx.elf文件。
如图。
10:点击Start按钮,等待烧录完成即可。
恭喜你已经完成了通过nios的Flash Programmer进行epcs的烧写。
以上是在Cyclone IV系列进行的操作,另外本人还遇到一个问题,就是在Cyclone V系列的nios创建过程中无法引出epcs_flash_controller的引出端,导致烧录的时候会报开头贴出的错误。
如果谁在V系列遇到并解决了此问题还请来信。
china_fpga@。
单片机程序烧录的3种方式(ISP、ICP、IAP)是什么说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件——STC-ISP。
这种方式,通过串口连接单片机,选择一个合适的波特率就可以烧录了。
后来学习STM32,编程时使用KEIL软件自带的下载按钮就能下载程序,方便了不少,但需要额外使用J-Link等下载器。
再后来,接触到产品研发,给已经发布出的产品升级,都是要靠远程无线升级的(想想看,产品已经到客户那里了,当软件需要升级时,要是还使用有线的方式烧录程序,得有多麻烦)既然给单片机烧录程序的方式有多种,那烧录方式具体怎么分类呢?可以分为3种:ISP(In-System Programming)在系统编程,使用引导程序(Bootloader)加上外围UART/SPI等接口进行烧录。
ICP (In-circuit programmer)在电路编程,使用SWD/JTAG接口。
IAP(In-Application Programming)指MCU可以在系统中获取新代码并对自己重新编程,即用程序来改变程序。
这3种烧录方式的原理是什么呢?在分析原理之前,需要先了解一下单片机Flash的访问地址,看看程序是烧录到哪个位置了。
单片机Flash在地址映射表中位置下图是一张STM32F4xx的地址映射表,从0x0000 0000到0xFFFF FFFF,总计4Gbyte。
单片机的片上Flash、片上RAM、片上外设以及外部扩展接口的访问地址,都被映射到这4Gbyte的范围之内。
这张图中,我们需要先注意下半部分Main memory 主存储区通常,我们编写的代码,是放到主存储区的起始位置(0x0800 0000)开始运行的,烧录程序时,直接将程序烧录到这里即可(KEIL 软件给STM32烧录程序的默认烧写地址就是0x0800 0000开始)System memory系统存储区System memory(起始位置0x1FFF 000)是STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。
Nios程序烧写到EPCS方法EPCS(Erasable programmable configurable serial)是串行存贮器,NiosII 不能直接从EPCS 中执行程序,它实际上是执行EPCS控制器的片内ROM中的代码(即Bootloader),把EPCS 中的程序搬到RAM中执行。
FPGA配置数据和NiosII程序都存放在EPCS器件中。
FPGA 配置数据放在最前面,程序放在后面,程序可能有多个段,每个段前面都插有一个“程序记录”。
一个“程序记录”由2个32位的数据构成,一个是32位的整数,另一个是32位的地址,分别用于表示程序段本身的长度和程序段的运行时地址。
这个“程序记录”用于帮助Bootloader把各个程序段搬到程序执行时真正的位置。
EPCS1、EPCS4、EPCS16 是1Mbits、4Mbits、16Mbits的Altera专用配置芯片,用于保存FPGA的配置信息。
1.设置从CFI_FLASH中引导程序,需要在Sopc Builder中将cpu的Reset V ector选择为epcs.如图:2.点击Sopc Builder下的generate生成文件,在Quartus II 中编译完成后。
点击tool>programmer.将pof文件(配置文件)烧写进EPCS中。
设置如下图:3.上述步骤完成后打开Nios II, 将编译好的程序烧到epcs中。
点击Nios II下的flashprogrammer, 如图:4.点击file>new, 并添加sopcinfo文件。
如图:5.点击ok后,出现下图(这幅图不是截的全图):6.图中有两个选项Fash:epcs 和Flash:cfi_flash. 选中Flash:epcs,并添加elf文件,点击start就将开始向epcs烧写程序。
说明:向epcs烧写pof文件(配置文件)和软件程序时可以在Nios II中同时进行。
NIOS II 程序flash固化这两天尝试着NIOS II程序固化,遇到很多问题,在网上搜索资料也没有一个统一的固化方法,各种尝试都已失败告终。
本人结合自己的经验,将NIOS II 程序固化方法记录下来。
分享发表希望以自己的成功案例给NIOS II开发者解决程序固化这方面的问题。
alteral官网关于NIOS II程序flash少些提供的手册描述支持两种程序固化方法。
一种EPCS flash固化,一种CFI flash固化。
本文分别对这两种固化方法进行描述。
本人的开发平台是quartus 14.1版本,NIOS的开发使用的是QSYS 平台。
本人默认为读者熟悉quartus开发平台和NIOS II软核开发.第一部分 EPCS flash固化EPCS flash主要用于固化FPGA的配置文件,与FPGA以SPI总线进行数据交互,在NIOS II软核开发过程中,可以将FPGA的配置文件和NIOS II应用程序一起固化置EPCS flash。
本人的片子使用的是EPCS64N。
具体固化步骤如下:第一步:创建EPCS控制器EPCS flash固化需要在搭建好NIOS软核后创建EPCS控制器,quartus 14.1的版本创建如图所示:EPCS控制器创建选择默认方式即可。
生成EPCS控制器后,按照下图方式连接到NIOS软核和并设置中断号为0。
具体连接方法如EPCS连接图所示:EPCS连接图注意:1、网上很多资料需要将EPCS的SPI引脚迁出,并需要对quartus进行相关设置。
本人认为应该是SOPC的开发方式。
在quartus 14.1的版本中默认加载EPCS控制器时没有SPI控制引脚。
因为alteral已经优化这部分设计,在工程编译间断会自动连接至SPI引脚,且不需要设置时序。
且并有要求EPCS的地址必须从0开始。
本人使用的是随机地址,并没有设置EPCS的地址为0。
2、在连线的时候需要把NIOS软核的jtag_debug_module_reset引脚和EPCS的复位引脚相连。
NIOS教程(4) --------使用板载的SRAM存储器在此实验中我们将建立一个NIOS工程,实验点亮LED的演示使用板载的SRAM并且烧代码烧录到板载的EPCS4存储配置芯片中运行。
1.先打开QuartusII 9.0SP2软件点击菜单栏FileÆ New Project Wizard,弹出如下对话框点击Next>按钮继续,在此步中,What is the working directory for this project? 是询问你的这个项目工程打算放在哪里?我们改为D:\ask2cb_nios\nios4 (表示整个工程建立在D盘的ask2cb_nios目录下的NIOS4目录下面)What is the name of this project? 是询问你这个工程项目名是什么?我们改为nios4(表示这是第四个nios示例工程)What is the name of the top-level design entity for this project? 是询问这个工程项目的顶层设计入门名我们改为nios4,表示顶层模块名为nios4改成如下图所示:点击Next>继续提示D盘ask2cb_nios目录下下面没有nios4这个目录,询问是否要创建它,选择是(y),让QuartusII创建这个目录。
向导开始询问是否有现成的文件需要加到当前新建的工程中?这步不用管它,点击Next>继续,在此步中,向导询问你使用的是何种器件,我们在Device family组合框中,Family下拉列表中选择CycloneII,在Available devices:下面的列表框中选择EP2C5Q208C8,这是我们ASK2CB-5开发板所使用的FPGA主芯片(EP2C5Q208C8),如果您购买的是ASK2CB-8开发板,请选择EP2C8Q208C8。
在本教程中,默认采用的是EP2C5Q208C8,如果你的开发板上的FPGA主芯片为EP2C8Q208,请修改相应的器件为EP2C8Q208C8点击Next按钮继续在此步中询问你要使用何种综合工具,仿真工作,时序分析工具,不用管它,点Next>继续,最后显示一个整个新建的Project的摘要。
【FPGA黑金开发板】NIOSII那些事儿--硬件开发(一)作者:FPGA黑金开发板来源:博客园发布时间:2010-03-24 18:45前言从今天开始,NIOS的学习征途正式拉开了。
对于NIOS的学习爱好者,我相信这是一个福音,我将毫无保留的将我对NIOS的研究成果分享给大家。
我之所以采用博客这种方式,就是想跟大家充分的交流,大家可以给我留言,也可以在Ourdev中提出问题,我将尽我的全力为大家解决问题。
由于本人水平有限,如果有我解决不了的问题,还请高手们多多帮忙,我相信能为大家解决问题是一件很快乐的事情,你不会错过的。
废话少说,我们马上进入正题。
今天是第一节,我首先说一下学习NIOS都需要哪些前提条件。
听到这,初学者可以会有些害怕了,难道学习NIOS还要条件?是的,需要条件,不过这些条件并不是很高,只要大家努力,这些条件都不是问题。
•具有一定的单片机基础;•具有一定的C语言编程能力;•了解 Quartus II的开发流程;•一块开发板;就这么多,大家觉得难么?首先说说第一条,具有一定的单片机基础,这个条件是要有的。
单片机的基础在NIOS II学习中体现在它的寄存器操作方式上,这种操作方式是通用的,不管是ARM,DSP,还是51都是一样的,你只要有一种单片机的实践经验就没问题了。
再说第二条,这一条没什么可争议的,NIOS的开发完全是用C语言的,如果你没有C语言的基础,我建议你还是先学习一下C语言再考虑学习NIOS吧。
第三条呢,有最好,如果没有的话也可以,我在以后的文章中都会涉及到,大家跟着学就可以了。
第四条也不是必须的,不过学习NIOS不像学习Verilog/VHDL,通过仿真看看也行,NIOS的学习跟单片机很相似,最好是亲手操作硬件,这样对你的学习有更好的效率和效果。
在这里推荐一下我的FPGA黑金开发板,不仅仅是广告哦,因为我以后的讲解都是以我的黑金板为基础的,大家学习起来也很方便的。
简介NIOS是一个用户可配置的通用32位RISC嵌入式处理器,它是SOPC(System On a Programmable Chip,片上可编程系统)的核心。
1.设置从CFI_FLASH中引导程序,需要在Sopc Builder中将cpu的Reset Vector选择为epcs.
如图:
2.点击Sopc Builder下的generate生成文件,在Quartus II 中编译完成后。
点击
tool>programmer.将pof文件(配置文件)烧写进EPCS中。
设置如下图:
3.上述步骤完成后打开Nios II, 将编译好的程序烧到epcs中。
点击Nios II下的flash
programmer, 如图:
4.点击file>new, 并添加sopcinfo文件。
如图:
5.点击ok后,出现下图(这幅图不是截的全图):
6.图中有两个选项Fash:epcs 和Flash:cfi_flash. 选中Flash:epcs,并添加elf文件,点击start
就将开始向epcs烧写程序。
说明:向epcs烧写pof文件(配置文件)和软件程序时可以在Nios II中同时进行。
不过
需要在步骤2中烧写一下sof文件或pof文件。
建议烧写sof文件(快)。
在步骤5中先添加sof文件,然后再添加elf文件。
如图:
注意:中间出现错误自行上网查找原因与解决办法。
这里只是提供步骤流程。
关于Nios烧写“No EPCS layout data”--------------------------------------------------------------------------------如果在EPCS下载时遇到这个问题:"No EPCS layout data - looking for section [EPCS-EF3013]"这是由于EPCS器件不同版本引起的,解决方法1.在Nios-IDE的安装路径下的bin文件夹中新建一个文件“nios2-flash-override.txt”。
2.输入下述代码,下面描述的器件都是Altera的EPCS器件,sector_size表示sector大小,sector_count表示sector个数;[EPCS-202011] # EPCS1N (lead-free)sector_size = 32768sector_count = 4[EPCS-202013] # EPCS4N (lead-free)sector_size = 65536sector_count = 8[EPCS-202015] # EPCS16N (lead-free)sector_size = 65536sector_count = 32[EPCS-202017] # EPCS64N (lead-free)sector_size = 65536sector_count = 128以上这四段代码分代表四种大小的EPCS,我们根据实际的EPCS大小添加代码。
比如报错为:"No EPCS layout data - looking for section [EPCS-EF3013]",那么应该添加的代码则为[EPCS-EF3013] # EPCS4N (lead-free)sector_size = 65536sector_count = 8前提是用的EPCS4 ,若是其他型号则可选用另外的代码。