示例#1
0
int MMC_LB_Init() {

//    dprintf("MMC Init\r\n");
	
	_MMC_LB_InitCache();
	MMC_Initialize(MMC_4BIT_MODE);	

	return -1;
}
示例#2
0
static void MMCGpioTask(void *arg)
{
	u8 err;
	cardstate = CARD_OUT;
	cardexsit = 1 ;
	while(1)
	{
//		__intc_mask_irq(48 + MMC_CD_PIN);
		printf("Looks like MMC gpio change! \n");
		if ( cardstate == CARD_OUT )     //card have inserted!
		{
			OSTimeDlyHMSM(0,0,0,500);
			if ( __gpio_get_pin(MMC_CD_PIN) == 0 ) //card readlly insert!
			{
				printf("Card readlly insert! \n");
				cardstate = CARD_IN;
				info_card_in();
				MMC_Initialize();
				__gpio_as_irq_rise_edge(MMC_CD_PIN);
			}
			else
				__gpio_as_irq_fall_edge(MMC_CD_PIN);
		}
		else                            //card have not inserted!
		{
			OSTimeDlyHMSM(0,0,0,500);
			if ( __gpio_get_pin(MMC_CD_PIN) == 1 ) //card readlly out!
			{
				printf("Card readlly out! \n");
				cardstate = CARD_OUT;
				info_card_out();
				__gpio_as_irq_fall_edge(MMC_CD_PIN);
			}
			else
				__gpio_as_irq_rise_edge(MMC_CD_PIN);

		}
		__gpio_ack_irq(MMC_CD_PIN);
		__intc_ack_irq(48 + MMC_CD_PIN);
		__gpio_unmask_irq(MMC_CD_PIN);
		OSSemPend(MMCGPIOEvent, 0, &err);
	}
}
示例#3
0
//#include "mmc_protocol.h"
//struct mmc_csd csd;
void MMCTest()
{
     unsigned short mmcbuf[2048];
     int i;
     unsigned int t[2];
     unsigned int t1[2];
     unsigned int size;

     JZ_StartTimer();
     JZ_GetTimer(t);

     MMC_Initialize();	 
     size=MMC_GetSize();
     printf("Card Size: %d\n",size);	
     for(i = 0; i < 2048;i++)
	     mmcbuf[i] = i;
     printf("write mmc 4 8 sector\r\n");
     MMC_WriteMultiBlock(4,8,(unsigned char *)mmcbuf);
     printf("write mmc 12 8 sector\r\n");
     MMC_WriteMultiBlock(12,8,(unsigned char *)mmcbuf);
     for(i = 0; i < 2048;i++)
	     mmcbuf[i] = 0;
     printf("read mmc 4 8 sector\r\n");    
     MMC_ReadMultiBlock(4,8,(unsigned char *)mmcbuf);
     for(i = 0; i < 2048;i++)
	     if(mmcbuf[i] != i)
		     printf("error %d, %d\r\n", mmcbuf[i],i);
     printf("read mmc 12 8 sector\r\n");    
     for(i = 0; i < 2048;i++)
	     mmcbuf[i] = 0;
     MMC_ReadMultiBlock(12,8,(unsigned char *)mmcbuf);
     for(i = 0; i < 2048;i++)
	     if(mmcbuf[i] != i)
		     printf("error %d, %d\r\n", mmcbuf[i],i);
     printf("Test mmc OK!\n");

     JZ_GetTimer(t1);
     JZ_DiffTimer(t1,t1,t);
     printf("write file use timer %d.%06d s\r\n",t1[1],t1[0]);
     JZ_StopTimer();

}
示例#4
0
void mmc_detect_init()
{
	MMCGPIOEvent = OSSemCreate(0);

	__gpio_mask_irq(MMC_CD_PIN);
	__gpio_as_input(MMC_CD_PIN);
	__gpio_disable_pull(MMC_CD_PIN);
	request_irq(48 + MMC_CD_PIN, mmc_gpio_irq_handler, 0);
	__gpio_unmask_irq(MMC_CD_PIN);
	cardexsit = 0;
	mmcsrc.GetRequest = GetRequest;
	mmcsrc.Response = Response;
	mmcsrc.Name = "MMC";
	printf("Register Midware SRC MMC! \n");
	RegisterMidSrc(&mmcsrc);
	mmcid = mmcsrc.ID;
	printf("mmc ID %d \n",mmcsrc.ID);

	MMC_Initialize();
	OSTaskCreate(MMCGpioTask, (void *)0,
		     (void *)&MGTaskStack[MMC_GPIO_TASK_STK_SIZE - 1],
		     MMC_GPIO_TASK_PRIO);

}