ID de l'article: 000074333 Type de contenu: Messages d'erreur Dernière révision: 22/10/2014

Programmation d’erreurs Nios II système à Flash

Environnement

  • Édition d'abonnement Intel® Quartus® II
  • Processeur Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Problème critique

    Descriptif

    Ce problème affecte le code conçu pour l’exécution en mémoire flash en utilisant alt_load() pour copier les sections writable sur la RAM. Si une section ELF (par .bss exemple) doit être copiée à partir de flash à la RAM à alt_load() l’aide , les outils de construction du logiciel vérifier que la section correspond à la RAM, mais pas qu’elle correspond mémoire flash dans lesquelles il sera programmé. Les outils génèrent une fichier de programmation sans aucune indication d’erreur de taille de code.

    Ce problème est plus susceptible de vous affecter si votre mémoire cible est le flash MAX 10 onchip, qui est relativement petit. Ce problème affecte uniquement si vous utilisez alt_load() .

    Résolution

    Vous pouvez déterminer manuellement si votre code s’adapte en regardant au début du fichier .objdump, créé lorsque vous créez votre application. Ce fichier contient des informations qui vous pouvez utiliser pour déterminer si chaque section correspond à votre flash mémoire, comme illustré dans l’exemple suivant.

    Le fichier .objdump est créé dans le fichier de l’application répertoire de haut niveau de l’application. Vous pouvez le générer à partir de la ligne de commande en tapant make app dans l’application Répertoire.

    Près du haut du fichier .objdump se trouve une liste de sections semblables à celles suivantes :

    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

    Chaque section a des valeurs en matière de taille, de VMA et de LMA. Le VMA est le l’adresse d’exécution, et LMA est l’adresse de chargement. Si une section ne l’est pas copié, VMA = LMA. Si une section est copiée, elle est copiée à partir de LMA à VMA.

    Dans ce cas, qui utilise alt_load() .entry et qui .text sont pas copié (VMA = LMA). .rodata, .rwdata, et .bss sont copiés d’une adresse flash (LMA) à une RAM adresse (VMA).

    La mémoire Flash de cet exemple possède une gamme de 0x28000 à 0x30000. La .rwdata section est programmée pour démarrer en mémoire flash à VMA = 0x2e7a0 et s’étend jusqu’à la taille d’un VMA = 0x2e7a0 0x1b78 = 0x30518. Elle ne s’adapte donc pas en mémoire flash.

    Produits associés

    Cet article concerne 1 produits

    FPGA Intel® MAX® 10

    Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.