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...
|