Redbear DUO初体验

Redbear DUO 初体验

2013年在seeedstudio上买过一块 Spark Core 开发板,作为物联网元年的产品,开发板上TI那块号称Smart (Link) Config 的WIFI芯片CC3000当时可谓红极一时。当时花了19.9美刀等了足足3个月才拿到板子。也许是缘分使然,无意间在电子发烧友论坛看到Redbear DUO的试用活动,因为看着外形很像Spark core 所以在申请试用的时候顺便写了玩过spark core开发板之类的话,收到试用审核通过通知后查看Red bear Duo开发板资料才惊觉,原来Duo开发板是 Particle Photon开发板的衍生版,而Particle Photon正式Spark Core开发板的升级,歪打正着,这样一下子就解释了为什么我的第一次申请这么顺利了!

image
Spark Core 和 Redbear Duo合影。

使用前的准备

Duo开发板自带一块博通的WiFi & BLE 芯片,可谓自带“云梯”,设计者也是将这一优点发挥到了极致,让开发人员可以没有编译器,没有下载器,所有的一切都交给Particle Cloud,写完的代码直接通过Particle Dev 等工具一键上云,编译-下载都在云上完成。但是,萝卜白菜各有所爱。自认为作为一个“资深”嵌入式开发人员本人并不喜欢这种方式,首先,对网络太过依赖;其次,少了编译-下载这个过程让我着实不习惯(算不算职业病啊?)。所以,我打算使用USB线进行下载。

1. 安装 Duo Application USB Driver

将Duo通过USB线与电脑连接,系统会提示安装USB驱动失败,如下图。
image

右击,感叹号的驱动,选择更新驱动,在官方提供的固件包中选择驱动并安装,如下图。

image

正确安装驱动后可以通过串口调试软件如:PuTTY等打开对应虚拟串口输入iv查看Duo的设备信息。感觉这个驱动是使用Arduino IDE进行编程时要用到的,同时Redbear官方的一个叫做 DuoSetupCLI 的命令行工具也要用到。下面是驱动正常安装后查询设备信息的截图:

image

2. 安装 dfu-util 驱动

升级固件和下载用户程序需要用到 dfu-util 工具,所以也需要安装dfu-util模式下的 usb驱动程序。首先,让Redbear Duo进入 dfu 下载模式(按住 setupreset 这两个按键,再松开 reset 按键并保持 setup 按键一直按住,观察RGB led灯变化,当出现 黄色 灯闪烁时放开 setup 按键,此时已经进入 dfu 模式了) 。进入 dfu 模式,电脑系统会提示安装USB驱动失败。这个暂时不用管,因为按照官方说明文档需要下载Zadig软件工具。下载完运行 Zadig 这个软件,并按照提示安装 “libusbK” 这个驱动,如下图所示:

image

固件升级及 DFU-Util 工具使用

要升级固件程序或者利用USB线进行用户程序下载需要在电脑上安装配置 dfu-util 工具,可以从dfu-util 官网 下载 Windows 系统版的安装软件,下载安装后需要配置dfu-util 的路径至系统环境变量,具体为:右击“ 我的电脑 ” –> “ 属性 ” –> “ 高级系统设置 ” –> “ 高级 ” –> “ 环境变量 ” , 在 path 键值对中填入安装的 dfu-util 目录路径,保存退出。如下图所示:

image

由于上一步我们已经将驱动安装完成现在可以在系统命令行工具下调用” dfu-util -l “打印设备的信息并验证工具是否配置好,正确的显示信息如下所示:

image

信息中的 2b04:d058 就是设备的 USB ID ,通过以上信息可以看出 Duo的存储被分为三块,具体可以查看Redbear 官网文档 FirmwareArchitectureOverview,里面有详细讲到Redbear Duo中内外存储的具体分配,其中如下图表,非常清晰的比对了各种模式下的存储分布:

image

