使用基于NuttX的Spresense SDK,对索尼Spresense开发板进行评测

原文链接:Sony Spresense Board Review with NuttX based Spresense SDK 由Jean-Luc Aufranc撰写。
本文共计3606字,预计阅读9分钟

支持音频和全球导航卫星系统的索尼 Spresense Arduino 兼容板及其扩展板于2019年夏天在日本推出。该公司现在已经扩大了市场,并且还在美国和欧洲提供开发板。

他们还委托了一家机构将样品发送给不同的评测人,我也有幸被选中。在这篇评测中,我将从检查硬件开始,简要讨论软件开发选项,并介绍我使用 Spresense SDK 时的体验。

索尼 Spresense 拆箱

我收到了两个盒子。

索尼 Spresense 包装盒
索尼 Spresense 包装盒

一个是主板,另一个是扩展板。

索尼 Spresense 包装盒侧面
索尼 Spresense 包装盒侧面

主板盒子仅随附 CXD5602PWBMAIN1 板和信息表。板子顶部包括一个复位按钮、四个用户 LED、一个电源 LED、一个启动恢复按钮、摄像头接口、索尼 CXD5247电源管理以及音频模拟接口芯,可以看一下图中的黑色部分,但实际并没有那么黑,是反射导致, CXD5602PWBMAIN1 板支持 GNSS 的 Sony CXD5602 六核 Arm Cortex-M4F 微控制器 – 在封装上显示为 D5602GG,两排 2.54mm 间距 I/O 接头,以及位于电路板最右侧边缘的 GNSS 天线。

索尼 Spresense开发板
索尼 Spresense开发板

板子底部有8MB容量的MXIC MX25U6435F SPI NOR flash,一个100针连接主板和扩展板的连接器,CP2102N USB转TTL芯片,以及一个用于供电和编程的微型USB端口。

重要信息表主要包含法律术语、规范以及Spresense 支持网站的链接和二维码。

索尼 Spresense开发板信息表
索尼 Spresense开发板信息表

扩展板带有类似的信息表,以及用于将主板固定到位的四个塑料柱。

索尼 Spresense扩展板和信息表
索尼 Spresense扩展板和信息表

扩展板的最上面带有与 Arduino 兼容的接头、一个连接到主板的 100 针插座、一些跳线、一个 3.5 mm音频插孔和一个微型 SD 卡插槽。

索尼 Spresense扩展板正面
索尼 Spresense扩展板正面

以上介绍的是扩展板的正面。扩展板的另一面主要是另外两个芯片: 电平转换器72040和德州仪器的八通道双向多电压电平转换器LSF0108 ,以及微型的“扩展” USB 端口。

索尼 Spresense扩展板背面
索尼 Spresense扩展板背面

两块板的组装很简单。只需将四个黑色塑料柱插入扩展板的安装孔中,将主板放在上面,然后将其向下推就组装完成了。

索尼 Spresense开发板和扩展板组合
索尼 Spresense开发板和扩展板组合

两种软件开发环境

Spresense 软件文档中所述,有两种使用 Spresense 板的方法:

  • Spresense Arduino 库– 与许多开发人员熟悉的 Arduino IDE 配合使用。
  • Spresense SDK– 索尼 CXD5602 芯片组的原始开发环境,基于NuttX实时操作系统,并利用 GNU Make 工具链。底层的 API 使开发人员能够优化内存使用、降低能耗、多核处理控制等,而这些在 Arduino 库中可能无法实现。

我已经发布了许多针对其他硬件平台的 Arduino IDE 评测,并且其他人已经发布了使用 Spresense 和 Arduino IDE 的项目,所以我认为对于我和我的读者来说,研究一下Spresense SDK会更有趣。

Spresense SDK 结构
Spresense SDK 结构

Spresense SDK 入门

索尼已提供 SDK 入门指南。因此,让我们尝试在运行 Ubuntu 18.04 的笔记本电脑上开始吧。

安装 Spresense SDK

  • 首先,我们需要在终端窗口中安装一些依赖项:

  • 下一步 ,从nuttx-tools安装 kconfig-frontends 包:

  • 并查看 SDK 源代码:

USB连接

将当前用户添加到拨出组,然后注销以确保你可以访问串口:


现在是时候通过 USB 将主板连接到你的计算机了。这是内核日志的输出:


该板被正确检测为具有 10c4 VID 和 ea60 PID 的 CP210x 转换器。

Spresense SDK 设置

  • 首先设置初始 NuttX 内核配置:

  • 然后设置初始SDK配置:


输出:


我们被要求…

  • 安装一个新的bootloader

下载 URL 要求你接受 EULA,即用户许可协议,否则无法从命令行的命令下载。下载后,我可以使用以下命令轻松将其烧录到开发板上:


最后命令输出:

  • 构建示例固件:


你可以在当前目录中得到 nuttx.spk 固件:

