文章 ID: 000074333 内容类型: 错误讯息 上次审核日期: 2021 年 08 月 28 日

从系统到闪存Nios II编程错误

环境

  • 英特尔® Quartus® II 订阅版
  • 英特尔® Nios® II 处理器
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    关键问题

    说明

    此问题影响旨在在闪存中执行的代码 使用 alt_load() 将可改写部分复制到 RAM 中。 如果 .bss 要从 闪存到 RAM 使用 alt_load() , 软件构建工具 确认该部分适用于 RAM,但不知道该部分适用于 闪存,它将被编程在。该工具生成一个 编程文件,没有任何代码大小错误迹象。

    如果您的目标内存,此问题更有可能影响您 是MAX 10 开芯片闪存,相对较小。此问题 仅在您使用时才会影响您 alt_load()

    解决方法

    您可以通过查找来手动确定代码是否适合 在 .objdaj 文件的开头,在创建时 您正在构建应用程序。此文件包含的信息 您可以使用来确定每个部分是否适合您的闪存 内存,如下例所示。

    .objd文件在应用程序的应用程序中创建 应用程序的顶级目录。您可以从 通过在应用程序中键入命令行 make app 目录。

    .objdaj文件的顶部附近是一个列表 与以下部分类似的部分:

    Sections:
    IdxNameSizeVMALMAFile offAlgn
    0.entry000000200002800000028000000010002**5
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    1.exceptions000002200002802000028020000010202**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    2.text00006504 00028240 00028240 00001240 2**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    3.rodata 0000005c 00040000 0002e744 00008000 2**2
    CONTENTS, ALLOC, LOAD, READONLY, DATA
    4.rwdata 00001b78 0004005c 0002e7a0 0000805c 2**2
    CONTENTS, ALLOC, LOAD, DATA, SMALL_DATA
    5.bss 00000154 00041bd4 00030318 00009bd4 2**2
    ALLOC, SMALL_DATA

    每个部分都有大小、VMA 和 LMA 的值。VMA 是 运行时地址,LMA 是负载地址。如果没有部分 复制, VMA = LMA。如果复制了一个部分,则会从 LMA 复制 至 VMA。

    在这种情况下,即使用 alt_load() .entry ,以及 .text 未复制 (VMA = LMA)。 .rodata, .rwdata, 并 .bss 从闪存地址 (LMA) 复制到 RAM 地址 (VMA)。

    此示例中的闪存有一系列与0x30000 0x28000。 该 .rwdata 部分编程为从启动闪存 在 VMA = 0x2e7a0,并扩展到 VMA 大小 = 0x2e7a0 0x1b78 = 0x30518。因此,它不适合闪存。

    相关产品

    本文适用于 1 产品

    英特尔® MAX® 10 FPGA

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。