⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtfsinit.c

📁 ertfs文件系统里面既有完整ucos程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    /* Install DRIVE A: Using a host driver */
    /* Note: Turn off all other drivers and set NDRIVES to 
       1 if building the MKROM utility */
#if (0) // Set to one to include the hostdisk 
    logical_drive_number = 0;
    pdr->register_file_address  = (IOADDRESS) 0;    // Not used 
    pdr->interrupt_number       = 0;    // Not used
    pdr->drive_flags            = 0;
    pdr->partition_number       = 0;    // Not used
    pdr->lock_unit              = lock_unit;
    pdr->pcmcia_slot_number     = 0;    // Not used
    pdr->pcmcia_controller_number = 0;  // Not used
    pdr->controller_number      = 0;
    pdr->logical_unit_number    = 0;
    pdr->dev_table_drive_io     = hostdisk_io;
    pdr->dev_table_perform_device_ioctl = hostdisk_perform_device_ioctl;
    drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to A:
    pdr->driveno = logical_drive_number;
    SAVE_NAME(logical_drive_number,"HOST DISK")
    pdr++;
#endif

    /* Increment the lock unit to the first IDE controller */
    lock_unit += 1;

    /* IO addresses and interrupts used for ATA devices */
    /*              Primary  Secondary Tertiary Quaternary
     *              0x01f0  0x0170     0x01e8   0x0168  
     *              0x03f6  0x0376     0x03ee   0x036e
     *              14      15         11       10
     *      Note: -1 for interrupts means used polled
     */

/* Note: We automatically set IDE to C: if USE_ATA is defined.
   This is just just a convenience the order of processing and device
   ID assignment is completely user configurable */
#if (USE_ATA) 
#if(NDRIVES <= 2)
#error NDRIVES IS TOO SMALL
#endif

#if (0)
	/* Install DRIVE C: As the primary controller, master IDE drive 
        first partition */
    logical_drive_number = 2;   /* C: for first IDE drive */

#if (JMRTX3904)
#error set IO address to JMRTX3904_ISA_ATA_PRIMARY_IO_ADDRESS;
#error set IRQ to JMRTX3904_ISA_ATA_PRIMARY_IRQ
#endif
    pdr->register_file_address  = (IOADDRESS) 0x4000000; // Primary IO address
    // Note: Set interrupt number to -1 to use polled mode
    pdr->interrupt_number       = -1;    // Primary ATA interrupt 
    pdr->drive_flags            = DRIVE_FLAGS_PARTITIONED;
    pdr->partition_number       = 0;     // 
    pdr->lock_unit              = lock_unit;
    pdr->pcmcia_slot_number     = 0;
    pdr->pcmcia_controller_number = 0;
    pdr->controller_number      = 0;
    pdr->logical_unit_number    = 0;
    pdr->dev_table_drive_io     = ide_io;
    pdr->dev_table_perform_device_ioctl = ide_perform_device_ioctl;
    drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
    SAVE_NAME(logical_drive_number, "Primary Fixed IDE Master");
    pdr->driveno = logical_drive_number++;
    pdr++;

#endif  

    /* Install DRIVE D: As first IDE drive second partition */
#if(NDRIVES <= 3)
#error NDRIVES IS TOO SMALL
#endif

#if (0) // BUGBUG - change to if (1) Set to zero to turn off 2nd partition support 
    logical_drive_number = 3;   /* D: for first IDE drive 2nd partition */
    pdr->register_file_address  = (IOADDRESS) 0x1f0; // Primary IO address
    // Note: Set interrupt number to -1 to use polled mode
    pdr->interrupt_number       = 14;    // Primary ATA interrupt 
    pdr->drive_flags            = DRIVE_FLAGS_PARTITIONED;
    pdr->partition_number       = 1;     // 
    pdr->lock_unit              = lock_unit;
    pdr->pcmcia_slot_number     = 0;
    pdr->pcmcia_controller_number = 0;
    pdr->controller_number      = 0;
    pdr->logical_unit_number    = 0;
    pdr->dev_table_drive_io     = ide_io;
    pdr->dev_table_perform_device_ioctl = ide_perform_device_ioctl;
    drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
    SAVE_NAME(logical_drive_number,"Primary Fixed IDE Master 2nd Partition")
    pdr->driveno = logical_drive_number++;
    pdr++;
#endif

#endif // ATA

