5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Longan NanoがPlatformIOで使えなくなっているので、なんとかする話

5
Last updated at Posted at 2024-09-13

【2026年1月26日 更新】

本記事で紹介していたSourceForge上のファイルにアクセスできなくなっていることを確認したため、取得先をSipeedのMEGAリンクに変更しました。

はじめに

秋月で購入した Sipeed Longan Nano を使ってみようと意気込んでいたのですが、Sipeed公式サイトで紹介されている PlatformIOを利用した開発環境の構築がうまく動かないことに気づきました…。

調べてみたところ、2023年7月頃からPlatformIO 向けの必要ファイルの配信が停止されており、公式の手順通りでは環境構築ができない状態になっているようです。

ただし、必要なファイルを別途入手して手動で導入すれば、PlatformIO上での開発は可能です。本記事では、その具体的な導入方法について解説します。

必要なもの

  • Sipeed Longan Nano本体
  • USB Type-Cケーブル
  • Windows PC(windows10/11)

VSCodeとPlatformIOのインストール

※すでに導入済みの方は、この章はスキップしてください。

まずは、Visual Studio Codeをインストールします。

インストール後に VSCode を起動し、左側の 「拡張機能」 タブを開きます。
図1.png

検索欄に「PlatformIO」と入力し、表示された 「PlatformIO IDE」 をインストールしてください。インストールには少し時間がかかります。
図2.png

完了すると、左側に虫のアイコンが追加されます。
図3.png

新しいプロジェクトの作成

次に、PlatformIO のホーム画面から 「+ New Project」 をクリックします。
図4.png

  • Name:任意(例:longan-blink)
  • Board / Framework:あとで変更するので仮でOKです
    • Board:Arduino Uno
    • Framework:Arduino

設定後、「Finish」を押してプロジェクトを作成します。
図5.png

必要ファイルのダウンロード

現在、PlatformIO が参照している公式のダウンロード先が利用できないため、開発に必要なファイルを手動で取得し、配置する必要があります。

以下は Sipeed の公式サイトに掲載されているリンクですが、ファイルのダウンロードは自己責任で行ってください。

まず、Sipeed の公式サイトに掲載されている MEGA のリンクにアクセスします。
https://dl.sipeed.com/shareURL/LONGAN/Nano/Tools

Sipeed_MEGA.jpg

MEGA を開いたら、以下の順にフォルダを移動してください。
「LONGAN」→「platformio」→「dl-packages」

このフォルダ内にある、次の4つのファイルをダウンロードします。

  • framework-gd32vf103-sdk-v1.0.0.tar.gz
  • tool-gd32vflash-v0.1.0-win.tar.gz
  • tool-openocd-gd32v-v0.1.1-win.tar.gz
  • toolchain-gd32v-v9.2.0-win.tar.gz

Sipeed_MEGA2.jpg

ダウンロードが完了したら、それぞれのファイルを解凍してください。

ダウンロードファイル.jpg

フォルダ配置

解凍した4つのフォルダを、さきほど作成したプロジェクトのフォルダ内に移動させます。

プロジェクトフォルダはデフォルトであれば、次のパスにあるはずです。
C:\Users\ユーザー名\Documents\PlatformIO\Projects\プロジェクト名

プロジェクトフォルダ内に「packages」という名前のフォルダを新しく作成し、解凍した4つのフォルダを中に移動します。

スクリーンショット 2024-09-10 142428.png

現時点でフォルダ構成は以下のようになっているはずです。

├─.pio
│  └─build
├─.vscode
├─include
├─lib
├─packages
│  ├─framework-gd32vf103-sdk-v1.0.0
│  ├─tool-gd32vflash-v0.1.0-win
│  ├─tool-openocd-gd32v-v0.1.1-win
│  └─toolchain-gd32v-v9.2.0-win
├─src
└─test

platformio.iniの編集

VSCodeでplatformio.iniを開き、以下のように書き換えます。
platform_packagesで、先ほど配置したフォルダのパスを指定しています。

[env:sipeed-longan-nano]
platform = https://github.com/sipeed/platform-gd32v.git
board = sipeed-longan-nano
framework = gd32vf103-sdk
platform_packages = framework-gd32vf103-sdk @ file://packages/framework-gd32vf103-sdk-v1.0.0
                    toolchain-gd32v @ file://packages/tool-gd32vflash-v0.1.0-win
                    tool-openocd-gd32v @ file://packages/tool-openocd-gd32v-v0.1.1-win
                    tool-gd32vflash @ file://packages/toolchain-gd32v-v9.2.0-win
upload_protocol = dfu

Lチカプログラムの作成

次に、src/main.cを開き、以下のLチカ用プログラムに書き換えます。
もしmain.cppになっている場合は、main.cに変更してください。

#include "gd32vf103.h"
#include <stdio.h>

/* BUILTIN LED OF LONGAN BOARDS IS PIN PC13 */
#define LED_PIN GPIO_PIN_13
#define LED_GPIO_PORT GPIOC
#define LED_GPIO_CLK RCU_GPIOC

void delay_1ms(uint32_t count)
{
  uint64_t start_mtime, delta_mtime;

  // Don't start measuruing until we see an mtime tick
  uint64_t tmp = get_timer_value();
  do
  {
    start_mtime = get_timer_value();
  } while (start_mtime == tmp);

  do
  {
    delta_mtime = get_timer_value() - start_mtime;
  } while (delta_mtime < (SystemCoreClock / 4000.0 * count));
}

void longan_led_init()
{
  /* enable the led clock */
  rcu_periph_clock_enable(LED_GPIO_CLK);
  /* configure led GPIO port */
  gpio_init(LED_GPIO_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, LED_PIN);

  GPIO_BC(LED_GPIO_PORT) = LED_PIN;
}

void longan_led_on()
{
  /*
   * LED is hardwired with 3.3V on the anode, we control the cathode
   * (negative side) so we need to use reversed logic: bit clear is on.
   */
  GPIO_BC(LED_GPIO_PORT) = LED_PIN;
}

void longan_led_off()
{
  GPIO_BOP(LED_GPIO_PORT) = LED_PIN;
}
/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/
int main(void)
{
  longan_led_init();

  while (1)
  {
    /* turn on builtin led */
    longan_led_on();
    delay_1ms(1000);
    /* turn off uiltin led */
    longan_led_off();
    delay_1ms(1000);
  }
}

ビルド

左下のチェックマークを押して、ビルドします。

ビルド.jpg

エラーが出る場合は、

  • フォルダ構成
  • platformio.iniのパス指定
  • main.cになっているか

をもう一度見直してください。

ドライバの設定

ここからは、Longan Nanoにプログラムを書き込むための準備をしていきます。

以下のリンクから「UsbDriverTool」をダウンロードし、解凍します。
https://visualgdb.com/UsbDriverTool/

解凍すると、「UsbDriverTool」というフォルダが生成されるので、中にある「UsbDriverTool.exe」を実行します。
図9.png

次に、Longan NanoをUSB Type-CケーブルでPCに接続し、DFUモードにします。
DFUモードに入るには、以下の操作を行います。
1.BOOTボタンを押す
2.RESETボタンを押す
3.RESETボタンを離す
4.BOOTボタンを離す
図10.png

Longan NanoがDFUモードになると、UsbDriverToolの画面に名前が空白のデバイスが表示されます。
このデバイスをダブルクリックし、「WinUSB」を選択して「Install」を押します。
図11.png

プログラムの書き込み

最後にVSCodeの画面左下にある「→」マークを押して、プログラムを書き込みます。
図12.png

Longan NanoのLEDが点滅すれば成功です!

5
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?