Beispiel #1
0
int diag_sd_write_speed(char *argv[])
{
	int rval = 0;
	int i, j;
	int total_secs;
	int sector, sectors;
	u8 *buf = (u8 *)DIAG_SD_BUF_START;
	u32 op_size;

	rval = diag_sd_init(argv, "Write Speed", 1);
	if (rval < 0)
		return rval;

	for (i = 0; i < SECTORS_PER_OP * SECTOR_SIZE / 16; i++) {
		for (j = 0; j < 16; j++) {
			buf[(i * 16) + j] = i;
		}
	}

	total_secs = sdmmc_get_total_sectors();
	op_size = 0;
	timer_reset_count(TIMER2_ID);
	timer_enable(TIMER2_ID);
	for (sector = 0; sector < total_secs; sector += SECTORS_PER_OP) {
		if (uart_poll())
			break;

		if ((total_secs - sector) < SECTORS_PER_OP)
			sectors = total_secs - sector;
		else
			sectors = SECTORS_PER_OP;

		rval = sdmmc_write_sector(sector, sectors, (unsigned int *)buf);
		if (rval < 0) {
			putstr("\r\nfailed at sector ");
			putdec(sector);
			putstr("\r\n");
			break;
		}
		op_size += sectors;
	}
	timer_disable(TIMER2_ID);

	putstr("\r\nTotally write 0x");
	puthex(op_size * SECTOR_SIZE);
	putstr(" Bytes in ");
	putdec(timer_get_count(TIMER2_ID));
	putstr(" mS, about ");
	putdec(op_size * 500 / timer_get_count(TIMER2_ID));
	putstr(" KB/s!\r\n\r\n");

	return rval;
}
Beispiel #2
0
static int diag_sd_init(char *argv[], const char *test_name, int verbose)
{
	int rval = 0;
	int slot, type;

	putstr("running SD ");
	putstr(test_name);
	putstr(" test ...\r\n");
	putstr("press any key to terminate!\r\n");

	if (strcmp(argv[0], "sd") == 0) {
		slot = SCARDMGR_SLOT_SD;
	} else if (strcmp(argv[0], "sdio") == 0) {
		slot = SCARDMGR_SLOT_SDIO;
	} else if (strcmp(argv[0], "sd2") == 0) {
		slot = SCARDMGR_SLOT_SD2;
	} else {
		slot = SCARDMGR_SLOT_SD;
	}

	if (strcmp(argv[1], "sd") == 0) {
		type = SDMMC_TYPE_SD;
	} else if (strcmp(argv[1], "sdhc") == 0) {
		type = SDMMC_TYPE_SDHC;
	} else if (strcmp(argv[1], "mmc") == 0) {
		type = SDMMC_TYPE_MMC;
	} else if (strcmp(argv[1], "MoviNAND") == 0) {
		type = SDMMC_TYPE_MOVINAND;
	} else {
		type = SDMMC_TYPE_AUTO;
	}

	timer_reset_count(TIMER2_ID);
	timer_enable(TIMER2_ID);
	rval = sdmmc_init(slot, type);
	timer_disable(TIMER2_ID);
	if (verbose) {
		putstr("\r\nInit takes: ");
		putdec(timer_get_count(TIMER2_ID));
		putstr("mS\r\n");
		putstr("SD clock: ");
		putdec(get_sd_freq_hz());
		putstr("Hz\r\n");
#if (SD_HAS_SDXC_CLOCK == 1)
		putstr("SDXC clock: ");
#if (CHIP_REV == A7S)
		putdec((u32)amb_get_sdio_clock_frequency(HAL_BASE_VP));
#else
		putdec((u32)amb_get_sdxc_clock_frequency(HAL_BASE_VP));
#endif
		putstr("Hz\r\n");
#endif
		putstr("total_secs: ");
		putdec(sdmmc_get_total_sectors());
		putstr("\r\n");
	}

	return rval;
}
int Lua_GetTimerCount(lua_State *L)
{
    int result = -1;
    if (lua_gettop(L) >= 1) {
        int channel = lua_tointeger(L,1);
        result = timer_get_count(channel);
    }
    lua_pushinteger(L,result);
    return 1;
}
Beispiel #4
0
uint64_t notrace get_ticks(void)
{
	u64 count;
	int ret;

	if (!gd->timer) {
#ifdef CONFIG_TIMER_EARLY
		return timer_early_get_count();
#else
		int ret;

		ret = dm_timer_init();
		if (ret)
			return ret;
#endif
	}

	ret = timer_get_count(gd->timer, &count);
	if (ret)
		return ret;

	return count;
}
uint16 HardwareTimer::getCount(void) {
    return timer_get_count(this->dev);
}
Beispiel #6
0
//
// syscall entry point
//
long int syscall(unsigned long int command,...){
	int ret;
	va_list  ap;
	ret = 0;
	va_start(ap,command);
	switch (command) {
	// SYS
		case SYS_INIT: {
			tick_init();			// raw-handler
			int_init();			// raw-handler
			syscall(SYS_TIMER_INIT);
			syscall(SYS_DMA_INIT);
			syscall(SYS_VRAM_INIT);
			syscall(SYS_SCREEN_INIT);
			syscall(SYS_UART_INIT);
			ret = 0;
		} break;
	// TIMER
		case SYS_TIMER_INIT: {
			timer_init(&timer);
			ret = 0;
		} break;
		case SYS_TIMER_GET_COUNT: {
			ret = timer_get_count(&timer);
		} break;
	// DMA
		case SYS_DMA_INIT: {
			unsigned long int base;
			unsigned long int irq;
			base	= va_arg(ap,unsigned long int);
			irq	= va_arg(ap,unsigned long int);
			dma.ch			= dma_channel;
			dma.ch_size		= DMA_CH_SIZE;
			dma.ch[0].buf		= dma_buffer_ch0;
			dma.ch[0].buf_size	= DMA_BUF_SIZE;
			dma_init(&dma,DMA_BASE,DMA_IRQ);
			ret = 0;
		} break;
		case SYS_DMA_ADD: {
			unsigned long int ch;
			void *src;
			void *dst;
			unsigned long int size;
			ch	= va_arg(ap,unsigned long int);
			src	= va_arg(ap,void *);
			dst	= va_arg(ap,void *);
			size	= va_arg(ap,unsigned long int);
			dma_add(&dma,ch,src,dst,size);
			ret = 0;
		} break;
		case SYS_DMA_ADD_FULL: {
			unsigned long int ch;
			ch	= va_arg(ap,unsigned long int);
			ret = (long int)dma_add_full(&dma,ch);
		} break;
		case SYS_DMA_GET_HANDLE: {
			ret = (long int)&dma;
		} break;
		case SYS_DMA_GET_CH: {
			ret = 0;
		} break;
	// VRAM
		case SYS_VRAM_INIT: {
			vram_init(&vram,&dma,0);
			ret = 0;
		} break;
		case SYS_VRAM_CLEAR: {
			vram_clear(&vram);
			ret = 0;
		} break;
		case SYS_VRAM_IMAGE_PASTE: {
			IMAGE *img;
			unsigned long int x;
			unsigned long int y;
			img	= va_arg(ap,IMAGE *);
			x	= va_arg(ap,unsigned long int);
			y	= va_arg(ap,unsigned long int);
			vram_image_paste(&vram,img,x,y);
			ret = 0;
		} break;
		case SYS_VRAM_IMAGE_PASTE_FILTER: {
			IMAGE *img;
			unsigned long int x;
			unsigned long int y;
			img	= va_arg(ap,IMAGE *);
			x	= va_arg(ap,unsigned long int);
			y	= va_arg(ap,unsigned long int);
			vram_image_paste_filter(&vram,img,x,y);
			ret = 0;
		} break;
		case SYS_VRAM_IMAGE_CLEAR: {
			IMAGE *img;
			unsigned long int x;
			unsigned long int y;
			img	= va_arg(ap,IMAGE *);
			x	= va_arg(ap,unsigned long int);
			y	= va_arg(ap,unsigned long int);
			vram_image_clear(&vram,img,x,y);
			ret = 0;
		} break;
	// SCREEN
		case SYS_SCREEN_INIT: {
			screen_init(&scr,&vram);
			ret = 0;
		} break;
		case SYS_SCREEN_CLEAR: {
			screen_clear(&scr);
			ret = 0;
		} break;
		case SYS_SCREEN_LOCATE: {
			unsigned long int x;
			unsigned long int y;
			x	= va_arg(ap,unsigned long int);
			y	= va_arg(ap,unsigned long int);
			screen_locate(&scr,x,y);
			ret = 0;
		} break;
		case SYS_SCREEN_SCROLL: {
			unsigned long int height;
			height	= va_arg(ap,unsigned long int);
			screen_scroll(&scr,height);
			ret = 0;
		} break;
		case SYS_SCREEN_PUT_STRING: {
			unsigned char *s;
			s	= va_arg(ap,unsigned char *);
			screen_put_string(&scr,s);
			ret = 0;
		} break;
		case SYS_SCREEN_PUT_CHAR: {
			unsigned char c;
			c	= va_arg(ap,unsigned int); // usigned char
			screen_put_char(&scr,c);
			ret = 0;
		} break;
		case SYS_SCREEN_PRINT: {
			unsigned char c;
			c	= va_arg(ap,unsigned int); // unsigned char
			screen_print(&scr,c);
			ret = 0;
		} break;
		//case SYS_SCREEN_IMAGE: {
		//	IMAGE *image;
		//	image	= va_arg(ap,IMAGE *);
		//	screen_image(&scr,image);
		//	ret = 0;
		//} break;
		case SYS_SCREEN_SET_LOCATE_X: {
			unsigned long int x;
			x	= va_arg(ap,unsigned long int);
			screen_set_locate_x(&scr,x);
			ret = 0;
		} break;
		case SYS_SCREEN_SET_LOCATE_Y: {
			unsigned long int y;
			y	= va_arg(ap,unsigned long int);
			screen_set_locate_y(&scr,y);
			ret = 0;
		} break;
		case SYS_SCREEN_GET_LOCATE_X: {
			ret = screen_get_locate_x(&scr);
		} break;
		case SYS_SCREEN_GET_LOCATE_Y: {
			ret = screen_get_locate_y(&scr);
		} break;
		case SYS_SCREEN_SET_COLOR_FG: {
			unsigned long int r,g,b;
			r	= va_arg(ap,unsigned long int);
			g	= va_arg(ap,unsigned long int);
			b	= va_arg(ap,unsigned long int);
			screen_set_color_fg(&scr,r,g,b);
			ret = 0;
		} break;
		case SYS_SCREEN_SET_COLOR_BG: {
			unsigned long int r,g,b;
			r	= va_arg(ap,unsigned long int);
			g	= va_arg(ap,unsigned long int);
			b	= va_arg(ap,unsigned long int);
			screen_set_color_bg(&scr,r,g,b);
			ret = 0;
		} break;
	// UART
		case SYS_UART_INIT: {
			unsigned long int base;
			unsigned long int irq;
			base	= va_arg(ap,unsigned long int);
			irq	= va_arg(ap,unsigned long int);
			uart.tx.buf		= uart_buffer_tx;
			uart.tx.buf_size	= UART_TX_BUF_SIZE;
			uart.rx.buf		= uart_buffer_rx;
			uart.rx.buf_size	= UART_RX_BUF_SIZE;
			uart_init(&uart,UART_BASE,UART_IRQ);
			ret = 0;
		} break;
		case SYS_UART_GET: {
			ret = (long int)uart_get(&uart);
		} break;
		case SYS_UART_GET_EXIST: {
			ret = (long int)uart_get_exist(&uart);
		} break;
		case SYS_UART_GET_CLEAR: {
			uart_get_clear(&uart);
			ret = 0;
		} break;
		case SYS_UART_PUT: {
			unsigned int data;
			data	= va_arg(ap,unsigned int);
			uart_put(&uart,(unsigned char)data);
			ret = 0;
		} break;
		case SYS_UART_PUT_FULL: {
			ret = uart_put_full(&uart);
		} break;
		case SYS_UART_PUT_CLEAR: {
			uart_put_clear(&uart);
			ret = 0;
		} break;
		case SYS_UART_PUT_STRING: {
			unsigned char *string;
			string	= va_arg(ap,unsigned char *);
			uart_put_string(&uart,string);
			ret = 0;
		} break;
		case SYS_UART_IS_CTS: {
			ret = uart_is_cts(&uart);
		} break;
		case SYS_UART_IS_DSR: {
			ret = uart_is_dsr(&uart);
		} break;
		case SYS_UART_IS_RI: {
			ret = uart_is_ri(&uart);
		} break;
		case SYS_UART_IS_DCD: {
			ret = uart_is_dcd(&uart);
		} break;
		case SYS_UART_DTR: {
			unsigned long int data;
			data = va_arg(ap,unsigned long int);
			uart_dtr(&uart,data);
			ret = 0;
		} break;
		case SYS_UART_RTS: {
			unsigned long int data;
			data = va_arg(ap,unsigned long int);
			uart_rts(&uart,data);
			ret = 0;
		} break;
	}
	va_end(ap);
	return ret;
}