Frage

Im Folgenden ist ein Beispiel für eine Frage auf meinem letzten Test in einem Kurs Computer Engineering gegeben. Jeder Geist mir zu erklären, wie die Start / End-Adressen von jedem zu bekommen? Ich habe die richtigen Antworten am Ende der Liste ...

Die MSP430F2410 Gerät hat einen Adressraum von 64 KB (die grundlegende MSP430 Architektur). Füllen Sie das untenstehende Tabelle, wenn wir folgendes wissen. Die ersten 16 Bytes des Adressraums (an der Startadresse 0x0000) zum Spezialfunktionsregister reserviert ist (IE1, IE2, IFG1, IFG2, etc.), werden die nächsten 240 Bytes für die 8-Bit-Peripheriegeräte reserviert ist, und der nächste 256 Bytes ist für 16-Bit-Peripheriegeräte vorbehalten. Die RAM-Speicherkapazität 2 Kbytes, und es beginnt an der Adresse 0x1100. An der Spitze des Adreßraums ist 56KB der Flash-Speichers reserviert für Code und Interrupt-Vektortabelle.

What                            Start Address End Address
Special Function Registers (16 bytes) 0x0000 0x000F
8-bit peripheral devices (240 bytes)  0x0010 0x00FF
16-bit peripheral devices (256 bytes) 0x0100 0x01FF
RAM memory (2 Kbytes)                 0x1100 0x18FF
Flash Memory (56 Kbytes)              0x2000  0xFFFF
War es hilfreich?

Lösung

Für den Anfang werden nicht abgeworfen durch das, was in jedem Segment gespeichert ist -, die nur geht, Sie zu verwirren. Das Problem ist, fragen Sie einfach die Hex-Nummerierung, um herauszufinden, und das ist nicht allzu schwierig. Hier sind die Anforderungen:

  • 64 KB Gesamtspeicher
  • Die erste 16 Bytes des Adressraums (an der Startadresse 0x0000) ist reserviert für Spezialfunktionsregister (IE1, IE2, IFG1, IFG2, etc.)
  • Die nächste 240 Byte reserviert ist für 8-Bit-Peripheriegeräte
  • Die nächste 256 Bytes ist reserviert für 16-Bit-Peripheriegeräte
  • Die RAM-Speicherkapazität ist 2 Kbyte , und es beginnt an der Adresse 0x1100
  • An der Spitze des Adressraums ist 56KB von Flash-Speicher reserviert für Code und Interruptvektortabelle.

Da jedes Hexadezimalzeichens in Ihrer Speicheradresse kann 16 Werte (0-F) handhabt, müssen Sie 4 Ziffern-Anzeige 64 KB Speicher (16 ^ 4 = 65536 oder 64K).

Sie beginnen mit 16 Bytes, und dass Abdeckungen 0x0000 - 0x000F (eine volle Ziffer Ihrer Adresse). Das bedeutet, dass das nächste Segment, das unmittelbar nach dem Start (8-Bit-Geräten), bei 0x0010 (dem nächsten Byte) beginnt, und da es 240 Bytes lang ist, es endet bei Byte 256 (240 + 16) oder 0x00FF.

Das nächste Segment (16-Bit-Geräte) beginnt an der nächsten Byte, das 0x0100 ist, und ist 256 Bytes lang -. Das bringt das Ende bei 0x01FF

Dann kommt 2 KB (2048 Byte) RAM, aber es beginnt bei 0x1100, wie die Beschreibung heißt es, statt unmittelbar nach dem vorherigen Segment, so dass die Ihre Startadresse. In 2048 das, und Sie 0x18FF erhalten.

Das letzte Segment deckt den oberen Abschnitt des Speichers, so dass Sie an der Arbeit nach hinten haben werden, wissen Sie es an 0xFFFF endet (das Ende des verfügbaren Speichers), und es ist 56KB lang. Wenn Sie die 56KB zu hex konvertieren, es ist 0xDFFF. Wenn Sie sich vorstellen, dass dieses Segment beginnt bei 0, dem Blatt 2000 ungebraucht (0xE000-0xEFFF und 0xF000-0xFFFF), so dass Sie wissen, dass dieses Segment bei 0x2000 zu beginnen hat am oberen Ende des Speicherplatz zu beenden.

Ich hoffe, das ist mehr klar, obwohl, wenn ich über sie gelesen, ich weiß nicht, dass es überhaupt keine Hilfe ist :( Vielleicht ist das, warum ich verlassen werde das Konzept jemand lehren mehr qualifizierte ...

Andere Tipps

#define NUM_SIZES 5
uint16_t sizes[5] = {16, 240, 256, 2 * 1024, 56 * 1024};
uint16_t address = 0;
printf("Start   End\n");
for (int i = 0; i < NUM_SIZES; i++)
{
    printf("0x%04X 0x%04X\n", address, address + sizes[i] - 1);
    address += sizes[i];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top