Esempio n. 1
0
FRESULT scan_files (
    char* path        /* Start node to be scanned (***also used as work area***) */
)
{
    FRESULT res;
    DIR dir;
    UINT i;
    static FILINFO fno;


    res = f_opendir(&dir, path);                       /* Open the directory */
    if (res == FR_OK) {
        for (;;) {
            res = f_readdir(&dir, &fno);                   /* Read a directory item */
            if (res != FR_OK || fno.fname[0] == 0) break;  /* Break on error or end of dir */
            if (fno.fattrib & AM_DIR) {                    /* It is a directory */
                sprintf(&path[i = strlen(path)], "/%s", fno.fname);
                res = scan_files(path);                    /* Enter the directory */
                if (res != FR_OK) break;
                path[i] = 0;
            } else {                                       /* It is a file. */
                send_uart(path);
                send_uart("/");
                send_uart(fno.fname);
                send_uart("\n");
                //printf("%s/%s\n", path, fno.fname);
            }
        }
        f_closedir(&dir);
    }

    return res;
}
Esempio n. 2
0
static
void get_line (char *buff, int len)
{
	BYTE c;
	int i = 0;

	for (;;) {
		c = getchar();
		if (c == '\r') break;
		if ((c == '\b') && i) {
			i--;
			while(!UART_rdy);
			UART = c;
			//uart_putc(c);
			continue;
		}
		if (c >= ' ' && i < len - 1) {	/* Visible chars */
			buff[i++] = c;
			while(!UART_rdy);
			UART = c;
			//xputc(c);
		}
	}
	buff[i] = 0;
	send_uart("\n");
	//xputc('\n');
}
/// \cond
int main(int argc, char **argv)
{
    int fd;
    char *s;
    unsigned char ope_code;
    unsigned char prev_code;
    unsigned char data_size;
    unsigned char prev_size;
    int len;
    int baud;
    char ret;
    
    printf("bcm2835_for_java ver1.01 start priority=%d\n", nice(1) );
    if( argc != 2 )
    {
        printf("bcm2835_for_java needs 1 parameter like as /tmp/shared_mem\n");
      exit ( -1 );
    }
    else
    {
      fd = open( argv[1], O_RDWR);
      if( fd == -1 )
      {
        printf("file %s can't open\n",argv[1]);
        exit(-1);
      }
      else
      {
         s = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
         if( s == MAP_FAILED )
         {
            printf("we can't create mapping file\n");
         }
      }
    }

  
    r_buff = (struct ring_buff *)s;
    w_buff = (struct ring_buff *)(s+sizeof(struct ring_buff) );
    bi_send_buff = (char *)( s + 2*sizeof(struct ring_buff) );
    bi_rec_buff = (char *)( bi_send_buff + TEMP_BUFF_SIZE );
    sync_code = (int *)( bi_rec_buff + TEMP_BUFF_SIZE );
    reply_code = (int *)( sync_code + 1 );
    
    init_ring_buff(w_buff,WRITER_INIT);
    init_ring_buff(r_buff,READER_INIT);
    
    bi_status = STATUS_FINE;
    
    while( 1 )
    {
        if( calc_data_size( r_buff ) != 0 )
        {
          prev_code = ope_code;
          prev_size = data_size;
          get_ope_code();
          ope_code = buff[0];
          data_size = calc_data_size( r_buff );
          switch( ope_code )
            {
                case OPE_INIT:
                    bcm_init();
                    break;
                case OPE_CLOSE:
                    bcm_close();
                    break;
                case OPE_SET_DEBUG:
                    ope_set_debug();
                    break;
                case OPE_PERI_READ:
                    ope_peri_read();
                    break;
                case OPE_PERI_READ_NB:
                    ope_peri_read_nb();
                    break;
                case OPE_PERI_WRITE:
                    ope_peri_write();
                    break;
                case OPE_PERI_WRITE_NB:
                    ope_peri_write_nb();
                    break;
                case OPE_PERI_SET_BITS:
                    ope_peri_set_bits();
                    break;
                case OPE_GPIO_FSEL:
                    ope_gpio_fsel();
                    break;
                case OPE_GPIO_SET:
                    ope_gpio_set();
                    break;
                case OPE_GPIO_CLR:
                    ope_gpio_clr();
                    break;
                case OPE_GPIO_SET_MULTI:
                    ope_gpio_set_multi();
                    break;
                case OPE_GPIO_CLR_MULTI:
                    ope_gpio_clr_multi();
                    break;
                case OPE_GPIO_LEV:
                    ope_gpio_lev();
                    break;
                case OPE_GPIO_EDS:
                    ope_gpio_eds();
                    break;
                case OPE_GPIO_SET_EDS:
                    ope_gpio_set_eds();
                    break;
                case OPE_GPIO_REN:
                    ope_gpio_ren();
                    break;
                case OPE_GPIO_CLR_REN:
                    ope_gpio_clr_ren();
                    break;
                case OPE_GPIO_FEN:
                    ope_gpio_fen();
                    break;
                case OPE_GPIO_CLR_FEN:
                    ope_gpio_clr_fen();
                    break;
                case OPE_GPIO_HEN:
                    ope_gpio_hen();
                    break;
                case OPE_GPIO_CLR_HEN:
                    ope_gpio_clr_hen();
                    break;
                case OPE_GPIO_LEN:
                    ope_gpio_len();
                    break;
                case OPE_GPIO_CLR_LEN:
                    ope_gpio_clr_len();
                    break;
                case OPE_GPIO_AREN:
                    ope_gpio_aren();
                    break;
                case OPE_GPIO_CLR_AREN:
                    ope_gpio_clr_aren();
                    break;
                case OPE_GPIO_AFEN:
                    ope_gpio_afen();
                    break;
                case OPE_GPIO_CLR_AFEN:
                    ope_gpio_clr_afen();
                    break;
                case OPE_GPIO_PUD:
                    ope_gpio_pud();
                    break;
                case OPE_GPIO_PUDCLK:
                    ope_gpio_pudclk();
                    break;
                case OPE_GPIO_WRITE:
                    ope_gpio_write();
                    break;
                case OPE_GPIO_PAD:
                    ope_gpio_pad();
                    break;
                case OPE_GPIO_SET_PAD:
                    ope_gpio_set_pad();
                    break;
                case OPE_DELAY:
                    ope_delay();
                    break;
                case OPE_DELAYMICROSECONDS:
                    ope_delaymicroseconds();
                    break;
                case OPE_GPIO_WRITE_MULTI:
                    ope_gpio_write_multi();
                    break;
                case OPE_GPIO_WRITE_MASK:
                    ope_gpio_write_mask();
                    break;
                case OPE_GPIO_SET_PUD:
                    ope_gpio_set_pud();
                    break;
                case OPE_SPI_BEGIN:
                    ope_spi_begin();
                    break;
                case OPE_SPI_END:
                    ope_spi_end();
                    break;
                case OPE_SPI_SETBITORDER:
                    ope_spi_setbitorder();
                    break;
                case OPE_SPI_SETCLOCKDIVIDER:
                    ope_spi_setclockdivider();
                    break;
                case OPE_SPI_SETDATAMODE:
                    ope_spi_setdatamode();
                    break;
                case OPE_SPI_CHIPSELECT:
                    ope_spi_chipselect();
                    break;
                case OPE_SPI_SETCHIPSELECTPOLARITY:
                    ope_spi_setchipselectpolarity();
                    break;
                case OPE_SPI_TRANSFER:
                    ope_spi_transfer();
                    break;
                case OPE_SPI_TRANSFERNB:
                    ope_spi_transfernb();
                    break;
                case OPE_SPI_TRANSFERN:
                    ope_spi_transfern();
                    break;
                case OPE_SPI_WRITENB:
                    ope_spi_writenb();
                    break;
                case OPE_I2C_BEGIN:
                    ope_i2c_begin();
                    break;
                case OPE_I2C_END:
                    ope_i2c_end();
                    break;
                case OPE_I2C_SETSLAVEADDRESS:
                    ope_i2c_setslaveaddress();
                    break;
                case OPE_I2C_SETCLOCKDIVIDER:
                    ope_i2c_setclockdivider();
                    break;
                case OPE_I2C_SET_BAUDRATE:
                    ope_i2c_set_baudrate();
                    break;
                case OPE_I2C_WRITE:
                    ope_i2c_write();
                    break;
                case OPE_I2C_READ:
                    ope_i2c_read();
                    break;
                case OPE_I2C_READ_REGISTER_RS:
                    ope_i2c_read_register_rs();
                    break;
                case OPE_ST_READ:
                    ope_st_read();
                    break;
                case OPE_ST_DELAY:
                    ope_st_delay();
                    break;
                case OPE_HELLO:
                    get_int_code();
                    len = *(int *)(buff+1);
                    set_ope_code( OPE_REPLY );
                    strcpy( bi_rec_buff, "Nice to meet you." );
                    set_int_code( strlen(bi_rec_buff) );
                    put_reply();
                    mark_sync();
                    usleep(5000);
                    break;
                case OPE_SYNC:
                    mark_sync();
                    break;
                case OPE_EXIT:
                    goto BREAK_LINE;
                    break;
                case OPE_OPEN_UART:
                    open_uart();
                    break;
                case OPE_CONFIG_UART:
                    configure_uart();
                    break;
                case OPE_SEND_UART:
                    send_uart();
                    break;
                case OPE_RECEIVE_UART:
                    receive_uart();
                    break;
                case OPE_CLOSE_UART:
                    close_uart();
                    break;
            default:
              printf("prev_code %02x \n",prev_code);
              printf("prev_size %d \n",prev_size);
              printf("ope_code error %02x \n",ope_code);
              printf("data_size=%d \n",data_size);
              break;
            }
        }
        else
        {
            usleep(5000);
        }
    }
BREAK_LINE:
    printf("Close bcm2835_for_java\n");
    exit(0);
}
Esempio n. 4
0
int main() {
	FIL Filin, Filout;			/* File object needed for each open file */
	UINT bw;
	char line[80];
	char *ptr, *ptr2;
	long p1, p2, p3;
	BYTE res, b1, *bp;
	//UINT s1, s2, cnt, blen = sizeof Buff;
	DWORD ofs, sect = 0;
	BYTE buffer[4096];
	char buff[256];
	UINT br;
	//FATFS *fs;
	//RTC rtc;

 
	int i, j, l, k, hardware=1;
	char msg[100];
	k=hardware;
	if(hardware){
	for(i=0;i<400;i++)	
		for(j=0;j<400;j++)
			LED = 0;
	}
 
	 res = f_mount(&FatSD, "", 0);		/* Give a work area to the default drive */
/*
	res = disk_status(MMC);		
     snprintf(msg,100, "Status : %d\n", res);
	send_uart(msg);
*/
    // Initialise media
    //disk_initialize(MMC);
/*
    res = disk_status(MMC);		
     snprintf(msg,100, "Status : %d\n", res);
	send_uart(msg);
   */  
    
 
   
 	//snprintf(msg,100, "Mount response: %d\n", res);
	//send_uart(msg);
  
	//res |= f_mkfs("0:", 1, 1);
   	//disk_read(MMC, FatSD.win, 0, 1);
   	//FatSD.winsect = 1;
   	//res = move_window(&FatSD, 0);

        
   	      
	//snprintf(msg,100, "mkfs response: %d\n", res);
	//send_uart(msg);
    /*         	
	res = disk_status(MMC);		
     snprintf(msg,100, "Status : %d\n", res);
	send_uart(msg);
*/
	//res = f_open(&Filout, "test.txt", FA_WRITE | FA_CREATE_ALWAYS);
	//res = f_open(&Filin, "test.txt", FA_READ);
	//snprintf(msg,100, "Open response: %d\n", res);
	//send_uart(msg);

    
	/*disk_read(MMC,Buff,0,1);
		for(i = 0; i<512; i++){
			snprintf(msg,100, "%02X", Buff[i]);
			send_uart(msg);
		}
	*/ 
	//if ( res == FR_OK) {	/* Create a file */
	//		send_uart("open file");
			
			//res = f_write(&Filout, "It works!\r\n", 11, &bw);	/* Write data to the file */
			//snprintf(msg,100, "Write response: %d\n", res);
			//res = f_close(&Filout);
			
			//send_uart(msg);
			
			//snprintf(msg,100, "F Close response: %d\n", res);
			//send_uart(msg);

	//	if (bw == 11) {		/* Lights green LED if data written well */
	//		LED = 1;	/* Set PB4 high */
	//	}
	//}  

	
	//res = disk_status(MMC);		
    // snprintf(msg,100, "\nStatus : %d\n", res);
	//send_uart(msg);
	//while(1);
	/*
	disk_ioctl(1, GET_SECTOR_COUNT, &p2);
	snprintf(msg,100, "Drive size: %lu sectors\n", p2);
	send_uart(msg);

	res = f_getlabel(ptr2, (char*)Buff, (DWORD*)&p1);
				//if (res) { put_rc(res); break; }
				Buff[0] ? snprintf(msg,100, "Volume name is %s\n", Buff) : snprintf(msg,100, "No volume label\n");
				send_uart(msg);
				//xprintf(Buff[0] ? PSTR("Volume name is %s\n") : PSTR("No volume label\n"), Buff);
				//xprintf(PSTR("Volume S/N is %04X-%04X\n"), (WORD)((DWORD)p1 >> 16), (WORD)(p1 & 0xFFFF));*/  
  
	while(1){
	send_uart("\nWelocme to FatF for Patmos\n");
	send_uart("Options are:\n");
	send_uart("O [r/w] [filename] [content if writemode]\n");
	send_uart("l for file and dir structure\n");
	send_uart("Opening a file in readmode will print the content to terminal\n");
	send_uart("Write mode is not implemented\n");
	send_uart("use ^M (ctrl-V) + enter to terminate input\n");
	
	ptr = line;
	get_line(ptr, sizeof line);
	switch (*ptr++) {

		case 'T' :
			while (*ptr == ' ') ptr++;

			/* Quick test space */

			break;
		case 'O' :
		case 'o' :
			while (*ptr == ' ') ptr++;
			switch(*ptr++){
				case 'R' :
				case 'r' :
					while (*ptr == ' ') ptr++;
					res = f_open(&Filin, ptr, FA_READ);
					res = f_read(&Filin, buffer, sizeof(buffer), &br);	/* read data from the file */	
					res = f_close(&Filin);								/* Close the file */
					send_uart("\nThis is the content of the file: \n\n");
					for(i=0; i < br; i++){
   					snprintf(msg,100, "%c", buffer[i]);
					send_uart(msg);
					}
					send_uart("\n\n"); 
					break;

				case 'W' : 
				case 'w' : 
					//ptr = line;
					//send_uart("Enter filename:\n");
					//get_line(ptr, sizeof line);
					res = f_open(&Filout, "newtest.txt", FA_WRITE | FA_CREATE_ALWAYS);
					snprintf(msg,100, "\nOpen response : %d\n", res);
					send_uart(msg);
					//res = f_open(&Filout, ptr, FA_WRITE | FA_CREATE_ALWAYS);
					//res = f_open(&Filin, ptr, FA_READ);
					//&Filout, "It works!\r\n", 11, &bw)
					//ptr = line;
					//send_uart("Enter content:\n" 	);
					//get_line(ptr, sizeof line);
					res = f_write(&Filout, "It works!\r\n", 11, &bw);
					snprintf(msg,100, "\nWrite response : %d\n", res);
					send_uart(msg);
					//res = f_write(&Filout, ptr, sizeof(line), &br);	/* read data from the file */	
					res = f_close(&Filout);								/* Close the file */

			}
			break;
		case 'l' :
		case 'L' :
			strcpy(buff, "/");
        	res = scan_files(buff);
        	break;
		}

	}   
	  
	
	for (;;) {
		if(k==0){
		for(l=0; l<10; l++){
			for(i=0;i<2000;i++)	
				for(j=0;j<2000;j++)
					LED = 1;
			for(i=0;i<2000;i++)	
				for(j=0;j<2000;j++){
					LED = 0;
					}
		}
		for(i=0;i<2000;i++)	
			for(j=0;j<2000;j++)
				for(l=0;l<20;l++)
					LED = 0;
		}
	}    
	
	return 0;
}