打印
[开发工具]

mbed离线开发平台SMeshStudio的安装使用

[复制链接]
1419|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
643757107|  楼主 | 2015-12-19 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 643757107 于 2015-12-19 15:26 编辑

mbed离线开发平台SMeshStudio的安装使用
      当前物联网开发领域流行着三大可商用的开源软件平台,它们分别是Arduino, mBed和Contiki,它们在各自的应用领域都有着自己的优势,简单来说,Arduino重在简单易用,可以方便地连接各类传感器;mBed重在支持广泛,应用开发通用性强;Contiki重在网络功能强大,应用开发互联方便。但对于开发者来说,这三者都没有提供让开发者满意的本地化IDE开发环境,如Arduino的开发环境过于简单,mBed只提供在线开发环境,Contiki干脆全部用命令行操作,这在一定程度上降低了开发者的开发效率,同时也减缓了这三者的推广进度。当然,从未来的发展来看,mBed将会实现6LowPan等各种通讯协议,同时也将具有Arduino的简单应用性,绝对是未来的主流。SMeshStudio就是在这样的背景下产生的,它基于Eclipse和Arduino Eclipse Plugin开发(感谢他们做出的伟大产品),支持Arduino, mBed和Contiki应用的开发、编译和上载(不支持调试),可以大大加快开发者使用上述开源系统进行应用开发的过程。
       具体来说,SMeshStudio具有以下特点:
l  免安装,免配置,解压后就能直接使用。SMeshStudio全部采用Java编写,并在内部集成了用户开发所需的编译器、上载工具和各类源代码库,所以只要用户计算机中已经有了java运行环境,下载后解压就能直接使用。考虑到64位的逐步普及,SMeshStudio有32位和64位两个版本可以选择。
l  多平台支持。SMeshStudio可以支持多个平台的开发,在软件上包括contiki,Arduio和mbed,在硬件上可以支持各类采用gcc编译的微处理器平台,主要是AVR和ARM,系统会根据用户的选择自动载入相应的代码和编译器。
l  向导式项目创建。SMeshStudio提供了项目创建向导,用户只要根据向导完成项目类型、项目名称、开发板类型、程序上载端口的选择,SMeshStudio就会自动创建好相应项目的模板。
l  集成Eclipse强大IDE功能。Eclipse提供了强大的IDE功能,其中最常用的有查看函数申明、格式化代码、自动方法提示等。
l  图形化上载。SMeshStudio集成了多种程序上载工具,用户只要在向导中完成了正确的配置,就能采用图形化界面完成程序上载工作,省去了命令行操作。
l  SMeshStudio解压下会生成两个目录,一个是eclipse,里面放的是增加了plugin后的eclipse系统;另外一个是smeshcore,里面放的是各类编译器和开源软件库。用户使用eclipse\smeshstuio.exe启动,首次使用有可能产生网络访问警告,用户可以根据自己的需要自行选择,下图是SMeshStudio第一次启动后的欢迎页面(mBed是SMeshStudio推荐的开发平台,所以直接链接到了mBed资料提供页面),用户关闭欢迎页面后就可以开始各类应用的开发过程:
SMeshStudio mBed快速入门
     mBed是基于Arduino理念面向ARM CORTEX-M0/3/4系列微处理器开发的快速原型开发平台,它具有极其广泛的硬件基础(它可以支持ST,NXP,NORDIC,FREESCALE等厂商的微处理器),同时,它还具备强大的硬件操控能力和网络连接能力,应该是未来最有前途的快速软件开发框架。但官方的mBed只支持在线开发,并不符合中国人的使用习惯,而且因为网速的原因还会经常导致在线开发系统崩溃,所以SMeshStudio借鉴了Arduino的开发思路,同样提供了完美的本地化开发平台,唯一的限制就是你的开发板必须支持GCC编译。其具体过程如下(其实大部分过程是一样的,但考虑到有些人只关心Arduino,mBed和Contiki中的一个,所以这里还是完整地重复了一遍):
1.  选择Eclipse项目类型:SMeshStudio建立在标准Eclipse开发环境基础之上,它可以开发多种类型的应用程序,所以用户必须选择合适的开发类型,在SMeshStudio中,mBed, Arduino和Contiki都属于同种类型。用户可以通过菜单File——>New——>Projects启动下面的项目类型选择界面并选择New mBed(Arduino,Contiki) sketch项目类型:

SMeshStudio项目类型选择

沙发
643757107|  楼主 | 2015-12-19 15:27 | 只看该作者
本帖最后由 643757107 于 2015-12-19 15:28 编辑