在官方文档FirmwareDeploymentGuide中有详细的 dfu-util 使用介绍,这里总结如下:

  • -d : 指定DFU设备的USB ID。Duo 的 USB ID 是”2b04:d058”
  • -a : 指定要操作的存储器. Duo 有三种存储器类型。
    • 0 : 操作除bootloadr以外的内部存储空间
    • 1 : 操作应用程序 DCT 存储空间
    • 2 : 操作外部SPI flash存储空间
  • -s : 指定要操作的存储器的相对地址
  • -D : 指定要下载的 .bin 路径
  • -U : 指定要上传(保存)的 .bin 文件路径
  • :leave : 和上面的选项一起使用,用于使设备退出 DFU 模式, e.g. -s 0x80C0000:leave.

这里我们用的最多的就是更新固件和烧写下载用户程序了,具体命令如下所示:

  • 更新整个 DCT:
    dfu-util -d 2b04:d058 -a 0 -s 0x8004000 -D fac-dct-r1.bin

  • 更新 system part 1:
    dfu-util -d 2b04:d058 -a 0 -s 0x8020000 -D duo-system-part1-v2.4.0.bin

  • 更新 system part 2:
    dfu-util -d 2b04:d058 -a 0 -s 0x8040000 -D duo-system-part2-v2.4.0.bin

  • 下载用户程序:
    dfu-util -d 2b04:d058 -a 0 -s 0x80C0000 -D duo-user-part.bin

以上烧写程序时需要特别注意相对地址(即: -s 后面的值),若填写出错会使设备不能正常启动。以下是烧写系统固件时的截图:

image

玩转Arduino IDE

记得上一次用Arduino IDE已经是1年以前了,那会自己用Eagle CAD 设计了一块基于Atmega 644P 的 Arduino开发板,好像硬件和固件还是借鉴Microduino的。一直以为Arduino IDE 是开发 8 位 AVR的专属软件想不到Duo也能用。特别是新版的Arduino IDE 安装板子固件库的过程让我眼前一亮,记得以前安装需要下载板子的固件库并手动安装,现在只需要联网并点击下载安装就能一步到位(有点像Eclipse IDE),真的很方便。按照 Redbear 官方的文档说明,下载 Arduino 安装文件,安装后打开 Arduino IDE,分别选择 “文件” -> “首选项” 在弹出的菜单中填入redbear提供的开发板固件包地址:” https://redbearlab.github.io/arduino/package_redbear_index.json “, 保存后,再分别选择 “ 工具 ” -> “ 开发板管理器 ”,在弹出的菜单中找到 Redbear Duo ,并点击安装,如下图所示:

image

好了,有了IDE终于可以“动真格”了,首先来个点灯程序,在Arduino IDE 中分别选择“工具” -> “Readbear Duo (Native USB Port)”,然后在“文件” -> “示例” 中找到Duo 的 Blink 点灯程序,代码如下:

#if defined(ARDUINO) 
SYSTEM_MODE(SEMI_AUTOMATIC); 
#endif

int led1 = D0;
int led2 = D7;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);

  delay(1000);

  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);

  delay(1000);
}

有了Arduino IDE 的支持,编译,烧写,一气呵成!想掉链子都难啊!

写到这,不得不佩服 Redbear 团队的用心。首先,文档写得很是详细。虽然 Redbear Duo 作为 Particle Photon的衍生版但是看完 Particle 官方的 Photon 文档发现并没有Duo的文档详细,一些在Photon中没讲明白的地方在Duo中都能很好的补充。其次,Redbear 的官方论坛很活跃,各种问题无论大小都能在1天内得到回答,我在开始使用过程中遇到过烧完程序Duo进入SOS模式的情况,抱着试试的态度用蹩脚的英文在上面试着提了一问,结果马上就得到答复并很快得到解决。作为Redbear Duo 的初次体验,只能写到此了。

参考资料

猜你喜欢

转载自blog.csdn.net/ymsunshine/article/details/53967916