Firefly开源社区

标题: FireBLE系统启动处理任务问题 [打印本页]

作者: tongwusheng    时间: 2015-8-15 10:54
标题: FireBLE系统启动处理任务问题
系统main 函数初始化结束,就一直查询ke_schedule函数 进行调度。 但是系统一上来就执行 app_gap_set_mode_req_cmp_evt_handler   这个函数应该是消息GAP_SET_MODE_REQ_CMP_EVT 对应的任务,但是我整个过程搜索了一遍  没发现有地方创建该消息,为什么会自动形成这个消息呢  是不是固化代码里面创建的该消息啊? 跪谢!
作者: 安安    时间: 2015-8-15 11:02
是的,在ke_schedule之前有一部分代码是追踪不到的。
作者: tongwusheng    时间: 2015-8-15 11:10
感谢安安的快速应答,拿到你们板子不久,看来昆天科的这套OS想要彻底理顺还需要不断的调试  感觉资料有点少。不过这个版块相当不错,
作者: xiaolong_ba    时间: 2015-8-15 12:07
这个是一上电,最先执行的不是这个函数,如下是整个启动流程图:

clipboard.png (327 KB, 下载次数: 457)

clipboard.png

作者: tongwusheng    时间: 2015-8-15 13:43
学习了  非常感谢xiaolong_ba !
作者: tongwusheng    时间: 2015-8-17 09:59
这两天我看了下 具体流程:
main()初始化
    // If QN902x works on wireless SoC mode, initialize APP task
#if (QN_WORK_MODE == WORK_MODE_SOC)
    app_init();
#endif
app_init()进去最后一行
#if (QN_WORK_MODE != WORK_MODE_SOC)
    app_gap_reset_req();
#endif
这个请求不发起呀,大神们一起来解释下这里为什么要加这个条件,不是流程一开始初始化第一步就要这个命令的吗?
作者: 安安    时间: 2015-8-19 09:33
tongwusheng 发表于 2015-8-17 09:59
这两天我看了下 具体流程:
main()初始化
    // If QN902x works on wireless SoC mode, initialize APP ...
  1. #if (QN_WORK_MODE != WORK_MODE_SOC)
  2.     app_gap_reset_req();
  3. #endif
复制代码

这一句确实不会执行,因为xiaolong_ba上文提到的那些消息在app_init之前就已经被推入到任务队列中了,等到while(1)的时候就自然会被依次调度了。
这一部分初始化时封闭的,所以才会用文档的形式做说明,代码是查不到的。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1