floppy drive works under XP, W2K Dos but not NT4(SP6a)

Discussion in 'Windows Vista Drivers' started by CKNC, Nov 11, 2004.

  1. CKNC

    CKNC Guest

    I have a board with intel 440 MX chip set on it and the floppy drive works
    fine under XP,W2K and DOS. However it does not work under NT4, SP6a. The
    message shows "the volume does not contain a recognized file system .......
    volume is corrupt".

    I can use the NT4 DDK floppy source code to recreate the problem. After
    trace through the code, the finding is that after issue the floppy read
    command, the DMA ch2 will handshake the data out of the Xbus floppy
    controller (verified by tag the xbus signal through logic analyzer), DMA
    engine shows it finish the transfer count, no error from the floppy
    controller either, however the system memory destination of the DMA area is
    not updated.

    I had put a breakpoint after the DMA setup function "IoMapTransfer". and
    retrieve the current DMA channel setting to know what is the physical memory
    area it DMA to and monitor the area before and after the floppy read command.
    The data in the area is not changed. If we fake the data by puting correct
    floppy data in the DMA memory region, the driver is happy and continues ask
    the next sector. We thought this may be a cache issue, however by turning off
    the cache, the situation still happen. I was trying to know how
    "IoMapTransfer" function setup the DMA, however, this is a kernel call and no
    source is provided.

    I am not assuming this is a hardware issue, due to the fact that XP, W2K and
    DOS all work fine. The floppy controller is on SMSC FDC37B727 superIO chip.
    I am wondering has any one ever see issue like this about the DMA? Any
    comment are welcomed.
     
    CKNC, Nov 11, 2004
    #1
    1. Advertisements

  2. CKNC

    CKNC Guest

    I think I found the problem. It is due the the 8bit DMA engine can only use
    the memory below 1M as the destination. Somehow, in W2k and XP, the os knows
    to use the low address to setup the floppy DMA, but NT4.0 doesn't. Does
    anyone know if there is any init setting to tell the OS to use the memory
    below 1M to setup the floppy DMA.

    Thanks.
     
    CKNC, Nov 12, 2004
    #2
    1. Advertisements

  3. CKNC

    440gtx Guest

    It is due the the 8bit DMA engine can only use the memory below 1M

    Note the DMA controller can address the first physical 16 megabytes,
    not just the first 1 megabyte since it uses a 24-bit address.
     
    440gtx, Nov 13, 2004
    #3
  4. CKNC

    CKNC Guest

    Problem resolved. This is due to there is a "reserved" undocument bit in
    440MX chip set that "top of memory to 16M" is not set correctly by default.
    This is why the dma will perform the write but memory is not updated for
    memory above one meg.
    Thanks.
    Case closed.
     
    CKNC, Nov 15, 2004
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.