media.c

来自「U盘控制器USB97C223的固件代码,对2kPAGE NAND FLASH 有」· C语言 代码 · 共 1,305 行 · 第 1/3 页

C
1,305
字号
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result media_copy_block_head(void) reentrant
{
  uint8 page=g_addr_page;
  trace0(0, lun, 0, "media_copy_block_head()") ;
  // _stack_check();
  g_addr_page=0;
  return media_copy_block(page);
}

//+-----------------------------------------------------------------------------
// Name:
//   map_copy_block_tail()
//
// Declaration:
//   t_result map_copy_block_tail(void) reentrant ;
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result media_copy_block_tail(void) reentrant
{
  uint8 page=g_addr_page;
  trace0(0, media, 0, "media_copy_block_tail()") ;
  return media_copy_block( (_media_data(pages_per_block)-page));
}


//+-----------------------------------------------------------------------------
// Name:
//   media_copy_sector()
//
// Declaration:
//   t_result media_copy_sector(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result media_copy_sector(void) reentrant
{
  int16 i;

  trace3(0, media, 0, "media_copy_sector() - src_blk:%d dst_blk:%d page:%d ", g_addr_rd_phy_blk, g_addr_wr_phy_blk, g_addr_page) ;

  if ( g_addr_wr_phy_blk == k_block_free )
  {
    trace0(0, media, 0, "error:  no destination block") ;
    return k_error ;
  }

  // read or fabricate data
  _media_data(sector_buffer)=g_sector_buffer;
  if (g_addr_rd_phy_blk != k_block_free )
  {
    if (k_success != _media_read_sector() )
      return k_error ;
  }
  else
  {
    trace0(0, media, 0, "src blk blank.  copying blank sector") ;
    for (i=0; i<k_sm_sector_sz; i++)
      g_sector_buffer[i]=0xff ;
    _media_clear_extra_data() ;
  }
  
  // bind current logical block to new physical block
  _media_bind_log2phy() ; 

  // write sector out to new location
  if (k_success != _media_write_sector() ) 
  {
    _lun_data(media) |= kbm_lun_media_unknown ;
    trace0(0, media, 0, "copy failed during write") ;
    return k_error ;
  }
  
  return k_success;
}


#if 0
//+-----------------------------------------------------------------------------
// Name:
//   media_erase_block()
//
// Declaration:
//   t_result media_erase_block(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result media_erase_block(void) reentrant
{
  trace0(0, media, 0, "+media_erase_block()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_read_sector()
//
// Declaration:
//   t_result media_read_sector(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_read_sector(void) reentrant 
{
  trace0(0, media, 0, "+media_read_sector()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_write_sector()
//
// Declaration:
//   t_result media_write_sector(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_write_sector(void) reentrant
{
  trace0(0, media, 0, "+media_write_sector()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_read_cis()
//
// Declaration:
//   t_result media_read_cis(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_read_cis(void) reentrant
{
  trace0(0, media, 0, "+media_read_cis()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_phy2log()
//
// Declaration:
//   t_result media_phy2log(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_phy2log(void) reentrant 
{
  trace0(0, media, 0, "+media_phy2log()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_bind_log2phy()
//
// Declaration:
//   t_result media_bind_log2phy(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_bind_log2phy(void) reentrant
{
  trace0(0, media, 0, "+media_bind_log2phy()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_set_phyblock_failed()
//
// Declaration:
//   t_result media_set_phyblock_failed(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_set_phyblock_failed(void) reentrant
{
  trace0(0, media, 0, "+media_set_phyblock_failed()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_is_phyblock_ok()
//
// Declaration:
//   t_result media_is_phyblock_ok(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_is_phyblock_ok(void) reentrant
{
  trace0(0, media, 0, "+media_is_phyblock_ok()") ;
  return k_false ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_is_phyblock_blank()
//
// Declaration:
//   t_result media_is_phyblock_blank(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_is_phyblock_blank(void) reentrant
{
  trace0(0, media, 0, "+media_is_phyblock_blank()") ;
  return k_false ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_read_extra_data()
//
// Declaration:
//   t_result media_read_extra_data(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_read_extra_data(void) reentrant
{
  trace0(0, media, 0, "+media_read_extra_data()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_write_extra_data()
//
// Declaration:
//   t_result media_write_extra_data(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_result  media_write_extra_data(void) reentrant
{
  trace0(0, media, 0, "+media_write_extra_data()") ;
  return k_error ;
}

//+-----------------------------------------------------------------------------
// Name:
//   media_clear_extra_data()
//
// Declaration:
//   void media_clear_extra_data(void) reentrant
//
// Purpose:
//   TBD
//
// Arguments:
//   TBD
//
// Return:
//   TBD
//
// Notes:
//   TBD
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------

⌨️ 快捷键说明

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