zoukankan      html  css  js  c++  java
  • 【友晶科技Terasic】 解读Nios II IP 的 Reset Vector 和 Exception Vector

     Reset Vector——复位向量
    Exception Vector——执行向量

    两个向量地址都存储着程序。

     Reset Vector就是当系统reset 时,CPU会跳到 Reset Vector所指定的位址执行,而Exception Vector则是当发生hardware interrupt或software exception时,CPU会跳到Exception Vector所指定的位址执行。

     这里的地址是相对于整个BUS,on-chip 地址是 0x00040000。

     

     因为两个向量地址不能一样,而Nios 处理器是32位的,0x20=32,所以如果选最小的偏移就只能是0x20了。

    elf烧写的时候不是从零地址烧写的,是根据Nios II IP 里面的 这两个向量的设置来烧写的, 如下图: 

    (也就是说,程序的起始位置是根据你Nios II IP 的设定)

    以上方法是将.sof和.elf全部保存在FPGA内,程序加载和运行也是在FPGA内部。 把FPGA的配置文件.sof通过JTAG方式下载(其实是在线运行)进入FPGA本身,此时在NIOS II的界面中,点击“RUN”—“Run As Hardware”可实现在线运行。此时在SOPC配置时,需要有片内mem_rom和mem_ram,程序的复位向量为mem_rom,偏移0x00;异常向量为mem_ram,偏移0x20。断电后无法运行。 
     
     方法二:.pof保存在EPCS4,.elf保存在FPGA内部,加载从EPCS4,运行在FPGA内部。 和方法一差不多,只是把FPGA的配置文件.pof以AS的方式下载到EPCS4中,而软件文件也是通过JTAG方式下载入FPGA中,断电也无法运行。CPU内部的两个配置是mem_rom和mem_ram。 
     
    方法三:将.sof文件和.elf保存在EPCS4,加载从EPCS4,运行在FPGA内部。 先将.sof文件通过JTAG下载进入FPGA,然后通过NIOS II的flash programmer以JTAG方式把.sof和.elf文件下载入EPCS4,此时CPU的Reset Vector为EPCS,偏移0x00,Exception Vector为mem_ram,偏移为0x20。断电重启后仍能正常运行。 
     

     

     
    4. 方法四:将.sof文件和.elf保存在EPCS4,加载从EPCS4,运行在SDRAM中。 具体的下载方法同方法3相同,只是设置的过程有所不同。 需要在SOPC中添加SDRAM Controller,在CPU中设置异常向量为sdram。
     
    使用quartus_program 来固化sof和elf到EPCS,对不支持 nios2_flash_program的 flash 器件也适用 ,使用的IP 是altera serial flash controller ,  altera serial flash controller 的 boot loader 存于 flash 。
     
    (这里的 reset vector offset 必须大于 sof 的 SIZE,这里设为 0x01000000 (16Mbyte) )
     
     
    也可以采用 nios2_flash_program 方式烧写elf和sof到EPCS,nios2_flash_program 方式对于不支持 nios2_flash_program 的flash 不适用,使用的IP 是 legacy EPCS/EPCQx1 flash controller ,legacy EPCS/EPCQx1 flash controller 的 boot loader 存放在 IP 内 rom :
      
    以上案例的截图都来自友晶科技论坛的这个帖子的 案例: 【FAQ】DE0-CV 如何将sof和 elf 都固化到epcs? http://www.myfpga.org/discuz/forum.php?mod=viewthread&tid=197468 (可以免费下载哦)

  • 相关阅读:
    【杂谈】操作系统如何有效地掌控CPU
    【API知识】一种你可能没见过的Controller形式
    【详解】Tomcat是如何监控并删除超时Session的?
    【API知识】RestTemplate的使用
    【杂谈】Tomcat 之 Lifecycle接口
    【杂谈】FilterChain相关知识整理
    【杂谈】Remember-Me的实现
    【杂谈】没有公网IP的电脑如何与外部通信
    【杂谈】tocmat是何时写回响应数据报的
    js的class基础
  • 原文地址:https://www.cnblogs.com/DoreenLiu/p/15470734.html
Copyright © 2011-2022 走看看