`
本帖最后由 gjianw217 于 2015-11-30 16:36 编辑
前一篇
搭建了Tisan的开发环境,并编译、烧写了
tisan的固件,这一节简单分析一下Tisan的软件框架。
一、整体框架
1 打开
Tisan默认Demo示例代码,工程文件显示如下图所示的目录结构
2 目录分析
主要包括app/bin/include/ld/lib/tools等6个文件夹,其中(1)bin/include/ld/lib/tools是编译环境需要的,可以不理睬,app是用户需要修改,可以重点研究。
(1)bin,主要为编译时,需要的二进制文件
(2)include,编译时,需要的头文件
(3)ld,编译时需要的链接文件
(4)lib,编译时需要的库文件
(5)tools,编译时需要的工具文件
(6)app,又分为4个文件夹,
pando文件夹包含了网络相关的文件,即所谓的Pando物联网开发框架,主要使用了lwip开源TCP/IP协议栈和mqtt通信协议等;
peripheral文件夹包含了相关的驱动文件,由于Tisan采用了分层的思想,在该目录下,又分为Tisan板载外设的驱动和针对ESP8266的驱动;
user文件夹包含了用户的入口文件user_main.c和网络配置文件wifi_config.c等,以及针对特定应用的objects文件。
util是在编程过程中,用到的一些“便利”工具函数文件
二、app用户框架
1 外设跟踪分析
(1)由上分析可知,把重点开云手机版登录入口到app目录下,首先从入口函数进行跟踪,打开user目录下的user_main.c文件,在该文件里,有一个user_init()函数,在该函数中,首先进行了串口的初始化,然后设置了按键的回调函数,用来配置网络,接着就是三色灯的初始化函数led_object_init(),鼠标放到该函数上,点击F3键,进入它的定义位置。
(2 )led_object_init函数中,首先进行了led_init初始化,鼠标放到该函数上,点击F3键,进入到它的定义位置,即led_object_init和led_init都位于user/objects目录下的led.c源文件中,完成对三色灯的定义,而在led_init函数的最下面,出现了peri_rgb_light_init,鼠标放到该函数上,点击F3键,进入到它的定义位置
(3 )peri_rgb_light_init函数,定义在periphral目录下的peri_rgb_light.c文件,且该函数调用了pwm_init,鼠标放到该函数上,点击F3键,进入到它的定义位置
(4)pwm_initt函数,定义在periphral/driver目录下的pwm.c文件,即针对ESP8266,实现其pwm的控制
以上跟踪分析过程,如下图所示
2 网络跟踪
(1)回到user_init()函数,鼠标停在pando_framework_init下,点击F3键,进入到它的定义位置
(2)pando_framework_init函数,位于pando目录下的在pando_framework.c文件,在该函数中,分别调用了pando_gateway_init()和on_subdevice_channel_recv),完成网关的初始化和接收网络数据的初始化
(3)可以分别跟踪进行,查看相关函数的具体实现
以上跟踪分析过程,如下图所示
三、框架总结
由以上的分析过程,可以大体看出Tisan的Pando物联网开发框架结构,如下图所示,即分为用户层、驱动层、网络层,各层相互独立,便于移植,具有松耦合等特点。
官方给出的Tisan物联网框架的实现结构如下图所示,最上面是用户层,即通过user_main进行软件的入口设计,然后分别为硬件驱动层和Pando框架,且他们间是相互独立的,中间通过object层,将他们相互关联起来,以降低它们间的耦合度,这也是Tisan物联网设计的一大特点。最下面是编译层及硬件层。
同时官方也录制了相关的视频教程
1
百度云盘视频文件
2 优酷视频文件目录
http://i.youku.com/u/UMTIwNTA2MTM2MA==?from=y1.2-1-87.3.2-3
3 本节相关视频
http://v.youku.com/v_show/id_XMTM2MTE5MTQzMg==.html?from=y1.7-1.2
关注微信公众号【口袋物联】,微信号为koudaiwulian,分享更多物联网知识。
`
1