Developer World Spresense
English 日本語
目录

1. 引言

本页说明了Microsoft提供的在 Visual Studio Code (以下称 VS Code )上开发 Spresense SDK 应用程序的安装和设置过程。它还说明了如何创建一个简单的示例应用程序 Hello,SPRESENSE! 和一个多核程序。 您可以使用 VS Code 了解 Spresense SDK 的基本用法。

1.1. 用户名和文件夹名的限制

取决于用户名或文件夹名,下表中描述的功能受到限制。

文件夹和用户名中包含的字符

安装工具

配置

编译

串行监视器

ICE调试

仅适用于字母数字字符(例:SonyTaro)

包含空格(例:Sony Taro)

×

×

×

×

包含中文(例:索尼太郎)

△ ※1

△ ※1

△ ※2

※1

Ubuntu/macOS: 支持。

Windows: 支持。但是,需要在 VS Code 版本v1.0.2及 {SDK_FUL} 版本v1.4.2之后使用。 Spresense SDK v1.4.2以后 install-tools.sh 使用,请进行 安装工具 。(在Windows中 Spresense SDK v1.4.1之前工具链的导入安装位置变更。)

※2

Ubuntu/macOS: 支持。

Windows: 不支持。

2. 设置开发工具

Spresense SDK 可以在Linux/Windows/macOS上开发。请根据用户使用的环境设置以下内容。

支持的操作系统

  • Linux

    • Ubuntu 16.04或更高版本(64位)

  • Windows

    • 8.1/10

  • macOS

    • High Sierra(10.13)或更高版本

2.1. Linux设置

  1. 串行通信设置

    通过运行以下命令,将要使用的用户添加到 dialout 组。

    sudo usermod -a -G dialout <user-name>
    

    请在执行命令后重新启动。重启后设置才会生效。

  2. 建立编译环境所需的工具。启动终端并执行以下命令:

    wget https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh
    bash install-tools.sh
    

    执行以下命令以启用已安装的工具。

    source ~/spresenseenv/setup
    

    每次打开终端时都必须运行此命令。如果要省略此命令,请将以上命令添加到主目录下的 .bashrc

    工具链安装在主目录下的 spresenseenv/usr/bin 中。
  3. Spresense SDK 从存储库下载源代码。

    git clone --recursive https://github.com/sonydevworld/spresense.git
    

2.2. Windows安装程序

  1. 从以下站点下载MSYS2安装程序并进行安装。

  2. 安装编译所需的工具。在开始菜单中启动 MSYS2 MSYS 并执行以下命令。

    如果使用另一个终端安装,比如安装 MSYS2 MinGW 64-bit ,则会发生错误,无法正确安装。
    curl -L https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh > install-tools.sh
    bash install-tools.sh
    

    执行以下命令以启用已安装的工具。

    source ~/spresenseenv/setup
    

    每次打开终端时都必须运行此命令。如果要省略此命令,请将以上命令添加到主目录下的 .bashrc

    工具链安装在 /opt/spresenseenv/usr/bin 中。
  3. Spresense SDK 从存储库下载源代码。

    git clone --recursive https://github.com/sonydevworld/spresense.git
    
  4. 串口驱动安装

    在将 Spresense 板连接到PC之前,安装串行驱动程序。

    要将 Spresense 板与USB串口连接,必须安装驱动程序。从下面的链接下载驱动程序并安装它。

2.3. macOS设置

  1. 安装Apple提供的开发工具。启动终端并执行以下命令:

    xcode-select --install
    
  2. 从以下站点下载Python3安装程序并进行安装。

  3. 安装构建所需的工具。启动终端并执行以下命令:

    curl -L https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh > install-tools.sh
    bash install-tools.sh
    

    执行以下命令以启用已安装的工具。

    source ~/spresenseenv/setup
    

    每次打开终端时都必须运行此命令。如果要省略此命令,请将以上命令添加到主目录下的 .bash_profile

    工具链安装在主目录下的 spresenseenv/usr/bin 中。
  4. 在终端中执行以下命令,从 Spresense SDK 存储库下载源代码。

    git clone --recursive https://github.com/sonydevworld/spresense.git
    
  5. 串口驱动安装

    在将Spresense板连接到PC之前安装串行驱动程序。

    要将Spresense板与USB串口连接,必须安装驱动程序。从下面的链接下载驱动程序并安装它。

    如果在具有High Sierra(10.13)或更高版本的macOS上安装此驱动程序,则在安装期间将收到安全警告。 打开“系统首选项→安全性”菜单,阻止“常规”加载“Developer”Silicon Laboratories Inc“的系统软件。请单击右侧显示的“允许”按钮。如果未执行此操作,则无法串行连接。

2.4. 如何检查USB串口

Spresense 通过USB连接主板和PC。

spresense musb connect
图表 1. USB连接到主板

2.4.1. 如何在Linux上检查串行端口

  1. 打开一个终端。

  2. 输入以下命令。

    dmesg | grep "cp21.*attached"
    [12220.625979] usb 1-1: cp210x converter now attached to ttyUSB0
    
  3. 在上面的示例中,端口名称为 /dev/ttyUSB0

2.4.2. 如何在Windows上检查串行端口

  1. 打开 设备管理器

  2. 检查COM端口号 Silicon Labs CP210x USB to UART Bridge

    tutorial arduino windows device manager find port
    图表 2. 在设备管理器中检查COM端口
  3. 在上面的示例中,端口名称为 COM9

2.4.3. 如何在macOS上检查串行端口

  1. 打开一个终端。

  2. 输入以下命令。

    ls /dev/{tty,cu}.*
    /dev/cu.SLAB_USBtoUART  /dev/tty.SLAB_USBtoUART
    
  3. 在上面的示例中,端口名称为 /dev/cu.SLAB_USBtoUART

3. 准备调试器(使用 ICE)

3.2. 安装连接器 SWD

有关如何装载SWD连接器的详细信息,请参考 硬件文档

3.3. 设置 OpenOCD (Ubuntu 版本)

对于Ubuntu,必须使用以下命令授予连接到ICE的权限。 在连接 ICE 之前,请执行此操作。

sudo cp ~/spresenseenv/usr/contrib/60-openocd.rules /etc/udev/rules.d/
sudo udevadm control --reload

4. 安装 IDE

现在,按照以下步骤安装 Spresense SDK 的应用程序开发环境。VS Code 提供了一系列开发环境,从创建项目到调试项目。

在下载所需的工具和 Spresense SDK 之前,请参考 设置开发工具

4.1. 安装 VSCode

  1. 从以下网站下载VSCode安装程序。

  2. 运行下载的安装程序

    • 在Windows上

      1. 启动安装程序(VSCodeUserSetup.exe)。

      2. 按照对话框继续安装。

    • 在macOS上

      1. 解压缩安装文件(VSCode-darwin-stable.zip)。

      2. 将解压缩的Visual Studio代码移动到应用程序。

    • 在Ubuntu上

      1. 从以下命令下载的文件(code_1.37.1-xxx.deb)安装。

        $ sudo dpkg -i code_1.37.1-xxx.deb
  3. 启动已安装的 VS Code

    VS Code启动画面

4.2. Spresense 安装扩展

如果安装 Spresense Extension α版本 ,请卸载。否则,Spresense扩展将无法正常工作。
  1. 在扩展屏幕上搜索 Spresense

  2. 单击 Spresense VSCode IDE 列表,然后单击它。

  3. 单击 Install ,因为详细信息显示在窗口的右侧。

    Spresense VSCode IDE安装屏幕
  4. 如果收到 Installation is complete 消息,如下面的屏幕所示,则安装已完成。

    Spresense VSCode IDE安装已完成
    Spresense VSCode IDE 使用 C/C_plus_plus_Visual Studio CodeCortex Debug ,并自动安装这些扩展。

4.2.1. Msys2 设置安装路径(Windows 版)

这里,将设置 设置开发工具 中安装的 MSYS2 以在 VS Code 中使用。

  1. 键入 F1 以显示命令调色板。

  2. 输入 spresense msys 以缩小命令范围,然后选择 MSYS2 path(Windows only): Location for Msys install path

    MSYS2 路径设置命令
  3. 由于文件夹选择屏幕出现,请选择MSYS2路径,然后单击 Select Folder

    选择 MSYS2 路径设置
  4. 现在,可以在 VS Code 上开发Spresense应用程序。

5. 创建应用程序项目

前面各节中用于开发应用程序的环境已准备就绪。在这里,我们将说明在 VS Code 上实际创建的过程。

5.1. 关于工作区

VS Code工作区有一项功能,可让您通过组合任意文件夹来管理和共享一个窗口上的常用设置。

另外,工作空间中的文件夹具有层次关系,您可以通过按添加的顺序或在窗口中移动文件夹来更改层次关系。

Spresense VSCode IDE 使用此功能,并通过结合 Spresense SDK 和应用程序项目来提供用于开发应用程序的环境。

Spresense VSCode IDE 中的工作区如下图所示

  1. Spresense SDK 文件夹

  2. 项目A文件夹

  3. 项目B文件夹

  4. 项目C文件夹

它按如下顺序组成。

此外,项目文件夹包含要开发的应用程序的程序,例如:

  • 应用程序命令

    NuttShell控制台上可用的命令。可以通过创建此程序来添加原始命令。

  • ASMP工人计划

    使用 Spresense 的多核功能的程序。可以通过创建此程序,并使用上述应用程序命令,添加多核应用程序。

Spresense工作区概述

5.2. 创建工作区

可以按照以下步骤创建上一节中介绍的工作区。

  1. 单击 Open folder

    打开文件夹
    可以从 FileOpen Folder…​ 打开文件夹。
  2. 指定下载的 Spresense SDK 文件夹的位置,然后单击 Select Folder

    Spresense SDK打开文件夹
  3. File 中选择 Add Folder to Workspace…​

    将文件夹添加到工作区
  4. 导航到要创建项目文件夹的位置,单击 New folder 以创建项目文件夹。

  5. 选择创建的文件夹,然后单击 Add

    将文件夹添加到工作区
  6. 选择一个文件夹将设置 Spresense VSCode IDE 。

  7. 如果显示 Spresense setup: Setup complete ,则设置已完成。

    设置完成
  8. 可以通过从 File 中选择 Save Workspace As…​ 来保存创建的工作区。

    保存工作区
  9. . 从 Terminal 中选择 New Terminal

    打开新终端
  10. 系统将提示输入 Select current working directory for new terminal ,因此请选择其中一个。(两者都具有相同的结果。)

    选择工作目录
  11. Do you allow this workspace to modify your terminal shell , 单击 Allow ,因为出现一个对话框。

    允许外壳更改
    如果未在此对话框中选择 Allow ,则 Spresense VSCode IDE 功能(如生成或显示串行终端)将无法正常工作。

现在,已经创建了工作区。

5.3. 添加应用程序命令

本节介绍如何将应用程序命令的程序添加到创建的项目文件夹中。

应用程序命令是在Spresense上运行的NuttShell命令。如果应用程序命令名称为 gps_watch ,则命令如下所示:

NuttShell (NSH) NuttX-7.22
nsh> gps_watch
<<_操作输出>>

现在,将解释如何添加。

  1. 右键单击项目文件夹。

    项目文件夹菜单
  2. 从菜单中选择 Spresense: Create application command

    选择 `创建应用程序命令`
  3. 将显示一个对话框,您可以在其中输入应用程序命令名称,输入要添加的命令的名称,然后键入 ENTER 键。

    输入应用程序命令的名称
  4. 如果添加程序文件并显示下图,则添加过程结束。(命令名称为 gps_watch 的示例。)

    应用程序命令添加完成

5.3.1. 关于要添加的文件

文件(文件夹)

内容

gps_watch

包含命令程序的文件夹

gps_watch_main.c

命令程序主要源文件

Make.defs

用于编译命令的Makefile

Makefile

用于编译命令的Makefile

Application.mk

使项目文件夹中的命令可用于Spresense的文件

LibTarget.mk

文件存档程序

Make.defs

用于构建整个项目的Makefile

Makefile

用于构建整个项目的Makefile

5.4. 添加 ASMP worker 程序

本节介绍如何将ASMP worker程序添加到创建的项目文件夹。 ASMP worker角色是多核程序中的子核心端程序。

  1. 右键单击项目文件夹

  2. 从菜单中选择 Spresense: Create ASMP worker program

    选择 `Spresense: Create ASMP worker program`
  3. 出现输入ASMP worker程序名称的对话框,输入要创建的ASMP工作程序的名称,然后键入 ENTER

    输入ASMP工作人员名称
  4. 将出现一个对话框,显示 Do you want to create a sample application to use new worker , 单击 进行创建。

    创建示例应用程序
  5. 如果如下所示添加了程序文件,则该过程完成。(这是一个示例,其中工作人员名称为 hello 并且示例应用程序创建设置为 Yes 。)

    ASMP工人程序添加完成

5.4.1. 关于要添加的文件

文件(文件夹)

内容

hello_worker

worker 程序文件夹

hello_worker.c

worker 源文件

Makefile

编译worker脚本

include

与主核心应用程序共享的头文件文件夹

hello

包含工作人员示例应用程序的文件夹

6. 配置编译

在上一节中,我们向项目文件夹添加了应用程序和ASMP辅助角色。 要正确编译这些程序,需要根据功能配置生成。

本节介绍编译所需的配置和过程。

