📄 ramdisk.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 + -