wilson (Paul Wilson) (10/01/90)
I have been busy trying to get the hard disk drivers and shoelace up and running on Minix 1.5.10 and have a few observations to share and one problem to solve. Firstly, I was not initially able to get shoelace to boot a Minix image containing the bios_wini.c hard disk driver. Everything went fine until time for the driver process to perform its initialization. At this point the light came on on the hard disk drive and everything froze. My first thought was that shoelace had managed to clobber the hard disk IRQ vector for the hard disk bios. Some diagnostic printf statements in the driver soon revealed that this was not the case. In the end I was able to fix the problem by invoking a bios reset of the controller. I did this by sending an "alternate reset" call to the bios before the parameter table is read. This required a call to bios13 with AH set to "0D" and DL set to the drive number. If you are using two drives, it should be done for each drive in turn. Now, on to my remaining problem; I cannot get the xt_wini.c driver to work correctly with my hardware. It is very close but I still have one remaining problem. The hardware is an Adaptec 8 bit RLL controller board and the disk is a Mitsubishi MR535. Unfortunately, I do not remember the mdel number of the controller and I do not have that information available to me at the office. The problem is that I can read the first 38 Meg or so of the disk but, if I try to read anything higher than that, I get an unrecoverable disk error. Specifically, the disk makes noises like it might be tryining to seek to a non-existant cylinder and then the driver gives up. I did find that the driver was confused over maximum head number (4) versus number of heads (5) causing it to calculate the cylinder number incorrectly. When I fixed this, the block number at which the problem occurred changed (as expected) but the cylinder number at which the problem occurred also changed (not expected). The problem does not occur at a place that seems likely. Specifically, it occurs in the middle of a track, not at head 0 and, most significantly, not when the leftmost 1 in the cylinder number propagates to the left. Unfortunately, I do not have any documentation on the disk controller card so I am reduced to poking around based on what I know of the disk bios operation and what I can figure out from the xt_wini.c code. Anyone have any suggestions as to how to solve this problem ? Paul Wilson ( ...!uunet!van-bc!mdivax1!wilson)
rdc30med@nmrdc1.nmrdc.nnmc.navy.mil (LCDR Michael E. Dobson) (10/02/90)
What do you have NR_SECTORS defined to? Most RLL controllers use 26 sectors but some use 25. From the description of the errors you get, this sounds like it could be the problem. I was using two different XTs with RRL controllers that (as one would guess) required different values for NR_SECTORS. This caused me no end of trouble until I got kernels built with the correct values for each machine. One nice thing about shoelace. If you boot from the kernel pieces, ie fs, mm and kernel, you can quickly test this out by compiling xt_wini with -DNR_SECTORS=25 or 26 and relinking the kernel. -- Mike Dobson, Sys Admin for | Internet: rdc30med@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30med AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb.bitnet WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com
wilson (Paul Wilson) (10/04/90)
Michael Dobson asks whether I have changed NR_SECTORS. I have set NR_SECTORS to 25 which is the value that the controller expects. Unfortunately, I forgot to include this information in my original posting. Paul Wilson (...!uunet!van-bc!mdivax1!wilson)