#if (0) // This is a test case and a model for 2nd partition on pcmcia
#if(NDRIVES <= 5)
#error NDRIVES IS TOO SMALL
#endif

    /* Install DRIVE F: As second IDE pcmcia drive */
    logical_drive_number = 5;   /* E: for PCMCIA IDE drive  */
    pdr->register_file_address  = (IOADDRESS) 0x170; // Secondary IO address
    // Note: Set interrupt number to -1 to use polled mode
    pdr->interrupt_number       = 15;    // Secondary ATA interrupt 
    pdr->drive_flags            = DRIVE_FLAGS_PARTITIONED|DRIVE_FLAGS_PCMCIA|DRIVE_FLAGS_PCMCIA_ATA;
    pdr->partition_number       = 1;     // 
    pdr->lock_unit              = lock_unit;
    pdr->pcmcia_slot_number     = 0; 
    pdr->pcmcia_controller_number = 0;
    pdr->pcmcia_cfg_opt_value   = 0x43;  // access it at 0x170 on pcmcia bus
    pdr->controller_number      = 1;
    pdr->logical_unit_number    = 0;
    pdr->dev_table_drive_io     = ide_io;
    pdr->dev_table_perform_device_ioctl = ide_perform_device_ioctl;
    drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
    SAVE_NAME(logical_drive_number, "PCMCIA ATA Slot 0 partition 2")
    pdr->driveno = logical_drive_number++;
    pdr++;
#endif

#if (0) // This is PCMCIA SRAM - Enable to use
#if(NDRIVES <= 5)
#error NDRIVES IS TOO SMALL
#endif

    lock_unit += 1;
    /* Install DRIVE F: As pcmcia RAM DISK */
    logical_drive_number = 5;
    pdr->register_file_address  = (IOADDRESS) 0;    // 
    pdr->interrupt_number       = 0;    // Secondary ATA interrupt 
    pdr->drive_flags            = 0;
    pdr->partition_number       = 0;     // 
    pdr->lock_unit              = lock_unit;
    pdr->pcmcia_slot_number     = 0; 
    pdr->pcmcia_controller_number = 0;
    pdr->pcmcia_cfg_opt_value   = 0x43;  // access it at 0x170 on pcmcia bus
    pdr->controller_number      = 0;
    pdr->logical_unit_number    = 0;
    pdr->dev_table_drive_io     = pcmsram_io;
    pdr->dev_table_perform_device_ioctl = pcmsram_perform_device_ioctl;
    drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
    SAVE_NAME(logical_drive_number, "PCMCIA RAM DISK Slot 0");
    pdr->driveno = logical_drive_number;
    pdr++;
#endif

#if (1) // This is Static RAM DISK - Enable to use

#if(NDRIVES <= 6)
#error NDRIVES IS TOO SMALL
#endif

    /* Install DRIVE G: As first RAM DISK */
    lock_unit += 1;
    logical_drive_number = 6;
    pdr->register_file_address  = (IOADDRESS) 0;    // Not used 
    pdr->interrupt_number       = 0;    // Not used
    pdr->drive_flags            = 0;
    pdr->partition_number       = 0;    // Not used
    pdr->lock_unit              = lock_unit;
    pdr->pcmcia_slot_number     = 0;    // Not used
    pdr->pcmcia_controller_number = 0;  // Not used
    pdr->controller_number      = 0;
    pdr->logical_unit_number    = 0;
    pdr->dev_table_drive_io     = ramdisk_io;
    pdr->dev_table_perform_device_ioctl = ramdisk_perform_device_ioctl;
    drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to G:
    pdr->driveno = logical_drive_number;
    SAVE_NAME(logical_drive_number,"STATIC RAM DISK")
    pdr++;
#endif

#if (1) // This is ROM DISK - Enable to use

#if(NDRIVES <= 7)
#error NDRIVES IS TOO SMALL
#endif

    /* Install DRIVE H: As first ROM DISK same lock unit as */
    logical_drive_number = 7;
    pdr->register_file_address  = (IOADDRESS) 0;    // 
    pdr->interrupt_number       = 0;    // 
    pdr->drive_flags            = 0;
    pdr->partition_number       = 0;     // 
    pdr->lock_unit              = lock_unit;
    pdr->pcmcia_slot_number     = 0; 
    pdr->pcmcia_controller_number = 0;
    pdr->controller_number      = 0;
    pdr->logical_unit_number    = 0;
    pdr->dev_table_drive_io     = nand_io;
    pdr->dev_table_perform_device_ioctl = nand_perform_device_ioctl;
    drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
    pdr->driveno = logical_drive_number;
    SAVE_NAME(logical_drive_number, "STATIC ROM DISK")
    pdr++;
#endif // 0
    /* End User initialization section */

    pdr= mem_drives_structures;
    for (j = 0; j < NDRIVES; j++, pdr++)
    {
        if (pdr->dev_table_drive_io)
        {
#if (PRINT_DEVNAMES)
        if (dev_name[pdr->driveno])
#if (SUPPORTS_CONSOLE)
     tm_printf_3("Drive: %c Device: %s\n", (char) ('A' + pdr->driveno), dev_name[pdr->driveno]);
#endif
#endif
            drno_to_dr_map[pdr->driveno] = pdr; // MAPS DRIVE structure to DRIVE:
            if (pdr->dev_table_perform_device_ioctl(pdr->driveno, DEVCTL_WARMSTART, (PFVOID) 0) != 0)
                drno_to_dr_map[pdr->driveno] = 0; // It's not there. 
                                                  // so forget it
        }
    }
    return(TRUE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -