Artikel-ID: 000087175 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 10.08.2017

Warum kann ich das Cache-Problem beim SoC-Design mit Linux Betriebssystem sehen?

Umgebung

  • Intel® Quartus® Prime Standard Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung

    Da der Linux BSP standardmäßig den Cache und die TLB-Wartungsübertragung nicht aktiviert hat (Bit0 des Registers ACTLR ist links '0') im SMP-Modus, kann ein Cache-Problem auftreten.

    Eine Beschreibung dieses Bits finden Sie in Abschnitt 1.7.3 Wartungsbetriebsübertragung im technischen Referenzhandbuch ARM A9 MPCore[2]:

    Alle Prozessoren, die im SMP-Modus auf der gleichen kohärenten Domain arbeiten, können TLB- und Cache-Wartungsoperationen senden und empfangen. Im ARM Architecture Reference Manual finden Sie detaillierte Informationen zum Broadcast-Betrieb. Ein Cortex-A9-Prozessor im A9-MP-Cluster sendet broadcastable Maintenance Operation, wenn er im SMP-Modus (ACTLR. SMP=1) und wenn der Wartungsbetrieb aktiviert ist (ACTLR. FW=1). Ein Cortex-A9 Prozessor kann Broadcast-Wartungsoperationen empfangen und ausführen, wenn er im SMP-Modus, ACTLR, betrieben wird. SMP=1.

    Lösung

    Es wird empfohlen, sowohl den ACTLR einzustellen. FW und ACTLR. SMP zu 1. Wir können das Bit durch Modifizieren des Linux-Codes in proc-v7 festlegen. S-Dateien wie unten:

    #ifdef CONFIG_SMP
    ALT_SMP (mrc p15, 0, r0, c1, c0, 1)
    ALT_UP (mov r0, #(1 << 6)) @ fake it for UP
    tst r0, #(1 << 6) @ SMP/nAMP-Modus aktiviert?
    orreq r0, r0, #(1 << 6) @ Enable SMP/nAMP mode
    orreq r0, r0, r10 @ Enable CPU-spezifische SMP-Bits
    orr r0, r0, #(1) @ Add this line enable the ACTLR[0]
    MCREQ P15, 0, R0, C1, C0, 1
    #endif

     

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 2 Produkte

    Cyclone® V FPGAs und SoC FPGAs
    Intel® Arria® 10 FPGAs und SoC FPGAs

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.