2. 设置项目名称:用户选择next继续后出现项目名称设置界面,用户在这里可以随意设置喜欢的项目名称并设置项目保存位置(建议使用缺省者),用户在这里设置项目名称为mBedTest:

SMeshStudio设置项目名称


使用特权

评论回复
板凳
643757107|  楼主 | 2015-12-19 15:28 | 只看该作者

3. 选择开发板类型:用户选择next继续后出现开发板选择界面。SMeshStudio支持多种软件开发平台,每个软件开发平台下又可以支持多个开发板,为了让用户的项目能匹配上用户的开发板,这一步的选择就显得非常重要。SMeshStudio开发板的软件匹配原则如下:SMeshStudio只根据开发板名称匹配用户项目,如果开发板名称中包含bed,SMeshStudio会把项目识别成mBed项目;如果包含contiki,SMeshStudio会把项目识别成contiki项目,否则SMeshStudio会把项目识别成Arduino项目。为了方便用户的选择,SMeshStudio已经把不同的开发板放到不同的开发板描述文件中,所有用户在这里首先要选择开发板文件,然后再选择具体的开发板,之后用户还需要设置开发板上载程序使用的串口,考虑到有些开发板可以采用文件复制方式上载,SMeshStudio也提供了磁盘选择选项,串口号和磁盘盘符必须设置一项后才能继续。用户在这里可以选择xbed lpc1768,它是一块和官方mbed lpc1768兼容的mBed开发板,但添加了以太网接口,TF卡接口,RF231无线射频接口以及用户按键,从而使用户可以更好地应用mBed软件平台,是SMeshStudio强烈推荐的mBed开发板:


SMeshStudio选择开发板类型

4. 结束向导:用户此时可以选择Finish结束向导,生成mBed项目,此时系统有可能提示说这是一个C/C++项目,建议选择使用C/C++视图,用户直接选择yes并建议选择Remember my decision.

         这样一来,用户就完成了mBed项目的创建过程,此时,SMeshStudio界面如下:


SMeshStudio初始mBed项目


使用特权

评论回复
地板
643757107|  楼主 | 2015-12-19 15:29 | 只看该作者

5. 编写代码:此刻,用户可以来简单地理解一下mBedTest项目,任何基于SMeshStudio的mBed项目的代码都由三部分组成,具体列表如下:

l  mBed核心库,即Project Explorer视图中的Contiki目录,该目录下有两个文件夹,一个是core,里面放的是mBed独立于硬件部分的实现;另外一个是variant,里面放的是mBed和硬件相关的实现,其中一个是cmsis,里面放的是和系统启动并和编译其相关的代码,另外一个是hal,里面放的是和具体的开发板相关的硬件抽象实现代码。

l  Libraries扩展库,即Project Explorer视图中的Libraries目录,里面存放着用户导入的和特定应用相关的扩展库(由于本项目没有导入扩展库,所以本项目中并不存在该目录,但在接下来的例子中你会看到)。

l  用户项目代码,向导默认会生成两个文件,一个是和项目同名的cpp文件,用于完成项目项目,另外一个则是和项目同名的.h文件,它的内容就是包含了mbed.h文件。

接下来用户把mBedTest.cpp的内容改动如下(原先向导生成的代码只是1秒钟变换一次灯,改动后增加了输出Hello World!功能):

#include"mBedTest.h"

staticint count=0;

DigitalOut led(LED1);

int main()

{

       while(1)

       {

              led=!led;

              printf("Hello World, count id =%d.\n!",count++);

              wait(1);

       }

}     

6.  编译项目:代码编写完毕后,用户可以使用Project——>Build Project编译代码,如果没有错误的话,用户就可以在控制台看到如下内容,它表示用户程序的内存使用情况,用户只要在Eclipse的Console中没有看到错误即可。

Building target: mBedTest

Printing size:

"E:/SMeshStudio/smeshcore/tools/gcc_arm/bin/arm-none-eabi-size" -A "E:/SMeshStudio/workspace/mBedTest/Release/mBedTest.elf"

E:/SMeshStudio/workspace/mBedTest/Release/mBedTest.elf  :

section            size        addr

.text             25848           0

.ARM.exidx            8       25848

.data               224   268435656

.bss                828   268435880

.heap              2048   268436712

.stack_dummy       3072   268436712

.ARM.attributes      41           0

.comment            112           0

.debug_frame       3824           0

.stabstr            118           0

Total             36123

