ram_dsk.c

来自「包含了NXP众多的MCU的例子程序」· C语言 代码 · 共 258 行 · 第 1/2 页

C
258
字号
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x52, 0x61, 0x6d, 0x20, 0x64, 0x72,
0x69, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69,
0x73, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x20, 0x0d, 0x0a, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x41, 0x52,
0x20, 0x4c, 0x50, 0x43, 0x2d, 0x32, 0x31, 0x34, 0x78, 0x20, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20,
0x77, 0x69, 0x74, 0x68, 0x20, 0x4c, 0x50, 0x43, 0x32, 0x31, 0x34, 0x38, 0x2e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

#pragma data_alignment=4
__no_init Int8U RamDisk[RAM_DSK_BLOCK_SIZE * RAM_DSK_BLOCK_NUMB];

DiskStatus_t RamDskStatus;

/*************************************************************************
 * Function Name: RamDiskInit
 * Parameters:  none
 *
 * Return: none
 *
 * Description: Init RAM disk
 *
 *************************************************************************/
void RamDiskInit (void)
{
  RamDskStatus.BlockNumb    = RAM_DSK_BLOCK_NUMB;
  RamDskStatus.BlockSize    = RAM_DSK_BLOCK_SIZE;
  RamDskStatus.DiskStatus   = DiskCommandPass;
  RamDskStatus.DiskType     = DiskUnknow;
  RamDskStatus.WriteProtect = FALSE;
  RamDskStatus.MediaChanged = TRUE;
  memcpy(RamDisk,RamDiskInitData, sizeof(RamDiskInitData));
}

/*************************************************************************
 * Function Name: RamDiskInfo
 * Parameters:  pInt8U pData, DiskInfoType_t DiskInfoType
 *
 * Return: Int32U
 *
 * Description: Return pointer to Info stucture of the disk
 * (Inquiry or Format capacity)
 *
 *************************************************************************/
Int32U RamDiskInfo (pInt8U pData, DiskInfoType_t DiskInfoType)
{
  switch (DiskInfoType)
  {
  case DiskInquiry:
    memcpy(pData,RamDskInquiry,SizeOfInquiryDescRamDsk);
    return(SizeOfInquiryDescRamDsk);
  case DiskFormatCapacity:
    memcpy(pData,RamDskFormatCapacity,SizeOfFormatCapacityRamDsk);
    return(SizeOfFormatCapacityRamDsk);
  }
  return(0);
}

/*************************************************************************
 * Function Name: RamDiskStatus
 * Parameters:  void
 *
 * Return: pDiskStatus_t
 *
 * Description: Return pointer to status stucture of the disk
 *
 *************************************************************************/
pDiskStatus_t RamDiskStatus (void)
{
  return(&RamDskStatus);
}

/*************************************************************************
 * Function Name: RamDiskIO
 * Parameters: pInt8U pData,Int32U BlockStart,
 *             Int32U BlockNum, DiskIoRequest_t IoRequest
 *
 * Return: DiskStatusCode_t
 *
 * Description: Ram disk I/O
 *
 *************************************************************************/
DiskStatusCode_t RamDiskIO (pInt8U pData,Int32U BlockStart,
                            Int32U BlockNum, DiskIoRequest_t IoRequest)
{
  if((pData == NULL) || (BlockStart+BlockNum > RAM_DSK_BLOCK_NUMB))
  {
    return(DiskParametersError);
  }
  switch (IoRequest)
  {
  case DiskWrite:
    memcpy(RamDisk+(BlockStart*RAM_DSK_BLOCK_SIZE),pData,BlockNum*RAM_DSK_BLOCK_SIZE);
    break;
  case DiskRead:
    memcpy(pData,RamDisk+(BlockStart*RAM_DSK_BLOCK_SIZE),BlockNum*RAM_DSK_BLOCK_SIZE);
    break;
  case DiskVerify:
    if(memcmp(RamDisk+(BlockStart*RAM_DSK_BLOCK_SIZE),pData,BlockNum*RAM_DSK_BLOCK_SIZE))
    {
      return(DiskMiscompareError);
    }
    break;
  default:
    return(DiskParametersError);
  }
  return(DiskCommandPass);
}

⌨️ 快捷键说明

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