Exemple #1
0
void Task2()
{
  int16_t cnt;
  int8_t val;
uint32_t sector = 0;
nrk_sem_t *radio_sem;


while(1) nrk_wait_until_next_period();
radio_sem= rf_get_sem();
if(radio_sem==NULL) nrk_kprintf( PSTR("radio sem failed!\r\n" ));
  printf( "Task2 PID=%u\r\n",nrk_get_pid());
  cnt=0;


  val=mmc_init();
  if(val!=0 ) {
	printf( "val=%d\r\n",val );
        nrk_kprintf( PSTR("card init failed\r\n") );
        while(1);
        }

  while(1) {
	nrk_sem_pend (radio_sem);
        printf("\nsector %lu\n\r",sector);                // show sector number
        val=mmc_readsector(sector,sectorbuffer);    // read a data sector
        printf( "readsector returned %d\n",val );
        for(cnt=0; cnt<32; cnt++ )
                printf( "%d ",sectorbuffer[cnt] );
        printf( "\n\r" );

        val=sectorbuffer[0];
        val++;
        for(cnt=0; cnt<512; cnt++ )
        {
        sectorbuffer[cnt]=val;
        }

        nrk_kprintf( PSTR("Writting\r\n") );
        val=mmc_writesector(sector,sectorbuffer);    // read a data sector
        printf( "writesector returned %d\n",val );
        printf( "After write:\r\n" );
        val=mmc_readsector(sector,sectorbuffer);    // read a data sector
	nrk_sem_post(radio_sem);
        printf( "readsector returned %d\n",val );
        if(val==0)
        {
         for(cnt=0; cnt<32; cnt++ )
                printf( "%d ",sectorbuffer[cnt] );
        nrk_kprintf( PSTR("\n\r") );
        }
sector++;
//	nrk_led_toggle(RED_LED);
//	printf( "Task2 signed cnt=%d\r\n",cnt );
	nrk_wait_until_next_period();
	cnt--;
	}
}
Exemple #2
0
//Write the sector buffer into a sector
uint8_t write_buffer_to_sector(uint32_t lba)
{
	if (mmc_writesector(lba, sectorbuffer) != 0) {
		//We have a write error

		//Invalidate the buffered sector
		buffered_lba = -1;

		return 1;

	} else { //Successful write
		buffered_lba = lba;
		return 0;
	}
}
Exemple #3
0
void Task1()
{
uint16_t cnt;
int8_t val;
uint32_t sector = 0;


  printf( "Task1 PID=%d\r\n",nrk_get_pid());
  cnt=0;
  val=mmc_init();
  printf("mmc_init returns %d\n\r", val );
  if(val!=0 ) {
	printf( "card init failed\r\n" );
	while(1);
	}
  
	printf("\nsector %ld\n\r",sector);                // show sector number
        val=mmc_readsector(sector,sectorbuffer);    // read a data sector
       	printf( "readsector returned %d\n",val );
	for(cnt=0; cnt<32; cnt++ )
		printf( "%d ",sectorbuffer[cnt] );
	printf( "\n\r" ); 

	val=sectorbuffer[0];
	val++;
	for(cnt=0; cnt<512; cnt++ )
	{
	sectorbuffer[cnt]=val;
	}

	printf( "Writting\r\n" );
	val=mmc_writesector(sector,sectorbuffer);    // read a data sector
       	printf( "writesector returned %d\n",val );
	printf( "After write:\r\n" );
	val=mmc_readsector(sector,sectorbuffer);    // read a data sector
       	printf( "readsector returned %d\n",val );
       	if(val==0)
	{
	 for(cnt=0; cnt<32; cnt++ )
		printf( "%d ",sectorbuffer[cnt] );
	printf( "\n\r" ); 
	}


  	while(1) {
	nrk_wait_until_next_period();
	}
}
DRESULT disk_write (
	BYTE drv,			/* Physical drive nmuber (0..) */
	const BYTE *buff,	/* Data to be written */
	DWORD sector,		/* Sector address (LBA) */
	BYTE count			/* Number of sectors to write (1..255) */
)
{
	if (drv || !count) return RES_PARERR;
	if (SD_STATUS & STA_NOINIT) return RES_NOTRDY;

	if (count > 1)
		return RES_PARERR;

	if (mmc_writesector(sector, buff))
		return RES_PARERR;
	else
		return RES_OK;

}