首先,编译配置分为两个部分。

  • 内核配置

    这是 Nuttx 实时操作系统的配置,能够在 Spresense SDK 中使用。为运行 Spresense 程序来配置系统级别设置。

    对于正常使用,请使用默认设置保存。

  • 配置SDK

    Spresense SDK 特定功能的配置。此处配置了在Spresense上运行的音频,摄像头,GPS和其他功能。此外,还可以配置Examples应用程序和系统工具。

除非完成此配置,否则通过Microsoft的C/C++扩展名进行的关键字补全和解析将无法正常工作。请务必在创建程序之前完成配置。

此外,配置保存菜单的功能如下:

菜单

功能

新建

可以选择 Spresense SDK 提供的预设配置。

保存

保存含有设置内容的编译配置。

加载

打开已保存的备份配置文件。

另存为

将设置保存到任何位置。由于它是与用于编译的配置文件分开保存的,因此它不会反映在编译中。

6.1. 内核配置

  1. 键入 F1 键以显示命令面板。

    显示命令面板
  2. 输入 spresense kernel config 和筛选器词以缩小命令范围。

  3. 选择 Spresense: Kernel config

    选择 `Spresense: Kernel config`
  4. 选择要配置的项目。

    选择目标文件夹
    如果其它内核配置或SDK配置已打开,请事先关闭。一次只能打开一个配置屏幕。
  5. 我们正在准备可用的配置,并等待其显示。

    准备内核配置
    完成内核配置
  6. 进行所需的设置,然后单击 Save

  7. Configuration has been saved. 则说明内核配置已完成。

    保存时间取决于环境。请等待完成消息。
    保存内核配置
  8. 关闭配置。

6.2. 配置 SDK

  1. 键入 F1 键以显示命令面板

    显示命令面板
  2. 输入 spresense sdk config 和筛选器词以缩小命令范围。

  3. 选择 Spresense: SDK config

    选择 `Spresense: SDK config`
  4. 选择要配置的项目。

    选择目标文件夹
    如果其它内核配置或SDK配置已打开,请提前关闭。一次只能打开一个配置屏幕。
  5. 等待直到它出现,因为正在准备可用的配置。

    准备SDK配置
    完成SDK配置
  6. 单击 New 以打开 New Configuration

    创建新SDK配置
    新建配置
  7. 选择所需的设备、功能预设,然后单击 OK

    更新配置
  8. 进行其它必要设置,然后单击 Save

  9. SDK配置已完成显示 Configuration has been saved.

    保存时间取决于环境。请等待完成消息。
    保存内核配置

7. 添加和修改程序

在上一节中,我们配置了应用程序使用的功能设置等。

本节介绍如何更新实际创建的项目的程序,以及添加程序文件的步骤。

7.1. 更新程序文件

  1. Explorer 按钮查看项目文件列表

    查看资源管理器
  2. 双击要编辑的文件。

    查看文件
  3. 输入要添加到打开的文件的代码。

    显示关键字完成
    编辑文件
C/C++扩展显示关键字完成列表。此关键字完成列表基于上一节中设置的配置。此外,可通过键入 Ctrl + Space 键显示。(可以根据环境分配给另一个键。有关详细信息,请参阅键盘快捷键。)
如果关键字完成列表显示不正确,则可能未正确创建 C/C++ 扩展数据库。 在这种情况下,请运行 C/C++: Rescan WorkspaceC/C++: Reset IntelliSense Database 命令。

7.2. 添加程序文件

  1. 右键单击要添加的文件夹。

  2. 选择 New File

    选择 `New File`
  3. 输入文件名。

    输入文件名
添加.c和.cxx文件会自动包含在生成中。

8. 编译项目

在上一节中,我们添加了和配置了项目创建程序。

本节介绍如何将创建的程序编译为可以写入 Spresense 二进制文件的过程。

编译也由两个部分组成,就像配置一样。

  • 编译内核

    编译 Spresense SDK 的内核 NuttX 。由于它包含各种功能,因此要花费大量时间。(根据您的环境,可能要花费数十分钟。)

除非配置内核或更改源代码,否则无需重新编译。

  • 编译应用程序

    建立 Spresense SDK 提供的 Spresense 特定功能,并创建一个 nuttx.spk 文件。另外,如果您添加了ASMP worker,它将使用此过程进行构建。

8.1. 编译内核

  1. 右键单击要生成的项目文件夹。

    查看项目菜单
  2. 单击 Spresense: Kernel build

    选择 `Spresense: Kernel build`
  3. 内核编译开始,等待完成

    内核编译启动
  4. 如果任务成功完成,内核生成已完成,如下图所示。

    内核生成完成

8.2. 编译应用程序

  1. 右键单击要生成的项目文件夹。

    查看项目菜单
  2. 单击 Spresense: Application build

    选择 `Spresense: Application build`
  3. 等待应用程序生成开始,直到完成。

    应用程序编译开始
  4. 如果任务正常完成,如下所示,则说明内核构建已完成。

    应用程序编译结束

9. 写入Spresense板并检查操作

在前面的部分中,我们说明了从创建项目到创建写入 Spresense 的二进制文件的过程。

以下是将实际创建的二进制文件写入 Spresense 并检查操作的过程。

9.1. 设置串行端口

  1. 请参考 如何检查USB串口 ,并使用USB连接PC和 Spresense 。

  2. 键入 F1 键以显示命令面板。

    显示命令调色板
  3. 键入 Spresense serial port 以缩小命令范围。

  4. 选择 Spresense: Serial port selection 。 .

    选择 `Spresense: Serial port selection`
  5. Select serail port 列表中选择 Spresense 端口。

    选择串行端口

9.2. 安装引导加载程序

要使用 Spresense 和 Spresense VSCode IDE 功能,必须安装最新的引导加载程序。否则, Spresense 和 Spresense VSCode IDE 将无法正常工作。

说明引导加载程序的安装过程。

首次使用引导加载程序或更新SDK版本时,请安装引导加载程序。
  1. F1 类型显示命令面板。

    显示命令面板
  2. 键入 spresense bootloader 以缩小命令范围,然后选择 Spresense: Flash bootloader

    选择 `Spresense: Flash bootloader`
  3. 出现 install the bootloader, you must download the bootloader archive with a web browser…​ 消息,然后点击 OK

    从Web下载引导加载程序。
    检查浏览器启动
  4. 打开网络浏览器后,请按照页面上的说明进行下载。

    下载页1
    下载页2
  5. 在确认安装继续的对话框中单击 OK

    引导加载程序安装继续检查
  6. 将显示文件对话框,然后选择下载的ZIP 文件。

    选择引导加载程序ZIP文件
  7. 选择ZIP文件后,引导加载程序安装将开始。

    开始安装引导加载程序
  8. 如果任务成功完成,则引导加载程序安装已完成,如下图所示。

    安装引导加载程序

9.3. 烧入编译的二进制文件

  1. 右键单击要编译的项目文件夹。

    查看项目菜单
  2. 点击 Spresense: Build and Flash

    选择 `Spresense: Build and Flash`
  3. 应用程序编译将开始并等待完成。

    启动编译应用程序
    可以跳过上一节中的 Spresense: Build and Flash 并直接运行此命令。
  4. 编译完成后,便会立即开始烧入 Spresense 。

    开始烧入编译的二进制文件
    如果要创建ASMP worker程序,则此时将其一起编写。
  5. 烧入 Spresense 后,串行终端将打开。

    查看串行终端

9.4. 检查操作

  1. 在打开的串行终端上,输入创建的命令名称,然后键入 Enter 键。

  2. 将显示命令的结果。

    运行命令
    运行命令(对于ASMP示例应用程序)

10. 使用 ICE 调试主内核

在上一节中,我们通过将编译二进制文件烧入 Spresense 的Flash内存中来检查操作。

本节说明如何将编译的二进制文件直接加载到 Spresense 的SRAM中并检查(调试)操作。

您可以通过在指定位置设置中断并在指定位置停止程序来调试,或者通过编写Watch语句并在指定条件下停止调试。

通过参考 准备调试器(使用 ICE) 来准备调试器。

10.1. 指定 Break

  1. 打开要设置Break的源代码(如果要设置第6行)。

    查看源代码
  2. 单击要设置的行的左边缘(行号左侧的)以将其标记为红色。

    设置 Break

已完成中断点设置。

10.2. 开始调试

  1. 从窗口左侧的图标中单击调试图标。

    显示调试屏幕
  2. 从调试配置列表中选择项目的调试菜单。

    显示调试屏幕
  3. 单击 Start debugging 按钮。

    开始调试按钮
  4. 等待调试过程运行完成。

    准备调试
  5. 如下图所示,当调试控制按钮图标切换到 Continue 时,您就准备就绪。

    准备调试
    当调试开始时,使用 __start(void 完成中断。
  6. 单击前面的 Continue 图标, Spresense 开始运行。

    正在运行
  7. 通过设定断点的处理(例如执行命令)时,会在设定点中断。

    Break中
  8. 再次单击 Continue 图标以释放中断。

    Break释放