Пример #1
0
void mcuWakeup()
{
	/* Set GPIO for MCU */
	mcuLock();

	outpw(REG_GPIOB_OE,inpw(REG_GPIOB_OE) & ~MCU_GPIO);		//19 output;
    outpw(REG_GPIOB_DAT,inpw(REG_GPIOB_DAT) & ~MCU_GPIO);	//19 low
	tt_msleep(100);
    outpw(REG_GPIOB_DAT,inpw(REG_GPIOB_DAT) | MCU_GPIO);	//19 high
    tt_msleep(100);
    
    mcuUnlock();
}
Пример #2
0
void test_recv_entry(void)
{
	int iPort = TEST_RECV_SERVER_BEGIN_PORT;
	int i;
	
	for(i = 0; i < TEST_RECV_SERVER_NUM; i++)
	{
		netdata[i].iport = iPort+i;
		netdata[i].pbuf = (char*)NON_CACHE(g_RemoteNet_Buf1[i]);
		netdata[i].precvbuf = msg[i];
		cyg_thread_create(THREAD_PRIORITY, &test_recv_server, (cyg_addrword_t)&netdata[i], 
						NULL, thread_stack[i], STACK_SIZE, &thread_handle[i], &thread[i]);
		cyg_thread_resume(thread_handle[i]);
	}
	
	tt_msleep(1000);
	
	for(; i < TEST_RECV_SERVER_NUM * 2; i++)
	{
		netdata[i].iport = iPort+i;
		netdata[i].pbuf = (char*)NON_CACHE(g_RemoteNet_Buf1[i]);
		netdata[i].precvbuf = msg[i];
		cyg_thread_create(THREAD_PRIORITY, &test_recv_client, (cyg_addrword_t)&netdata[i], 
						NULL, thread_stack[i], STACK_SIZE, &thread_handle[i], &thread[i]);
		cyg_thread_resume(thread_handle[i]);
	}
	
	for(i = 0; i < TEST_RECV_SERVER_NUM * 2; i++)
	{
		test_tcp_socket_thread_join(thread_handle[i]);
		cyg_thread_delete(thread_handle[i]);
	}
}
Пример #3
0
void test_break_system(cyg_addrword_t pParam)
{
	while(1)
	{
		tt_msleep(5000);
		pwr_power_saving();
	}


//	int i = 0;

	//cyg_scheduler_lock();
//	while(1)
//	{
//		char buf[64];
		
		
//		cyg_thread_delay(200);
//		diag_printf("In testing: %d\n", i++);
		//while(1);
	
//		sprintf(buf, "i = %d\r\n", i);
//		hi_uart_write(buf, strlen(buf));
		
//	}

	//cyg_scheduler_unlock();
}
Пример #4
0
void thread_entry(void *arg)
{
	THREAD_ARG_T *the_arg = (THREAD_ARG_T *)arg;

	my_sem_down (the_arg->sem);
	while (1)
	{
		int cur_ticks = tt_get_ticks ();

		if (cur_ticks % 1024 < 4)
		{
			my_sem_up (the_arg->sem);
			//tt_thread_yield ();
			//tt_sleep(1);
			tt_msleep(rand()%64);
			my_sem_down (the_arg->sem);
		}

		
		if(cur_ticks % 64 < 32)
			DrvGPIO_SetBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn off LED */
		else
			DrvGPIO_ClrBit(the_arg->gpio_group, the_arg->gpio_bit);	/* Turn on LED */
	}
}
Пример #5
0
/* Initialize MCU parameters. */
void mcuInit()
{
	tt_rmutex_init(&g_rmutex_MCU);
	g_bSendMCU = FALSE;
#if 1	//xhchen - MCU debug
	g_nMCU_Debug_Count = 0;
	g_nMCU_Command_Count = 0;
#endif

	/* Set GPIO for MCU */
	outpw(REG_GPIOB_OE,inpw(REG_GPIOB_OE) & ~MCU_GPIO);		//19 output;
    outpw(REG_GPIOB_DAT,inpw(REG_GPIOB_DAT) | MCU_GPIO);	//19 high	
    
    tt_msleep(100);
}
Пример #6
0
int sysInit (void)
{
	/* <0> Save threads debug entry. */
#ifndef ECOS
	{
		extern UCHAR ASM_THREADS_DUMP_FUN[];	//A buffer in wb_init.s
		UINT32 uThreadDebugFun_Addr = (UINT32) &tt_dump_threads;
		memcpy (ASM_THREADS_DUMP_FUN, &uThreadDebugFun_Addr, sizeof (UINT32));
	}
#endif
	
	/* <1> Enable flash. */
	sysFlushCache (I_D_CACHE);
	sysDisableCache ();
	sysEnableCache (CACHE_WRITE_BACK);

	/* <2> Disable almost all of the engines for safety. */
	outpw (REG_CLKCON, inpw (REG_CLKCON) | CPUCLK_EN | APBCLK_EN | HCLK2_EN);
	outpw (REG_CLKSEL, SYSTEM_CLK_FROM_XTAL);
	outpw (REG_APLLCON, PLL_OUT_OFF);
	outpw (REG_UPLLCON, PLL_OUT_OFF);
	
	/* <3> Initialize UART. */
	/*
	{
		WB_UART_T uart;
		
		TURN_ON_UART_CLOCK;
		uart.uiFreq = OPT_XIN_CLOCK;
		uart.uiBaudrate = 57600;
		uart.uiDataBits = WB_DATA_BITS_8;
		uart.uiStopBits = WB_STOP_BITS_1;
		uart.uiParity = WB_PARITY_NONE;
		uart.uiRxTriggerLevel = LEVEL_1_BYTE;
		sysInitializeUART(&uart);
		printf ("UART ok\n");
	}
	*/

	/* <4> Set PLL. */
	// SDRAM MCLK automatically on/off
	outpw(REG_SDICON, inpw(REG_SDICON) & 0xBFFFFFFF);
	// Force MPEG4 transfer length as 8 bytes
	outpw(REG_BBLENG1, (inpw(REG_BBLENG1) & 0xFFFFFFF8) | 0x2);
	
	// CLKDIV0
	// Bit 1~0 : APB = HCLK1/?  -------------------------+
	// Bit15~8 : VPOST = PLL/?  -----------------------+ |
	// Bit19~16: USB = PLL/?    ---------------------+ | |
	// Bit23~20: Audio = PLL/?  --------------------+| | |
	// Bit27~24: Sensor = PLL/? -------------------+|| | |
	// Bit31~28: System = PLL/? ------------------+||| | |
	                                         //   |||| | | 
	                                         //   ||||++ |
//	outpw(REG_CLKDIV0, inpw(REG_CLKDIV0)&0x0fc|0x01322302);	//(ok for 108)
#ifndef ECOS
	outpw(REG_CLKDIV0, inpw(REG_CLKDIV0)&0x0fc|0x25362401);	//(ok for 336(112))
#else
	//outpw(REG_CLKDIV0, inpw(REG_CLKDIV0)&0xf00000fc|0x05362401);	//can't modify system clock
	outpw(REG_CLKDIV0, inpw(REG_CLKDIV0)&0x0fc|0x25362401);	//(ok for 336(112))
#endif
//	outpw(REG_CLKDIV0, inpw(REG_CLKDIV0)&0x0fc|0x03331802);	//(ok for 144)

	//Adjust SDRAM
	printf("setting apll to 0x%x, upll to 0x%x\n", pllEvalPLLCON (OPT_XIN_CLOCK, OPT_APLL_OUT_CLOCK), pllEvalPLLCON (OPT_XIN_CLOCK, OPT_UPLL_OUT_CLOCK));
	outpw(REG_APLLCON, pllEvalPLLCON (OPT_XIN_CLOCK, OPT_APLL_OUT_CLOCK));
	outpw(REG_UPLLCON, pllEvalPLLCON (OPT_XIN_CLOCK, OPT_UPLL_OUT_CLOCK));

	                 //  +-------- Bit31~28 : HCLK (from system)
	                 //  |+------- Bit27~24 : CPU (from HCLK)
	                 //  ||+------ Bit23~20 : HCLK1 (from HCLK, must less or equal to HCLK and CPU)
	                 //  |||+----- Bit19~16 : HCLK2 (from HCLK)
	                 //  ||||+---- Bit15~12 : MPEG4, JPEG (from HCLK2)
	                 //  |||||+--- Bit11~8  : 2D, VPE (from HCLK2)
	                 //  ||||||+-- Bit 7~6  : DSP (from HCLK2)
	                 //  |||||||+- Bit 5~0  : Reserved.
//	outpw(REG_CLKDIV1, 0x00105045);	//(ok for 108)
	outpw(REG_CLKDIV1, 0x00105045);	//(ok for 112)
//	outpw(REG_CLKDIV1, 0x00110005);
#ifndef ECOS	//don't need to modify system clock source
	outpw(REG_CLKSEL, SYSTEM_CLK_FROM_UPLL);
#endif
printf("before system clock\n");
	outpw(REG_CLKSEL, SYSTEM_CLK_FROM_UPLL);
printf("system clock ok\n");

	/* <5> Initialize TinyThread to support multi-thread. */
#ifndef ECOS
	tt_init (OPT_XIN_CLOCK, OPT_UPLL_OUT_CLOCK);
#else
	//tt_init (OPT_XIN_CLOCK, OPT_UPLL_OUT_CLOCK);
	printf("reg_tcr0=0x%x reg_ticr0=0x%x\n", inpw(REG_TCR0), inpw(REG_TICR0));
	printf("reg_tcr1=0x%x reg_ticr1=0x%x\n", inpw(REG_TCR1), inpw(REG_TICR1));
#endif

	/* <6> Set other engine clocks. */

	/* Set vpost clock:
	Why I can NOT call it after HIC is transferred. */
	outpw (REG_CLKSEL, inpw (REG_CLKSEL) | VIDEO_CLK_FROM_UPLL);
	tt_msleep (30);
	TURN_ON_VPOST_CLOCK;
	tt_msleep (30);

	/* Set audio clock. */
	outpw (REG_CLKSEL, inpw (REG_CLKSEL) | AUDIO_CLK_FROM_APLL);
	tt_msleep (30);
	TURN_ON_AUDIO_CLOCK;
	tt_msleep (30);
	
	/* Set sensor clock. */
	outpw (REG_CLKSEL, inpw (REG_CLKSEL) | SENSOR_CLK_FROM_UPLL);
	//tt_msleep (30);
	//TURN_ON_DSP_CLOCK;
	//tt_msleep (30);
	//TURN_ON_CAP_CLOCK;

	/* Set MP4 clock. */
	//TURN_ON_MPEG4_CLOCK;
	//tt_msleep (30);
	
	/* Set VPE and 2D clock. */
	TURN_ON_VPE_CLOCK;
	tt_msleep (30);
	TURN_ON_GFX_CLOCK;
	tt_msleep (30);
	
	/* Set USB clock */
#if 0	
	writew(REG_SYS_CFG, readw(REG_SYS_CFG)&0xffffffbf);
	outpw (REG_CLKSEL, inpw (REG_CLKSEL) | USB_CLK_FROM_UPLL);
	tt_msleep (30);
	TURN_ON_USB_CLOCK;
	outpw(REG_GPIO_PE,inpw(REG_GPIO_PE)|0x00000200);//GPIO9,disable pull-up or pull-down  
#endif
	
	return 0;
}
Пример #7
0
void W99802Reboot(void)
{
#ifndef WLAN
	unsigned int iValue;
	iValue = *((volatile unsigned int *)0x7FF00008);
	iValue |= 1;
	*((volatile unsigned int *)0x7FF00008) = iValue;
#else
	//vp_bitrate_control_uninit();

#if 0	
	DownInterface("wlan0");
	wlan_cleanup_module( );

	/* Reset WiFi card */
	outpw(REG_GPIO_OE, inpw(REG_GPIO_OE) & 0xFFFDFFFF);		/* Set GPIO17 output */
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) | 0x00020000);	/* Set GPIO17 high */
	tt_msleep(10);
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) & 0xFFFDFFFF);	/* Set GPIO17 low */
	tt_msleep(10);
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) | 0x00020000);	/* Set GPIO17 high */
	tt_msleep(10);
