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(); }
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]); } }
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(); }
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 */ } }
/* 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); }
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; }
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 }
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; }