2021年03月06日

Nuclei StudioとGD32FV103試食

Sipeed Longan Nanoの開発環境の構築と試食としてUARTの出力について紹介します。Sipeed Longan NanoはRISC-VベースのマイコンGD32VF103CBT6を搭載した評価基板です。マイコン以外にLED、OLEDディスプレイやSDカードスロットが搭載されて1000円弱とお手頃です。

longannano.jpg

Sipeed Longan Nanoの開発環境として、VisualStudioCode+PlatformIOの組み合わせで使用する場合がほとんどだと思います。一方で開発環境のバージョン差による影響を抑えたい場合や社内利用で追加パッケージを入れずらい、入れられないといった場合があると思います。そのような場合におすすめなのがNuclei Studioです。GD32VFマイコンのアーキテクチャを開発しているNuclei社が無償で提供しています。Eclipseベースの開発環境でWindowsやLinux向けのインストーラが準備されています。STM32マイコンのSW4STM32やSTM32CubeStudioを使用したことがある方ならそのまま同じような感覚で利用することができます。

nuclei_studio.jpg

Nuclei Studioはこちらの公式サイトからダウンロードしてください。Zipを解凍してNucleiStudio内のeclipse.exeをクリックするとNucleiStudioが起動します。開発環境にサンプルプログラムが含まれているため、今回はサンプルプログラムベースにGD32FV103を試食します。まず、File→New→C/C++ Projectを選択します。


nuclei_studio_1.jpg


C Managed Buildを選択します。

nuclei_studio_2.jpg



適当なProject名を設定します。ProjectTypeにはNuclei SDK Project For GD32VF103 Socを選択しました。

nuclei_studio_3.jpg


 Board選択はgd32vf103v_evalを選択しました。

nuclei_studio_4.jpg

いくつかサンプルが準備されていますが、baremetal_helloworldを選択しました。他の設定は必要に応じて選択します。例えば、printfでfloat出力する場合は下記の様に対応するNEWLIBを選択します。

nuclei_studio_5.jpg

以降の設定はデフォルトのまま、次に進め、Finishをクリックします。

nuclei_studio_6.jpg

nuclei_studio_7.jpg


今回のbaremetal_helloworldはMISA情報をprintf出力します。今回はprintfの出力先をuart0に出力させます。プロジェクトフォルダ内のnuclei_sdk→SoC→gd32vf103v_rvstar→Includeのnuclei_sdk_hal.hをクリックし、下記を書き換えます。

GD32_COM0
から
USART0
に設定します。

また、main.cのグローバル関数に下記を追加します。
void usart_init(void) {
 rcu_periph_clock_enable(RCU_USART0);
 rcu_periph_clock_enable(RCU_GPIOA);
 gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
 gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
 USART_BAUD(USART0) = (58 << 4) | (10 << 0); //115200bps@108MHz
 USART_CTL0(USART0) = USART_CTL0_TEN | USART_CTL0_REN;
 USART_CTL0(USART0) |= USART_CTL0_UEN;
}

main関数頭に
usart_init();
を追加します。

書き換えたコードを保存して、Ctrl+bでプロジェクトをビルドします。Debugフォルダ内にプロジェクト名.hexファイルができているはずです。

書き込みツールは「GD32 MCU Dfu Tool_vXXXX」をダウンロードします。ファイルを7Zip等で解凍し、フォルダ内のドライバGD32 MCU Dfu Drivers_vXXXX.exeをクリックし、ドライバをインストールします。

nuclei_studio_8.jpg

GD32 MCU Dfu Tool_vXXXフォルダ内のGD32 MCU Dfu Tool.exeをクリックし、書き込みツールを起動させます。アップデート有無を聞いてきますが、いいえを押して無視します。Sipeed Longan NanoとPCをUSBで接続し、BOOTボタンを押しながらリセットを1秒程度押してから離すと書き込みモードになります。スイッチのチャタリングなのか、書き込みモードに入っても書き込みに3回に1度ほど失敗します。そのような場合は再度、Resetボタンでリセットさせてから、書き込みモードにして書き込みを行います。認識するとDFU Deviceにデバイスが自動で「GD DFU Device1」といった表示がされます。

nuclei_studio_9.jpg

Download to Deviceにチェックを入れて、Openで先ほどのプロジェクトフォルダ内のDebugフォルダ、***.hexファイルを選択し、画面下のOKボタンを押すと書き込みが開始されます。100% Download successfully!が表示されれば書き込み完了です。Resetボタンを押すとコードが実行されます。

USBシリアル変換アダプタ等をSipeed Longan NanoのT0、GNDを配線してTeraterm等で開くと出力結果を確認できます。サンプルプログラムをベースに簡単にprintf出力することができました。J-tagのデバッガなしでも本体のみでUSB経由で書き込めるのは非常に楽だと思いました。今後はデバッガーを使ったデバッグ方法やSPI、I2C等のペリフェラル機能を使ってみたいと思います。

posted by Crescent at 00:00| Comment(2) | 電子工作 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
Crescent 運営管理者様

お世話になっております。Eleven Tenthsの板野です。
先日ご連絡させていただいた電子部品のオンライン販売会社とのコラボレーションのご相談につきまして、ご検討状況はいかがでしょうか。

具体的な内容につきましては運営管理者様のご意向を伺いながら、ご相談させていただけますと幸いです。是非ご意向をお聞かせいただけましたら幸いです。
もし、ご検討にあたり不明点がございましたら、いつでもご連絡いただければと存じます。

ご協力いただけると大変光栄でございます。
ご連絡をお待ちしております。

Eleven Tenths 板野
Posted by 板野 at 2021年03月13日 00:13

Crescent 運営管理者様

お世話になっております。Eleven Tenthsの板野です。
先日ご連絡させていただいた電子部品のオンライン販売会社とのコラボレーションのご相談につきまして、ご検討状況はいかがでしょうか。

具体的な内容につきましては運営管理者様のご意向を伺いながら、ご相談させていただけますと幸いです。是非ご意向をお聞かせいただけましたら幸いです。
もし、ご検討にあたり不明点がございましたら、いつでもご連絡いただければと存じます。

ご協力いただけると大変光栄でございます。
ご連絡をお待ちしております。

Eleven Tenths 板野
Posted by 板野 at 2021年03月13日 11:29
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。