#endif	

	//cyg_thread_set_priority(cyg_thread_self(), CYGPKG_NET_FAST_THREAD_PRIORITY - 2);
	
	usiMyLock();
	usiMyFlash();

	cyg_interrupt_disable();
	
//cplu++
	/* Reset WiFi card */
	outpw(REG_GPIO_OE, inpw(REG_GPIO_OE) & 0xFFFDFFFF);		/* Set GPIO17 output */
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) | 0x00020000);	/* Set GPIO17 high */
	//tt_msleep(10);
	{ int volatile i; for (i = 0; i < 100000; i++); }
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) & 0xFFFDFFFF);	/* Set GPIO17 low */
	//tt_msleep(10);
	{ int volatile i; for (i = 0; i < 100000; i++); }
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) | 0x00020000);	/* Set GPIO17 high */
	//tt_msleep(10);
	{ int volatile i; for (i = 0; i < 100000; i++); }
	

	/* Set reboot flag for bootloader */
	diag_printf("Now reboot w99802.......");
#if defined IPCAM_CONFIG_MP4_EVB_VER_0 || defined IPCAM_CONFIG_MP4_EVB_VER_1
	outpw(REG_HICBUF + 0x4, 0x03);	/* HICBUF1 power ready */
#elif defined IPCAM_CONFIG_IP_CAM_VER_0 || defined IPCAM_CONFIG_IP_CAM_VER_1 || defined IPCAM_CONFIG_IP_CAM_VER_2 || defined IPCAM_CONFIG_IP_CAM_VER_3
	outpw(REG_HICBUF + 0x4, 0x02);	/* HICBUF1 power ready */
