2015年6月6日土曜日

ARMmbed で .cpp を編集 コンパイルして書き込む FRDM-KL25Z

前記事の最後で、FRDM-KL25Z のコンパイルされたデータ .srec ファイルを OpenSDA 経由で書き込みましたが、今回は、ソースからコンパイルしてターゲットのKL25Z に書き込みます。

まだ、どのツールチェインを自分のメインにするか決めかねています。そこで目にしたのが ARMmbed という仕組みでした。悪くなさそうだと思います。オンラインで全部用意されている環境を利用してコンパイルし、ダウンロードした .bin ファイルをオンボードの KL25Z に書き込みます。
この mbed から出力される .bin ファイルを書き込むのに、OpenSDA のファームウェアを mbed 用のファームウェアに書き換える必要があります。


  • ARMmbed の利用開始
  1. ARMmbedにアカウントを作ります
    ログイン名、メイルアドレス、ログイン用パスワードを設定し、自分のアカウントを作ります。
  2. Compiler ページでターゲットプラットフォームを選択します
    FRDM-KL25Z を選択します。この時点で LED 点滅のソースが現れます(!)
  3. コンパイルしてみます。
    コンパイルというボタンがあるので押してみると、mbed_blinky_KL25Z.bin というファイルがダウンロードされます。ちょっと驚きです。
  • OpenSDA ファームウェアの書き換え
  1. ファームウェアをダウンロード
    プラットフォームのページには個々プラットフォーム依存のファームウェアアップデートの方法などが記載されています。ARMmbed FDRM-KL25Z のページからリンクされている  mbed用 OpenSDA のファームウェアをダウンロードします。https://developer.mbed.org/handbook/Firmware-FRDM-KL25Z
    今日の時点で 20140530_k20dx128_kl25z_if_opensda でした。
  2.  ダウンロードしたファイルを展開します。Zip ファイルです。
  3. FRDM-KL25ZをBootload モードで接続し、ファームウェアを更新します。
    基板上の Reset ボタンを押しながら USB SDA側に接続します。LED が点滅したら RESET ボタンを離します。現れた Flash Drive, Bootloader に展開した 20140530_k20dx128_kl25z_if_opensda.s19 ファイルをコピーします。再度接続すると OpenSDA は新しい mbed 用ファームウェアで動きます。
  • 設計変更、再コンパイルと書き込み
  1. はじめのコンパイル済みデータを書き込みます。
    はじめの手順でダウンロードした mbed_blinky_KL25Z.bin を現れた mbed ドライブ、フラッシュドライブにコピーします。
  2. ターゲットをリセットします。リセットボタンを押すと LED が点滅します
  3. ソースを変更しコンパイルします。
    Line 8, Line 10 あたりの wait(0.2); を wait(2.0); あたりに変更して、再度コンパイルボタンを押します。新しい mbed_blinky_KL25Z.bin がダウンロードされます。
  4. ターゲットを書き換えます
    手順 1に戻り、新しくダウンロードした、mbed_blinky_KL25Z.bin をターゲットに書き込み、基板のリセットボタンを押すと、LED の点滅スピードが変わっていることを確認します。

隔世の感がありますね。
ラップトップからプリンターポートが消え、USB経由の GPIO を何とかしようと苦労していましたが。意外なところで解決策に出会えたような気がします。これなら社内で同僚と使ったりもできそうです。 Arduino IF ピンには馴染めませんが、ここまで流行ってしまうと、もう止めようがありません飲むことにしましょう。

この設計データを、オフラインのツールチェインに組み込む手順も用意されているようです。



2015年6月4日木曜日

Linux ディストリビューション 正直 Debian でも

これから Linux をインストールするとすれば、Ubuntu の LTS でおよそ問題ありません。だた、FPGA 開発ツール等商用パッケージを Linux ベースで使いたいとなると RedHut, Suse 等 エンタープライズ系 Linux を利用するほうが便利です。

Python, Embedded ARM, KiCAD, Eclipse もろもろ、どちらでも動きますし、けど Emmbeded Linux OS となると Debian のほうが優勢です。あ、Android とかちょっと別にしてすいません。

ですが、困るのが FPGA 開発ツール等の商用パッケージを Linux で使いたい人。Windows 版がいくらフリーとはいえ Ubuntu のパッケージマネージャに名前が出てくるほどやさしい状況ではありません。

いろいろ勉強する努力を最小限に済ませるという基本方針から、Linux ディストリビューションは選択肢があれば、Debian。デスクトップは Ubuntu LTS、古いラップトップや組み込みに Debian 系があれば、そっちを選びます。

