2009-08-23 8 views
1

ARMv6 vorstellen eine großartige Funktion - nicht ausgerichteten Speicherzugriff, die einige Dinge in Code viel einfacher und schneller machen. Aber Microsoft gibt API dafür nur in winCE6. Und die meisten PDAs basieren jetzt auf WinMobile6 (das auf CE 5.x ist). Und nicht ausgerichteter Zugriff ist standardmäßig deaktiviert :(Wie aktiviert man ARMv6 nicht ausgerichteten Zugriff auf WinMobile6?

Ich habe versucht unaligned Flag zu setzen in CP15 registrieren, aber das funktioniert nicht - ich habe einen Absturz auf lesen unaligned Daten

Ist es möglich, zu ermöglichen. unaligned Zugriff auf WinMobile6


Edit:?.. ich habe das Werkzeug gefunden, die nicht ausgerichteten Zugriff aktivieren können, aber ich möchte ein/aus es von meinem Code es ist nueAdvancedProcessor

Antwort

1

es gibt ein una ein Flag für den markierten Zugriff (das U-Bit im CP15-Steuerregister) und auch ein Ausrichtungsfehlerprüfer (das A-Bit). Stellen Sie sicher, dass Sie die richtige Kombination für das haben, was Sie tun möchten. Insbesondere wenn das A-Bit gesetzt ist, verursachen all Ihre nicht ausgerichteten Zugriffe eine Daten-Abbruch-Ausnahme, selbst wenn Sie das U-Bit eingeschaltet haben. Schauen Sie sich die ARM-Dokumentation dazu an - verfügbar unter http://www.arm.com.

Insbesondere möchten Sie Abschnitt A2.8.2 "Nicht ausgerichteter Datenzugriff in ARMv6-Systemen" im ARM-Architektur-Referenzhandbuch. Dokumentnummer ARM DDI 0100I. Es trägt den Titel "ARMv5 Architecture Reference Manual", enthält aber die ursprünglichen ARMv6-Informationen. Ich hoffe, dieser Link funktioniert: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0100i/index.html

+0

Danke für die Antwort! Ja, ich habe diesen Dosc gelesen, aber es sieht so aus, als gäbe es Einschränkungen für Windows Mobile. Vielleicht muss ich den Code vom Treiber oder etwas ähnliches ausführen. – zxcat

+1

Absolut. Auf CP15-Register kann nur von privilegierten Modi zugegriffen werden. Ich bin nicht wirklich vertraut mit Windows Mobile, aber Sie könnten versuchen, diese Bits in Ihrem Bootloader oder einem anderen frühen Assembly-Code zu setzen, und dann hoffe, dass das Betriebssystem sie nicht später für Sie zurückschlägt. –