2012/10/28

Stellaris LaunchPad

 すごく安いマイコン基板が出たので、反射的に買ってきました。

 Texas InstrumentsのStellaris LaunchPadです。Cortex-M4Fがのって550円の安さ!実は初入荷の後に店に行ったのですが売り切れで、再入荷との情報を得て、買いに行って何とかゲットしました。お店では

お一人様、4個まででお願いします

――と。そりゃそうですね、破格の安さだし。

 他の方に聞いた話やTIの資料によると、どうも正規価格は約12ドルなので、期間限定のキャンペーン価格なのかもしれません。もう、何枚か買っておこうかな~。

 主なスペックはこんな感じです。

  • TI LM4F120搭載
    • 80MHz 32-bit ARM Cortex-M4F
    • 256KB Flash, 32KB SRAM, 2KB EEPROM
  • オンボードUSB Debug Interface搭載
  • USBから給電
    • レギュレータで3.3Vをマイコンへ給電
  • USB Device機能
  • リセットスイッチ & 2個のユーザ用プッシュスイッチ搭載
  • 16MHz クリスタル搭載
  • RTC用クリスタル搭載
  • フルカラーLED 1個搭載
  • BoosterPack(拡張基板)用コネクタ搭載

 見た目はこんな感じです。裏面にはコネクタしかなくスッキリしています。コネクタが足になるので、基板が裏面でクリップとかに触れてショートする心配なくて良いかと。

左1/4のあたりが、Stellarsis In-Circuit Debug Interface (ICDI) を構成している部分です。よく見ると、ICDIを構成しているのも中央と同じ型番です。結局、Cortex-M4F (LM4F120)が2個載ってます!

 Micro-BのUSBコネクタは左がICDIのポート、下はマイコンがUSB Deviceになる場合のコネクタです。電源はどちらかのUSBコネクタから供給し、それを左下のスイッチで切り替えます。

 ちなみにICDIのUSBを接続すると、仮想シリアルポートも見えます。これはメインマイコンのUARTに繋がる感じです。デバッガとかと独立にシリアルポートとしても使えるので地味に便利かな~と思ってます。

 開発ツールは複数から選べるようですが(評価期間とか制限とかいろいろ異なる)、私はTIのCode Composer Studio (CCS v5)を使いました。

 定番のLチカをするには次の手順でできました。

1. TIサイトから必要なファイルをダウンロード

  • EK-LM4F120XL-CCS (CCS, StellarisWare, ICDIドライバ等が含まれる)
  • Stellaris LaunchPad Workshopマニュアル
  • Stellaris LaunchPad Workshopファイル
の3つです。合計で約1.3GBになります。
 Workshopのは必須ではないのですが、WorkshopのLabに沿って進めるのが手っ取り早いです。

2. ソフトウェア類のインストール

  • CCSv5 (開発環境)
  • StellarisWare (ライブラリなどが含まれる)
  • Workshopファイル
  • ICDIドライバ
の4つです。上3つはセットアップを実行していくだけです。標準のままだとc:\tiとc:\c:\StellarisWareにインストールされます。

 ICDIドライバは基板をPCに接続して、ドライバを入れていきます。PowerSelectスイッチをDEBUGにして、DBG側のUSBをPCに接続します。Windowsのデバイスには都合、
  • Stellaris Virtual Serial Port
  • Stellaris ICDI DFU Device
  • Stellaris ICDI JTAG/SWD Interface
の3つが出てきます。

3. WorkshopのLab2をする

 実は手順2でだいたいLab1をしたことになるので、Lab2をやります。Lab2がLチカそのものです。

 結局は、
  • CCS起動
  • 空プロジェクト作る
  • main.cを書き換える(コピペ)
  • プロジェクトの設定を追加する
    • StellarisWareのヘッダファイルやビルド済みライブラリを使うようにする感じです
  • 実行する
    • デバッガモードになって、バイナリがマイコンのフラッシュに書き込まれて動き出します
って感じです。

    ZedBoardクロック周り

     前回の投稿でZynqで気になっている点として「クロック周り」を挙げましたが、ドキュメントを調べたり、開発環境をいじってみて分かってきました。

     まず、PS側はチップ外から供給されるクロックで動きます。まぁ普通ですよね(マイコンによっては内部に発振回路持っていたり色々ですが……)。
     PLLが内蔵されていて、CPU、DDR3 I/F、etc. それぞれに色々な周波数を供給することになるみたいです。

     気になっていたのはPL側で使うクロックはどうなるのか?という点です。結局、

    • PS側からのクロック (4系統)
    • チップ外からのクロック供給 (&MMCMブロックでのクロック制御)

    の2種類のようです。
     ZedBoardの場合は、チップ外からPLへは100MHzが供給されています。

     PS側からのクロックはXPSの画面で、ここをクリックすると……

    このようなダイアログが出てきて、設定することができます。

     チップ外からのPLへのクロックについては、これまでのFPGAのように「CORE Generator」で「Clocking Wizard」でMMCME2_ADVやPLLE2_ADVを構成すれば使えるみたいです。

    2012/10/07

    ZedBoard買いました

    Zynq搭載ボードのZedBoardを買いました。
    まだ、買っただけで本格的には触れていませんが……。

    ZynqはXilinxが出した新しいFPGAです。
    が、ただのFPGAではなく、ARM Cortex-A9が搭載されています。
    というより、

    Cortex-A9チップのオンチップペリフェラルにFPGAが載っている

    と思った方が近いみたいです。
    Cortex-A9はデュアルコアでZedBoardでは最大667MHz動作らしいです。

    あとは、

    • 513MByte DDR3
    • 256Mbit QPI Flash
    • SD Card I/F
    • 10/100/1000 Ethernet
    • USB OTG 2.0
    • HDMI Output
    • VGA Output
    • OLED Display
    • FMC

    等々が搭載されています。

    とりあえず気になっているのは

    • クロック周り
    • リセット周り
    • ブート手順
    • プロセッサ側とFPGA側の境界部分

    といったところです。

    他の方と話していて

    • Cortex-A9コアをMMU不使用でOS無しマイコンファームウェアみたいなの実行できるか
    • Cortex-A9のデュアルコアをAMPとして、個別に動かす方法

    というのも気になりだしました。

    MMU不使用というのは、現時点ではマニュアルを確かめられていませんが、
    起動後にMMUを有効化しなければ、物理アドレス空間で動くのでは?と思っています。

    気になっている点、今後、調べて備忘録もかねてブログに書けたらよいかと。