刷入并运行固件 

此时,我们被要求刷写bootloader,但我们已经在上面完成了,所以我们可以直接刷写 nuttx.spk固件:


命令的输出:


要运行 hello world 程序,我们需要使用 minicom 或其他工具连接带有 115200 8N1 参数的串口:


串口设置中禁用硬件流控制,然后按 Esc 并选择Exit 退出。我们现在应该可以访问 NuttX 的 NuttShell (NSH) shell了。

通过串口访问 NuttX 的 NuttShell
通过串口访问 NuttX 的 NuttShell

接下来输入 hello 运行演示程序:


成功。hello world 程序的源代码可以在 examples/hello/hello_main.c 中找到,并且大部分是典型的 C hello world 程序:


作为参考,NuttX shell 有一些与 busybox 类似的命令:

Spresense 示例程序

Hello word 很好入门,但 Spresense SDK 中还有其他更有趣的示例:


每个示例在Spresense NuttX 开发人员指南中都有描述。不知道为什么,没有blinky 的示例。

一些示例需要额外的硬件,例如摄像头附加板、蓝牙 LE附加板 、传感器附加板等。你可以在开发者网站的主页向下滚动并找到一个列表。

由于音频和 GNSS 是该板的一些主要功能,我将尝试分别用 C++ 和 C 编程语言编写的 audio_player 和 gnss 示例。

Spresense 音频播放器

构建和烧录过程与 hello world 程序相同,在 sdk 目录中执行以下命令:


程序已加载到开发板,但我们需要把一些额外的文件存储在 micro SD 卡中,其中包含音乐、播放列表和“worker”二进制文件,如 audio_player 示例目录中的 README.txt 文件所述:

之后,您可以在目录 sdk/modules/audio/dsp 中看到 worker 二进制文件“MP3DEC”、“WAVDEC”。

将 worker 二进制文件、播放列表和播放内容存储在选项指定的路径中。

– 默认路径

worker二进制:/mnt/sd0/BIN

播放列表:/mnt/sd0/PLAYLIST

内容:/mnt/sd0/AUDIO

作为播放列表的示例,PLAYLIST 文件夹中有 TRACK_DB.CSV。此外,作为内容示例,AUDIO 文件夹中有 Sound.mp3。Sound.mp3是一个采样频率48000,位长16,编解码的MP3文件。

一开始我对指令的措辞感到困惑,但幸好最终理解了指令,并将文件复制到了 FAT32 格式的 4GB micro SD 卡中:


现在将 microSD 卡插入 Spresense 板,并连接一些扬声器,然后在 NuttShell 中启动应用程序。

Spresense 音频播放器示例
Spresense 音频播放器示例


一切似乎都在按预期工作,除了我听不到任何音频……我检查了音频插孔连接,以防接触不良,我还检查了扬声器的功率和音量水平,但仍然没有声音。然后我想可能是Spresense主板和扩展板接触不良,所以我按下了板子的顶部……成功了!!!我终于可以从 Sound.mp3 文件中听到哔哔声了。有趣的是,micro SD 卡确实有效,但音频却无效。

全球导航卫星系统示例

让我们继续看 GNSS 的示例:


顺便说一句,请记住在运行 flash.sh 之前始终需要退出 minicom,否则最终会出现以下错误:


另一个说明是,你可以使用将 menuconfig 带入设置选项的选项来运行 config.py:


menuconfig 配置开发板
menuconfig 配置开发板

回到 GPS 测试。我试着把板子放在靠近窗户的地方,但建筑设计不太适合得到正确的 GPS 信号,1 小时 30 分后,我才得到UTC 时间。所以我搬到了户外,重新启动了电路板,一切都运行良好。仅 24 秒后我就得到了 UTC 时间:


1分 40 秒后就得到了定位数据:


不,我才不是住在科菲维尔 :),然而定位数据暴露了我的位置。

示例代码太长,无法在本评测中详细介绍,但你可以在示例目录中找到源代码,而且Spresense SDK 文档看起来结构清晰,非常详细和全面。

结束语

最近,我在硬件评测方面遇到了麻烦,有时总是会出错,但我必须承认 Spresense 板的一切测试都进行得相当顺利,示例正常工作,开发人员文档看起来很棒。

对于大多数项目,你可能需要附加板,因为在没有任何类型的无线或有线连接的情况下,必然没有太多需要 GNSS 和音频的应用程序。

索尼 Spresense 主板在 Framos US 上的售价为 65 美元,你还可以在那里找到售价 45 美元的扩展板。如果你在欧洲,也可以从RS ComponentsVido购买。Spresense相机的售价为29欧元,但这个价格不含增值税。传感器和蓝牙附加板由 ROHM 制造,可单独购买。希望他们能找到一种更简单的订购方法,也许在不久的将来会提供完整的开发套件。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论