Firefly开源社区

标题: FireBlue QN9020 QN9021 QN902x Proximity Reportor profile(防丢器) 之源码分析 开篇 [打印本页]

作者: dezhi    时间: 2015-3-30 16:28
标题: FireBlue QN9020 QN9021 QN902x Proximity Reportor profile(防丢器) 之源码分析 开篇
本帖最后由 dezhi 于 2015-3-30 16:34 编辑

    前些日子,小弟不才,搞了套bluetooth 4.0 的开发板,名曰 FireBlue ,上面使用的IC 为昆天科的QN9021,想起昆天科,其出品的FM QN80 系列的也算是在小弟生命中流行一时,当年为了调试好它,花上了不少时间。而现在想起来,只记得QN80系列,连具体的型号也早忘光光了,可遗憾了,如果但是能花点小时间整理整理,现在估计捉摸着还能给自己以及后来者留下点什么。
    所以了,现如今,有时间学习点啥子什么的,大家就应该记录下来,最近蓝牙4.0 也非常火,多一技防身也无谓,学习这个也算是紧跟时代步伐。   
    前些日子看了QN902x 的SDK 发现了不少东西 看似虽简单,但要全部精通的运用起来,还真不易, QN的bluetooth 4.0 在网上的开发资料基本木有,度娘一下也就估计能出来的也就是被NXP 收购这些内容,其他与这个IC 相关的资料,教程,甚至其他朋友的分享也是少之甚少。想找点啥相关性的,难。小弟我呢,实在不想后来者享受我这种学习中煎熬烦躁的心情,自觉地写下我的学习过程,分析流程,给以后的自己以及后来者留下痕迹。提前告诉读者,小弟觉得自己文字表达能力总是缺乏点啥,你们要是发现了,欢迎吐槽。
    之所以选定防丢器这个案子来分析,是 因为它是一个完整的项目(包括了上下位机),如果能完整地分析下来,应该也能对QN 提供的SDK能有一个较为完整的理解。以后应用起这个IC来也会顺了不少。
    不说了,再说另外的一汤勺眼泪又来了。
    开篇先介绍 怎么获取代码,包括项目结构之类的。
1 .获取代码可能通过FireBlue 官方提供的Git clone  一份下来,git 命令为:git clone https://TeeFirefly@bitbucket.org/T-Firefly/FireBLE.git   这里就顺便提供一个wiki 地址 http://wiki.t-firefly.com/index.php/FireBLE
2.小弟我对Git 这个工具较为不熟,虽然他也是非常火的一个工具,也是一个程序员必备的工具,由于时间关系,也还还没得及去研究。所以我是直接通过 bitbucket站点下载整个源码包  地址为:https://bitbucket.org/T-Firefly/fireble/downloads
3.源码包目录结构如下图:

4.小弟用的开发环境是MDK,所以打开..\FireBLE\Demo_BLE\prj_proxr\keil\proxr.uvproj 参试编译并无警告或者错误。整个项目结构如下:

5.startup.s  是启动代码,这个启动代码和以前接触的M0,M3,M4 的启动代码差异不大,如果要深究,还得看ARM 的技术架构等资料。
6.main 下的app_main.c  为常见项目下包含的main 函数,main 函数,会启动初始化话各模块,最后进入while 循环内调度。
7.usr 下包含的是用户一般改动的内容,
8.app 下 包含的是整个app 的逻辑,其中涉及gap,gatt,smp 以及profile ,而这里的proxr 就是防丢器的profile。
9.proflies 下包含的是profile 常用的一些函数集合,一个profile 的逻辑。
10.drivers 为QN902x 各模块的驱动。
11.lib 下的是QN实现bluetooth 协议栈,由于各厂商的竞争关系也是核心,这里是一个库,并不开源。
12.qnevb  下包含的是对FireBlue 这个板子的 BSP 板级支持代码
13.retarget 下的是对MDK 编译器库的重定向,这里主要重定向 的是printf 。以及scanf。

欢迎关注小弟博客http://blog.csdn.net/q562359345



作者: 裁缝.メ    时间: 2015-4-9 09:49
刚入手FireBLE,正云里雾里呢,看了这个对结构清晰了很多啊,继续加油!{:2_33:}
作者: lovefirstly    时间: 2015-5-20 17:16
支持楼主更新!




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