Verständnis MRC auf ARM7
Ich bin neu zu BEWAFFNEN und zu versuchen zu verstehen, MRC-Anweisung.
Wie ich verstanden habe , MRC ist zu Lesen Coprozessor-Register und legen Sie es in der Haupt-Core registrieren.
Nun Coprozessoren sind an Kern und ist für die Steuerung der Speicher-subsystem der Kern.Wie Coprozessoren sind an Haupt-core-Prozessor .Kann jemand ein gutes Digram?
Nun diese unter Anleitung auf arm7 cpu-Kern
/* workaround to disable secure state */
mrc p15, #0, r0, c1, c1, #0
orr r0, r0, #1
mcr p15, #0, r0, c1, c1, #0
isb
Nun ich konnte einfach nicht finden, was Los ist in mrc-Unterricht hier
1.Erstes argument für die mrc ist Koprozessor Nummer(wie p0 unterscheidet sich von p15).
2.Zweite Argument ist opcode1 der Coprozessor(Nicht sicher).
3.Dritte argument ist das zentrale register(Ok).
4.vierte und fivth argumnet ist co-Prozessor-Register(Ergebnis von c1,#0 gespeichert wird, um c1 )?
5.Agin Letzte Argument ist opcode2 (Nicht sicher).
Dank
- Bitte schauen Sie unter Coprozessor Fragen. Wie Was ist MRC-Befehl, Peter Cockerell, etc.
- Die
MRC
/MCR
Anweisungen sind generisch. Sie verweisen auf spezielle Dokumente. VFP, Neon und CP15. Die CP15 ist ein catch all für Dinge die nicht eingebaut, um den Befehlssatz und soll für OS-Programmierer. Es kann sind MMU, cache-control -, Schutz-Gerät, schnell Kontext wechseln, write-buffer, TrustZone -, HyperVisor -, Vektor-Tabelle, etc. CP15 bleibt hinten - kompatibel, wie der Befehlssatz hat. - Danke @artlessnoise für diese nützlichen links.
- meinst du ARMv7 statt ARM7?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Coprozessor in ARM ist ein irreführender Begriff. Es ist die Kurzform für ein optionales Stück Funktionalität, die nicht offen über die Kern-Befehlssatz. ARM-CPUs sind modular aufgebaut. Es gibt Stücke von der CPU-hardware, die Implementierung der Architektur kann oder kann möglicherweise nicht auf dem chip. Die memory management unit (MMU) ist ein Beispiel; es gibt andere, so ist die hardware-debug-Möglichkeit. Diese sind, in der Tat, gekennzeichnet durch Coprozessor-Nummer (
pXX
), so dass mehr als ein Coprozessor vorhanden sein können in der gleichen Zeit. Die Coprozessor-Nummer für die MMU ist traditionell p15. Coprozessoren p0..p14 haben nichts zu tun mit memory-management und kann nicht anwesend sein. Die debugging-subsystem, beispielsweise ist p14.Des MRC und MCR Befehlen verwendet werden, um Befehle zu senden, um Coprozessoren. Der Merksatz ist, wieder, etwas irreführend - die Wirkung eines Befehls können Sie mehr als nur ein register verschieben. Es ist mehr wie MRC steht für "senden Sie einen Befehl an einen Coprozessor und einige Daten zurück" und MCR "senden Sie einen Befehl an einen Coprozessor und einige Daten zusammen". Denken Sie an es auf diese Weise. Das ist es, was die opcodes sind - das ist der Befehl für den Coprozessor. Manchmal, ein MCR/MRC-Befehl mit einer bestimmten coproc # und opcode würde sogar separate Merksatz in der assembler (e. g. FPU-Befehle).
Den genauen Besonderheiten des Coprozessor-opcodes und register zahlen variieren von einem copropcessor zu einem anderen. Da es die MMU, die Sie interessiert sind, Lesen Sie auf, dass insbesondere ein, er werde erklären, wie bestimmte Vorgänge anzeigen zu opcodes und coproc register zahlen.
ldc
,cdp
, undstc
sowie spezielle Zweck der Beschreibung. Heyrick co-Prozessor-Befehle ist eine gute Referenz als auch. In der Regel in allen modernen Waffen, Seva ist Recht, Sie sind der gleiche chip. Jedoch, wie Sie umgesetzt werden, als co-pro, ist es oft ein option.