2016-07-19 25 views
1

ich verwende risc-v, rocket core. Ich möchte einige grundlegende READ/WRITE-Operationen an einer bestimmten Adresse durchführen. Liefert alle verfügbaren Testfälle in Testsuite. Alle Testfälle werden übergeben (einschließlich ld und store). Schreiben Sie nun einen einfachen c-Testfall, um eine bestimmte Adresse zu laden, kompilierte und führte den Testfall aus. Testfall läuft nicht durch.Rocket core risc-v, Laden und speichern bei speicheradresse nicht durchgehend

int main() 
{ 
     *((volatile unsigned int*)0x8000F000) = 0x600D600D; 
} 

die asm-Code für gleiche generiert und eingefügt den Code in Testfall in Testsuite. Noch ist der Testfall nicht durch. Befehl c2object riscv64-unbekannt-elf-gcc -DENTROPY = 18590 -static -mcmodel = medany -visibility = versteckt -nostdlib -nostartfiles -I./../env/p -I./macros/scalar -T./ ../env/p/link.ld mem_wr_tc.c -o mem_wr_tc.o

Object Assembly riscv64-unknown-elf-objdump --disassemble-all --disassemble-Nullen --section = .text - -section = .text.startup --section = .text.init --Sektion = .data mem_wr_tc.o> mem_wr_tc.asm

Hat irgendjemand versucht, eine einfache store \ load (lesen \ schreiben) an eine bestimmte Adresse.

Bitte schlagen Sie vor, was schief gehen könnte.

Antwort

0

Hier sind ein paar Dinge, die Sie tun sollten:

1) bei der Demontage Schauen Sie das Programm, um zu überprüfen, was Sie es erwarten. Es scheint, dass Sie versuchen, ein Bare-Metal-Programm zu erstellen, so dass Ihre Disassemblierung den richtigen Start-Code an den richtigen physischen Adressen benötigt.

2) Versuchen Sie Ihr Programm in Spike (Single-Stepping), und vergewissern Sie sich, dass Ihr Programm ordnungsgemäß funktioniert.

3) Sehen Sie sich die Standardausgabe von Rakete an, die Ihnen sagt, was sie in jedem Zyklus macht.

4) Analysieren Sie die Raketenchip-Speicherkarte, um sicherzustellen, dass Sie an die richtige Adresse schreiben.

5) analysieren Sie die VCD-Wellenform, um zu sehen, was die Rakete macht, wenn sie versucht, Ihre Speicheroperationen an dieser bestimmten Adresse auszuführen.