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

📄 ms.h

📁 <B>SMSC USB2.0 Flash硬盘驱动源码</B>
💻 H
📖 第 1 页 / 共 2 页
字号:


// end 210-specific msc registers ----------------------------------------------
//------------------------------------------------------------------------------
#endif // 210/223 specific registers


//------------------------------------------------------------------------------
// tpc codes
#define k_ms_tpc_rd_page_data 0x20
#define k_ms_tpc_rd_reg       0x40
#define k_ms_tpc_get_int      0x70
#define k_ms_tpc_wr_page_data 0xD0
#define k_ms_tpc_wr_reg       0xB0
#define k_ms_tpc_set_rw_reg   0x80
#define k_ms_tpc_set_cmd      0xE0

//------------------------------------------------------------------------------
// flash commands
#define k_ms_block_read  0xAA
#define k_ms_block_write 0x55
#define k_ms_block_end   0x33
#define k_ms_block_erase 0x99
#define k_ms_flash_stop  0xCC

//------------------------------------------------------------------------------
// function commands
#define k_ms_sleep   0x5A
#define k_ms_clr_buf 0xC3
#define k_ms_reset   0x3C

//------------------------------------------------------------------------------
// internal ms status registers
#define k_ms_reg_int              0x01  // ro
  #define kbm_ms_reg_int_cmdnk    0x01
  #define kbm_ms_reg_int_breq     0x20
  #define kbm_ms_reg_int_err      0x40
  #define kbm_ms_reg_int_ced      0x80
#define k_ms_reg_status0          0x02  // ro
  #define kbm_ms_reg_status0_wp   0x01
  #define kbm_ms_reg_status0_sl   0x02
  #define kbm_ms_reg_status0_bf   0x10
  #define kbm_ms_reg_status0_be   0x20
  #define kbm_ms_reg_status0_fb0  0x40
  #define kbm_ms_reg_status0_mb   0x80
#define k_ms_reg_status1          0x03  // ro
  #define kbm_ms_reg_status1_ucfg 0x01
  #define kbm_ms_reg_status1_fger 0x02
  #define kbm_ms_reg_status1_ucex 0x04
  #define kbm_ms_reg_status1_exer 0x08
  #define kbm_ms_reg_status1_ucdt 0x10
  #define kbm_ms_reg_status1_dter 0x20
  #define kbm_ms_reg_status1_fb1  0x40
  #define kbm_ms_reg_status1_mb   0x80

//------------------------------------------------------------------------------
// internal ms parameter registers
#define k_ms_parm_system             0x10  // wo
#define k_ms_parm_block_addr_msb     0x11  // wo
#define k_ms_parm_block_addr_mid     0x12  // wo
#define k_ms_parm_block_addr_lsb     0x13  // wo
#define k_ms_parm_cmd                0x14  // wo
#define k_ms_parm_page_addr          0x15  // rw

//------------------------------------------------------------------------------
// internal ms extra data registers
#define k_ms_ext_ovwr_flg            0x16  // rw
  #define kbm_ms_ext_ovwr_bkst       0x80
  #define kbm_ms_ext_ovwr_pgst0      0x40
  #define kbm_ms_ext_ovwr_pgst1      0x20
  #define kbm_ms_ext_ovwr_udst       0x10
  #define k_ms_ext_mgmt_flg          0x17  // rw
  #define kbm_ms_ext_mgmt_sysflg     0x04
  #define kbm_ms_ext_mgmt_atflg      0x08
  #define kbm_ms_ext_mgmt_scms1      0x10
  #define kbm_ms_ext_mgmt_scms0      0x20
#define k_ms_ext_log_addr_msb        0x18  // rw
#define k_ms_ext_log_addr_lsb        0x19  // rw

// extra data registers buffer
extern xdata uint8 g_ms_extra[4];
#define k_ovwr_flg_offset         0
#define k_mgmt_flg_offset         1
#define k_log_addr_msb_flg_offset 2
#define k_log_addr_lsb_flg_offset 3

