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

📄 lun.c

📁 U盘控制器USB97C223的固件代码,对2kPAGE NAND FLASH 有很好的支持.
💻 C
📖 第 1 页 / 共 5 页
字号:
//
// Return:
//
// Notes:
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
t_bool lun_available(uint8 lun) reentrant
{
  return (g_lun_tbl[lun]!=_vtbl(nil));
}

//+-----------------------------------------------------------------------------
// Name:
//   media_set_active()
//
// Declaration:
//   void media_set_active(uint8 media) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void lun_set_active(uint8 lun) reentrant
{
  mcu_begin_critical_section() ;
  if(g_active_lun != lun)
  {
    if (g_active_lun<k_max_phy_lun)
    {
      trace2(0, lun, 0, "paging data out: lun %d ( -> X-%04X )", g_active_lun, ((uint16)(&g_lun_data[g_active_lun])));
      memcpy(&(g_lun_data[g_active_lun]), (uint8 *) &g_lun_data_sensep, k_lun_data_sz);
    }

    trace2(0, lun, 0, "paging data in: lun %d ( <- X-%04X )", lun, ((uint16)(&g_lun_data[lun]))) ;
    memcpy((uint8 *) &g_lun_data_sensep, &(g_lun_data[lun]), k_lun_data_sz) ;
    
    if( g_lun_tbl[lun]!=_vtbl(nil) )
    {
      trace2(0, lun, 0, "paging vtable in: lun %d ( <- X%04X )", lun, ((uint16)(g_lun_tbl[lun]))) ;
      memcpy((uint8 *) &v_lun_process_idle, g_lun_tbl[lun], sizeof(t_thd_entry)*k_lun_vtbl_sz) ;
    }
    g_active_lun=lun;
  }
  trace1(0, lun, 0, "lun %d active", g_active_lun) ;
  mcu_end_critical_section() ;
}
#pragma AREGS

#ifndef k_mcu_97242
#ifdef k_dbg_on

//+-----------------------------------------------------------------------------
// Name:
//   lun_dump_sense
//
// Declaration:
//   void lun_dump_sense(uint8 idx) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void lun_dump_sense(uint8 idx) reentrant
{
  t_sense code *psense = _lun_data_rd(idx, sensep);

  mcu_begin_critical_section() ;
  trace3(0, lun, 99, "sense info:  key:%02x asc:%02x ascq:%02x", psense->sense_key, psense->additional_sense_code, psense->asc_qualifier );
  if (&sense_none == psense)
  {
    trace0(0, lun, 99, "sense_none");
  }
/*
  if (&sense_bad_lun == psense)
  {
    trace0(0, lun, 99, "sense_bad_lun");
  }
*/
  if (&sense_media_change == psense)
  {
    trace0(0, lun, 99, "sense_media_change");
  }
  if (&sense_no_media == psense)
  {
    trace0(0, lun, 99, "sense_no_media");
  }
/*
  if (&sense_becoming_ready == psense)
  {
    trace0(0, lun, 99, "sense_becoming_ready");
  }
*/
  if (&sense_read_error == psense)
  {
    trace0(0, lun, 99, "sense_read_error");
  }
/*
  if (&sense_fmt_failed == psense)
  {
    trace0(0, lun, 99, "sense_fmt_failed");
  }
  if (&sense_no_seek == psense)
  {
    trace0(0, lun, 99, "sense_no_seek");
  }
*/
  if (&sense_por == psense)
  {
    trace0(0, lun, 99, "sense_por");
  }
  if (&sense_illegal_request == psense)
  {
    trace0(0, lun, 99, "sense_illegal_request");
  }
  if (&sense_write_error == psense)
  {
    trace0(0, lun, 99, "sense_write_error");
  }
/*
  if (&sense_no_fmt == psense)
  {
    trace0(0, lun, 99, "sense_no_fmt");
  }
*/
  if (&sense_write_protect == psense)
  {
    trace0(0, lun, 99, "sense_write_protect");
  }
/*
  if (&sense_write_protect_hw == psense)
  {
    trace0(0, lun, 99, "sense_write_protect_hw");
  }
  if (&sense_write_protect_sw_lun == psense)
  {
    trace0(0, lun, 99, "sense_write_protect_sw_lun");
  }
  if (&sense_write_protect_assoc == psense)
  {
    trace0(0, lun, 99, "sense_write_protect_assoc");
  }
  if (&sense_write_protect_persist == psense)
  {
    trace0(0, lun, 99, "sense_write_protect_persist");
  }
  if (&sense_write_protect_perm == psense)
  {
    trace0(0, lun, 99, "sense_write_protect_perm");
  }
*/
  if (&sense_illegal_cmdpkt == psense)
  {
    trace0(0, lun, 99, "sense_illegal_cmdpkt");
  }
/*
  if (&sense_saving_not_support == psense)
  {
    trace0(0, lun, 99, "sense_saving_not_support");
  }
*/
  if (&sense_illegal_length == psense)
  {
    trace0(0, lun, 99, "sense_illegal_length");
  }
  if (&sense_illegal_address == psense)
  {
    trace0(0, lun, 99, "sense_illegal_address");
  }
  if (&sense_illegal_opcode == psense)
  {
    trace0(0, lun, 99, "sense_illegal_opcode");
  }

  mcu_end_critical_section() ;
}
#endif
#endif



//+-----------------------------------------------------------------------------
// Name:
//   lun_process_idle
//
// Declaration:
//   void lun_process_idle(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//   This is a FUNCTION, NOT a DFA.
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void lun_process_idle(void) reentrant
{
  trace0(0, lun, 0, "lun_process_idle() - error: pure virtual function must be overridden");
}

//+-----------------------------------------------------------------------------
// Name:
//   lun_enable_mux
//
// Declaration:
//   void lun_enable_mux(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//   This is a FUNCTION, NOT a DFA.
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void lun_enable_mux(void) reentrant
{
  trace0(0, lun, 0, "lun_enable_mux() - error: pure virtual function must be overridden");
}

//+-----------------------------------------------------------------------------
// Name:
//   lun_reset_controller
//
// Declaration:
//   void lun_reset_controller(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//   This is a FUNCTION, NOT a DFA.
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void lun_reset_controller(void) reentrant
{
  trace0(0, lun, 0, "lun_reset_controller() - warning: pure virtual function should be overridden");
}

//+-----------------------------------------------------------------------------
// Name:
//   lun_initialize_controller
//
// Declaration:
//   void lun_initialize_controller(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//   This is a FUNCTION, NOT a DFA.
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void lun_initialize_controller(void) reentrant
{
  trace0(0, lun, 0, "lun_initialize_controller() - warning: pure virtual function should be overridden");
}

//+-----------------------------------------------------------------------------
// Name:
//    dfa_lun_reset_media
//
// Declaration:
//   void dfa_lun_reset_media(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//   - This is a dfa.
//   - Should be overridden.  Derived method should set callbacks, then call this.
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_reset_media(void) reentrant
{
  trace0(0, lun, 0, "dfa_lun_reset_media() - error: pure virtual method must be overridden");
  _thread_return_dfa(k_error);
}

//+-----------------------------------------------------------------------------
// Name:
//   dfa_lun_initialize_media
//
// Declaration:
//   void dfa_lun_initialize_media(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//   - This is a dfa.
//   - Should be overridden.  Derived method should set callbacks, then call this.
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_initialize_media(void) reentrant
{
  trace0(0, lun, 0, "dfa_lun_initialize_media() - error: pure virtual method must be overridden");
  _thread_return_dfa(k_error);
}

//+-----------------------------------------------------------------------------
// Name:
//   dfa_lun_identify_media
//
// Declaration:
//   void dfa_lun_identify_media(void);
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//   - This is a dfa.
//   - Should be overridden.  Derived method should set callbacks, then call this.
//
// Since:
//   fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_identify_media(void) reentrant
{
  trace0(0, lun, 0, "dfa_lun_identify_media() - error: pure virtual method must be overridden");
  _thread_return_dfa(k_error);
}

//+-----------------------------------------------------------------------------
// Name:
//   dfa_lun_test_unit_ready
//
// Declaration:
//   void dfa_lun_test_unit_ready(void);

⌨️ 快捷键说明

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