Help us understand the problem. What is going on with this article?

How to develop mbed in offline(mbedの開発をオフライン環境でする方法)

mbedのチームwikiに書いてたのをテケトーに移植したものです.
レイアウト等崩れてるかもですが,お許しください.

また,Windows向けに資料を書いているため,OS依存のコマンド等異なるかもしれませんが,ご了承ください.

必要なソフトウェア

・Git

・Mercurial

・ARM_GCC

・Python

・mbed CLI(インストール方法は後述)

・エディター※メモ帳以外

[追記 2018.8.23]
Windows向けにこれらをまとめてインストールできる,Windows mbed-cli Installerがありますが
使ってみたところバグがある可能性があるので推奨しません.

pipの最新版では正常に動作しないかもしれません.9.0.3または1.5.6にダウングレードしてみてください. [以上]

メモ帳で,オンラインからクローンしたソースファイルを開くと
改行,インデント等が反映されないため,推奨しません。

また,上記以外にもsourcetreetortoisehg
のようなMercurialクライアントがあると便利かもしれません(Windowsの場合Gitは公式のGUIが付属)

第1章.オフラインコンパイル下準備

1.mbed-cliのインストール

python -m pip install mbed-cli

mbed cli 最新版(2018.8.23現在)では正常に動作しないことがある.うまくいかないときは,
一度アンインストールしてからバージョンを1.3に下げることをおすすめします.

python -m pip uninstall mbed-cli
python -m pip install mbed-cli==1.3.0

2.mbed作業フォルダの作成

mbedで作業するフォルダを作ります

パスに日本語が含まれないように注意※エラー吐きます

上記の点さえ守れば,フォルダ名・作る場所も自由です。

この資料ではC:\mbedとして進めます

3.Mbed-CLIの設定

コマンドプロンプト(ターミナル)で以下のコマンドを入力。

//PC毎の設定
mbed config --global toolchain GCC_ARM
mbed config --global target NUCLEO_F446RE

//プログラム毎の設定(コントローラーのプログラム等におすすめ)
cd C:\mbed\programname
mbed config target NUCLEO_F103RB

Targetについては自分が使うNUCLEOの型番に置き換える。いつもと違うマイコンを使うときは設定変更が必要。

第2章.新しいプログラム作成~コンパイルまで

ここでは「newprogram」という名前のプログラムを作りコンパイルを行う

1.プログラムの作成から空のソースファイルを作成・開くまで

cd C:\mbed //1章で作った作業フォルダに移動
mbed new newprogram //新規プログラムの作成※
cd newprogram
vim main.cpp //エディター起動(Vimの場合)

//※バージョン管理にGitではなくMercurialを用いる場合
mbed new --scm hg newprogram

なお以降の説明では,コマンドプロンプト(ターミナル)では既に
プロジェクトフォルダ(C:\mbed\newprogram)に移動しているものとします。

cd C:\mbed\newprogramは省略します

2.ソースファイルを編集

3.いよいよコンパイル

mbed compile

//うまくいかなかった場合,もう一度
mbed compile
//または
mbed deploy
mbed compile

//binファイルが生成されたか確認する(Windowsの場合)
explorer BUILD

mbed-cliは飽きっぽい子

コンパイル中,こんなエラーが出て終了してしまうことがあります.

[ERROR] [Errno 0] Error
[mbed] ERROR: "C:\Python27\python.exe" returned error code 1.
[mbed] ERROR: Command "C:\Python27\python.exe -u c:\mbed\gyropractice\mbed-os\tools\make.py -t GCC_ARM -m NUCLEO_F446RE --source . --build
.\BUILD\NUCLEO_F446RE\GCC_ARM" in "c:\mbed\gyropractice"

これはPythonが「もう飽きた」と言って作業を放り投げてしまうからです.

※ふざけているようですがこう例えるしかなかった.許してください

この場合はもう一度"mbed compile"ってやるとちゃんと続きからコンパイルをしてくれます.

第3章.os.mbed.com(オンラインIDE)でも作業できるようにする

mbed Compilerではバージョン管理(後述)システムにMercurialを用いています

0.間違えてGitを使う設定にしてプログラムを作成した場合

rmdir .git /S  //.gitフォルダを削除
hg init .//このディレクトリでMercurialリポジトリを作成

1.リモートリポジトリの作成

  1. https://os.mbed.com/users/【ユーザー名に置き換え】/code/ を開く
  2. [Create mbed hosted repository]をクリック
  3. プログラム名と同じ名前(一文字も間違えないように注意)のリポジトリ(ここでは[newprogram] というリポジトリ)を作成する。
    ソースコードの流出を防ぐためRepository visibilityはPrivateを推奨。
    Choose destinationはチームでの共同作業を想定している場合は,自分のチーム名を選択。
  4. リポジトリを作成したら,リポジトリのページのURLをコピー。

2.Mercurialの設定

vim .hg\hgrc //構成設定ファイルの作成→テキストエディタで開く
[paths]
default = https://os.mbed.com/users/taro_yamada/code/newprogram/ //コピーしたURLを貼り付け
[proxy] //プロキシ設定(グローバル設定に記載したほうがいいのかも)
host = proxy.example.co.jp:8080 //プロキシサーバーとポート番号
passwd = password //プロキシのパスワード
username = taro_yamada //プロキシのユーザー名


構成設定ファイルでは1文字目に#を入力した行はコメント扱いとなる

3.Mercurialで同期

hg add main.cpp //以後,ソースファイルやヘッダファイルは同様に処理
hg add mbed-os.lib //必要なライブラリは[ライブラリ名].libでaddする
hg files //必要なファイルが追加された確認できる
hg commit//変更をコミット
//テキストエディタが開くのでコミットメッセージを適当に入力し保存して閉じる
hg push//変更をリモート(オンライン)に反映

Mercurialクライアント(sourceTreeやTortoiseHg)を使うともっと楽に作業できる

4.mbed Compilerにインポート

  1. mbed compilerを開く.
  2. [URLからインポート]でリポジトリのページへのURLを入力しインポート

参考資料

https://os.mbed.com/users/ytsuboi/notebook/ja-setup-mbed-cli-on-windows/

http://qiita.com/okhiroyuki/items/68ced69cf36de3eac919#windows%E3%81%A7%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89

mbed-CLI
https://developer.mbed.org/users/ytsuboi/notebook/ja-setup-mbed-cli-on-windows/

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away