File: TODO

package info (click to toggle)
faumachine 20100527-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 53,836 kB
  • ctags: 20,552
  • sloc: ansic: 179,550; asm: 3,645; makefile: 3,611; perl: 2,103; sh: 1,529; python: 600; xml: 563; lex: 210; vhdl: 204
file content (307 lines) | stat: -rw-r--r-- 11,374 bytes parent folder | download | duplicates (2)
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
Visions for the future... ;-)
---------------------------


/* ======================================================================= */
	Building and Testing
/* ======================================================================= */

Check much more distributions:
-----------------------------------------------------------------------------
	We should test many more distributions...


Use EDIF file (or similar) to generate bus/chip structures.
-----------------------------------------------------------------------------
	Create all busses and chips according to an EDIF/EAGLE/... file.
	Depending on the simulation details needed this can result in
	*one* big *.c file with only "inline" functions inside.


/* ======================================================================= */
	Bridges
/* ======================================================================= */

Use real hardware under FAUmachine (bridges):
-----------------------------------------------------------------------------
	- network adapter (TAP device?)
	- disks
	- modem
	- USB
	- ...


FAUmachine as sniffer:
-----------------------------------------------------------------------------
	- ethernet
	- parallel port
	- serial port
	- USB
	- ...

/* ======================================================================= */
	Simulator
/* ======================================================================= */

Improved behaviour description for CPU:
-----------------------------------------------------------------------------
	Use some kind of behaviour description for the CPU.
	Use this description for interpreter code, JIT, ...


Simulate enough to get DDC work:
-----------------------------------------------------------------------------
	Most Linux distributions try to figure out what monitor is
	present using DDC. Support it.


Debugger register db0-db7:
-----------------------------------------------------------------------------
	Tracer should use CPU structure to enable debugging using
	registers db0 to db7. Currently only single stepping is supported.


Merge all mapped memory blocks:
-----------------------------------------------------------------------------
	Use "io_malloc" to allocate memory for simulation.
	Use "cpu_malloc" for CPU and APIC simulation.


Simulate DTR/DSR/CD for serial device:
-----------------------------------------------------------------------------
	DTR/DSR/CD/... might be set via inb/outb but they are not used
	during simulation.


Real-time constrains for some devices needed
-----------------------------------------------------------------------------
	E.g. keyboard driver needs some real-time features. Otherwise
	keyboard might be too fast or too slow to be detected properly.


Switch between simulation driven time and dynamic time
-----------------------------------------------------------------------------
	While doing I/O or accessing time we need simulation driven time.
	To be able to use FAUmachine as a real user we need real-time or
	dynamic time. Switch between both as needed.


Improve IDE to get CD-burner running
-----------------------------------------------------------------------------
	Some IDE commands have to be implemented to use a CD-burner.


Cache logic for IDE devices
-----------------------------------------------------------------------------
	- Implement Read/Ahead and Cache logic
	- Implement buffered write
	- Implement Flush Command


Umstorage should be similiar to memory Infrastrucutre
-----------------------------------------------------------------------------
	- make storage components available including COW.
	- make it possible to *map* pages
	- umstorage needs its own interface and maybe process to control the
	  state 


Simulate USB Devices
-----------------------------------------------------------------------------
	Simulate USB Devices like printer, scanner, ...


Use multi-level COW
-----------------------------------------------------------------------------
	Should be possible to use a COW image as basis of the next COW
	image.


Suspend and Resume Functions for Simulator
-----------------------------------------------------------------------------
	Add "suspend" and "resume" functions to simulator.

/* ======================================================================= */
	VHDL simulation / Experiments
/* ======================================================================= */

Improve pattern matching
-----------------------------------------------------------------------------
	* We should be able to match "Menu", "Buttons", ... and not
	  images.
	* Allow matching to more raster image formats, like PNG or TIF.


Speed up pattern matching
-----------------------------------------------------------------------------
	Speed up pattern recognition by generating some kind of
	automata.


Write some improved examples
-----------------------------------------------------------------------------
	Use install procedures, oracle setup etc. as good
	examples/experiments

/* ======================================================================= */
	Frontend
/* ======================================================================= */

Better checking of configuration constraints:
-----------------------------------------------------------------------------
	Currently it is possible to specify "insane" configurations (e. g. 
	15.333 Mb of memory, I/O-APIC without APICs, etc.).  These
	configurations should be caught during startup and the user should get
	a useful error message.  At the moment such configurations cause
	crashes and other strange behaviours.


