0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCode+QEMUセットアップ手順書

Posted at

0. はじめに

Arm Keil MDKではARM Cortex-Mの一部のコアがシミュレータに
対応していなかったので、商用でも無償で利用できるシミュレータ
環境を構築してみました。VSCode拡張機能との相性問題で
動作確認に手間取ったため、手順を書き残しておきます。

1. シミュレータ環境の概要

こちらの動画から引用しています。
Debugging FreeRTOS with QEMU in VSCode - YouTube

1.1 QEMUって何?QEMUで何ができるの?

QEMUは、多種のハードウェアを仮想化できるマシンエミュレータです。
異なるアーキテクチャ間での仮想化も可能です。
例えば、以下のような理由でハードウェアが手元にない場合に、
仮想化したハードウェア上でアプリケーションを実行することができます。

  • 組込み製品の設計段階でチップセットが未選定
  • 評価ボードが実験室など別の場所にある
  • 物理的なハードウェアなしで自動テストを実行したい
  • テストに使用するハードウェアが不足している

1.2 必要となるツール類

本環境では以下を使用します。
インストール手順については後述します。

  • VSCode
  • Make
  • Arm GNU Toolchain
  • QEMU

1.3 動作確認に使用するプロジェクト

本環境の動作確認には、FreeRTOSのプロジェクトを使用します。
GitHubからリポジトリをクローンして使用しますので、以下のURLから
Gitのインストーラをダウンロードしてインストールしてください。
https://git-scm.com/downloads

リポジトリのクローン用にフォルダを作成します。(「C:\GIT」など)
フォルダの何もないところで右クリックし、「ターミナルで開く(T)」を
選択するとWindows PowerShellが開きます。以下のコマンドを実行すると
「FreeRTOS」フォルダが作成され、リポジトリがクローンされます。
リポジトリ内のものをすべて取得するために「--recurse-submodules」
オプションが必要です。

git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules

2. Visual Studio Codeの設定

こちらの記事から引用しています。
VSCode | Visual Studio Codeを日本語化する

2.1 Visual Studio Codeのインストール

VSCodeを以下よりダウンロードし、インストールします。
https://code.visualstudio.com/

インストール設定はデフォルトでも問題ありませんが、
使い勝手が良くなるのでコンテキストメニューの追加をオススメします。
vscode_setup.png

2.2 Visual Studio Codeを日本語化する

以下の拡張機能をインストールします。

  • Japanese Language Pack for Visual Studio Code

インストールが完了したらVSCodeの再起動を行います。
完了後に画面右下に「Change Language and Restart」と表示されるので
クリックしてください。

2.3 VSCodeの拡張機能のインストール

VSCodeの拡張機能から以下の拡張機能を導入します。
当方の環境では最新版で不具合があったので、自動更新をオフにして
「特定のバージョンをインストール...」から「1.14.5」をインストール
しています。

  • C/C++

3. ツール類のインストール

こちらの記事から引用しています。
ベストなWindowsへのMakeのインストール方法は? #Windows - Qiita

3.1 Makeのインストール

WindowsにMakeをインストールする方法はいくつかありますが、
ここではChocolateryを使用したインストール方法を紹介します。
まずはChocolateryをインストールします。Windows PowerShellを
「管理者権限」で開いて、以下のコマンドを実行してください。
管理者権限のない状態でコマンド実行すると、フォルダだけが作成
されて、以降のインストールが失敗する事態となります。(1敗)

Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = `
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString( `
'https://community.chocolatey.org/install.ps1'))

続いて、次のコマンドを実行するとMakeをインストールできます。

choco install make

3.2 Arm GNU Toolchainのインストール

公式サイトからインストーラをダウンロードしてインストールします。
「...i686-arm-none-eabi.exe」を選択してください。Windows向けには
「i686版」と「x86_64版」が用意されていますが、インストール先は
双方とも何故か「C:\Program Files (x86)」となっています。
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

Arm GNU Toolchainを使用するには環境変数「Path」の設定が必要です。
インストール時は「Add path to environment variable」を有効にしてください。
arm_gnu_toolchain_setup.png

3.3 QEMUのインストール

公式サイトからインストーラをダウンロードしてインストールします。
「Windows」を選択して「64-bit」をクリックすると、インストーラの
ダウンロードリンクが表示されます。
https://www.qemu.org/download/

QEMUを使用するためには、手動で環境変数を追加する必要があります。
ユーザー環境変数「Path」に以下を追加してください。

変数
Path C:\Program Files\qemu

4. デバッガの動作確認

こちらの動画から引用しています。
Debugging FreeRTOS with QEMU in VSCode - YouTube

4.1 プロジェクトフォルダを開く

リポジトリのクローンで作成された「FreeRTOS」フォルダから、
さらに「FreeRTOS」フォルダ、「Demo」フォルダと開いていきます。
以下のフォルダを右クリックし、「Code で開く」を選択してください。

  • CORTEX_MPS2_QEMU_IAR_GCC

4.2 launch.jsonの修正

VSCodeの「エクスプローラー」ビューから、「.vscode」フォルダ内の
「launch.json」を開いてください。「miDebuggerPath」キーに対する
値を、実際のインストール先のパスに修正する必要があります。
以下のような値になると思います。

キー
miDebuggerPath C:/Program Files (x86)/Arm GNU Toolchain arm-none-eabi/
バージョン番号/bin/arm-none-eabi-gdb.exe

4.3 デバッグの開始

VSCodeの「実行とデバッグ」ビューを表示し、「デバッグの開始」横の
ドロップダウンリストから「Launch QEMU RTOSDemo」を選択します。
再生ボタンを押すと、プロジェクトがビルドされてデバッガが起動します。
「startup_gcc.c」が開かれ、Reset_Handler関数内でブレークしている
様子が確認できたら動作確認は完了です。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?