static Cyg_ErrNo gx3113_panel_open(struct cyg_devtab_entry **tab, struct cyg_devtab_entry *sub_tab, const char *name) { //unsigned char initLedDisp = 0; bsp_printf("[panel]gx3113_panel_open\n"); if(!s_panel_conuter) { s_panel_timer = gx_rtc_timer_create((gx_rtc_timer_callback)bsp_front_panel_scan_manager,0,4,4); // s_panel_timer = gx_rtc_timer_create((gx_rtc_timer_callback)bsp_front_panel_scan_manager,0,0,5); } if (s_panel_timer < 0) { bsp_printf("[panel]gx_rtc_timer_create failed!\n"); } else { /*wangjian modify on 20141215 for boot disp led.*/ #if 0 if (0 == s_panel_conuter) { initLedDisp = GXLED_BOOT; bsp_front_panel_show_string(&initLedDisp); } #endif s_panel_conuter++; bsp_printf("gx_rtc_timer_create s_panel_timer: %d\n", s_panel_timer); } return ENOERR; }
void dump_PRNG() { uint32_t au32PrngData[8]; PRNG_Read(au32PrngData); bsp_printf("PRNG DATA ==>\n"); bsp_printf(" 0x%08x 0x%08x 0x%08x 0x%08x\n", au32PrngData[0], au32PrngData[1], au32PrngData[2], au32PrngData[3]); bsp_printf(" 0x%08x 0x%08x 0x%08x 0x%08x\n", au32PrngData[4], au32PrngData[5], au32PrngData[6], au32PrngData[7]); }
void _bsp_assert(const char *file, const int line, const char *condition) { bsp_printf("Assertion \"%s\" failed\n", condition); bsp_printf("File \"%s\"\n", file); bsp_printf("Line %d\n", line); #if defined(PORT_TOGGLE_DEBUG) PORT_TOGGLE_DEBUG(); #else while(1) ; #endif /* defined(PORT_TOGGLE_DEBUG) */ }
static void AppTask_2 (void *p_arg) { INT8U err; (void)p_arg; APP_TRACE_INFO(("AppTask_2\n\r")); pSecureEventFlagGrp = OSFlagCreate(0x0, &err); /* Enable Crypto clock */ CLK->AHBCLK |= CLK_AHBCLK_CRPTCKEN_Msk; BSP_IntVectSet(BSP_INT_ID_CRYPTO, CRYPTO_IRQHandler); BSP_IntEn(BSP_INT_ID_CRYPTO); PRNG_ENABLE_INT(); while (1) { PRNG_Open(PRNG_KEY_SIZE_256, 0, 0); bsp_printf("Start PRNG...\n"); PRNG_Start(); OSFlagPend(pSecureEventFlagGrp, 0x1, OS_FLAG_WAIT_SET_ANY, 0, &err); dump_PRNG(); OSTimeDlyHMSM(0, 0, 0, 100); } }
static Cyg_ErrNo gx3113_panel_close(cyg_io_handle_t handle) { bsp_printf("[panel]gx3113_panel_close\n"); s_panel_conuter --; if(!s_panel_conuter) { gx_rtc_timer_delete(s_panel_timer); } return ENOERR; }
void gx_stb_panel_tm1635_set_led_value(uint32_t nLedValue) { # if 0 int8_t i; gs_chLedValue_1635[0] = gs_chLedData_1635[LED_DATA_DARK]; gs_chLedValue_1635[1] = gs_chLedData_1635[LED_DATA_DARK]; gs_chLedValue_1635[2] = gs_chLedData_1635[LED_DATA_DARK]; gs_chLedValue_1635[3] = gs_chLedData_1635[LED_DATA_DARK]; if(nLedValue > 9999) { nLedValue = 9999; bsp_printf("nLedValue = %d\n", nLedValue); } for(i = (g_PanelTM1635Config.m_chLedCnt-1) ; i >= 0 ; i--) { gs_chLedValue_1635[i] = (nLedValue)%10; nLedValue = (nLedValue - gs_chLedValue_1635[i])/10; //bsp_printf("gs_chLedValue_1635[%d]= %d, nLedValue=%d\n",i,gs_chLedValue_1635[i], nLedValue); } for(i = 0; i < g_PanelTM1635Config.m_chLedCnt; i++) { gs_chLedValue_1635[i] = gs_chLedData_1635[gs_chLedValue_1635[i]]; //bsp_printf("gs_chLedValue_1635[%d]= %d\n",i,gs_chLedValue_1635[i]); } #else int8_t i; char pStr[5] = {0}; uint32_t temp = 0; for(i = 3 ; i >= 0 ; i--) { temp = (nLedValue)%10; pStr[i] = 0x30 + temp; nLedValue = (nLedValue -temp)/10; } gs_chStringLen = strlen((char*)pStr); gs_chStringPos = 0; memset(gs_chStringValue, 0x00, 256); gx_stb_panel_tm1635_convert_acsii((unsigned char *)pStr, (unsigned char *)gs_chStringValue, 256); #endif }
/* ********************************************************************************************************* * BSP_Set_System_Clock() * * Description : Select HCLK clock source and divider * * Argument(s) : clk_src HCLK clock source. Must be type E_CLK_SRC. * clk_div HCLK clock frequency = (HCLK clock source frequency) / (clk_div + 1) * The valid range of clk_div is 0 <= clk_div <= 15. * * Return(s) : 0 Success * -1 Failed * * Caller(s) : Application. * * Note(s) : none. ********************************************************************************************************* */ int BSP_Set_System_Clock (E_CLK_SRC clk_src, int clk_div) { switch (clk_src) { case CLK_XTL_12M: CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_HCLKSEL_Msk); _cpu_freq = HXT_HZ / (clk_div+1); break; case CLK_XTL_32K: CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_HCLKSEL_Msk) | 0x1; _cpu_freq = LXT_HZ / (clk_div+1); break; case CLK_OSC_22M: CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_HCLKSEL_Msk) | 0x7; _cpu_freq = HIRC_HZ / (clk_div+1); break; case CLK_OSC_10K: CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_HCLKSEL_Msk) | 0x3; _cpu_freq = LIRC_HZ / (clk_div+1); break; case CLK_PLL: CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_HCLKSEL_Msk) | 0x2; _cpu_freq = _pll_freq / (clk_div+1); break; default: return -1; } bsp_printf("Reinit system tick with HCLK %d.\n", _cpu_freq); BSP_Tick_Init(); return 0; }
int BSP_Set_PLL_Freq (E_CLK_SRC pll_src, CPU_INT32U pll_freq_Hz) { CPU_INT32U r_out_dv, r_in_dv, r_fb_dv; CPU_INT32U check, fin, fout, nr, no, nf; CPU_INT32U diff, best_diff, best_val = 0, best_freq = 0; if ((pll_src != CLK_XTL_12M) && (pll_src != CLK_OSC_22M)) return -1; if (pll_src == CLK_XTL_12M) fin = HXT_HZ; else fin = HIRC_HZ; best_diff = 0x7fffffff; for (r_out_dv = 0; r_out_dv <= 3; r_out_dv++) { for (r_in_dv = 0; r_in_dv <= 0x1f; r_in_dv++) { for (r_fb_dv = 0; r_fb_dv <= 0x1ff; r_fb_dv++) { nr = r_in_dv + 2; no = (r_out_dv == 0) ? 1 : (r_out_dv == 3 ? 4 : 2); nf = r_fb_dv + 2; check = (fin/1000) / (2 * nr); if ((check <= 800) || (check >= 8000)) continue; check = ((fin/1000) * nf) / nr; if ((check <= 100000) || (check >= 200000)) continue; if (check < 120000) continue; fout = ((fin/1000) * nf) / (nr * no); fout *= 1000; if (fout > pll_freq_Hz) diff = fout - pll_freq_Hz; else diff = pll_freq_Hz - fout; if (diff < best_diff) { best_diff = diff; best_val = (r_out_dv << 14) | (r_in_dv << 9) | r_fb_dv; best_freq = fout; if (diff == 0) break; } } } } if (pll_src == CLK_XTL_12M) CLK->PLLCTL = best_val; else CLK->PLLCTL = CLK_PLLCTL_PLLSRC_Msk | best_val; _pll_freq = best_freq; bsp_printf("PLLCTL=0x%x, FREQ=%d.%02d MHz\n", best_val, _pll_freq/1000000, (_pll_freq % 1000000) / 10000); return 0; }
static Cyg_ErrNo gx3113_panel_ioctl(cyg_io_handle_t handle, cyg_uint32 key, void *buf) { int gpio = 0; if ((PANEL_GPIO_HIGH == key)||(PANEL_GPIO_LOW == key) ||(PANEL_STRING == key)||(PANEL_DATA == key) ||(PANEL_READ_KEY == key)) { if (buf == NULL) return EIO; gpio = *(uint32_t*)buf; } switch (key) { case PANEL_GPIO_HIGH: bsp_printf("PANEL_GPIO_HIGH %d\n",gpio); gx_gpio_setio(gpio, 1); gx_gpio_setlevel(gpio,1); break; case PANEL_GPIO_LOW: bsp_printf("PANEL_GPIO_LOW %d\n",gpio); gx_gpio_setio(gpio, 1); gx_gpio_setlevel(gpio,0); break; case PANEL_STRING: #if 0 bsp_front_panel_show_string(*(GXLED_Str_t*)(buf)); #else bsp_front_panel_show_string(buf); #endif break; case PANEL_DATA: // bsp_printf(" gx3113_panel_ioctl PANEL_DATA \n"); #if 0 bsp_front_panel_set_signal(*(uint32_t*)buf); #else bsp_front_panel_set_led_value(*(uint32_t*)buf); #endif break; case PANEL_READ_KEY: // bsp_printf(" gx3113_panel_ioctl PANEL_READ_KEY \n"); *(uint32_t*)buf = s_panel_key; break; case PANEL_LOCK: bsp_front_panel_lock(); //gx_stb_panel_ct1642_on(); break; case PANEL_UNLOCK: bsp_front_panel_unlock(); break; case PANEL_POWER_OFF: bsp_printf("PANEL_POWER_OFF\n"); //gx_stb_panel_ct1642_set_led_dark(); bsp_front_panel_poweroff(); //gx_stb_panel_ct1642_standby(); //gx_stb_panel_ct1642_scan_manager(); break; default: return EIO; } return ENOERR; }
// Utility function for printing breakpoints void bp_print(target_register_t bp_val) { bsp_printf("0x%08lx\n", (unsigned long)bp_val); }