#else
#	error "No hardware config defined!"
#endif

	/* Disable LED */
	outpw(REG_GPIOB_OE,inpw(REG_GPIOB_OE) & ~(UINT32)(LED_GPIO_RED | LED_GPIO_GREEN)); //set gpiob24 and gpio25 output mode
	outpw(REG_GPIOB_DAT,inpw(REG_GPIOB_DAT) | (UINT32)(LED_GPIO_RED | LED_GPIO_GREEN)); // set gpiob24 and gpio25 high(not light)

	/* Reset W99802 */
	outpw(REG_GPIO_OE, inpw(REG_GPIO_OE) & 0xFFFFFFF7);		/* Set GPIO3 output */
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) & 0xFFFFFFF7);	/* Set GPIO3 low */
	{ int volatile i; for (i = 0; i < 50000; i++); }
	outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) | 0x00000008);	/* Set GPIO3 high */
	{ int volatile i; for (i = 0; i < 50000; i++); }
	
	
	//tt_msleep(100);
	//outpw(REG_HICBUF + 0x4, 0x02);	/* HICBUF1 reset */
	
	//outpw(REG_GPIO_OE, inpw(REG_GPIO_OE) & 0xFFFFFFF7);		/* Set GPIO3 output */
	//outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) & 0xFFFFFFF7);	/* Set GPIO3 low */
	//tt_msleep(10);
	//outpw(REG_GPIO_DAT, inpw(REG_GPIO_DAT) | 0x00000008);	/* Set GPIO3 high */
