osal_init_system()函数研究(转)
来源:互联网 发布:软件汉化工具 编辑:程序博客网 时间:2024/05/29 03:37
原链接:http://bbs.ednchina.com/BLOG_ARTICLE_443996.HTM
- //初始化操作系统,主要是堆栈,时钟,电源模式,任务号分配
- osal_init_system();
- //通过创建定义在任务表【OSAL_Tasks.h】中的任务来初始化任务系统【OSAL.c】
- byte osal_init_system( void )
- {
- //初始化内存分配系统【OSAL_Memory.c】
- osal_mem_init();
- //初始化消息队列,其实就是一个指针
- osal_qHead = NULL;
- //初始化系统定时器【OSAL_Timers.c】
- osalTimerInit();
- void osalTimerInit( void )
- {
- // Initialize the rollover modulo
- tmr_count = TICK_TIME;
- //【OnBoard.h】
- // #define TICK_TIME 1000 //每次时钟滴答的时间(毫秒)
- tmr_decr_time = TIMER_DECR_TIME;
- // #define TIMER_DECR_TIME 1
- osal_timer_activate( false );
- //初始化系统定时器,实际上是停止了时钟定时器【OSAL_Timers.c】
- void osal_timer_activate( byte turn_on )
- {
- osal_timer_hw_setup( turn_on );
- //设置时钟硬件【OSAL_Timers.c】
- void osal_timer_hw_setup( byte turn_on )
- {
- if (turn_on)
- {
- HalTimerStart (OSAL_TIMER, tmr_count );
- //启动时钟
- }
- else
- {
- HalTimerStop (OSAL_TIMER);
- }
- }
- timerActive = turn_on;
- }
- timerActive = false;
- osal_systemClock = 0;
- }
- //初始化电源管理系统
- osal_pwrmgr_init();
- //配置器件使用的电源模式【OSAL_PwrMgr.c】
- void osal_pwrmgr_init( void )
- {
- pwrmgr_attribute.pwrmgr_device = PWRMGR_ALWAYS_ON;
- //默认不打开节能模式
- //【OSAL_PwrMgr.h】
- //#define PWRMGR_ALWAYS_ON 0 //不使用节能模式
- //#define PWRMGR_BATTERY 1 //使用电池供电,允许进入休眠模式
- //pwrmgr_attribute_t pwrmgr_attribute;
- typedef struct
- {
- uint16 pwrmgr_task_state;
- uint16 pwrmgr_next_timeout;
- uint16 accumulated_sleep_time;
- uint8 pwrmgr_device;
- } pwrmgr_attribute_t;
- pwrmgr_attribute.pwrmgr_task_state = 0; // Cleared. All set to conserve
- }
- //初始化系统任务,为每个任务调用初始化函数
- osalInitTasks();
- //【sapi.c】
- void osalInitTasks( void )
- {
- uint8 taskID = 0;
- tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);
- osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));
- // uint16 *tasksEvents;
- // const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr[0] );
- //任务队列中其实是一个个的事件处理函数,这里分配了任务要用的内存空间。
- //然后为每个任务分配一个不同的任务ID,ID递增,按照初始化的顺序排列在tasksArr队列中
- macTaskInit( taskID++ );
- nwk_init( taskID++ );
- Hal_Init( taskID++ );
- #if defined( MT_TASK )
- MT_TaskInit( taskID++ );
- #endif
- APS_Init( taskID++ );
- ZDApp_Init( taskID++ );
- SAPI_Init( taskID );
- }
- //Setup efficient search for the first free block of heap.
- //跳过第一个块
- osal_mem_kick();
- return ( ZSUCCESS );
- }
阅读全文
0 0
- osal_init_system()函数研究(转)
- osal_init_system()函数研究(转)
- zmain_ext_addr()函数研究(转)
- zmain_ext_addr()函数研究(转)
- 虚函数的研究
- execve()函数的研究
- Linux wait_on_buffer函数研究
- strtok_r函数研究
- iOS main函数研究
- main函数研究
- strtok_r函数研究
- substr函数深度研究
- 函数调用过程研究
- imagefilledarc函数研究
- Opencv函数研究
- 二次函数的研究
- 函数模板深入研究
- 函数动态调用 研究
- 华为2018校招第二题 求去重后的最大整数
- $.ajax()方法
- 方法注释模板
- Vue使用经验小结
- BZOJ4237 稻草人
- osal_init_system()函数研究(转)
- ActorLite:一个轻量级Actor模型实现(上)
- Executor
- HDU 6172 Array Challenge(打表+矩阵快速幂)——2017 Multi-University Training Contest
- 栈的反转、滑动窗口、数组变树
- MAC删除打开方式中重复的软件
- MySQL索引背后的数据结构及算法原理
- CentOS7下Let's Encrypt Nginx配置SSL证书
- 【POJ】3258