7. 上载程序:用户编译成功后就可以使用mbed(Arduino_Contiki)——>upload sketch上载程序,如果没有问题的话,用户可以看到下面的输出结果,至此,基于SMeshStudio的简单mBed程序开发完毕(我在测试中发现,USB3.0会有问题,所以建议用户使用USB2.0端口):

Starting upload

using mbed loader

Launching E:\SMeshStudio\smeshcore\tools\utils\fm COM(3, 115200) HARDWARE(BOOTEXECRTS, 50, 100) DEVICE(LPC1768, 0.000000, 0) ERASE(DEVICE, PROTECTISP) HEXFILE(E:\SMeshStudio\workspace\mBedTest\Release\mBedTest.hex, NOCHECKSUMS, NOFILL, PROTECTISP) VERIFY(E:\SMeshStudio\workspace\mBedTest\Release\mBedTest.hex, NOCHECKSUMS)

Output:

Flash Magic Version 7.66.3343

8051/XA Driver Version 3.04.3296

ARM UART Driver Version 3.11.3302

ARM Cortex UART Driver Version 4.63.3312

ARM Ethernet Driver Version 2.05.3296

ARM Cortex Ethernet Driver Version 2.07.3296

ARM CAN Driver Version 2.11.3296

(C) Embedded Systems Academy 2000-2013 All rights reserved

NON PRODUCTION USE ONLY

Connected

Device selected

Erase complete (DEVICE)

Hex file programming complete (E:\SMeshStudio\workspace\mBedTest\Release\mBedTest.hex)

Verify passed (E:\SMeshStudio\workspace\mBedTest\Release\mBedTest.hex)

fm finished

upload done

此时你就可以通过类似于AccessPort之类的串口调试工具来查看mBed的输出了,mBed默认的波特率是9600。如果出现上载不成功的情况,用户首先需要检查一下船口号的设置是否正确,如果还不行,用户可以短接GND和ISP插针,应该就可以了,上载成功后断开ISP和GND,再按RST案件,程序就应该正常工作了。


使用特权

评论回复
5
643757107|  楼主 | 2015-12-19 15:30 | 只看该作者
SMeshStudio mBed扩展库应用

mBed官方和第三方提供了大量的扩展库,它们的使用可以大大简化用户应用的开发,这也是mBed的强大之处。SMeshStudio提供的mBed扩展库主要有两个部分,一个是mBed官方提供的,另外一个是第三方提供的,当用户使用mBed(Arduino_Contiki)——>Add a library to the selected project菜单后就可以得到下面的界面。mBed官方提供的官方库在Hardware provided Libraries分类下,而第三方提供的包括SMeshStudio自带的则在Personal Libraries目录下:


SMeshStudio导入Contiki扩展库

         需要注意的是,由于SMeshStudio支持多个软件平台,所以它在Personal Libraries中也存放着多个平台的扩展库,用户在开发基于mBed的应用时只能使用mBed开头的扩展库,接下来用户可以导入mbed-OneWire库,该库实现了单总线协议,从而让用户可以很方便地读去xbed lpc1768上的单总线设备ds2411,导入后,mBedTest项目的目录结构变化如下:


SMeshStudio导入扩展库目录变化

接下来,用户需要把mBedTest内容修改如下,它将在系统启动时打印ds2411的值:

#include"mBedTest.h"

#include"OneWire.h"

staticint count=0;

DigitalOut led(LED1);

OneWire ow(P1_29);

int main()

{

       char romcode[8];             // Array for ROM-Code

       ow.busInit();

       ow.getRomCode(romcode);      // Get ROM-Code

       printf("Ds2411 rom is %X.%X.%X.%X.%X.%X.%X.%X \n",romcode[0],romcode[1],romcode[2],romcode[3],romcode[4],romcode[5],romcode[6],romcode[7]);

       while(1)

       {

              led=!led;

              printf("Hello World, count id =%d.\n!",count++);

              wait(1);

       }

}

上载成功后,你就可以通过类似于AccessPort之类的串口调试工具来查看mBed的输出了(默认波特率是9600),你可以得到下面的输出:

Ds2411 rom is 1.CD.6E.C2.13.0.0.CB

Hello World, count id =0.

!Hello World, count id =1.

!Hello World, count id =2.

!Hello World, count id =3.


这样就完成了mBed扩展库的使用,如果你要想要让此节点完成更复杂的功能,你还必须学习更多的知识,用户可以从mbed.smeshlink.com寻找一些帮助。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

206

主题

3767

帖子

11

粉丝