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 + -
显示快捷键?