Python 等は、Windows より苦労が少ないので Ubuntu 上で使うのはお勧めです。

でも、普通に社会人をしてて、会社の IT IS 部門の管理者が社内に Linux PC をネットに接続させてくれるかというと、いろいろ面倒です。そのくせ、IT 求人には Linux 使える人みたいな求人もある世の中の矛盾。こまったものです。が、まぁ、なんとか生きていきましょう。

2015年6月3日水曜日

Freescale FRDM 評価基板 の Open SDA 周り

USB から ARM プロセッサに接続される OpenSDA 部分は、FPGA で言うところの USB-JTAG アダプタ、USBコンフィグPROM ライタに相当する物のようです。JTAG サポートについては、まだ二の次扱いのようで、SDA シリアルアダプタ としてがんばっているようです。SWD とも言われるモードだと思われます。

Freescale の FRDM 評価基板の OpenSDA 部分について、一応礼儀正しくドライバ、ファームウェアの更新から、コンパイル済み PreCompiled データをターゲットに書き込むあたりのことをしてみます。

  • Open SDA ファームウェアとアプリケーションのアップデート P&E Micro から


  1. 最新の FRDM 用 OpenSDA ファームウェアを P&E Micro からダウンロードします
    P&E Micro にメイルアドレスとログイン用パスワードを登録してユーザアカウントを作ります。
  2. FRDM 評価基板を USB SDA側 で接続します。
  3. ファームウェアのバージョンを確認するとともに、最新のファームウェアを P&E Micro からダウンロード 展開します。
    接続した SDA のフラッシュドライブイメージにある SDA_INFO.HTM をブラウザで開きます。
    Firmware Apps のリンクをたどります。P&E Micro のサイトに ログインして、ファイルをダウンロードし、展開します。 今日のファイルは、Pemicro_OpenSDA_Debug_MSD_Update_Apps_2015_03_12.zip でした。ドライバーフォルダは展開してもまだ .Zip なのでこれも展開します。SDA 関連のファームは、拡張子 .sda のようです。  
  4. OpenSDA部分のプロセッサは、カーネル、ブートローダ、アプリケーションという構成のようです。ブートローダとアプリケーションを最新のものに更新します。スクリーンショットは、試行錯誤中の中途半端なバージョン。購入後の評価基板の SDA ファームウェアの状態は、ブートローダ、アプリケーションとも Ver. 1.09 でした。
  5. 評価基板を SDA Boot mode で接続します。
    基板上のリセットボタンを押しながら、USB ケーブルを USB SDA 側コネクタに挿入すると SDA パートそばの LED が点滅(ブートモード)になります。Reset ボタンは離してよいです。今回は フラッシュドライブイメージの フォルダ名が “BOOTLOADER” になっています。
  6. 最新の Bootloader ファームウェアをフラッシュドライバイメージのドライブにコピーします。
    展開したフォルダ OpenSDA_Bootloader_Update_App_v111_2013_12_11 の BOOTUPDATEAPP_Pemicro_v111.SDA ファイルを フラッシュドライブ(評価基板のドライブ)にコピーします。
  7. 評価基板を再度接続します。
    行儀良く、ドライブ 取り出し を行ってケーブルを再接続します。USB SDA ポート
    ドライバを更新すると、アプリケーションは削除というか、無効になり、ボード上の RESET ボタンを押していないのに(アプリケーションが無いので?)Bootloader モードで起動します。
  8. 最新のアプリケーションをコピーします。
    “BOOTLOADER” に MSD-DEBUG-FRDM-KL25Z_Pemicro_v114.SDA をコピーします。
  9. 評価基板を切り離し再度接続します。
    行儀良く、ドライブ 取り出し を行ってケーブルを再接続します。 USB SDAポート
  10. bootloarder と アプリケーションが更新されていることを確認します。
    接続した SDA のフラッシュドライブイメージにある SDA_INFO.HTM をブラウザで開きます。
    BootLoarder が 1.11 アプリケーションが 1.14 の更新されています。
これでお作法どおり、買ってきた評価基板の OpenSDA 部分のファームウェアの類を最新の状態に更新した、ということになります。

  • ターゲット コントローラ KL25Z のプログラムの書き換え Freescale から
  1. 評価基板のコンパイル済みデータをダウンロードします。
    FRDM-KL25Z Quick start package をダウンロードして展開します。
  2. コンパイル済みデータを評価基板に書き込みます。
    PreCompiledExamples の .srec ファイルを 評価基板のフラッシュドライブにドラッグアンドドロップするとデータが転送されているようです。フラッシュに書き込まれているのでしょう。電源落としても平気です。 FRDM_KL25Z_OOBE_Demo.srec が出荷時に書き込まれているイメージのようです。
  3. どんどんファイルをドラッグ&ドロップして機能が変わることを確認します。
