main_loop()函数解析(1)
生活随笔
收集整理的這篇文章主要介紹了
main_loop()函数解析(1)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
main_loop()函數(shù)做的都是與具體平臺無關(guān)的工作,主要包括初始化啟動次數(shù)限制機(jī)制、設(shè)置軟件版本號、打印啟動信息、解析命令等。(1)設(shè)置啟動次數(shù)有關(guān)參數(shù)。在進(jìn)入main_loop()函數(shù)后,首先是根據(jù)配置加載已經(jīng)保留的啟動次數(shù),并且根據(jù)配置判斷是否超過啟動次數(shù)。代碼如下:
1?295?void?main_loop?(void)??2?296?{??3?297?#ifndef?CFG_HUSH_PARSER??4?298???static?char?lastcommand[CFG_CBSIZE]?=?{?0,?};??5?299???int?len;??6?300???int?rc?=?1;??7?301???int?flag;??8?302?#endif??9?303???10?304?#if?defined(CONFIG_BOOTDELAY)?&&?(CONFIG_BOOTDELAY?>=?0)??11?305???char?*s;??12?306???int?bootdelay;??13?307?#endif??14?308?#ifdef?CONFIG_PREBOOT??15?309???char?*p;??16?310?#endif??17?311?#ifdef?CONFIG_BOOTCOUNT_LIMIT??18?312???unsigned?long?bootcount?=?0;??19?313???unsigned?long?bootlimit?=?0;??20?314???char?*bcs;??21?315???char?bcs_set[16];??22?316?#endif?/*?CONFIG_BOOTCOUNT_LIMIT?*/??23?317???24?318?#if?defined(CONFIG_VFD)?&&?defined(VFD_TEST_LOGO)??25?319???ulong?bmp?=?0;????/*?default?bitmap?*/??26?320???extern?int?trab_vfd?(ulong?bitmap);??27?321???28?322?#ifdef?CONFIG_MODEM_SUPPORT??29?323???if?(do_mdm_init)??30?324?????bmp?=?1;??/*?alternate?bitmap?*/??31?325?#endif??32?326???trab_vfd?(bmp);??33?327?#endif??/*?CONFIG_VFD?&&?VFD_TEST_LOGO?*/??34?328???35?329?#ifdef?CONFIG_BOOTCOUNT_LIMIT??36?330???bootcount?=?bootcount_load();?????????//?加載保存的啟動次數(shù)??37?331???bootcount++;??????????????????????????//?啟動次數(shù)加1??38?332???bootcount_store?(bootcount);??????????//?更新啟動次數(shù)??39?333???sprintf?(bcs_set,?"%lu",?bootcount);??//?打印啟動次數(shù)??40?334???setenv?("bootcount",?bcs_set);??41?335???bcs?=?getenv?("bootlimit");??42?336???bootlimit?=?bcs???simple_strtoul?(bcs,?NULL,?10)?:?0;??43?????????????????????????????????????????????//?轉(zhuǎn)換啟動次數(shù)字符串為UINT類型??44?337?#endif?/*?CONFIG_BOOTCOUNT_LIMIT?*/?第329~337行是啟動次數(shù)限制功能,啟動次數(shù)限制可以被用戶設(shè)置一個啟動次數(shù),然后保存在Flash存儲器的特定位置,當(dāng)?shù)竭_(dá)啟動次數(shù)后,U-Boot無法啟動。該功能適合一些商業(yè)產(chǎn)品,通過配置不同的License限制用戶重新啟動系統(tǒng)。
1?295?void?main_loop?(void)??2?296?{??3?297?#ifndef?CFG_HUSH_PARSER??4?298???static?char?lastcommand[CFG_CBSIZE]?=?{?0,?};??5?299???int?len;??6?300???int?rc?=?1;??7?301???int?flag;??8?302?#endif??9?303???10?304?#if?defined(CONFIG_BOOTDELAY)?&&?(CONFIG_BOOTDELAY?>=?0)??11?305???char?*s;??12?306???int?bootdelay;??13?307?#endif??14?308?#ifdef?CONFIG_PREBOOT??15?309???char?*p;??16?310?#endif??17?311?#ifdef?CONFIG_BOOTCOUNT_LIMIT??18?312???unsigned?long?bootcount?=?0;??19?313???unsigned?long?bootlimit?=?0;??20?314???char?*bcs;??21?315???char?bcs_set[16];??22?316?#endif?/*?CONFIG_BOOTCOUNT_LIMIT?*/??23?317???24?318?#if?defined(CONFIG_VFD)?&&?defined(VFD_TEST_LOGO)??25?319???ulong?bmp?=?0;????/*?default?bitmap?*/??26?320???extern?int?trab_vfd?(ulong?bitmap);??27?321???28?322?#ifdef?CONFIG_MODEM_SUPPORT??29?323???if?(do_mdm_init)??30?324?????bmp?=?1;??/*?alternate?bitmap?*/??31?325?#endif??32?326???trab_vfd?(bmp);??33?327?#endif??/*?CONFIG_VFD?&&?VFD_TEST_LOGO?*/??34?328???35?329?#ifdef?CONFIG_BOOTCOUNT_LIMIT??36?330???bootcount?=?bootcount_load();?????????//?加載保存的啟動次數(shù)??37?331???bootcount++;??????????????????????????//?啟動次數(shù)加1??38?332???bootcount_store?(bootcount);??????????//?更新啟動次數(shù)??39?333???sprintf?(bcs_set,?"%lu",?bootcount);??//?打印啟動次數(shù)??40?334???setenv?("bootcount",?bcs_set);??41?335???bcs?=?getenv?("bootlimit");??42?336???bootlimit?=?bcs???simple_strtoul?(bcs,?NULL,?10)?:?0;??43?????????????????????????????????????????????//?轉(zhuǎn)換啟動次數(shù)字符串為UINT類型??44?337?#endif?/*?CONFIG_BOOTCOUNT_LIMIT?*/?第329~337行是啟動次數(shù)限制功能,啟動次數(shù)限制可以被用戶設(shè)置一個啟動次數(shù),然后保存在Flash存儲器的特定位置,當(dāng)?shù)竭_(dá)啟動次數(shù)后,U-Boot無法啟動。該功能適合一些商業(yè)產(chǎn)品,通過配置不同的License限制用戶重新啟動系統(tǒng)。
轉(zhuǎn)載于:https://blog.51cto.com/xls06/1168285
總結(jié)
以上是生活随笔為你收集整理的main_loop()函数解析(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Effective C#》读书笔记——
- 下一篇: Oracle数据表和Constraint