2015年6月7日日曜日

mbed のプロジェクトを Em::Blocks で コンパイル しターゲットに書き込む

オンラインツール ARMmbed で開発(え?笑)したプロジェクトをローカルの HDDにダウンロードしてPC 環境で、コンパイル、ビルドしてターゲットに書き込む。 Gcc 使えます。

オンラインであっけなくできた .bin ファイル。同じソースファイルをもとに PC でコンパイルし同じ結果を得たい。同様のことは先人 va009039 さんがおられ解決済みでしたので、フォローします。 .elf ファイルから .bin ファイルを作る post-process を追加しました。基本はこちらの記事です。本当にありがとうございます。

IAR も Keil も持っていませんから、Em::Blocks が何か調べたところ、とてもよさそうなので使うことにしました。J-link も持っていませんので JTAG デバッグアダプタはまだ正確に設定、確認されていません、それはまた後ほどがんばりましょう < ネットで調べるだけでいけますねー

  • mbed のプロジェクトを Export します。
    商用コンパイラを持っていないので、GCC, CooCox, EmBlocks の選択肢 
  • Em::Blocks をインストールします
    別途 Gcc をインストールする必要も無く、バッテリー同梱。で 40MB?
  • mbed で Export したプロジェクトを Em::Blocks で Import しコンパイル
  1. mbed からプロジェクトを emblocks オプションで export。ダウンロードし zip を展開
  2. EmBlocks から File Open Project では無く Import Project - EmblocksIX で import
  3. リンカーセッティングの変更
    Build option - Linker settings - Libralies にて mbed を上に持ってくるのが大事だそうです。
  4. .bin ファイルを自動生成する post build steps を追記。
    FAQ の How do I create a binary file from the output? に従いコピペします。
    Build option - Pre/post build steps - Post
  5. コンパイル、ビルド で .bin ファイルが \build フォルダにできます。
  • .bin ファイルを ターゲットに書き込み動作を確認
    FRDM-KL25Z の Open-SDA は、昨日書き換えた mbed ファームウェアのままなので、フラッシュドライブ mbed ドライブに .bin ファイルをドロップ。ターゲットをボタンでリセット
  • ソースを変更し、再コンパイル、ビルド、書き込み、リセットすると機能が変わることを確認します。
びっくりです。
面倒なデバイス設定ファイル、ピンファイル等の生成は mbed に任せて自動生成です。しかもそれは行儀良く標準的 なニーモニックに名付けられますから、面倒も無し。


追記 --- 18 June 2015

Em::blocks で FRDM-KL25Z のUSB デバッガの認識は完了していません。
FRDM- USBデバッガは標準のメニューに無いのでマニュアルで設定し認識させないといけないようです。

本来であれば FRDM ボード、もしくは FRDM インターフェース、P&E micro インターフェース か CMSIS-DAP インターフェース と KL25Z ターゲット と選べればよかったのですが、なにやらプロプラエあたりの大人の事情があるみたいです。G 系の人のこういうビーガンベジタリアンみたいな態度にはつくづく... ともあれ、まだ途中なのですが、できる人の助けになればと思い、現状を記録



他集めた情報から、OpenOCD の設定を以下のように設定すると途中までうまくいきました(笑





もうちょっと!

あとは、ターゲット。cfg ファイル内容とか、ターゲットの Reset や Holt のシーケンスをうまくすれば何とかなりそうです。というのも、かたや同じ Gcc ツールチェインを利用する Cross Works がまったく同じファーム、ハードウェアできちっとデバッガを動かしていますから、絶対に何とかなるはずです。



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 の環境を用意してあげるといえば、同僚や友達もいやな顔はしないでしょう。

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