さて、この .srec ファイルをどうやって生成するのでしょうか。。。。 笑
あと ちらっと CMSIS-DAP_OpenSDA.S19  というファイルを見かけました。うーん一体どうつながるんでしょう?試してみます。.s19 ってなに?
SDA アプリケーションのファイル名はどうももともと MassStrageDevice フラッシュプログラマ というアプリケーションと P&E デバッグというアプリケーションがあったのが一緒になったのかな?古いファイル見るとそういう構成のようです。
この状態で、シリアルポートがひとつ Open SDA  CDC - Serial Port (COM *) というのがありました。
この構成でターゲット側のフラッシュの書き換えにも成功しました。


Quartus II でデフォルトの verilog 設計データをコンパイルして書き込む

前記事では  Cyclone II FPGA Starter Development Kit の用意された .sof .pof ファイルをスタンドアロン プログラマソフトで書き込んだだけでしたが今回は、設計データの verilog ソースを、少し編集して、コンパイルして .sof .pof ファイルを生成し、Quartus II からデバイスに書き込みます。

DK-CYCII-2C20N : Cyclone II FPGA Starter Development Kit 評価基板
Quartus II ソフトウェア
\CSK_demonstrations\CSK_Default デフォルトプロジェクトの設計ファイル 

添付の CD-ROM に入っている設計ファイルをローカルの HDD にコピーして Quartus II ソフトウェアで、デフォルトで評価ボードに書き込まれているプロジェクトを開き。verilog ソースを編集し、デモ基板で点灯して動いている緑の LED を 3つから 4つにします。 verilog ファイルを保存し、Quartus II ソフトウェアで、コンパイルし、Quartus II ソフトウェアから評価基板上の FPGA に書き込みます。


  1. 設計ファイルをローカルの HDD にコピー
    添付 CD-ROM の \CSK_demonstrations\CSK_Default フォルダを C: にコピー
  2. 評価基板を接続します。
  3. Quartus II ソフトウェアで CSK_Default プロジェクトを開く。
    File, Open project
    CSK_Default.qpf を開く
  4. LEDG_Driver.v を開く
    Project Navigator - Window
    Files - Tab
    LEDG_Driver.v をクリック
  5. LEDG_Driver.v を編集
    Line16 mLED <= 8'b00000111;

    Line16 // mLED <= 8'b00000111; コメントアウトして 1 を 4つに
    Line17 mLED <= 8'b00001111;
  6. LEDG_Driver.v を保存
  7. プロジェクトをコンパイル
    Processing, Start Compilation  紫の右矢印
  8. Quartus II 内部のプログラマを起動
    Tools, Programmer  ICにケーブルのアイコン
  9.  プログラミングケーブルを選択
    Programmer - Window の Hardwere Setup ボタン
    Currently Selected Hardware を USB-Blaster に
  10. Mode の選択
    FPGA に直接書き込む場合は Mode: 
    JTAG で File: CSK_Default.sof
    PROM に書き込む場合は Mode: Active Serial Programming で File CSK_Default.pof
     
  11. デバイスへの書きこみ
    Start 青右矢印 ケーブルアイコン
  12. デモの内容が変更されていることを確認します。
    右側、3個流れて点灯していた LED が 4個になっています。 KEY0 を押して確認

2015年6月2日火曜日

Altera Stand-Alone Programmer でデバイスへの書き込み

評価基板デフォルトのプログラム内容を上書きします。設計済みの機能を書き込むだけです。
Quartus II ではなく、スタンドアロンプログラマで、.sof .pof ファイルをデバイスに書き込みます。Quartus II から書き込んでもかまいません。

DK-CYCII-2C20N : Cyclone II FPGA Starter Development Kit (評価ボード)
12.1_177_programmer_windows.exe (プログラマセットアップ用実行ファイル、ALTERA)
CSK_Default.sof
CSK_Default.pof
CSK_i2sound.sof
CSK_i2sound.pof 等、評価ボード用にコンパイルされたデータ。