#endif
}
Пример #8
0
int main(int argc, char *argv[])
{
	int fd_video,buf_len_video;
	int event = 0;
	int count = 0 ;
	int cnt = 0,flag=0;
    char *pcontent;
    unsigned long ulIPOldeth1 = -1, ulIPOldppp0 = -1;
    BOOL bIPEth1Change = FALSE, bIPPPP0Change = FALSE;
    
    //for font-->
	FONT_DEVICE_T fd;
	FONT_RECT_T rc;
	FONT_SIZE_T sz;
    
	cyg_interrupt_disable();
	cyg_interrupt_disable();
	cyg_interrupt_disable();
	
	cyg_interrupt_enable();
	VideoPhoneInit();
	
    fontAttrInit(&font_attr);
    //fontGetConf(&font_attr, FONT_CONF_PATH);
    fontFontSet(&fd, &font_attr);
    //for font end<--

	ControlBackLight(6, 0);
	wb702ConfigureLCM(320, 240, 2, 1, 3, 0, TRUE, 1);
	//wb702SetOSDColor(5, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xF8);
	ControlLcmTvPower(2);
	ControlBackLight(6, 1);	
#ifdef FONT_STANDALONE
	//wb702SetIoctlRW(fd_video, TRUE);//select ioctl method
	wb702EnableMotionDetect(TRUE, CMD_MOTION_DETECT_LOW);
	wb702Init(fd_video);
#endif
	
    drawLCDRGB(buf_video,font_attr.iScreenWidth*font_attr.iScreenHeight*2);
    //wb702BypassBitmap(font_attr.iScreen, buf_video, font_attr.iScreenWidth*font_attr.iScreenHeight*2);
    
    while(1)
    {
        drawLCDRGB(buf_video,font_attr.iScreenWidth*font_attr.iScreenHeight*2);

        //if(font_attr.bBackground == TRUE)
        {
            bmpconv(BMP_BACKGROUND_PATH, buf_video, font_attr.iScreenWidth, font_attr.iScreenHeight);
        }

        fontPrintContent(&fd, &font_attr, FONT_CONF_PATH);
		
		/*
        if(font_attr.bVersion == TRUE)
        {
            char versionbuf[32];
            char cmd[32];
            
            if(fontGetVersion(fd_video, versionbuf) == TRUE)
            {
                sprintf(cmd, "V%s", versionbuf);
                pcontent = cmd;
            }
            else
                pcontent = VERSION_DEFAULT;
            fontGetSize(&fd, (unsigned char*)pcontent, &sz);
            fontGetRC(&font_attr, &rc, &sz);
#ifdef FONT_DEBUG
            printf("Size: %d %d\n", sz.nWidth, sz.nHeight);
#endif
            fontPrint(&fd, (unsigned char*)pcontent, &rc, &sz);
            font_attr.rcThis.nTop += (sz.nHeight + LINE_SPACE);
        }
        */
        
        /*
        if(font_attr.bIpaddress == TRUE)
        {
            unsigned long ulIPeth1, ulIPppp0;
            BOOL ipresult;
            
            ulIPeth1 = GetIPAddress("eth1");
            if(ulIPeth1 != ulIPOldeth1)
            {
                bIPEth1Change = TRUE;
                ulIPOldeth1 = ulIPeth1;
                
                if(ulIPeth1 != 0)
                {
                    pcontent = malloc(20);
#ifdef SOCKET_BRIDGE
                    sprintf(pcontent, "ETH1: %s", inet_ntoa(*(struct in_addr*)&ulIPeth1, g_FontFuncBuffer, FONTFUNCBUFFER_SIZE));
#else
                    sprintf(pcontent, "ETH1: %s", inet_ntoa(*(struct in_addr*)&ulIPeth1));
#endif
                    fontGetSize(&fd, (unsigned char*)pcontent, &sz);
                    fontGetRC(&font_attr, &rc, &sz);
    #ifdef FONT_DEBUG
                    printf("Size: %d %d\n", sz.nWidth, sz.nHeight);
    #endif
                    fontPrint(&fd, (unsigned char*)pcontent, &rc, &sz);
                    font_attr.rcThis.nTop += (sz.nHeight + LINE_SPACE);
                    
                    free(pcontent);
                }
            }
            

            ulIPppp0 = GetIPAddress("ppp0");
            if(ulIPppp0 != ulIPOldppp0)
            {
                bIPPPP0Change = TRUE;
                ulIPOldppp0 = ulIPppp0;
                
                if(ulIPppp0 != 0)
                {
                    pcontent = malloc(20);
#ifdef SOCKET_BRIDGE
                    sprintf(pcontent, "PPP: %s", inet_ntoa(*(struct in_addr*)ulIPppp0, g_FontFuncBuffer, FONTFUNCBUFFER_SIZE));
#else
                    sprintf(pcontent, "PPP: %s", inet_ntoa(*(struct in_addr*)ulIPppp0));
#endif
                    fontGetSize(&fd, (unsigned char*)pcontent, &sz);
                    fontGetRC(&font_attr, &rc, &sz);
#ifdef FONT_DEBUG
                    printf("Size: %d %d\n", sz.nWidth, sz.nHeight);
#endif
                    fontPrint(&fd, (unsigned char*)pcontent, &rc, &sz);
                    font_attr.rcThis.nTop += (sz.nHeight + LINE_SPACE);
                
                    free(pcontent);
                }
            }
        }
        */
                {
                	bIPEth1Change = TRUE;
                    pcontent = malloc(20);
                    sprintf(pcontent, "ETH1: %s", "10.132.11.11");
                    fontGetSize(&fd, (unsigned char*)pcontent, &sz);
                    fontGetRC(&font_attr, &rc, &sz);
                    fontPrint(&fd, (unsigned char*)pcontent, &rc, &sz);
                    font_attr.rcThis.nTop += (sz.nHeight + LINE_SPACE);
                    
                    free(pcontent);
                }
        
        //if((bIPEth1Change==TRUE) || (bIPPPP0Change==TRUE))
        {
#ifdef FONT_DEBUG
            printf("wb702BypassBitmap!!!\n");
#endif
	        memcpy(vlcmGetLCMBuffer ()->aucData, buf_video, font_attr.iScreenWidth*font_attr.iScreenHeight*2);
           // wb702BypassBitmap(font_attr.iScreen, buf_video, font_attr.iScreenWidth*font_attr.iScreenHeight*2);
            bIPEth1Change = FALSE;
            bIPPPP0Change = FALSE;
        }
        
        fontRecoverRC(&font_attr);
        tt_msleep(5000);
    }
        

    return 0;
}