RISC-VとARM_m33をnRF54L15上で一緒に動かしてみた

本サイトはアフィリエイト広告を利用しています。
Bluetooth LE

NordicのnRF54L15はRISC-VとARM_m33の両方を搭載しています。

RISC-VとARM_m33を一緒に動かしてみました。

プログラム実装からテストまで紹介します。

 

スポンサーリンク

RISC-VとARM_m33をnRF54L15上で一緒に動かしてみた

NordicのnRF54L15はRISC-VとARM_m33の両方を搭載しています。

RISC-VとARM_m33を一緒に動かしてみました。

RISC-VからはGPIOとUART、ARM_m33からはPWMとUARTをテストしています。

 

プログラム実装からテストまで紹介します。

 

7. RISC-V(FLPR)

NordicのnRF54L15 SoCは、RISC-Vアーキテクチャをベースにした、Fast Lightweight Peripheral Processor (FLPR) と呼ばれる専用のVPR CPUを搭載しています。

 

nRF54L15 RISC-Vに関するドキュメントは、以下のURLで参照できます。

 https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/app_dev/device_guides/nrf54l/vpr_flpr.html

 

Nordicの評価ボードを参考に、RISC-V(FLPR)のボード(デバイスツリー)ファイルを作成しました。
 https://github.com/iotengineer22/Board-Designer-Competition/tree/main/src/board

以下のファイルがRISC-V用に該当します。
test_nrf54l15dk_nrf54l15_cpuflpr.dts, dtsi (For RISC-V)

 

またnordic-flpr用のオーバーレイスニペットも拡張しました。

ZephrのSDK内の.ymlファイルも弄っています。

zephyr\snippets\nordic-flpr\snippet.yml

 

これによりオリジナルボードファイルを構成する際、FLPRオプションを選択できます。

 

RISC-V GPIO + UART

nRF54L15のRISC-Vコアで、GPIOとUARTのデバッグを行いました。

RISC-VコアからのLED点滅とUARTシリアルメッセージを確認しています。

 

このRISC-VコアはZephyr(RTOS)を実行しています。

テストには以下のプログラムを使用しました。
 https://github.com/iotengineer22/Board-Designer-Competition/tree/main/src/project/gpio

 

RISC-V UARTのデバイスツリーのイメージです。(詳細はボードファイルを参照してください。)

ARM_M33のUART(uart20)のピンとは違ったピンに設定しています。

 

以下のデモ動画をご覧ください。

 

プログラムは既にボードに書き込まれています。

ボードをリセットすると、RISC-VおよびZephyrが再起動します。

LEDが繰り返しON/OFFを繰り返し、UART経由でシリアルメッセージが出力されます。

 

オシロスコープを使用して、RISC-VからのUART信号を調べています。

オシロスコープで信号をデコードしています。

メッセージの「LED state:」に対応するASCII文字が確認できました。

またUARTの速度は115200 bpsであることも確認しています。

 

 

RISC-V + ARM_M33

nRF54L15上のRISC-VコアとARM_M33コアの両方を同時にデバッグしました。

RISC-VコアからのLED点滅とUARTシリアルメッセージ、そしてARM_M33からのPWM制御を確認しています。

 

テストには以下のプログラムを使用しました。
 https://github.com/iotengineer22/Board-Designer-Competition/tree/main/src/project/gpio
 https://github.com/iotengineer22/Board-Designer-Competition/tree/main/src/project/pwm

 

RISC-V向けにビルドする際、ARM_M33コア用のsysbuildも生成されます。

ARM_M33コア用のmain.cファイルには、PWMプログラムを実装しています。

 

ARM側については、デフォルトのKconfig設定(prj.conf)が最小限です。

PWM構成を指定する必要があることに注意してください。

 

以下のデモ動画をご覧ください。

 

nRF54L15はRISC-VコアとARM M33コアの両方を統合しています。

デバッグ中、シリアルメッセージが確認しています。

↑ はRISC-Vコアからのメッセージを示し、↓ はARM_M33コアからのメッセージを示します。

 

RISC-VコアとARM_M33コアの両方に対して、リセットも確認しました。

 

各コアからの制御が成功したことをテストで確認しています。

  • RISC-VコアからのGPIO + UARTの制御(LED ON/OFFで実証)。
  • ARM_M33コアからのPWM + UARTの制御(サーボモーターのパルス制御で実証)。

 

まとめ

NordicのnRF54L15はRISC-VとARM_m33の両方を搭載しています。

RISC-VとARM_m33を一緒に動かしてみました。

プログラム実装からテストまで紹介しました。

コメント