Podcast
Questions and Answers
À quelle adresse commence le MIPS lors du démarrage ?
À quelle adresse commence le MIPS lors du démarrage ?
Quel composant permet de sortir des caractères sur un écran dans almo1 ?
Quel composant permet de sortir des caractères sur un écran dans almo1 ?
Quel registre faut-il écrire pour envoyer un caractère sur l'écran du terminal ?
Quel registre faut-il écrire pour envoyer un caractère sur l'écran du terminal ?
Si TTY0 commence à l'adresse 0xD0200000, quelle est l'adresse de TTY_READ pour TTY1 ?
Si TTY0 commence à l'adresse 0xD0200000, quelle est l'adresse de TTY_READ pour TTY1 ?
Signup and view all the answers
Que contient le registre TTY_STATUS lorsque des caractères sont en attente d'être lus ?
Que contient le registre TTY_STATUS lorsque des caractères sont en attente d'être lus ?
Signup and view all the answers
Quelles instructions le MIPS utilise-t-il pour accéder aux registres de périphériques ?
Quelles instructions le MIPS utilise-t-il pour accéder aux registres de périphériques ?
Signup and view all the answers
Quelles autres fonctionnalités un SoC pourrait-il avoir en plus du composant TTY ?
Quelles autres fonctionnalités un SoC pourrait-il avoir en plus du composant TTY ?
Signup and view all the answers
Pourquoi les flèches bleues sur le schéma ne vont-elles que dans une seule direction ?
Pourquoi les flèches bleues sur le schéma ne vont-elles que dans une seule direction ?
Signup and view all the answers
Quels composants émettent des requêtes lors de l'exécution des instructions comme lw et sw ?
Quels composants émettent des requêtes lors de l'exécution des instructions comme lw et sw ?
Signup and view all the answers
Pourquoi le code de démarrage ne peut-il pas être écrit en C ?
Pourquoi le code de démarrage ne peut-il pas être écrit en C ?
Signup and view all the answers
Quelle est l'adresse du registre TTY_WRITE pour le terminal 0 ?
Quelle est l'adresse du registre TTY_WRITE pour le terminal 0 ?
Signup and view all the answers
Quelle opération est interdite à l'adresse du registre TTY_WRITE ?
Quelle opération est interdite à l'adresse du registre TTY_WRITE ?
Signup and view all the answers
Quel est le rôle du fichier kernel.ld dans un programme exécutable ?
Quel est le rôle du fichier kernel.ld dans un programme exécutable ?
Signup and view all the answers
Pourquoi le MIPS propose-t-il des requêtes plutôt que de représenter les données ?
Pourquoi le MIPS propose-t-il des requêtes plutôt que de représenter les données ?
Signup and view all the answers
Quel type d'instructions font émettre des requêtes par le MIPS ?
Quel type d'instructions font émettre des requêtes par le MIPS ?
Signup and view all the answers
Quelle est la principale raison pour laquelle le code assembleur est utilisé ?
Quelle est la principale raison pour laquelle le code assembleur est utilisé ?
Signup and view all the answers
Quelle est la principale différence entre la RAM et la ROM dans le prototype almo1?
Quelle est la principale différence entre la RAM et la ROM dans le prototype almo1?
Signup and view all the answers
Quelle taille a l'espace d'adressage du MIPS?
Quelle taille a l'espace d'adressage du MIPS?
Signup and view all the answers
Quelles instructions sont utilisées pour accéder à l'espace d'adressage dans le MIPS?
Quelles instructions sont utilisées pour accéder à l'espace d'adressage dans le MIPS?
Signup and view all the answers
Quel aspect de l'espace d'adressage est vrai dans le contexte des mémoires?
Quel aspect de l'espace d'adressage est vrai dans le contexte des mémoires?
Signup and view all the answers
Où se trouve le code de démarrage dans le prototype almo1?
Où se trouve le code de démarrage dans le prototype almo1?
Signup and view all the answers
Pourquoi le code de boot est-il placé à une adresse spécifique dans l'espace d'adressage?
Pourquoi le code de boot est-il placé à une adresse spécifique dans l'espace d'adressage?
Signup and view all the answers
Quelle caractéristique de la ROM est essentielle pour le code de démarrage?
Quelle caractéristique de la ROM est essentielle pour le code de démarrage?
Signup and view all the answers
Comment est structuré l'espace d'adressage du MIPS?
Comment est structuré l'espace d'adressage du MIPS?
Signup and view all the answers
Study Notes
Boot and First Program in Kernel Mode
-
Architecture Analysis:
- Three figures illustrate the architecture of the almo1 prototype
- A simplified diagram, the internal registers representation of the TTY controller (for terminal), and the addressing space representation are presented.
-
Memory Organization:
- Two memory types exist: RAM (Random Access Memory) and ROM (Read-Only Memory).
- ROM holds the boot code.
- RAM is used for both the boot code and runtime data.
-
MIPS Addressing Space:
- The MIPS addressing space comprises all addresses the MIPS can access.
- Addresses are 32-bit, representing bytes (2^32 bytes).
- Load/store instructions (lw, lh, lb, lhu, lbu, sw, sh, sb) are used to interact with the addressing space.
- Memories are components holding addressable memory locations, mapped into the addressing space.
-
Boot Code Location:
- The boot code resides in ROM.
- It begins at address 0xBFC00000, the initial address MIPS provides during startup.
-
Input/Output (I/O) Component:
- The TTY component handles input and output operations (receiving keyboard input and sending to screen display).
- Other possible components in a System-on-a-Chip (SoC) include disk controller, video controller, Ethernet/USB ports, and analog input devices.
-
TTY Registers:
- Four command registers are located in the TTY controller, starting at address 0xD0200000.
- MIPS instructions cannot directly use TTY registers as operands (like add, or).
- Writing to the TTY_WRITE register sends a character to the screen.
- TTY_STATUS indicates pending characters for reading (1 = pending character(s)).
- TTY_READ holds typed character's ASCII code if TTY_STATUS is 1.
- The TTY_WRITE register's address is 0xD0200000 in the address space.
-
Multiple TTYs:
- The TTY controller can manage one to four terminals.
- Each terminal has a set of four registers (register map).
- If there are two terminals (TTY0 and TTY1), the TTY_READ register for TTY1 would be at address 0xD0200018.
-
Schematic Arrows:
- Blue arrows represent memory access requests (loads and stores) from the MIPS.
- The arrows point in only one direction to avoid overly complex diagrams.
Assembly Programming
-
Minimal Assembly Use:
- Assembly is used only when necessary
- Boot code is a primary example.
-
C Code Limitations during Startup:
- C compilers require a stack and a stack pointer register.
- These resource values are undefined during startup.
C Compilation and Linking
-
Executable Generation:
-
gcc -o file.o -c file.c
compiles the C file. -
ld -o bin.x -Tkernel.ld files.o
links the object code into the executable.
-
-
Linker Script (
kernel.ld
):-
kernel.ld
describes the memory map and how sections are placed in executable - Regions like
boot_region
andktext_region
define memory allocation for different program components.
-
-
MEMORY
section details:- Defines various memory segments and their properties (location
ORIGIN
and sizeLENGTH
).
- Defines various memory segments and their properties (location
C Programming
-
static
Keyword:-
static
keyword usage limits variables and functions to the current file. - It makes local variables persistent, retaining their values across function calls.
-
-
extern
Keyword:-
extern
declares a variable or function visible to other files in the project. - The concept is often implicitly applied and used in C, in contrast to the use of assembly files.
-
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Ce quiz explore l'organisation mémoire et l'espace d'adressage MIPS. Vous découvrirez les types de mémoire, la localisation du code de démarrage et les instructions utilisées pour interagir avec l'espace d'adressage. Testez vos connaissances sur la structure de l'architecture du prototype almo1.