-
Notifications
You must be signed in to change notification settings - Fork 1
/
hardware.ini
134 lines (125 loc) · 7.22 KB
/
hardware.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# $Id: hardware.ini 114 2009-12-01 13:06:43Z simon_duquennoy $
#------------------------------------------------------------
#
# Hardware.cfg
# Fichier de configuration du simulateur de matériel
#
#
# Trace de Debug
#
# define DEBUG_SETUP 0x0001 /* trace hardware setup */
# define DEBUG_IT 0x0010 /* trace interruptions generation */
# define DEBUG_REG 0x0100 /* trace hardware register access */
# define DEBUG_WARNING 0x1000 /* trace hardware warning messages */
DEBUG = 0x0000
#
# Configuration des paramêtres de base du simulateur
#
SYSTICK = 1000 # delais entre deux ticks du simulateur (en micro-seconde)
#
# Configuration des matériels réseau
#
# configuration des ports COM (port serie de type RS232)
# > Port Serie n°1
SL1_ENABLE = 0 # SL1_ENABLE = 0 => simulation lien serie désactivée
SL1 = "chimay.lifl.fr" # Machine connecté à la sortie du lien serie n°1
SL1_COM = 1 # destinataire 1 = lien serie "com1", 2 = lien serie "com2"
SL1_NOISE = 500 # bruit de la ligne 0-999 (exprimé en /1000 d'erreur)
SL1_IRQ = 4 # niveau d'interruption de l'UART serie n°1
SL1_UARTSR = 0x3F8 # registre de status de l'UART serie n°1
SL1_UARTDATA = 0x3FA # registre d'entrée sortie de l'UART serie n°1
SL1_UDPPORT = 1500 # port UDP "réel" utiliser pour simulation serie n°1
# > Port Serie n°2
SL2_ENABLE = 0 # SL2_ENABLE = 0 => simulation lien serie désactivée
SL2 = "ldx2" # Machine connecté à la sortie du lien serie n°2
SL2_COM = 2 # destinataire 1 = lien serie "com1", 2 = lien serie "com2"
SL2_NOISE = 0 # bruit de la ligne 0-999 (exprimé en /1000 d'erreur)
SL2_IRQ = 5 # niveau d'interruption de l'UART serie n°2
SL2_UARTSR = 0x3FC # registre de status de l'UART serie n°2
SL2_UARTDATA = 0x3FE # registre d'entrée sortie de l'UART serie n°2
SL2_UDPPORT = 1501 # port UDP "réel" utiliser pour simulation serie n°2
# > Configuration de la carte Ethernet
ENABLE_ETHERNET = 0 # ENABLE_ETHERNET = 0 => simulation ethernet désactivée
Eth0_Link = 1 # num de cable de connexion de la carte Eth0
Eth0_DMASR = 0xE800 # registre de status de la carte Ethernet
Eth0_DMABASE = 0xE804 # adresse de base pour le vidage d'un paquet
Eth0_DMASIZE = 0xE808 # adresse limite pour le vidage d'un paquet
Eth0_IRQ = 9 # niveau d'interruption de la carte.
Eth0_MCADR = "225.0.0.1" # adresse multicast utilisée pour la simulation ethernet
Eth0_UDPPORT = 1502 # port UDP utilisé pour la simulation ethernet
#
# Configuration des disques durs
#
# > Disque dur IDE Maitre
ENABLE_HDA = 1 # ENABLE_HD = 0 => simulation du disque désactivée
HDA_FILENAME = "vdiskA.bin" # nom du fichier de stockage du disque simulé
HDA_CMDREG = 0x3F6 # registre de commande du disque maitre
HDA_DATAREGS = 0x110 # base des registres de données (r,r+1,r+2,...r+7)
HDA_IRQ = 14 # Interruption du disque
HDA_MAXCYLINDER = 16 # Nombre de pistes du disque maître
HDA_MAXSECTOR = 16 # Nombre de secteurs du disque maître
HDA_SECTORSIZE = 32 # Taille (en octet) d'un secteur du disque maître
HDA_STPS = 2 # nombre de SYSTICK pour changer de secteur
HDA_STPC = 1 # nombre de SYSTICK pour changer de piste
HDA_PON_DELAY = 30 # nombre de SYSTICK avant amorce du disque
HDA_POFF_DELAY = 30 # nombre de SYSTICK avant arret du disque
# > Disque dur IDE Esclave
ENABLE_HDB = 1 # ENABLE_HD = 0 => simulation du disque désactivée
HDB_FILENAME = "vdiskB.bin" # nom du fichier de stockage du disque simulé
HDB_CMDREG = 0x376 # registre de commande du disque esclave
HDB_DATAREGS = 0x170 # base des registres de données (r,r+1,r+2,...r+7)
HDB_IRQ = 15 # Niveau d'interruption du disque
HDB_MAXCYLINDER = 16 # Nombre de pistes du disque esclave
HDB_MAXSECTOR = 16 # Nombre de secteurs du disque esclave
HDB_SECTORSIZE = 512 # Taille (en octet) d'un secteur du disque esclave
HDB_STPS = 2 # nombre de SYSTICK pour changer de secteur
HDB_STPC = 3 # nombre de SYSTICK pour changer de piste
HDB_PON_DELAY = 30 # nombre de SYSTICK avant amorce du disque
HDB_POFF_DELAY = 30 # nombre de SYSTICK avant arret du disque
#
# Configuration de l'horologe interne
#
TIMER_CLOCK = 0xF0 # registre de lecture de la date courante (en ms)
TIMER_PARAM = 0xF4 # registre de configuration du TIMER
# bit 7 : RESET general (=1)
# bit 6 : Alarm ON = 1, Alarm OFF = 0
# bit 5 : Declanche la division Hz du Timer (=1)
# bit 4 \ Si le division Hz du timer est demandé :
# bit 3 / 00: 1 top d'alarme pour 1 tops d'horloge ,
# 01: 1 top d'alarme pour 8 tops d'horloge ,
# 10: 1 top d'alarme pour 64 tops d'horloge ,
# 11: 1 top d'alarme pour 512 tops d'horloge.
# bit 2 - R.F.U. -
# bit 1 \ Lecture d'un état interne de l'alarme
# bit 0 / 00: Alarme Courante,
# 01: Division Hz,
# 10: Ticks/Sec
# 11: niveau d'interruption de l'horloge
TIMER_ALARM = 0xF8 # registre de generation d'interruption
TIMER_IRQ = 2 # Niveau d'interruption de l'horologe
TIMER_TICKS = 1 # Nombre de SYSTICKS par tick d'horloge
#
# Configuration de la MMU
#
MMU_ENABLE = 1 # MMU_ENABLE = 0 => simulation de la MMU désactivée
MMU_IRQ = 13 # Niveau d'interruption de la MMU
MMU_CMD = 0x66 # Registre de commande de la MMU
MMU_FAULT_ADDR = 0xCD # Registre contenant l'adresse mémoire ayant provoqué une faute
TLB_ADD_ENTRY = 0xCE # Registre de commande d'ajout d'entrée dans la TLB
# attend une valeur de la forme :
# struct tlb_entry_s {
# unsigned unused: 8;
# unsigned virt_page: 12;
# unsigned phys_page: 8;
# unsigned access_type: 3;
# unsigned is_active: 1;
#};
# le nouveau mapping est ajouté dans la TLB,
# provoquant éventuellement l'écrasement d'une ancienne entrée
TLB_DEL_ENTRY = 0xDE # Registre de commande de suppression d'entrée dans la TLB
# seul phys_page est lu, et toutes les entrée
# correspondant à cette page physicique sont supprimées de la TLB
TLB_SIZE = 32 # Number of entries in the TLB
TLB_ENTRIES = 0x800 # Registre contenant les entrées de la TLB (32 bits par entrée)
# Accessible en lecture comme en écriture avec le même format que
# celui utilisé par TLB_ADD_ENTRY