查看: 1576|回复: 0

【DA14580DEVKT-B评估板】五、任务调度与消息传递

[复制链接]
  • TA的每日心情
    开心
    2022-6-16 19:35
  • 签到天数: 649 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2016-7-18 09:01:10 | 显示全部楼层 |阅读模式
    分享到:
    任务调度在arch_main.c中schedule_while_ble_on()执行;
    一、大致流程schedule_while_ble_on()->rwip_schedule()->app_entry_point_handler()->app_process_handlers()->app_process_catch_rest_cb();
    1、先来分析下app_process_handlers()
    a、app_entry_point_handler()中参数msgid即为接收到的消息id(此id,对应const struct ke_msg_handler结构中的id);
    b、再看下app_process_handlers内容:


    其中每一个app_xxx_process_handlers只是直接调用并返回app_std_process_event()结果,如app_gap_process_handler:


    最后,app_gap_process_handler通过handler_search()找到该handler中与msg_id相等的id所对应函数并调用;



    b、然后就是app_process_catch_rest_cb,默认这是一个空指针,这是供用户自己添加添加一个回调,给用户提供一个处理自己创建的任务所对应的消息处理入口,该指针赋值是在user_config.h中的,如图:

    二、至于上面所提到用到的msg_id实际就是创建消息时KE_MSG_ALLOC()的第一个参数,再通过ke_msg_send()发送到消息队列以驱动上面的调度进行。消息发送如下图所示:
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 10:45 , Processed in 0.129845 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.