覚え書きTOP

mbedをオフラインで使う       2012/12/15開始。  現時点での感想 まとめ 取説 

 mbedプロジェクトを利用してオフラインで開発するのが目的です。

 ARM(Cortex)を使うことになったけど、いかに楽してソフトを作るか。
   
mbedを利用したらどうだろ?
 を調べるのが目的です。

 『mbedはオンラインで簡単にプログラムを作れて便利』とか言うけど、それよりもmbedの価値はライブラリ(mbed-SDK)やサンプルプログラムじゃないの?
 
  きっとメーカーの戦略でありましょう・・・mbedで入門させて身も心もARMの虜に・・・(^^;

 mbedボード(Platforms)mbed以外のCPUボードのハード的な違いは、デバッグI/F(CMSIS-DAP)が付属してるかどうかの差。
 ULINK2などのデバッグアダプタを購入すれば別にmbedボードである必要はなく、しかもmbedのライブラリやサンプルはそのまま使える。
 例えばmbedボードの1114は2,100円。でもCPUだけなら110円デバッグアダプタは$17
 値段も手頃だし、しかも素のCPUをデバッグアダプタで直接触るって面白いよね。

普通の組み込み開発では、ULINK2(デバッグアダプタ)とCPUをSWDで接続してμVision(統合環境)で開発・デバッグする
mbedプラットフォームでは、CMSIS-DAPがデバッグアダプタの代わりになる。
要するにULINK2が内蔵されてると思えば良い。

 デバッグアダプタを使えば他にも
  ・デバッグ時の通信が速くて快適
  ・I/Oの多い48ピンの1114や、100ピンの1768が使える(しかも全部のPINを自由に使える)
  ・素のCPUは安いから気楽に無茶が出来る ← これ大事(笑)

 ちゅうことで、ここではデバッグアダプタとしてULINK2廉価版)を使い、開発にはMDK-ARM(μVision)を使ってます。
 
なおMDK-ARM無料版にはコードサイズ32K制限版と、コードサイズ無制限で一ヶ月使える版があります(このページには32Kを超える記事も記されていますが、普通に使う分には32K以内に収まってます)。


 ここでの基本的な手順はいつも同じです。
  1:mbedのオンラインコンパイラでプロジェクトを作る
  2:プロジェクトをExport
  3:μVisionに取り込んでビルドとデバッグを行う

 ULINK2を使って開発するときに最初にやること
 LPC1114の例
 LPC1768(秋月BlueBoard)の例
 MK22Fの例 


 ところでいずれCPUマニュアルが必要になるわけだけど、日本語版はLPC1114しかないんで(LPC1768は部分部分しか翻訳されていない)、先にLPC1114を使ってから他のCPUに行くのが近道かもしれない・・・
 なおソフトがらみの完成度が一番高いのは、当然一番古い元祖mbedのLPC1768でっせ。

 ・mbedでは、CPUコア及び周辺ペリフェラルのライブラリのことをAPIと言い、Handbookページに取説があります。ソースも全て公開されてます。
 ・サンプルプログラム、外付け部品用のライブラリ(LCD、USB、モーター、センサ他)、高機能(標準的でない)APIの一覧などはCookbookページにあります。

 この両方のページにざっと目を通しておけば「どうすれば一番手抜きが出来るか」が分かると思う。
 ちゅうか、見るだけで「きゃ~!頭を使わなくても何でもやれそう」って気になるし(笑)
 しかし良くできてるよね~今までのプログラム作りとは雲泥の差だ。

 mbedでさらっとプロトタイプを作る → 回路図もソースも公開されてるのでOKならそのまま生産品を作る → 開発者は喜ぶ → ARMもCPUが売れて喜ぶ。
 CPUの性格とC++の能力とオンライン環境とユーザーフォーラムを見事に組み合わせて見事な環境を作った・・・mbedエライ、
ARM頭良い!

 ※使っている統合環境(IDE)をμVisionまたはMDK-ARMと記述しています。
 ※mbedのライブラリのことをAPIまたはSDKなどと記述しています。
 ※ページ中の▲は未だ不明な部分で、解決したらに変更しています。


目次

 mbed第一歩(ユーザー登録方法ほか) 次にこれを読み 続いてその2を読み 実用にはこれを読む

<CMSIS-DAPを使う>
 ※以下の記事はmbedボード(Platforms)を使う場合です(デバッグI/FにCMSIS-DAPを使っている)。
 μVisionをCMSIS-DAPで使うための準備
    1,mbed内の通信ファームを入れ替える
    2,WEB上で簡単なプロジェクト作り、ローカルに持ってくる
    3,μVisionをインストールする
    4,μVisionを起動する
    5,ちょっと手を入れてやる
    6,ビルドしてステップ実行してやろう
    7,エディタがタブ2なのでタブ4に変更。テキストの色も変更

<ULINK2を使う>
 ※以下の記事は素のCPUを使う場合です(デバッグI/FにULINK2を使っている)。
 ULINK2を使って開発するときに最初にやること
 LPC1114の例
 LPC1768(秋月BlueBoard)の例
 MK22Fの例(中断中)

 mbedでI/O
    秋月の20X4のLCDモジュール
    音声合成LSI(SPI接続)
    SDメモリーカード(SPI接続)
    エンコーダ(インターバル割込み)
    USBメモリのR/W(USBホスト)
    エンコーダ(ハードウエア割込み)
    mbedのAPIより先に処理したい場合
    WDT 
    インプットキャプチャする 
    PWM 

 LANを試す
    mbedLPC1768でTCP Echoを試した
    セミホスティングを無効にする 
    EA4088QSBでTCP Echoを試した

 mbedLPC4088QSBをJTAG/SWDで使う
    ULINK2とQSBのJTAG/SWDコネクタ信号図

 mbedの中を覗く  
    mbed-srcをステップ実行するための下準備
    LPC1768のメモリ管理(スキャッターファイルを覗き見してみた)
    秋月のBlueBoardをmbedプロジェクトで動かす
    mbedのスタートアップ処理
    物理アドレスに直接アクセスする方法

 CPUのマニュアルを覗き見 
  <LPC1768>
    LPC1700ラインナップ
    レジスタ名と割込みの定義
    ピンファンクション
    GPIOのステップ数(処理速度)
    ビットバンディング(BIT BAND)を使う

  <LPC1114>
    LPC1100ラインナップ
    概要
    DIPとQFPの対応図
    CMSISとコード補完 
    レジスタ名と割込みの定義
    クロックを観察 
    Xtalで動かす 
    WDT 
    インプットキャプチャする 
    PWM 
    使用上の注意

<その他>
 気が付いたこと その2
 最適化レベルとワーニング出力の設定
 デバッグモードに入れないとき(μVision45)
 mbedLPC1768ピン配置のエクセルファイル
 LPCXpressoで動かす
 新品mbedを使い始めるときにやること
 mbed-srcを使うプロジェクトの作り方2 その1
 ULINK2を使って開発するときに最初にやること
 スタックの使用量を調べる 
 リンカオプションの追加方法 


取説(日本語多し) 2014/05/10追記

<MDK-ARM>
 「MDK-ARM は RVDS4.1 ベースのコード生成ツールです。」とYOKOGAWAのページに書いてある。
 で、RVDSの取説リンクをYOKOGAWAのページからコピーしておこう。
  μVision44ユーザーガイド こっちも
  ULINK2 User's Guide  μVision関連
  コンパイラ概要  コンパイラの取説
  アセンブラ概要  アセンブラの取説
  リンカ概要     リンカの取説
  エラーとワーニング一覧表
  引数の渡し方AAPCSほか(P10辺りから)
  スキャッタファイルの構文