Support XServer with different byte/bit ordering:
-----------------------------------------------------------------------------
	Currently the frontend is not able to run on XServers with
	byte/bit order other than LSBFirst.


/* ======================================================================= */
	BIOS
/* ======================================================================= */

Modify gcc to generate 16-bit real-mode code for BIOS/VGABIOS.
-----------------------------------------------------------------------------
	32-bit code modified by assembler for real-mode consumes too
	much space in 64 KByte ROM.


BIOS should check and report hardware present:
-----------------------------------------------------------------------------
	Real BIOS check and report hardware present before booting.
	Would be nice for configuration checking.
	Add some POST code, too.


Suspend to disk/Resume from disk:
-----------------------------------------------------------------------------
	Support APM-like suspend/restore.  This could speed up experiments, as
	boot up/shutdown could be skipped and experiments can be repeated from
	a well defined state.

/* ======================================================================= */
	Misc
/* ======================================================================= */

Write a GUI for defining hardware setups:
-----------------------------------------------------------------------------
	The system might be composed using a graphical interface.


Write a GUI for defining expect scripts:
-----------------------------------------------------------------------------
	Would be nice to generate expect scripts in a GUI.

	If next screen looks like ... then type "..."
	If button ... is visible then click at ...
	...


Write a native GUI for MacOS
-----------------------------------------------------------------------------
	Write a native GUI for MacOS (Carbon or Cocoa).


Write GUI to generate screenshots from video records:
-----------------------------------------------------------------------------
	It's easier to install a system by hand while recording a video
	and generate screenshots for "generate" scripts from that video
	than to generate screenshots step by step during installation.


Create some hardware stuff to observe/control some real hardware:
-----------------------------------------------------------------------------
	Use some kind of camera to "look" at monitor.
	Use some kind of "mouse"/"keyboard" to generate clicks/keystrokes
	by different computer.


VHDL simulator connection to in*/out*/interrupt interface:
-----------------------------------------------------------------------------
	Would be nice to simulate a new device using VHDL and to drive it
	using a new driver written in C...


Use VHDL to model chips and compile it into C code.
-----------------------------------------------------------------------------
	Would be nice to have a VHDL frontend for modelling FAUmachine
	components.


Improve performance:
-----------------------------------------------------------------------------
	- improve simulator
	- use Linux extensions


Port FAUmachine to *-Linux:
-----------------------------------------------------------------------------
	Use Alpha-Linux, Sparc-Linux as platform to run FAUmachine.


Port FAUmachine to I386-*:
-----------------------------------------------------------------------------
	Use I386-Windows, I386-*BSD, I386-Solaris as platform to
	run FAUmachine.


Fault injection for special CPU registers:
-----------------------------------------------------------------------------
	Implement fault injector for special registers like:
		db0, db1, ... db7       (Debug registers)
		seg[0] ... seg[9]       (Segment descriptors)
		tlb[0] ... tlb[NTLBS]   (TLB buffer)
		tsc                     (time stamp counter
		...


Design new start tool:
-----------------------------------------------------------------------------
	Currently launcher will not start nodes on different hosts.
	Expect uses (many) ssh connections. Both tools should make use
	of one common tool/library.

/* ======================================================================= */
	Misc
/* ======================================================================= */

FAUmachine for preservation:
-----------------------------------------------------------------------------
	Some people need old hardware for their old software.
	FAUmachine might simulate very old hardware (e.g. 8088-PCs).
	Configurable hardware needed.
	Improved BIOS (less stack consumption) needed.

FAUmachine for debugging:
-----------------------------------------------------------------------------
	Use an extended gdb for debugging. Make it possible to
	stop the whole FAUmachine setup (many PCs, VHDL-processes, ...)
	and to dump/disassemble/... the state of all components
	(CPU, memory, north/south-bridge, ...)

Improving simulation speed using PThreads:
-----------------------------------------------------------------------------
	Simulation speed might be improved to have multiple threads
	(pthread-library) simulating different CPUs, chips, disks, ...

Generate motherboard, chips, ... using VHDL descriptions:
-----------------------------------------------------------------------------
	mb_ga_686dlx.c and others could be generated using VHDL structural
	descriptions.

Generate JIT files using JIT-Compiler-Compiler
-----------------------------------------------------------------------------
	Design a JIT-Compiler-Compiler

Integrate FAUmachine into libvirt/virt-manager
-----------------------------------------------------------------------------
	libvirt can handle Xen/QEMU. It should be able to handle
	FAUmachine's configurations, too.

To be extended...