📄 nand_media.c
字号:
g_addr_rd_phy_blk=0;
g_addr_page=0;
g_addr_segment=0;
_media_data(sector_buffer) = g_sector_buffer;
//nand_select_card() ;
_media_read_sector() ;
for(i=0;i<0x100;i++)
_nand_boot_cache[i] = g_sector_buffer[i] ;
_media_data(boot_block) = 0;
_media_data(boot_page) = 0;
}
//------------------------------------------------------------------------------
//+-----------------------------------------------------------------------------
// Name:
// nand_read_sector()
//
// Declaration:
// t_result nand_read_sector(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_read_sector(void) reentrant
{
TRACE4(432, nand, 0, "nand_read_sector() - zone:%d RD_PHY:%d log:%d page:%d", g_addr_zone, g_addr_rd_phy_blk, g_addr_log_blk, g_addr_page) ;
nand_select_card() ;
return sm_media_read_sector() ;
}
//+-----------------------------------------------------------------------------
// Name:
// nand_write_sector()
//
// Declaration:
// t_result nand_write_sector(uint8 *buf) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_write_sector() reentrant
{
TRACE4(433, nand, 0, "nand_write_sector() zone:%d WR_PHY:%d log:%d page:%d", g_addr_zone, g_addr_wr_phy_blk, g_addr_log_blk, g_addr_page) ;
nand_select_card() ;
return sm_media_write_sector() ;
}
//+-----------------------------------------------------------------------------
// Name:
// nand_copy_sector()
//
// Declaration:
// t_result nand_copy_sector() reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_copy_sector() reentrant
{
TRACE4(434, nand, 0, "nand_copy_sector() zone:%d SRC_BLK:%d DEST_BLK:%d page:%d", g_addr_zone, g_addr_rd_phy_blk, g_addr_wr_phy_blk, g_addr_page) ;
nand_select_card() ;
return sm_media_copy_sector() ;
}
//+-----------------------------------------------------------------------------
// Name:
// nand_read_extra_data()
//
// Declaration:
// TBD
//
// Purpose:
// TBD
//
// Arguments:
// TBD
//
// Return:
// TBD
//
// Notes:
// TBD
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_read_extra_data(void) reentrant
{
TRACE3(435, nand, 0, "nand_read_extra_data() zone:%d phy_blk:%d page:%d", g_addr_zone, g_addr_rd_phy_blk, g_addr_page) ;
nand_select_card( ) ;
return sm_media_read_extra_data() ;
}
//+-----------------------------------------------------------------------------
// Name:
// nand_write_extra_data()
//
// Declaration:
// t_result nand_write_extra_data(void) reentrant
//
// Purpose:
// TBD
//
// Arguments:
// TBD
//
// Return:
// TBD
//
// Notes:
// TBD
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_write_extra_data(void) reentrant
{
nand_select_card( ) ;
return sm_media_write_extra_data() ;
}
//+-----------------------------------------------------------------------------
// Name:
// nand_set_read_addr()
//
// Declaration:
// t_result nand_set_read_addr() reentrant
//
// Purpose:
// set media-specific address from internal zone/rd_phy_blk/sector addres
//
// Arguments:
// TBD
//
// Return:
// k_success always
//
// Notes:
// TBD
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_set_read_addr() reentrant
{
TRACE3(436, nand, 0, "nand_set_read_addr() page:%02x%02x%02x", g_nand_rd_addr_msb, g_nand_rd_addr_mid, g_nand_rd_addr_lsb) ;
_sm_hw_set_rd_addr();
_sm_data_wr(0x00);
_sm_data_wr(g_nand_rd_addr_lsb) ;
_sm_data_wr(g_nand_rd_addr_mid) ;
if ( _lun_data(media)&kbm_sm_media_addr_4cyc)
_sm_data_wr(g_nand_rd_addr_msb);
_sm_hw_set_rd_data(g_nand_rw_speed);
return k_success ;
}
//+-----------------------------------------------------------------------------
// Name:
// nand_set_write_addr()
//
// Declaration:
// t_result nand_set_write_addr() reentrant
//
// Purpose:
// set media-specific address from internal zone/wr_phy_blk/sector addres
//
// Arguments:
// TBD
//
// Return:
// k_success always
//
// Notes:
// TBD
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_set_write_addr() reentrant
{
TRACE3(437, nand, 0, "nand_set_write_addr() page:%02x%02x%02x", g_nand_wr_addr_msb, g_nand_wr_addr_mid, g_nand_wr_addr_lsb) ;
_sm_hw_set_wr_addr();
_sm_data_wr(0x00);
_sm_data_wr(g_nand_wr_addr_lsb) ;
_sm_data_wr(g_nand_wr_addr_mid) ;
if ( _lun_data(media)&kbm_sm_media_addr_4cyc)
_sm_data_wr(g_nand_wr_addr_msb);
_sm_hw_set_wr_data(g_nand_rw_speed);
return k_success ;
}
//+-----------------------------------------------------------------------------
// Name:
// nand_set_erase_addr()
//
// Declaration:
// t_result nand_set_erase_addr() reentrant
//
// Purpose:
// set media-specific address from internal zone/wr_phy_blk
//
// Arguments:
// TBD
//
// Return:
// k_success always
//
// Notes:
// The block to be erased should be in g_addr_wr_phy_blk before this
// function is called
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
t_result nand_set_erase_addr() reentrant
{
TRACE3(438, nand, 0, "nand_set_erase_addr() page:%02x%02x%02x", g_nand_wr_addr_msb, g_nand_wr_addr_mid, g_nand_wr_addr_lsb) ;
_sm_hw_set_wr_addr();
_sm_data_wr(g_nand_wr_addr_lsb) ;
_sm_data_wr(g_nand_wr_addr_mid) ;
if ( _lun_data(media)&kbm_sm_media_addr_4cyc)
_sm_data_wr(g_nand_wr_addr_msb);
_sm_hw_set_wr_data(g_nand_rw_speed);
return k_success ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -