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

📄 cf_flash.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//=====================================================================  
//       TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION             
// Property of Texas Instruments -- For Unrestricted Internal Use Only   
// Unauthorized reproduction and/or distribution is strictly prohibited  
// This product is protected under copyright law and trade secret law as 
// an unpublished work.Created 1987,(C) Copyright 1997 Texas Instruments.
// All rights reserved.                                                  
//=====================================================================  
//   Filename       	: compact_flash.c
//
//   Description    	: library to access compact flash
//
//   Project        	: HELEN
//
//   Author         	: didier ounkowsky d-ounkowsky@ti.com 
//                        
//===========================================================================


#include "cf_flash.h"

//---------------------------------------------------------------------
// NAME        : CF_CompactFlashConfig
//               
// DESCRIPTION : config the compact flash
//               
// PARAMETERS  : none
//
//
// RETURN VALUE: None
//               
// LIMITATIONS : None
//---------------------------------------------------------------------
void CF_CompactFlashConfig(UWORD8 flash_type)
{
  UWORD8 i;

  // reset the cf
  SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
		 CF_CONFIGURATION_REG_RESET_POS,
		 CF_CONFIGURATION_REG_RESET_NUMB,
		 1);

  for (i=0;i<10;i++); // wait a little

  
  SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
		 CF_CONFIGURATION_REG_RESET_POS,
		 CF_CONFIGURATION_REG_RESET_NUMB,
		 0);

  // config the interrupt as a pulse
  SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
		 CF_CONFIGURATION_REG_LEVIRQ_POS,
		 CF_CONFIGURATION_REG_LEVIRQ_NUMB,
		 0);
  
  switch (flash_type)
    {
    case MEMORY_CF:
      
      //config the card as a memory
      SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
		    CF_CONFIGURATION_REG_CONF_POS,
		    CF_CONFIGURATION_REG_CONF_NUMB,
		    CF_CONFIGURATION_MEMORY);
      break;
    case IO_CF:
      //config the card as a memory
      SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
		    CF_CONFIGURATION_REG_CONF_POS,
		    CF_CONFIGURATION_REG_CONF_NUMB,
		    CF_CONFIGURATION_IO1);      
      break;
    default:
      break;
    }

  // set the CF_SOCKET_COPY_REG
  //SetGroupBits16(CF_SOCKET_COPY_REG_ADDR,
  //	 CF_SOCKET_COPY_REG_FULLPOS,
  //	 CF_SOCKET_COPY_REG_FULLNUMB,
  //	 CF_SOCKET_COPY_REG_VALUE);
  
}

//---------------------------------------------------------------------
// NAME        : CF_CompactFlashReadConfig
//               
// DESCRIPTION : read the value of field conf in register configuration
//               of  the compact flash
//               
// PARAMETERS  : none
//
//
// RETURN VALUE: None
//               
// LIMITATIONS : None
//---------------------------------------------------------------------
UWORD8 CF_CompactFlashReadConfig()
{
 
return GetGroupBits8(CF_CONFIGURATION_REG_ADDR,
		      CF_CONFIGURATION_REG_CONF_POS,
		      CF_CONFIGURATION_REG_CONF_NUMB);
}

//---------------------------------------------------------------------
// NAME        : CF_CompactflashRW
//               
// DESCRIPTION : perform a RW on the compact flash
//               
// PARAMETERS  : none
//
//
// RETURN VALUE: None
//               
// LIMITATIONS : None
//---------------------------------------------------------------------
UWORD8 CF_CompactflashRW()
{
UWORD8 k, result=0;
UWORD16 tablo[4]={0xAAAA,0x5555,0x0000,0xFFFF};

for (k=0;k<4;k++)
  {
    REG16(CF_MEMORY_ADDRESS+k*2)=tablo[k];
    
    if (REG16(CF_MEMORY_ADDRESS+k*2)!=tablo[k]) 
      {result++;}
  }

return result;
}

//---------------------------------------------------------------------
// NAME        : CF_CompactFlashIO
//               
// DESCRIPTION : perform an IO on the compact flash
//               
// PARAMETERS  : none
//
//
// RETURN VALUE: None
//               
// LIMITATIONS : None
//---------------------------------------------------------------------
UWORD8 CF_CompactFlashIO()
{
UWORD8 result=0;
UWORD16 value=0x1111;


REG16(CF_IO_ADDRESS)=value;
    
if (REG16(CF_IO_ADDRESS)!=value) 
  result++;

return result;
}





⌨️ 快捷键说明

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