From: M. R. B. <ma...@uw...> - 2001-01-01 07:32:35
|
Aargh! Life. I apologize for being so quiet lately, I've been juggling between work, family, reversing the lengthy Dreamcast BIOS, and GNU toolsmithing. The good thing is, next week (after the 1st), I'll have working DSL in my apt. so all my updates will come straight from home :). Anyways, here's some ideas and here's where I'm headed starting next week: Karl, the hardware doc will be A Good Thing, as long as we have a defined format for submissions and an organization for chapters, I have some info to submit :). The info I have would probably go under "BIOS" or "Hardware Initialization". They key is to sectionalize each major component of the DC (e.g. Section 1: SH4 Core, Section 2: PowerVR2DC/System ASIC, Section 3: BIOS, Section 4: Physical Hardware). Here's a contrived example: Section 1: SH7750 Core - Memory map - Programming Models - ... Note that this is NOT an exact duplicate of the SH7750 HW manual, it should introduce a newbie to the DC's structure (e.g. how the pieces of different systems work together), so that the SH7750 HW/Programming manuals become _supplements_ to the DC HW manual. Section 2: PowerVR2DC System ASIC - Introduction - Resources: External DMA, IRQ 9, etc. - GD-ROM - Video (just raw info on components, not tutorials on 3D ;) - AICA - Maple - Expansion Port This is the most "uncharted" area of the DC. I've been spending a lot of time lately with the GD-ROM syscalls, the code of which is located in the 16KB of space @ 8c000000-8c003fff. The Introduction chapter would give a brief rundown of each system connected to the ASIC (or G2 - which is it?), followed by raw details of each subsystem. Section 3: BIOS - Hardware Initialization - System/Bios calls - DC Shell I've seen some wicked code in the DC BIOS, anyone who finds themselves bored one afternoon should give it a shot :P. The most interesting routine I've seen so far is the main hardware init routine, which sets huge sets of HW registers using a special register/init table. Also, system calls (copied from the BIOS during init to 8c000000) can also be explained in this section, and possibly a treatise on the inner workings of the DC Shell. Section 4: Peripherals - Maple bus peripherals (keyboard, mouse, etc.) - Expansion peripherals (modem, NIC, etc.) Details inner workings of each peripheral. Section 5: Physical Hardware - Pinouts of external DC ports - Pin locations inside the DC - Timing info, etc. Where's the kernel? =================== Good question :). I admit I haven't been spending a lot of time working on foolproofing the kernel, but there are a couple of other issues that need to be addressed as well. First off, if you are subscribed to LinuxSH's development list (lin...@so...) you'd have seen a message from Mitch Davis regarding status of the toolchains (GNU binutils and GNU gcc are what I'm most concerned with). I'm currently working with binutils and gcc from cygnus's CVS from Dec. 21st, which appear to be mostly stable. There have been some patches to LinuxSH's kernel (on which our LinuxDC kernel is derived), which also help building the kernel with the new tools. I've been taking notes and testing with the procedures I've been using to build the kernel, so I'm drafting a Tools-HOWTO and a Kernel-HOWTO independant of the ones you'll find on the LinuxSH site. Also, Rene, if you got some patches that allow the kernel to build, could you also post them to the list as well as committing them to CVS? So, to make a long story short, from my side of things, we need to get going on starting to add peripheral support to the Linux kernel for the DC, but I'm still a little unsure of where to start. The framebuffer would be good for the demo effect, but there are things to consider when writing a FB such as acceleration and overall system performance. So I've been reversing the kernel and gathering info in an attempt to map out the resources provided by the PowerVR2DC (G2) ASIC, so that low-level support for the G2 can go into the kernel first. Anyone who has more info on the G2 or _any_ low-level DC components is encouraged to fire when ready :) But I'll start churning out what I have now, thanks for being so patient. M. R. |