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

📄 fs_img_dev.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
字号:
/********************************************************************************
*********************************************************************************
   COPYRIGHT (c)   2004 BY ROCK-CHIP FUZHOU
    --  ALL RIGHTS RESERVED  --

File Name: sd.c
Author:  XUESHAN LIN
Created:  29th SEP 2004
Modified:
Revision:  1.00
$Log: fs_img_dev.c,v $
Revision 1.2  2008/06/19 04:43:25  Administrator
代码整理!

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

Revision 1.7  2007/10/11 04:08:09  Huangshilin
System\os

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


********************************************************************************
********************************************************************************/
#include "../inc/fs_comm.h"

#define _IN_IMG_
#include "fs_img_dev.h"

#if(FS_EMU_ENT == PC_VC_EMU)

uint8 ImgFatCacheBuf[4][512];
uint8 ImgFdtCacheBuf[4][512];
uint8 ImgDataCacheBuf[4][512];

FS_CACHE_DATA IMG_FatCacheData[4] =
{
    {0, &ImgFatCacheBuf[0][0], 0xFFFFFFFF},
    {0, &ImgFatCacheBuf[1][0], 0xFFFFFFFF},
    {0, &ImgFatCacheBuf[2][0], 0xFFFFFFFF},
    {0, &ImgFatCacheBuf[3][0], 0xFFFFFFFF}
};
FS_CACHE_DATA IMG_FdtCacheData[4] =
{
    {0, &ImgFdtCacheBuf[0][0], 0xFFFFFFFF},
    {0, &ImgFdtCacheBuf[1][0], 0xFFFFFFFF},
    {0, &ImgFdtCacheBuf[2][0], 0xFFFFFFFF},
    {0, &ImgFdtCacheBuf[3][0], 0xFFFFFFFF}
};
FS_CACHE_DATA IMG_DataCacheData[4] =
{
    {0, &ImgDataCacheBuf[0][0], 0xFFFFFFFF},
    {0, &ImgDataCacheBuf[1][0], 0xFFFFFFFF},
    {0, &ImgDataCacheBuf[2][0], 0xFFFFFFFF},
    {0, &ImgDataCacheBuf[3][0], 0xFFFFFFFF}
};

FS_CACHE    ImgFatCache = {IMG_FatCacheData, 0, 4};
FS_CACHE    ImgFdtCache = {IMG_FdtCacheData, 0, 4};
FS_CACHE    ImgDataCache = {IMG_DataCacheData, 0, 4};

static FILE   *pImgFile;
static fpos_t ImgFileSize;

int FS_ImgGetStatus(void);
int FS_ImgInit(void);
int FS_ImgReadSec(uint32 LBA, uint32 SecCount, void *buf);
int FS_ImgWriteSec(uint32 LBA, uint32 SecCount, void *buf);
int FS_ImgIoCtl(uint32 cmd, uint32 arg, void *buf);
int FS_ImgMediumInit(void);

const FS_DEVICE_TYPE FS_ImgDevice =
{
    "C:\\",
    FS_ImgGetStatus,
    FS_ImgReadSec,
    FS_ImgWriteSec,
    FS_ImgIoCtl,
    FS_ImgMediumInit,
    &ImgFatCache,
    &ImgFdtCache,
    &ImgDataCache
};

int FS_ImgGetStatus(void)
{
    return(0);
}
int FS_ImgIoCtl(uint32 cmd, uint32 arg, void *buf)
{
    uint32 *rbuf;
    rbuf = (uint32 *)buf;
    switch (cmd)
    {
        case IO_CTL_GET_CAPACITY:
//            *rbuf = ((uint32)ImgFileSize)>>10;
            break;
        case IO_CTL_GET_MEDIUM_START_SEC:
            *rbuf = 0;
            break;
        default:
            break;
    }
    return(0);
}

int FS_ImgMediumInit(void)
{
    pImgFile = fopen("DiskSD.img", "rb+");
    if (pImgFile)
    {
        fseek(pImgFile, 0, SEEK_END);
        fgetpos(pImgFile, &ImgFileSize);
        fseek(pImgFile, 0, SEEK_SET);
    }
    else
    {
        return(-1);
    }
    return(0);
}

int FS_ImgReadSec(uint32 LBA, uint32 SecCount, void *buf)
{
    fseek(pImgFile, (LBA << 9), SEEK_SET);
    fread(buf, SecCount << 9, 1, pImgFile);
    return 0;
}

/***************************************************************************
函数描述:写SD卡数据(16bit)
入口参数:行地址,列地址,数据缓冲区,长度,宽度
出口参数:ERROR错误, SUCCEED正确
调用函数:
***************************************************************************/
int FS_ImgWriteSec(uint32 LBA, uint32 SecCount, void *buf)
{
    fseek(pImgFile, (LBA << 9), SEEK_SET);
    fwrite(buf, SecCount << 9, 1, pImgFile);
    return 0;
}

#endif

⌨️ 快捷键说明

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