.sof と .pof の違い。Lattice の XO2-7000HE はコンフィグROMも内臓のデバイスでしたので JEDEC ファイルを書き込むだけでした。Altera の Cyclone II はコンフィグROM が外付けの 標準的な FPGA です。コンパイル終了後デバイスに書き込むファイルは、.sof ファイルと .pof ファイルの 2種類があります。JTAG経由でデバイスに直接書き込む場合は、.sof ファイルを使います。コンフィグROM に書き込む場合は .pof を利用します。
.sof で直接デバイスに書き込むと、動作中に機能を変更できますが、電源を落とすと FPGA の変更内容は失われます。システムで、自分ひとりのために電源を落とせないような状況では、こういう方法も便利です。
評価基板には、RUN/PROG スイッチがついており、RUN の位置では、デバイスに直接書き込み .sof でFPGA の内容を変更できます。コンフィグROM に書き込む場合には PROG の位置 で .pof の内容を コンフィグROM に書き込みます。
  • Quartus II Stand-Alone Programmer のインストール
Altera のサイトから Stand-Alone Programmer をダウンロードしインストールします。Quartus II から、開発しそのまま書き込む場合にはこのソフトウェアは不要ですが、誰か人に書き込みを頼むような場合には、フルセットの Quartus II をインストールするより気軽です。ライセンスファイルは不要です。
12.1_177_programmer_windows.exe
インストール後はじめの1回だけ、プログラミングハードウェアのセットアップを行います。左上の Hardware Setup ボタンです。USB-Blaster を選択します。
電源を入れた評価基板を接続し、Auto Detect を実行しデバイスが認識されるか確認します。
とりあえず下のデバイスを選んでおきます。これは簡単なソフトウェア、ドライバー等の機能確認が目的で、書き込みのための手順ではありません。

  • FPGA に直接書き込み .sof ファイルを用いて直接書き込み 
評価基板の電源 ON の状態で コンフィグレーションスイッチを RUN の位置に、FPGA の内容を JTAG で直接変更します。
  1. Stand-Alone Programmer を再起動します。
    Stand-Alone Programmer を一度終了させ。再度実行します。デバイスが何も検出、選択されていない状態からはじめます。 Mode は JTAG mode です。Auto Detect で検出されたデバイスを手動で Delete してもかまいません。
  2. ファイルを選択し追加しますAdd file ボタンで、\CSK_demonstrations\CSK_Default の CSK_Default.sof を選択します。
  3. Start で FPGA にデータが書き込まれます。
デモボード用に用意されている、いろいろな .SOF ファイルを選んで書き込み、機能が変わることを確かめます。そして、この方法で変更した内容は、コンフィグROM には書き込まれていないので。電源を一度落とすと、FPGAの機能は、もともとコンフィグROM に書き込まれている内容に戻ります。

  • コンフィグROM への書き込み .pof ファイルを用いてコンフィグROM の内容を変更
評価基板の電源 OFF の状態で コンフィグレーションスイッチを PROG の位置にして 電源をON にします。コンフィグROM の内容を .POF ファイルで変更します。
  1. Stand-Alone Programmer を再起動します。
    Stand-Alone Programmer を一度終了させ。再度実行します。デバイスが何も検出、選択されていない状態からはじめます。 バイスを手動で Delete してもかまいません。Mode を Active Serial Programming に変更します。
  2. ファイルを選択し追加しますAdd file ボタンで、\CSK_demonstrations\CSK_Default の CSK_Default.pof を選択します。デバイスが ROM の型番号 EPSC4 に変わっています。
  3. Program/Configure [] にチェックを入れます。 

  4. Start で コンフィグROM、 EPSC4 にデータが書き込まれます。
  5. 電源を OFF、スイッチを RUN の位置に戻し、電源を ON して、機能を確認します。
デモボード用に用意されている、いろいろな .POF ファイルを選んで ROMに書き込み、電源を再投入すると、機能が変わることを確かめます。そして、この方法で変更した内容は、コンフィグROM に書き込まれているので何度電源を落としても更新された内容は変わりません。


Python3 で解析する環境 Numpy と matplotlib

Python3 + Ipython の環境の上に SciPy の一部 Numpy と matplotlib をインストールします。これで Excel や 基本の Matlab 程度のことができるようになります。

