NIOS中各程序存储器的关系.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NIOS中各程序存储器的关系

在FPGA开发板上都有几种不同的存储器,比如SDRAM,FLASH,EPCS,还有内部onchip memory,这几种存储器间是如何通信或者构建一个系统。该如何搭配他们呢,不少人都问到这个问题。在这里我做个总结以方便初学者的学习。 首先看看在sopc builder中reset address和nios IDE中System Library中的program memory(.text)、read-only data memory(.rodata)等 这几个地址的关系和作用 根据altera 的文档解释如下: .text :代码执行区 .rodata:只读数据区,存放静态全局变量 .rwdata:可读写数据区,存放可读写变量和指针变量 .bss:未初始化变量区 .text-the actual executable code .rodata-where read only data used in the execution of the code .rwdata-where read/write variables and pointers are stored heap-where dynamically allocated memory is located stack-where function call parameters and other temporary data SOPC builder 在Nios II more cpu_0 setting 标签中的reset address决定了flash programmer 的下载存储器(一般是选EPCS controller 或者CFI flash),并且决定了程序从此处开始启动。exception address指定的是异常处理地址。当然,程序在运行前所有的数据都是存放在flash(EPCS或者CFI FLASH)中如果你设计的系统reset address与其它地址的设置不相同,比如reset address 和exception address ,reset address 和IDE中的program memory(.text)设成不同的存储器,那么系统从reset address启动时都会从flash中把相关数据自动下载到相应的地址或者初始化相应地址。 通过上面的认识,我们就比较清楚了各存储器间可进行哪些搭配了,reset address的选择可选EPCS controller 或者CFI flash ;program memory(.text)可选择onchip memory ,SDRAM,CFI flash等。如果reset address为EPCS则在使用flash programmer时程序是下载到EPCS芯片中。如果reset address选择CFI flash,则flash programmer时程序是下载到CFI flash芯片中。 需要注意的是这里有个特殊情况。例如在开发板上经常有这么一个简单的系统,CPU+onchip memory +LED_PIO,reset address选择onchip memory;感觉整个系统都没有用到flash。而且onchip memory在系统断电后数据就会消失,那么程序代码是存在哪,系统是如何从onchip memory启动听呢?先来看看onchip memory模块的描述信息:在onchip_memory.v中有这么一段the_altsyncram.init_file = onchip_memory.hex,很明显onchip memory的初始数据来自onchip_memory.hex,而onchip_memory.hex是在Nios IDE的System Library中存储器有选择onchip_memory(至少有一项是选择onchip_memory,如果都不选,就不会生成)时,在build结束的时候生成的。于是当我们把System Library中存储器的选择都选择onchip_memory时,在IDE中build结束后所有的程序代码都生成在onchip_memory.hex中,再在QII中全编译一次时,系统通过onchip_memory.v调用onchip_memory.hex从而把所有的程序代码以及配制信息都生成在POF和SOF文件中,使用QII的programmer直接下载到EPCS芯片或者FPGA芯片内程序都会立即执行。因为这里的特殊性就有很多网友询问了,reset address 选择onchip memory,而IDE中把代码区都选择SDRAM调试的时候程序正常运行,再在QII全编译后下载POF文件就运行不了呢?问题就是出在这了,在这里可以总结出一点,要让程序在onchip

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档