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

📄 ramdisk.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
字号:
/* Copyright (C) 2006 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File        :   usb\ramdisk\ramdisk.c
Desc        :   定义 RAMDISK BLOCK 设备和 USB 的接口实现.


Author      :   huangsl
Date        :
Notes       :

$Log: ramdisk.c,v $
Revision 1.2  2008/06/19 04:43:28  Administrator
代码整理!

Revision 1.1.1.1  2008/05/07 04:15:08  Administrator
no message

Revision 1.1.1.1  2008/03/06 13:29:10  Lingzhaojun
no message

Revision 1.5  2007/11/30 03:01:03  Miaolifeng
完善inquiry信息

Revision 1.4  2007/10/11 04:09:19  Huangshilin
System 其他目录。

Revision 1.3  2007/10/08 02:43:59  Lingzhaojun
添加版本自动注释脚本

*
*   2007/09/24  huangsl     for rk27.
*
*/
/***************************************************************************/
#include "include.h"
#include "..\usbblock.h"
/***************************************************************************/
#if defined(RAMDISK)
/***************************************************************************/
#define RAMDSK_TOTALBYES            (64*1024*1024)      // 64 M  
#define RAMDSK_STARTADDR            0x60700000//((char*)0X10000)  //SRAM 之后.
#define RAMDSK_LBA2BUFF( lba )      ((void*)(RAMDSK_STARTADDR + (lba)*512))

__align(4) UINT8 SCSI_INQUIRY_ram[] =
{
    0x00,               //Peripheral Device Type    0, 5:CD-ROM
    0x80,               //RMB   1
    0x00,               //ISO Version+ECMA Version+ANSI Version 2
    0x00,               //Response Data Format  3
    0x22,               //Additional Length(31) 4

    0x00, 0x00, 0x00,       //reserved  5~7

    'R', 'o', 'c', 'k', 'C', 'h', 'i', 'p',    //Vendor Information    8~15

    'U', 'S', 'B', 'D', 'I', 'S', 'K', ' ', ' ', ' ', 'R', 'a', 'm',    //Product Idernification    16~31
    ' ', ' ', ' ',

    '1', '.', '0', '0'      //version : 1.00    //32~35
};
/***************************************************************************/
//EXTERN

/***************************************************************************/

/***************************************************************************/

/*********************************************************************************
Name        :   RamDskInitialize
Desc        :   RAMDISK 设备的初始化函数 .
Param       :   无。
Return      :   无
Global      :   gRamDiskMemo.
Note        :

Author      :   HUANGSL
Log         :
*********************************************************************************/
void RamDskInitialize(void)
{
    memset(RAMDSK_LBA2BUFF(0) , 0xff , RAMDSK_TOTALBYES);

}
/*********************************************************************************
Name        :   RamDskReadData
Desc        :   RAM DISK 设备 读函数.
Param       :   无。
Return      :   无
Global      :   gRamDiskMemo.
Note        :

Author      :   HUANGSL
Log         :
*********************************************************************************/

BOOLEAN RamDskReadData(INT32U Lba, INT32U LbaCount, void *pBuf)
{
    memcpy(pBuf , RAMDSK_LBA2BUFF(Lba) , LbaCount*512);
    return TRUE;
}

/*********************************************************************************
Name        :   RamDskWriteData
Desc        :   AM DISK 设备 写函数.
Param       :   无。
Return      :   无
Global      :   gRamDiskMemo.
Note        :
Author      :   HUANGSL
Log         :
*********************************************************************************/
BOOLEAN RamDskWriteData(INT32U Lba, INT32U LbaCount, void *pBuf)
{
    memcpy(RAMDSK_LBA2BUFF(Lba), pBuf , LbaCount*512);
    return TRUE;
}


/*********************************************************************************
Name        :   RamDskIoCtrl
Desc        :   USB 模块初始化函数.
Param       :   无。
Return      :   无
Global      :   无.
Note        :   系统初始化之后调用。

Author      :   HUANGSL
Log         :
*********************************************************************************/
BOOLEAN RamDskIoCtrl(MSC_IOCTL ioctl, void *pArg)
{
    switch (ioctl)
    {
        case MSC_IOCTL_RESET:
            break;
        case MSC_IOCTL_GET_GEOMETRY:
            {
                MSC_GEOMETRY *p = (MSC_GEOMETRY*)pArg;
                p->LbaSize = 512;
                p->LbaMax = RAMDSK_TOTALBYES / 512;
                p->Loaded = TRUE;
            }
            break;
        case MSC_IOCTL_GET_PROPERTIES:
            {
                MSC_PROPERTIES *p = (MSC_PROPERTIES*)pArg;
                p->ProductID = "2007";
                p->VendorID = "ffff";
                p->Version = "0100";
                p->SCSI_Inquiry = (char*)SCSI_INQUIRY_ram;
                p->Removable = FALSE;
            }
            break;
        case MSC_IOCTL_CHECK_STATUS:
            {
                MSC_STATUS *p = (MSC_STATUS*)pArg;
                *p = MSC_STATUS_NO_CHANGE;
            }
            break;
        default:
            return FALSE;
    }
    return TRUE;
}

/****************************************************************/
#endif // RAMDISK
//---------END OF FILE---------//
/****************************************************************/


⌨️ 快捷键说明

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