会社や学校で、同僚や一緒に作業をする人のPC にPyhton をセットアップするとき。基本のPython と追加に必要なファイルを USB フラッシュなどに用意しておくとバージョンがどうのとか、コンパイラをインストールしてとか、わずらわしい作業を減らせます。一時期これができなくなって困っていましたが、最近 Pyreadline あたりの問題が解決して Windows 環境でも、前のように小回りが利くようになりました。

  • pip3.4 で直下にあるコンパイル済み .whl ファイルを直接指定してパッケージをインストール
  1. 自分の Python (2/3) WIndows (x86 32bit / AMD 64bit)に適したコンパイル済み .whl ファイルを Unofficial Windows Binaries for Python Extension Packages からダウンロードし C:\Python3.4\Scripts フォルダにコピーする。
    numpy-1.9.2+mkl-cp34-none-win_amd64.whl
    matplotlib-1.4.3-cp34-none-win_amd64.whl
  2. 管理者モードで コマンドウィンドウを開き (cmd.exe) C:\Python3.4\Scripts にて pip3.4 にて直下にある .whl ファイルを指定して、パッケージをインストール。
    C:\Python3.4\Scripts にて
    pip3.4 install numpy-1.9.2+mkl-cp34-none-win_amd64.whl を実行
    pip3.4 install matplotlib-1.4.3-cp34-none-win_amd64.whl を実行
     
  3. ipython3 を実行して モジュールがインストールされていることを確認する。

iPython もこの方法でインストールできます。
pip3.4 install ipython でインストールしましたが、その代わりに
ipython-3.1.0-py3-none-any.whl を入手し、ローカルで
pip3.4 install ipython-3.1.0-py3-none-any.whl と実行してもよいです。

この手順、 Python3.4 と Pyreadline を実行型バイナリ形式でインストール、IPython, Numpy, matplotlib をコンパイル済み .whl を PIP でインストールする場合。必要なファイルは、5つで 容量は 60MB  ほどです。Notepad++ インストーラが数MBです。

展開後の Python34 フォルダも 250MB 程ですから、これで Python の環境を用意してあげるといえば、同僚や友達もいやな顔はしないでしょう。

もっと上品でエレガントなやり方はいくらでもありますが、まぁ。



2015年6月1日月曜日

Python3 iPython と Notepad++ 基本環境

Python3 と iPython による開発環境設定と エディタ Notepad++

Wondows7-64Bit に Python3 環境を作ります。現時点でいくつかのモジュールが Python3 に対応していませんが、解析環境を Scipy なしで、Numpy と matplotlib を使うだけなら、今からでも Python3 に移行できます。
Test & Measurement 環境では、Pyserial PyUSB-FTDI が Python2 で止まっているので目的に応じて使い分ける状態です。Scipy だけでなく PysqLite 等も早めに対応していただきたいものです。

IPython はインタラクティブパイソンと呼ばれる環境です。標準の IDEL がいやになってPython をやめてしまう開発者も多いと思います。IPython こそ標準にしていただきたいものです。


  • Python3 と IPthon のインストール

  1. Python3 のインストール 
    普通にバイナリパッケージからインストールします。今日は python-3.4.3.amd64.msi をダウンロードして実行します。64 bit 環境の方は探してインストールしないと、32 bit がセットアップされてしまいます。
  2. Pyreadline のインストール
    Windows で IPython を利用するには、Pyreadline が必要です。コマンドラインをカラーにする追加パッケージみたいなものだと思います。話を簡単にするためにバイナリパッケージを実行してインストールします。今日は pyreadline-2.0.win-amd64.exe
  3. IPython のインストール
    コマンドライン c:\python34\scripts にて pip3.4 install ipython を実行します。これは、馬鹿にしているわけではなく、CMD(管理者)で PIPのあるディレクトリ C:\Python34\Scripts に移動してそこで PIP を実行するということです。特に、Python2 Python3 の両方を使う方は、Path 切るよりその都度目的のディレクトリに移動する癖をつけるほうが間違いないと思います。
  4. Notepad++ の設定
    最近のバージョンではデフォルトになったのでしょうか? Tab を 4 Space に置き換えます。
      • IPython の実行
        C:\Python34\Scripts\ipython3.exe を実行します、ショートカットをデスクトップにおいてもいいですし、なにか設定スクリプトを実行すると Windows メニューにも出てくるようになります。多分。。。
      • IPython で覚えるべきコマンド
      1. Bookmark コマンド
        Bookmark で良く使うワーキングディレクトリのトップに移動し、作業対象のフォルダに降りる
      2. Run コマンド
        そこでトップレベルの main.py 等を実行する
        run main.py
      3. Unix シェルコマンド使えます。


      簡単なデバッグ
      Notepad++ 等ファイルのパーミッションを奪わないエディタで編集、保存、IPython で実行、確認。を繰り返します。対象データ、結果の出力。実行する Python Script 等プロジェクトに関連するすべてのファイルをワーキングディレクトリにまとめて保存しておく癖をつけておくとなにかと便利です。