Firefly开源社区

打印 上一主题 下一主题

FireBLE系统启动处理任务问题

13

积分

0

威望

0

贡献

游客

积分
13

FireBLE系统启动处理任务问题

发表于 2015-8-15 10:54:51      浏览:7281 | 回复:6        打印      只看该作者   [复制链接] 楼主
系统main 函数初始化结束,就一直查询ke_schedule函数 进行调度。 但是系统一上来就执行 app_gap_set_mode_req_cmp_evt_handler   这个函数应该是消息GAP_SET_MODE_REQ_CMP_EVT 对应的任务,但是我整个过程搜索了一遍  没发现有地方创建该消息,为什么会自动形成这个消息呢  是不是固化代码里面创建的该消息啊? 跪谢!
回复

使用道具 举报

400

积分

0

威望

0

贡献

注册会员

Rank: 8Rank: 8

积分
400
QQ
发表于 2015-8-15 11:02:03        只看该作者  沙发
是的,在ke_schedule之前有一部分代码是追踪不到的。
没个性,不签名!
回复

使用道具 举报

13

积分

0

威望

0

贡献

游客

积分
13
发表于 2015-8-15 11:10:17        只看该作者  板凳
感谢安安的快速应答,拿到你们板子不久,看来昆天科的这套OS想要彻底理顺还需要不断的调试  感觉资料有点少。不过这个版块相当不错,
回复

使用道具 举报

46

积分

0

威望

0

贡献

游客

积分
46
发表于 2015-8-15 12:07:03        只看该作者  地板
这个是一上电,最先执行的不是这个函数,如下是整个启动流程图:

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

clipboard.png
回复

使用道具 举报

13

积分

0

威望

0

贡献

游客

积分
13
发表于 2015-8-15 13:43:24        只看该作者  5#
学习了  非常感谢xiaolong_ba !
回复

使用道具 举报

13

积分

0

威望

0

贡献

游客

积分
13
发表于 2015-8-17 09:59:10        只看该作者  6#
这两天我看了下 具体流程:
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
这个请求不发起呀,大神们一起来解释下这里为什么要加这个条件,不是流程一开始初始化第一步就要这个命令的吗?
回复

使用道具 举报

400

积分

0

威望

0

贡献

注册会员

Rank: 8Rank: 8

积分
400
QQ
发表于 2015-8-19 09:33:52        只看该作者  7#
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)的时候就自然会被依次调度了。
这一部分初始化时封闭的,所以才会用文档的形式做说明,代码是查不到的。
没个性,不签名!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表