<CPU>
 LPCマイコン全部のドキュメント一覧

 LPC1768
  LPC1700ラインナップ
  CPU User Manual
  日本語版(一部だけ)
  足の機能表 足の機能図
  レジスタ名とIRQ番号表

 LPC1114
  LPC1100ラインナップ
  CPU User Manual
  日本語版
  データシート
  足の機能図(QFPとDIPの違い)
  レジスタ名とIRQ番号表

 LPC4088
  LPC4000ラインナップ
  CPU User Manual ALL

 STM32
  ハードウエアマニュアル 
  ソフトウエアマニュアル

  Cortex-M3コアマニュアル(機械語命令一覧有り)
  CPUの概要、例外、スタートアップの説明、セミホスティングなど
  メモリマップやスタートアップの説明107 こっちにも179
  CoreSight(トレース)の理屈
  SWDやSWOとITM、JTAGコネクタの詳細
  Cortex-M3リファレンスマニュアル

<mbed>
  mbedのAPI 日本語版
  日本語フォーラム
  mbedLPC1768のピン配置図
  mbedLPC1768ファームの最新バージョン


その他のリンク

  ULINKの機能一覧
  WataraiさんのNotebook
  CMSIS日本語訳
  Cortex-Mの説明(とても分かりやすいです)
  ピンファンクションと割込みの設定方法



組み込み関数や変数やプログラム例など(結構昔に書いた記事なので古いです)


2012/12/15

< μVisionをCMSIS-DAPで使うための準備 >

※ここで使っているデバッグI/FはCMSIS-DAPです(ULINK2ではない)

    1,mbed内の通信ファームを入れ替える
    2,WEB上で簡単なプロジェクト作り、ローカルに持ってくる
    3,μVisionをインストールする
    4,μVisionを起動する
    5,ちょっと手を入れてやる
    6,ビルドしてステップ実行してやろう
    7,エディタがタブ2なのでタブ4に変更。テキストの色も変更


2014/05/06追記
 MDK-ARM(μVision)は現時点ではV4.73を使う方が簡単だ。
 V5.10だと設定する項目が少し増える。

 mbedと言えばWEB上でエディット・コンパイルし、デバッグはprintfと決まってる・・・やだ。
 試しにやってみればすぐに分かるけど、こんなん
我慢ならん

 まずエディタがぼろい。
 タブ数が変だし日本語のコメントが入らない。 ← 2014/07 日本語コメントが使えるようになりました。
 第一今更printfデバッグは体が受け付けない(^^;

 見つけたよ~ん。
 IDEが使えるじゃん!開発ツール1
 ちゃんとデバッガ入り(ステップ実行や変数のウオッチが可能)・・・って、今時当たり前だよな。
 どうやらprintfやLEDチカチカの”男のデバッグ”をしないで済みそう。
 と言う事なら mbed+統合環境 って、この組み合わせはかなり快適なんじゃないかな。

   
 
CPU : ARM Cortex-M3 96MHz CPUに関してはここ、処理速度はこここの図この図が詳しい
フラッシュ : 512Kb
SRAM : 64Kb
mbedのページには32Kbと書いてあるけどCPUには64KbのSRAMが載ってる
3.3V OUT : MAX500mA


メモリたっぷり、CPUも高速、随分高性能なのだ。
これだけの性能が有れば、ポート入出力でソフト的な負荷が有っても平気そう。遠慮無く DigitalOut/In なんかのピンアクセスを使ってみよっと。



 ここで使うIDE(統合環境)の名前は「MDK-ARM」または「Keil μVision」と言う(Keil社はARM社に買収され、今ではARM純正ツールとして使われている)。
 ターゲットとしてはまずはmbed LPC1768ってのを使う。これをUSBでパソコンと接続するとドライブとして認識される(ここではF:ドライブとしておく)。
 なおIARの統合環境は使ったことが無いんで不明だけど、日本語対応してるそうな。

<1,まずはmbedLPC1768上のUSB通信ファームを書き換えてやる>
 CMSIS-DAPやインストール方法などの詳細はここ
 a) ここでユーザー登録をしてから、こっちでDLする(Firmware upgradembed NXP LPC1768の画像Download latest firmware とクリック)。旧バージョンはここ
 b) ”mbedmicrontroller_141212.if”と言う名前のファイルがDLされるから、こいつをドライブF:にコピーしてやる。
 c) 電源を切る(LPC1768と繋がってるUSBケーブルを引っこ抜く)。
 d) 電源を入れれば(引っこ抜いたUSBケーブルを挿す)、新しいファームが走り始める。
 e) PCに通信用のドライバを入れる(詳細情報はここ)。
 なお標準のファームに戻したいときは、ここからDL可能だ。

 ところでWindows(PC)にシリアルドライバをインストすると、mbedLPC1768上のUSBがCOMに現れるんだ。

   

 このCOMには printf() で出力可能。
 要するにデバッグ用に使えるって事。
 先頭で Serial debugCOM(USBTX, USBRX); とかを宣言しておき、使いたい場所で debugCOM.printf("test\r\n"); とかする。
 詳細はここ(ページ中段のチョイ下。割込みによる送受信例もあり)。