// shadow registers
extern xdata uint8 g_ms_blk_addr_msb;
extern xdata uint8 g_ms_blk_addr_mid;
extern xdata uint8 g_ms_blk_addr_lsb;
extern xdata uint8 g_ms_page;

// shared globals
extern xdata uint16 g_ms_user_area_start_blk;

//------------------------------------------------------------------------------
t_result ms_read_status(void) reentrant;

//------------------------------------------------------------------------------
t_result ms_erase_block(void) reentrant;

//------------------------------------------------------------------------------
t_result ms_copy_page(void) reentrant;

//------------------------------------------------------------------------------
t_result ms_read_extra_data(void) reentrant;

//------------------------------------------------------------------------------
t_result ms_pio_read_page(uint8 pnr) reentrant;

//------------------------------------------------------------------------------
t_result ms_write_extra_data(void) reentrant;

//------------------------------------------------------------------------------
t_result ms_pio_write_page(uint8 pnr) reentrant;

//------------------------------------------------------------------------------
void xbuf_rd(uint16 offset, uint16 len, t_memory_ref bufp) reentrant;

//------------------------------------------------------------------------------
t_bool ms_is_this_blk_in_bad_blk_tbl(uint16 blk) reentrant;

//------------------------------------------------------------------------------
t_bool ms_is_this_blk_the_information_block(uint16 blk) reentrant;

//------------------------------------------------------------------------------
#define _ms_rx_data_fifo_is_empty() (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_r_buf_e)
#define _ms_rx_data_fifo_is_full()  (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_r_buf_f)
#define _ms_tx_data_fifo_is_empty() (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_t_buf_e)
#define _ms_tx_data_fifo_is_full()  (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_t_buf_f)

//------------------------------------------------------------------------------
// function from fmc
#undef _v_lun_enable_mux
#define _v_lun_enable_mux fmc_select_msc

//------------------------------------------------------------------------------
void ms_reset_controller(void) reentrant;
#undef _v_lun_reset_controller
#define _v_lun_reset_controller ms_reset_controller

//------------------------------------------------------------------------------
void ms_initialize_controller(void) reentrant;
#undef _v_lun_initialize_controller
#define _v_lun_initialize_controller ms_initialize_controller

//------------------------------------------------------------------------------
void dfa_ms_reset_media(void) reentrant;
#undef _v_dfa_lun_reset_media
#define _v_dfa_lun_reset_media dfa_ms_reset_media

//------------------------------------------------------------------------------
void dfa_ms_initialize_media(void) reentrant;
#undef _v_dfa_lun_initialize_media
#define _v_dfa_lun_initialize_media dfa_ms_initialize_media

//--------------------------------------------------------------------------------
void dfa_ms_identify_media(void) reentrant;
#undef _v_dfa_lun_identify_media
#define _v_dfa_lun_identify_media dfa_ms_identify_media

//--------------------------------------------------------------------------------
void dfa_ms_read(void) reentrant;
#undef _v_dfa_lun_read
#define _v_dfa_lun_read dfa_ms_read

//--------------------------------------------------------------------------------
void dfa_ms_write(void) reentrant;
#undef _v_dfa_lun_write
#define _v_dfa_lun_write dfa_ms_write

//--------------------------------------------------------------------------------
void dfa_ms_verify(void) reentrant;
#undef _v_dfa_lun_verify
#define _v_dfa_lun_verify dfa_ms_verify

//------------------------------------------------------------------------------
#undef _v_dfa_lun_erase_media
#define _v_dfa_lun_erase_media media_dfa_erase

//------------------------------------------------------------------------------
#undef _v_dfa_lun_report_media_geometry
#define _v_dfa_lun_report_media_geometry media_dfa_report_media_geometry


//--------------------------------------------------------------------------------
// ms inherits from lun
#define _v_ms _v_lun
typedef uint8 t_ms_vtbl_ix;
typedef enum e_ms_vtbl_entry
{
  k_ms_vtbl_sz = k_lun_vtbl_sz
};
extern code  _vtbl_decl(ms);

#else
#error "warning: header included too many times!"
#endif // __ms_dot_h__

//---eof------------------------------------------------------------------------

⌨️ 快捷键说明

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