<2,WEB上で簡単なプログラムを作り、そのプロジェクトをパソコンに持ってくる>

 a) プロジェクト名の上で右クリックして、デフォルトのままでExportする。
 b) zip圧縮されたファイルが取得される。 
   



<3,μVisionをインストールする>
 ここに無料版があるんでDLしてインストールする(初めてだと登録が必要)。32Kb迄のプログラムが作れるそうだ。
 実際にコードを生成させてみたけど、20Kb位まではすぐに行くけど、その後はなかなか増えない感じだから、32Kb有ればそれなりに使える。


<4,μVisionを起動する>
 さっきExportしたファイルを展開すると、中に拡張子「.uvproj」のファイルが有るから、それをWクリックしてμVisionを起動する。
 この「.uvproj」ってのが、μVisionのプロジェクトだ。

   



<5,ちょっと手を入れてやる>
 コンパイル終了時にbinファイルが自動でF:ドライブに入るようにちょい修正してやる。
 μVisionを起動してから下図のようにする。
 ただし4088QSBLPC1114などでJTAG/SWD接続してる場合、μVisionでそのままデバッグモードに入るならこの処理は不要だ(デバッグ開始時にFlashへ自動転送される)。
 またμVision5を使う場合はここの上の3つを実行する(4088を1768に読み替えてね)。

   



<6,ビルドしてステップ実行してやろう>
 この統合環境はVisualStudioなどとはちょっと違う。
 デバッグモードとコンパイルモードがはっきり分かれていて、モードを替えるとボタン類も入れ替わる。
 ま、ちょっと使えばすぐ慣れるけん。

   



7,エディタがタブ2なのでタブ4に変更。テキストの色も変更>

   

< 気が付いたこと > その2もあるよ

※ここで使っているデバッグI/FはCMSIS-DAPです(ULINK2ではない)

 

< 便利情報など >

 ページ上部のリンク集に移動


< その他もろもろ >

※ここで使っているデバッグI/FはCMSIS-DAPです(ULINK2ではない)

1,最適化レベルとワーニング出力の設定。
  最適化レベルは #pragma -O2 などをコードに追加する方法でも可。

   



2,デバッグモードに入れないとき-1
 無料版のμVisionでコード+データサイズが32キロを越えてしまった。
 で、横河デジタルでサイズ無制限だけど一ヶ月しか使えないバージョンのMDK-ARM評価版をDL・・・これがなんと”uViosn5”ときたもんだ。
 で、使ってみたけど快適っす。近日中に本物を購入予定 ← 2014/1/3 入手
 が、mbed本体を入れ替えて使ってたら”No Debug Unit...”エラーが出てデバッグモードに入れなくなったんで、ちょい手入れして解決した。
 もしこの方法で上手く行かないときは、PCとの通信用のドライバを再インストールすると成功する。

 



 デバッグモードに入れないとき-2
 μVision4を経由せずに直接μVision5にmbedからImportしたらこんなエラーが出た。

    


 解決法。
 まずここの上の3つを実行してPackInstallerでLPC1768を入れてからProject → Options → DeviceでLPC1768を選択。
 次にFalshの書き込みアルゴリズムを指定する(Deviceで1768を選択すると自動的に指定されるような気もする)。

    





覚え書きTOP