2010年4月29日木曜日

SH-2A基板用HEWモニタプログラムを外付けシリアル・フラッシュROMに書き込む。



手持ちのシリアル・フラッシュROM(M25P40 512Kバイト)を SH-2A基板(Interface 2010.06付属)のブート用に使いたいと思い、HEWモニタプログラムの書き込みに挑戦しました。











概要

SH-2Aマイコン基板実装SPIシリアル接続フラッシュROM アップデート・ファイル
[アップデートプログラム(SPIwriterAll) ]==(SPI Ch0)==> [基板上のシリアル・フラッシュROM(M25P05-A)]

[アップデートプログラム(SPIwriterAll)改 ]==(SPI Ch1)==> [外付けシリアル・フラッシュROM(M25P40)]
に改造


手順

 1.Interface誌 Webサイトの
   [付属SH-2A基板特設ページ]/[付属SH-2A基板関連のダウンロード・データ]/[付属SH-2Aマイコン基板回路図などをアップロードしました]
    で SH-2Aマイコン基板実装SPIシリアル接続フラッシュROM アップデート・ファイル(2010年4月24日版)
      で ROM_UpDate0424.zip を取得した。

 2.アップデートファイルの解析。
   内容: アップデートプログラム(SPIwriterAll) +  HEW モニタプログラム(書き込みデータ) の構成
  1)アップデートプログラム(SPIwriterAll / main.c)
   ポインタ 0x1C080000 以降のデータをSPI Ch0 のシリアル・フラッシュROMのアドレス 0x00000000 以降に 64Kバイト書き込む。
  2)ポインタ 0x1C080000 について。
    アップデートプログラム(SPIwriterAll)のリンクマップ(SPIwriterAll.map)をみる、マッピングリスト末尾は 1c07ffff となっている。  
     ==> これが、main.cでの HEW モニタプログラム のポインタ 0x1C080000 の 起源?
 (デバッグでの注意点)
     ==> main.cでの HEW モニタプログラム のポインタ(0x1C080000)と HEW ダウンロードモジュールのオフセット設定と、が一致していること。 

 3.アップデートプログラムの改造
  1)フォルダ ROM_Update を ROM_Createに複写 これ以降 ROM_Createでの作業
  2)プログラムソース(serial_flash.c)の修正
    SPI Ch0を Ch1に置き換える。 
   ①関数 io_init_rspi(void) の修正
    ・ポートレジスタの設定 SPI Ch1 用に
     PG20:MISO1 PG19:MOSI PG18:SSL10 PG17:PSPCK1
    ・SPI CH1レジスタの稼動
     スタンバイコントロールレジスタ5のMSTP50(SPI Ch1用)に0設定
    ・SPI Ch1レジスタの設定
     SPI Ch0に対応する一連のレジスタ群用に宣言された構造体RSPI0の使用をCh1用のRSPI1に変更
   ②関数 io_cmd_exe() の修正
    ・SPI Ch1レジスタの設定
   ③関数 io_cmd_exe_rdmode()の修正
    ・SPI Ch1レジスタの設定
   ④関数 io_cmd_exe_rdmode_cpu_l()の修正
    ・SPI Ch1レジスタの設定
   ⑤関数 io_cmd_exe_rdmode_dma_l()の修正
    ・SPI Ch1レジスタの設定
    ・DMAの設定 
      DMA 拡張リソースセレクタ0 の設定 0x52 を 0x56 (DMAC Ch0のMIDの変更)
      DMA ソースアドレスレジスタの設定 SPI Ch0のデータレジスタ(RSPI0.SPDR.BYTE)のポインタをSPI Ch1のデータレジスタ(RSPI1.SPDR.BYTE)のポインタに変更
   ⑥関数 io_wait_tx_end() の修正
    ・SPI Ch1レジスタの設定

  3)ヘッダーファイル serial_flah.hの修正
    M25P05-AとM25P40の差分を反映させました。
    ・セクタサイズ 0x8000を0x10000に
    ・セクタ数 2を8に

  4)HEWでビルドする。

 4.シリアル・フラッシュROM M25P40(512Kバイト)の接続
   付属SH-2A基板 CN3 Pin 21,22,23,33(SPI Ch1)に M25P40 を接続

 5.HEW モニタプログラムの書き込み。

 6.書き込んだシリアル・フラッシュROMを SPI Ch0に繋ぎ直す。
   付属SH-2A基板 CN3 Pin 36,37,38,40 (SPI Ch0)に M25P40 を接続

 7.外部フラッシュメモリによるブート設定
   付属SH-2A基板  JP16パターンカット

 8.HEWモニタプログラムの動作検証
  1)付属SH-2A基板のデモプログラム
    どうも、フラッシュメモリに書き込んだデータに基板上のシリアル・フラッシュROMと同じLED点滅のデモプログラムが書かれているようで、JPP2ショートで、リセット後に基板上のLEDの点滅が始まる。
    念のため、外付けROMを外すと、動かない(LED点滅しない)
  2)HEWでの確認
    Interface誌のサンプルプログラム SH7262_LED のホルダをコピーし、HEWで若干の変更を行った
    (変更内容 ポートBの20,21,22ピン(bit)にそれぞれLEDを接続し、付属基板上のLEDと交互に点滅させる。)
    ビルドし、ダウンロードし、プログラムの動作を確認しました。

※とりあえず、これで、付属SH-2A基板上のシリアル・フラッシュROM(M25P05-A)が潰れても何とかなりそうです。

---以降 HEW開発メモ---
1.割り込み優先レベル15は使えない。
resetprg.c の #define SR_Init 0x000000F0
を#define SR_Init 0x000000E0に修正する必要 (Interface2010.6 P105 ●ステータスレジスタの初期値設定)
(HEWモニタが割り込みを使用しているため。ユーザープログラムで割り込み優先レベル15は使えない。)

2.セクションの設定
 1)スタックサイズ、スタックポインタ  stacksct.h で設定。 スタックサイズ設定値:H'FA00
スタックポインタの設定ファイル 不明
(HEWでは、[プロジェクト]/[構成の編集]/[スタック]

3.HEWでのアプリケーション開発を、既存のプロジェクトのフォルダをコピーして行う場合。一旦「ダウンロードモジュール」を削除し、再登録しなおしたほうがよい。
 Interface2010.6 第3章「開発ツールHEWの使い方。。。」(P109)での「ダウンロードモジュール」の追加で$(CONFIGDIR)\(PROJECTNAME)を使えば問題ないのですが、どうやら「参照」を使って「ダウンロードモジュール」が設定されていた場合、元フォルダのプログラムをダウンロードすることになります。
 (いくら修正しても”元のまま”ということになります。)

2010年4月27日火曜日

HEWと付属SH-2A基板の接続

CQ出版Interface誌(2010.6)付属基板が、ようやくHEWから認識できるようになったので、その要点を以下にまとめます。

1.構成
[[PC側]][HEW][シリアル接続HEWモニタ](SH2A_VcomINF)==(USB接続)==[HEWモニタプログラム][ユーザープログラム][[付属基板側]]

HEW:shv9302_ev.exe
シリアル接続HEWモニタ:HEWmonitor.zip 
SH2A_VcomINF(付属SH-2Aマイコン基盤用仮想シリアル・ドライバ):SH2A_VcomINF.zip
(5/3)

2.PCで属SH-2A基板は、COM1~COM9の範囲で認識させる。
  シリアルHEWモニターは、10番を超えるCOMポートには対応できません。・・・(Interface2010.6 P100 コラム1)
3.USBケーブルはPC本体に繋ぐ
  パソコン本体のUSBポートを使って下さい。・・・(Interface2010.6 P100 コラム1)

Interface誌Webサイトからダウンロードした、LEDチカチカのサンプルプロジェクト(Interface_Sample.zip)をHEWで開けると、「デバイスドライバが見つからないか、接続をキャンセルしましたSH-2A Serial Moniter」のエラーメッセージが表示され、付属SH-2A基板との接続に失敗しました。

さて接続エラーの対処を以下に記します。

1.PCのシリアルポートを確認
[コントロールパネル]/[管理ツール]/[コンピュータの管理]/[デバイスマネージャ]
ポート(COMとLPT)のエントリを確認すると、[USB SerialPorts Driver(COM18)]で更に、そのエントリのプロパティを確認すると、COM1、COM3~COM17が使用中([ポートの設定]/[詳細設定])となっていた(少々驚き)でCOM3が実際に使用されていないのを確認し、付録SH-2Aを強制的にCOM3に割り当てた。
==>まだ接続失敗 

2.USBケーブルを本体に繋ぎなおす。
==>まだ接続失敗

3.Interface(2010.6)の「開発ツールHEWの使い方とサンプル・プログラムの作り方」(第3章)の 「2.プロジェクト構築」以降を実行。
★この段階で初めてPCに「シリアル接続HEWモニタ」をインストール(HEW アドミニストレーションでの登録)する必要があることを知る。
==>ようやくHEWが付属SH-2A基板に繋がった。

4.ついでに、「Appendix3 シリアル・フラッシュROMのアップデート手順」を実行。
「SPIwriterAll.absとSPIROM.BINの付録SH-2A基板へのダウンロード」
  これらのファイルを一ずつダウンロード。
「リセットを実行(図Aの②のボタンをクリック)して」
 PC(プログラムカウンタ)1C000800、R15(スタックポインタ)1C080000にならなかった。
 *付属基板フラッシュROMが潰れるのを覚悟で、プログラムの実行(図Aの④)ボタンをクリックした。
  数度のクリックで、PC:1C000800、R15:1C080000になった。
  ・・ほっとした。
  プログラムの実行(図Aの④)ボタンをクリックした。
  ==>HEWモニタプログラムの書き換えが始まった。少し待つと基板のLEDの点滅が始まった。(書き換え成功)


確認) 一応 LEDチカチカのサンプルプロジェクトをHEWで開け、付属SH-2A基板にプログラムをダウンロード、デバックを試しました。==>上手くいくようです。


<<注意>>この作業は、フラッシュROMをつぶしてしまう可能性があるので、実行に際しては、Interface誌を熟読のうえ、慎重に行って下さい。上記記事の内容に責任は持てません、ご容赦願います。

5.Windows7でのメモ(5/3)
※Windows7(Home Premium 32bit)でHEWのインストール
 付属SH-2A基板をUSBで繋いだ際に、Windowsで、新しいデバイスの認識が出来なかった。
 Windowsのデバイスマネージャでは不明のデバイスとして表示されていました。
 この、不明のデバイスのドライバのインストール作業が必要 (SH2A_VcomINFを使用)
(忘れがち)

2010年4月25日日曜日

Interface 2010.06(付属基板付き)

ようやくInterface誌が、手元に届きました(4/23)。早速付属基板の解説ページを繰りました。

1.不満な点
まず、搭載シリアルフラッシュメモリの確認、Numoryx(STマイクロ) M25P05-Aとある、「エ!」 M25P05-A、M25P05-A、M25P05-A、M25P05-A。。。。
不安を抱えながら読み進む。512Kビット!!、(64Kバイト)!!、さらに、後半32Kバイトはユーザー用として使う、、、!!
 アマチュアレベルの私にとって、かなりショックキングな内容が明らかになってきました。
昨年のARM7付属基板でLEDチカチカのプログラムサイズが34Kバイト(コンパイル等のオプションで小さくなるかも知れないのですが)
同誌の「CPU内臓LCDコントローラを使った...(第6章)」の記事の内容がこの基板で実現出来るのか!!!

2.納得な点
 ・とにかくSH-2A搭載がうれしい。またその充実した能力もうれしい。
 ・昨年のARM7付属基板と同様拡張コネクタが40Pin×3Chあり、さらに10Pinが1Ch追加で搭載されています。SH7262(SH-2A)の全てCPUピンが使用可能となっていることです。
(PA0~PA3は使えないようですが。)

3.不満な点 その2
 1)SH7262(SH-2A)に対して、
   ・SPI(ルネサスシリアルペリフェラルインタフェース)のチャネル1と、ビデオディスプレイコントローラ3のCPUピンが重なっている。
 2)付録基板に対して、
   ・拡張コネクタの位置、
     CN1,CN2の位置は入れ替わったほうが良さそう。

4.さて、どうしよう
 案1 昨年のInterface(ARM7付属基板 号)を買い足す。
 案2 SH7262のブートモードをNANDフラッシュROMにする。
    ①LPC2388等でNANDフラッシュにプログラムを書き込み、このNANDフラッシュを使い、、、
 案3 シリアルフラッシュメモリを外部につなげる。
    今手元に、シリアルフラッシュメモリM25P40がありこれを使う。
    (雑誌で紹介された、(株)アルファプロジェクト HJ-LINK/USB Debugger for SH7262を使う)
 案3-2 シリアルフラッシュメモリを外部につなげる。
    基板上のHEW モニタプログラムを、大容量のシリアルフラッシュメモリに複写する。

昨年のARM7付属基板の時は、IARの開発ツールの限定に不満を持ち、GNU GCCによる開発環境の整備に四苦八苦、今年は、搭載シリアルフラッシュメモリの容量”小”で、てこずりそうです。

2007年のV850付属基板と比較すると、Interface誌の付属基板の企画はアマチュアにとって年々高度になっているように思います。

Interfaceの編集部各スタッフのスキルUPに私が追いつけなくなってきているだけかもしれません。

Interface編集部には、この付録基板のフォローを厚くして頂くことを希望します。

2010年4月23日金曜日

Interface 2010.06(付属基板付き)発売前夜

いよいよ、今週末、CQ出版 Interface誌(付属基板付き)が発売となります。

この基板には、マイクロコントローラして、ルネサスSH-2Aが搭載されます。
同誌の付録基板(旧NECエレV850)でマイコンデビューし、STM32、78K、LPC2388のプログラム作成にトライしてきた私としては、SH2付録基板は、入手し損ねた幻の基板という位置付けです。

本年当初には、Interface 増刊として液晶マイコン基板付きの雑誌が発行され、トランジスタ技術でも、ルネサスH8基板が付いた増刊が発行されたりしたことから、今年の同誌付録基板企画は無いのではと諦めていました。
ところが、2月下旬ごろ、同誌の予告で今年の基板は、「ルネサスSH-2A」と知り、さらにその性能が桁外れに優れたものであることを知り同誌の発売を心待ちにするようになりました。
また、併せて、SH2Aの下調べを行い、その内容を以下に述べます。

1.資料等の入手
 1)ルネサスエレクトロニクスWebサイトより。
   「ホーム / 製品 / マイクロコンピュータ / SuperH RISC engine ファミリ / SH7260 シリーズ / SH7262, SH7264 グループ / 」

   ・SH7262グループ、SH7264グループハードウェアマニュアル
   ・アプリケーションノート サンプルコード 
     ルネサス エレクトロニクス(株)の「MY RENESAS」というアカウント登録が必要
     サンプルコードとして、「ビデオディスプレイコントローラ3 映像表示例」等を入手
 2)SHのサンプルコードを入手
   各Webサイトより、SH772x、SH7144のサンプルコードを入手

2.SH-2Aの特徴
 あくまでも、趣味レベルの感想ですので、思い違いもあるかと思います。ご容赦願います。

 1)[iodefine.h] によるレジスタ定義
  9.2Kステップを超える巨大なヘッダーファイルにSHのレジスタの定義情報が各機能ごとに格納されています。
  ARM系のマイコンとの比較になりますが、SHのレジスタのコーディング上の扱い。

         |<ARM_系>         |<SH系>          |
=========+==============+==============+
レジスタ定義   |ポインタ(アドレス指定)  |構造体           |
---------+--------------+--------------+
レジスタ設定   |ビットビットパターンで設定 |構造体メンバーで設定    |
---------+--------------+--------------+
レジスタサイズ  |ほとんど32(16)ビット    |08,16,32ビットが混在    |
---------+--------------+--------------+


  例 UART(シリアル通信)Rx端子設定

   ①ARM系
     コーディング PINSEL1 &= 0xFFFFFFFC;
            PINSEL1 |= 0x00000001;
         PINSEL1:汎用入出力の機能選択レジスタ 対象ポート0の16~31番ピンが対象
         ポート0の16番ピンはPINSEL1の0-1bitで機能選択
         まずピットパターン(マスクパターン)ANDでレジスタの該当ビットをクリア
         機能1選択用のビットパターン ORでレジスタの該当ビットを設定

-----------------LPC23xx.h---------------------------------------
#define PINSEL_BASE_ADDR 0xE002C000
#define PINSEL1 (*(volatile unsigned long *)(PINSEL_BASE_ADDR + 0x04))
....汎用入出力の機能選択レジスタのアドレス(ポインタ)
------------------------------------------------------------------

   ②SH系
      コーディング  PORT.PGCR3.BIT.PG12MD = 4;
        PORT:汎用入出力の構造体
        PGCR3:ポートG コントロールレジスタ3を定義する構造体
        PG12MD:ポートG 12番ピンの設定ビット
        4:機能 [RxD1]を 選択

-----------------iodefine.h---------------------------------------
#define PORT (*(volatile struct st_gpio *)0xFFFE3812) 
.....汎用入出力の構造体宣言 (宣言の代替といったほうがよいかも!)
struct st_gpio {                /* PGCR3    */
    union {                 /* PAIOR0    */
       _UWORD WORD;            /* Word Access */
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    union {                 /*    */
       _UWORD WORD;            /* Word Access */
       struct {              /* Byte Access */
          _UBYTE H;          /*  High    */
          _UBYTE L;          /*  Low    */
          } BYTE;           /*       */
       struct {              /* Bit Access */
          _UBYTE :1;         /*       */
          _UBYTE PG15MD:3;      /*  PG15MD   */
          _UBYTE :1;         /*       */
          _UBYTE PG14MD:3;      /*  PG14MD   */
          _UBYTE :1;         /*       */
          _UBYTE PG13MD:3;      /*  PG13MD   */
          _UBYTE :1;         /*       */
          _UBYTE PG12MD:3;      /*  PG12MD   */
          } BIT;           /*       */
       } PGCR3;              /*       */

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
--------------------------------------------------------------------

 2)マニュアル上の独特機能表現
   マニュアル上に、ルネサス独特の以下のような表現があり、戸惑いを覚えました。
   ①UARTを使おうとすると、FIFO 内蔵シリアルコミュニケーションインタフェースを利用
   ②SPIを使おうとすると、ルネサスシリアルペリフェラルインタフェースを利用
   ③タイマを使おうとすると、マルチファンクションタイマパルスユニット2または、コンペアマッチタイマを利用


3.開発環境の整備
 開発環境としてHewがあるが、無料版の制限次第で、GNUの環境を整えました。
 1)GNUの開発環境を整備
   ・KPIT(Webサイトには、ルネサスのパートナーと表記)からSHの開発環境(GNU)をダウンロード
    開発環境は、 GNUSHv1001-ELF.exe というインストールプログラムで提供されます。
インストール実行でGNU GCCの環境、newlib、binutils等の環境が整うようです。
    注意点)KPITに対し、ユーザー登録が必要であり、平日(営業日)に行う必要がある。私は休日にユーザー登録を行ったため、当日、パスワードが発行されず、後日営業日にパスワード発行のメールを受け取った。
   ・各ツールにパスを通す。
     インストール先をデフォルトのままにしたので、以下のパスをWindowsの環境変数PATHに追加した。
     C:\Program Files (x86)\KPIT Cummins\GNUSHv10.01-ELF\sh-elf\bin
     C:\Program Files (x86)\KPIT Cummins\GNUSHv10.01-ELF\sh-elf\sh-elf\bin
     C:\Program Files (x86)\KPIT Cummins\GNUSHv10.01-ELF\sh-elf\libexec\gcc\sh-elf\4.4-GNUSH_v10.01
    以前のARM系の開発環境の整備では、Cygwinのカレントディレクトリの.bash_profileで PATH=/usr/local/arm-tools/bin:${PATH}を追加してPATHの設定を行った。
    Windowsの環境変数でも可能だと言うことを認識しました。

 2)Cygwinはインストール済み

 3)Eclipseのインストール
   ①EclipseのWebサイトより統合開発環境として、Eclipseをダウンロード( Eclipse IDE for C/C++ Developers (79 MB) )
   ②eclipse-cpp-galileo-SR2-win32.zip を展開 ホルダeclipseをC:\にコピー
   ③「Select a workspace」で C:\Embedded\SH_2A\Project_Eclipse(任意)を指定
   ④「Welcome to the Eclipse IDE for C/C++ Developers」で メニュー Help/Install New Software
   ⑤「Availabe Software」 [Add….]で
 「Add Site」で Name Zylin EmbeddedCDT Location http://opensource.zylin.com/zylincdt
Check [Zylin Embedded CDT]
   ⑥「Review Licenses」 [I accept the terms of...]
      「Securty Warning」 [OK]
      「Software Update」 [Yes]
   ⑦ eclipse.exe再起動
      「C/C++ -Eclipse」
        [Workbench]をクリック(Welcome ウインドウ内 アイコンの一つ)

 4)Hello World!(project01)のプログラムを作成
   C++でHello World!のプログラムを作成、ビルドは通る。
   実行でこける。(cygwin1.dllが見つからないエラー)
   => Cygwinを立ち上げ、project01.exeを実行 Hello World!の表示確認

  *Eclipseでは、Cygwin自体のGNU GCCが使われているようです。

    [プロジェクト]を選択
     プロパティ表示
      [C/C++ Build]/[Tool Chain Editor]
        [Used tools][Select Tools..ボタン]
     「Slect tools」
    ここに、[Available tools]と[Used Tools]が表示される。
GCC C Compiler(Av.) Cygwin C Compiler(Us.) が対になって、入れ替え可能となっています。
    たぶんこの入れ替えを行えばSH2の開発ができるのではと思いますが。。。

    現在Cygwinの環境下で、ARM7用他複数のGNU GCC環境が存在しています。そのうちSH用のGCCが GCC C Compiler(Av.) と結びついているとは思えない。

    また、[Zylin Embedded CDT]がEclipseでどのような役割を果たしているのか不明。
     プロパティ表示
      [C/C++ Build]/[Emvironment]の環境変数PATH
      [C/C++ General]/[Path and Symbols] のInclude等の設定
     ともかくいろいろありそうです。

2010年3月30日火曜日

ALTERA Cyclone IV GX スタータ開発キット

ALTERA Cyclone IV GX スタータ開発キット発売のメールが本日(3/30)届きました。
早速、Digi-Keyでチェックすると、544-2569-ND(DK-START-4CGX15N) 39,540円で購入可能のようです。在庫0なので納期は少々かかるかもしれません。

今回の内容が以下のとおり。
(ユーザーガイド等のドキュメントが、まだ見れないので正確な情報では有りません。私自身の思い込みかもしれません!)
 1.主要デバイス
  ・Cyclone IV GX EP4CGX15BF14C8N FPGA
  ・PCI-SIG 準拠の PCI Express ハード IP
 2.コンフィギュレーション・ステータスとセットアップ要素
  ・フラッシュ・メモリよりのパッシブ・シリアル(PS)コンフィギュレーションを実現するMAX® II CPLD (EPM2210)のシステム・コントローラ
  ・FPGA コンフィギュレーション用エンベデッドオンボードUSB-Blaster™ 回路
  ・外部 USB-Blaster 用JTAGヘッダ
  ・アルテラ EPCS シリアル・コンフィギュレーション・デバイス
 3.クロック
  ・FPGA のクロック: 50 MHz、125 MHz および SMA コネクタよるクロック入力
  ・その他のオンボード・クロック・オシレータ: 6 MHz、24 MHz、25 MHz
 4.汎用ユーザ入力/出力
  ・LED
  ・2行の文字表示用 LCD ディスプレイ
  プッシュ・ボタン・スイッチと DIP スイッチ
 5.メモリ・デバイス
  ・16 Mバイトのフラッシュ・メモリ
  ・2 Mバイトのシンクロナス SRAM
 6.コンポーネントおよびインタフェース
  ・PCI Expressエッジ・コネクタ
  ・RJ-45コネクタ付き10/100/1000BASE-TイーサネットPHY、または SMA コネクタへのトランシーバ1 つ (ボードの小規模な変更が必要)
 7.デザイン例
  ・Nios® II プロセッサ・ウェブ・サーバーとリモート・システム・アップデートを搭載したボード・アップデート・ポータル
  ・◦ボード・テスト・システム

  ((ALTERA HPより抜粋))


以前から、Nios® IIを試したいと思い、Cyclone IV のスタータ開発キットの発売を待っていたのですが。
 ・CyclonIVがEP4CGX15BF14C8N
 ・HSMCのコネクタが無い(GPIO用のコネクタが裏面に隠れているといいのですが。)
この2点で購入に躊躇
 ・デザイン例 Nios® II プロセッサ・ウェブ・サーバーと...
この点で、少々魅力(デザイン例ソースが入手できれば。。)

いずれ公開される、ドキュメントを待って、購入を判断したいと思います。

2010年3月12日金曜日

CQ出版 Interface誌 Sh2a 付録基板??


ネットでルネサステクノロジSH-2Aを調べているうちにエレキジャック・フォーラム(4/24開催)のHPにたどりつきました。
このHPの
「プロの技」トーク・ショーで
T-9  Interface 2010年6月号付属SH-2Aボードの製作事例(仮) があり、そこに付録SH2Aの基板の写真が掲載されています。
その写真から、搭載SH-2Aはどうも、R5S72623W144FPU らしいです。


概要抜粋(Renesas HPより)

 動作周波数
  144MHz
 CPU性能
  345MIPS(144MHz)
 キャッシュ
  16Kバイト(命令8K/ データ8K分離、 4ウェイセットアソシアティブ方式)
 デバッグ
  H-UDI, AUD-Ⅱ
 パッケージ
  176ピンQFP(24mm×24mm)(0.5mmピッチ)
 そのほか
 1Mバイト大容量SRAMの内蔵により、外付けRAMなしでのシステム構成を実現
 ビデオ入力機能付きディスプレイコントローラにより、映像処理が可能
 NANDフラッシュメモリ、シリアルフラッシュメモリ等との接続及びそれらからのブートが可能


当面、昨年のLPC2388で遊ぶつもりでしたが、こちらに切り替えようと言う誘惑に駆られます。
付録基板が出るたびに、毎年、マイコンを切り替えてしまう、その切り替えに3,4ヶ月かかってしまうという言うジレンマ、、、実に悩ましいことです。


付録基板にフラッシュメモリ、水晶発信器が搭載済みであることを願います。
(願わくば、秋葉原(秋月、千石)で普通に購入できることを希望します。)
(高額な、パーツセットのみの販売だと、キツイと思います。)

2010年3月9日火曜日

空気清浄機のホコリセンサーをイジッテみました。


花粉症に悩まされる季節になりました。部屋には壊れた空気清浄機があり、モータ等の部品取り用に捨てずに置いてあります。
 購入時、絶大の期待を持っていたのですが、実際には、それほどの効果はありませんでした。3年で、円筒形のファンの軸受けが破損、あっけなく、使い物にならなくなりました。
 そんな、空気清浄機から、ホコリセンサーを取り出し。花粉モニターが出来ないかと思い。色々試してみました。

1.ホコリセンサを調べる。
 空気清浄機に電源を入れ、センサの端子(3ピン)をの電圧を調べる。テスターを適当に当てる。Pin1とPin2で最大電圧。Pin2とPin3で最小電圧。
 ==> Pin1 電源12V (Vdd) 
     Pin2 グランド  (Vss)
     Pin3 電圧出力  (Vout)
2.ホコリセンサ出力電圧調整回路
  出力電圧が最大で5V程度であった(現時点での実測値)。しかし電源電圧の出力も考慮し、電圧の調整回路を組みました。素人の考えですが、抵抗値が高い可変抵抗を使うことで、センサの出力電圧降下を最小にする。抵抗の分圧を有効にするために、オペアンプで、ボルテージフォロア回路を構成
(ADCの内部抵抗が40KΩ(LPC2388 Product data sheet)なので 10KΩ程度の可変抵抗のみでも)
    可変抵抗 100KΩ
    オペアンプ Vdd(Vs) 2.7~(3.3)~5.5V (不意の高電圧に備え?)

  *色々やっているうちに、LPC2388のADCに12Vを流してしまい、「チッ」と言う音とともにLPC2388はクラッシュ。以前使用していたLPC2388(DAC不調)を現役復帰。
 
3.LPC2388 1CHオシロスコープの改修
 長時間の測定に備えるため、測定値をPCに送信する機能を追加しました。
  液晶の表示のタイミング(1024サンプリング)で、サンプルデータの平均をとり、UART0でPCにデータを送信。

4.PCアプリケーションの作成。
 1)Microsoft Visual C++ 2008 Express Edition
 2)シリアルポートのイベント(DataReceived)処理で、LPC2388から送信されたデータと受信時刻を蓄積する。
 3)グラフ表示は、パネル(System::Windows::Forms::Panel)に行う。

※グラフ表示が跳ね上がったところ、食事の支度(野菜炒め)をした結果。

----------------------------------------------
VC++テクニカルメモ 
(一部 ソースコードのカットアンドペーストで表示出来ない部分があります。)
1.実行時エラー
 1)メッセージ
    有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール '***' がアクセスされました。
 2)内容
  どうもシリアルポートのイベント処理はボタン、タイマ等のイベント処理とは異なり、イベント発生時に立ち上げられたスレッドで実行されるようです。つまり、Form上の各コントロール(オブジェクト)を管理しているスレッドと異なるため、シリアルポートのイベント処理で、Form上の各コントロールを操作することは安全でないと判断されているようです。
 3)対処
  ・Invoke等の関数でスレッド セーフな呼び出しを行うそうですが、今一つ不調
  で、応急的対処を行った。
  ・Formのコンストラクタに以下のコードを追加。
this->CheckForIllegalCrossThreadCalls = false;
   (前述のスレッドチェック機能をOFFにするようです。)

2.グラフ描画
 1)グラフィックの宣言
   System::Drawing::Graphics^ GrpChart; ポインタで宣言
 2)グラフィックの初期化
   Formにパネル( pnlChart )を置き、このパネルにグラフィックを生成する。
     this->GrpChart = this->pnlChart->CreateGraphics();
 3)Drawツールの宣言
  ・ペン
     System::Drawing::Pen^ PenChart;
  ・ブラシ
     System::Drawing::SolidBrush^ BrsChart;
  ・フォント
     System::Drawing::Font^ FntChartItem;
 4)Drawツールの初期化
  ・ペン
     this->PenChart = gcnew System::Drawing::Pen( System::Drawing::Color::Black,1.0f );
  ・ブラシ
     this->BrsChart = gcnew System::Drawing::SolidBrush( System::Drawing::Color::Black);
  ・フォント
     this->FntChartItem = gcnew System::Drawing::Font("MSゴシック",10.0);
 5)グラフィック描画
  ・ライン
     Point point1 = Point(50,50);
     Point point2 = Point(200,100);
     this->GrpChart->DrawLine( this->PenChart, point1, point2 );
  ・文字(String)
     this->GrpChart->DrawString("Draw String",this->FntChartItem,this->BrsChart,10.0,10.0);
※久々にグラフィック表示のWinアプリを作成しようとして、少々戸惑ったのでここにメモります。

※CQ出版2010年6月号が付録基板SH-2Aで、期待しています。このマイコン(型番)限定でコードサイズ制限なし、期間限定無しのHewが添付されることを密かに期待しています。
 また、RAM1Mバイト等の予告情報より、SH7262/SH7264あたりが搭載されるのでしょうか?
NECエレクトロニクス、ルネサステクノロジ統合記念の大盤振る舞いを期待します。

2010年2月9日火曜日

LM3S8962 Evaluation Kit プログラム作成 3 (GNU gcc)


 Texas Instruments(LUMINARY MICRO)社  Cortex-M3 MCU LM3S8962 マクロプロセッサ評価ボード EKI-LM3S8962 を、あいも変わらずいじっています。

 今回、評価ボードのOLED(グラフィクディスプレイ128 x 96)の表示を試しました。
1.表示データの解析
 1)ディスプレイ関数 RIT128x96x4ImageDraw(rit128x96x4.c)のデモプログラムでの使用を調べた。
  デモプログラム: FreeRTOSデモ
   =>bitmap.hのpucBasicBitmap(FreeRTOSのロゴ表示)3201バイトのイメージデータがあり、4ビット1画素が確認された。(16階調のグレースケール)
2.表示データの作成
 1)ペイントブラシ等で作成されたビットマップを表示データに変換することを考える。
  ①テストパターン(24ビット ビットマップ)をペイントブラシで作成し、データを調べた。
  ②od -cx bitmap.bmp 等でファイルのダンプを行った 
    =>テストパターンのデータで、バイトの反転があった。(白地に黒点)
    表示データは 0xFFFF 0xFFFF 0x00FF 0x0000 0xFFFF であったが、本来、0xFFFF 0xFFFF 0xFF00 0x0000 0xFFFF であるべき。リトルエンディアン的なバイト反転が起こっているのでしょうか?
    C言語で、ビットマップファイルをバイナリで開け、各画素のRGB要素の平均をとって16階調の数値データとし、テキストファイルに落とすことを考えていたのですが、このバイト反転、ファイルヘッダーの呼び飛ばしなどを考えると、面倒に思い、C言語による変換プログラムの作成は見送りました。
 2)Visual C++ 2008 による変換プログラムの作成
  前述の理由の他、画像ファイルの制限を外すことを考えるとVC++を使うのが良いと判断しました、プログラムの要点は、
    ①Bitmapクラスを画像ファイル割当てで初期化する。(ビットマップ、JPEG、GIF等の画像ファイルが一様に扱える)
    ②pictureBoxクラスのImageプロパティに ①のBitmapクラスを設定する。(表示用)
    ③ ①のBitmapクラスのGetPixelメソッドを使って画像の各画素を取得する(Colorクラス)。
    ④各画素のRGB要素の平均を求める。(この時点で256階調のグレースケール)
    ⑤求めた平均を1/16する。(OLEDで使える16階調のグレースケールになります。)
    ⑥この値をテキストファイルに出力する。一応Hex表示形式
 3)デモプログラムへの組み込み。
    デモプログラムに RIT128x96x4ImageDraw 関数を追加し、2)で作成したグレースケールデータ(出力テキストファイル)をイメージデータとして使いました。
   
 ※Visual C++ 2008 メモ
  久々のVC++で、戸惑った点
 ・二次元配列が使えなかった。
  データWK用に private: unsigned char imgdtT[128][96];を使おうとしたのですが。
    ....のメンバとして定義できません。混合型はサポートされていません。のエラー発生、Arrayクラスを使用するようです。
  宣言は    private:array< unsigned char, 2 >^ imgdtT;  
  初期化は   imgdtT= gcnew array< unsigned char, 2 >( 128,96);
  代入は    imgdtT[i,j] = iBrite /16; 
  参照は    iGray16 = imgdtT[i,j]; 
(一部訂正 3/9 初期化は の array が表示しきれていなかった。実は、<Unsigned....が隠れてしまっていた。)
3.OLED(グラフィクディスプレイ128 x 96)の表示
 鉄道模型(Nゲージ)の表示は128x50(4ビット)ドットで行っています。今まで128x64(1ビット)ドットのグラフィックLCDを主に扱ってきたので、このOLEDの表示はあまり期待していませんでした。しかし16階調(4ビット)のグレースケール表示ができることで表現力が格段に上がることは以外でした。
 HondaのHPより、バイクの画像をパクリ、16階調のグレースケールに変換し表示させました。結構きれいな表示でした。この解像度では表示しきれない細部まで見えるような錯覚を覚えました。

--------------------------------------------------------------------
--------------------------------------------------------------------
 試行錯誤を始めて、3ヶ月、暇を見つけてはの趣味の範囲では、超えられない壁が幾つかでてきました。

1.IARサンプルプログラムのGNU GCCへのコンバート
 ・Ethernetの割り込みがハンドリング出来ない。
   DHCPからのIPアドレスの割当が受けられない状況 
2.FreeRTOS上の開発環境(GNU GCC)の整備
 1)FreeRTOSからVre.6.0.2をダウンロードして試しました。
  ・IAR用のデモプロジェクト(CORTEX_LM3Sxxxx_IAR_Keil)を試す。(IARの環境)
    =>デモプログラムの動作を確認・・・容易に確認
  ・Eclipse用のデモプロジェクト(CORTEX_LM3Sxxxx_Eclipse)を参考にGNU GCCの開発環境を整える。
    =>FreeRTOSのデバイスドライバ等のライブラリ(libdriver.a、libgr.a)は、arm-elf-系の開発環境では利用できません。
     =>CODESOURCERYよりSoucery G++ Liteをインストールする。arm-none-eabi-系の開発環境が整い、ライブラリ(libdriver.a、libgr.a)の使用が可能になります。
      =>main.cのvSetupHighFrequencyTimer()のCallで止まってしまいます。タイマ関連のレジストリの設定で止まってしまうようです。


2009年12月28日月曜日

無線LAN環境の構築 (corega CG-WLR300GNHの無線LANアクセスポイント使用)


最近、ノートPC、プレイステーション3を購入して、自宅のLAN環境を再構築します。

1.LAN再構築概要
 1)現在のLAN環境
    ●HUB PCi EH-505 ポート数 5 [10Base-T]
    ●ブロードバンドルータ(KDDI ひかりOne) NEC Aterm BL170 ポート数 4 [100Base-T] 
   で 有効LANポート数 8 

 2)再構築LAN環境(画像)
    ●無線LANルータ corega CG-WLR300GNH  ポート数 4 [1GBase-T]
    ●ブロードバンドルータ(KDDI ひかりOne) NEC Aterm BL170 ポート数 4 [100Base-T] 
    ●HUB PCi EH-505 ポート数 5 [10Base-T]
   で 有効LANポート数 10 + 無線LAN

  ※写真 手前から NEC Aterm BL170, corega CG-WLR300 , Modem, PCi EH-505
 
2.無線LANルータ選択について。
 1)まず、手っ取り早く、必要なポートを増設することを考え、、、
 今回、無線LANルータ corega CG-WLR300GNH  を選択しました。はじめ、8ポートの100Base-TのHUBを考え、安いもので3千円程度、これを増設することで、有効LANポート数 16(+6)に増える、それで凌ごうと思っていました。

 2)どうせなら、将来を考え、一纏めに、、、
 しかし10Base-TのHUBを外すと、有効LANポート数 13、当然将来を考えると、一纏めにして、16ポートHUB 6千円程度もありと考えました。

 3)ノートPCを使うようになって、、、
 そのとき、さっさと購入してしまえばよかったのですが、今まで、デスクトップPCのみ使っていたのですが、アウトレットで購入したノートPCを使うようになり、使う毎に、HUBのポートに7mのケーブルを付け替えての使用で、当然、無線LANアクセスポイントが欲しくなりました。安いもので1万円程度、標準で3~5万円、今度は費用の面で躊躇。

 4)無線LANルーターのアクセスポイント使用を知り、、、
 無線LANルーターでは、有線LANポートが4ポート程度あり、低価格で魅力的だと思うのですが、現在のKDDI ひかりOneの環境では、なんとなく、無線LANルーター導入不可と思っていました。
(無線LANルーターに置き換えると、ひかりOne電話が使えなくなると思い。)

 ふと、単純に、無線LANルーターでネットワークを増やしてしまえば可能ではないかと思い、各メーカーのサイトで仕様、取り扱い説明書をチェックしました。
 ネットワークを増やすためには、無線LANルーターで、既存ネットワークアドレス(ルーターの外側)と、増設ネットワークアドレス(ルーターの内側)の設定が必要と思うのですが、どうもそのような設定は出来ないようです。
 そのような事を調べているうちに、無線LANルーターのルーター機能を無効に出来る事(アクセスポイント使用)を知りました。それで、ようやく無線LANルーターの購入に踏み切りました。
 メーカーおよび、機種については、仕様、価格の面で corega CG-WLR300GNH にしました、6千円で購入できました。


2.無線LANルータの設定(ノートPC Win7)
 1)無線LANを試す。
  ①とりあえず、ルータのパッケージを開封し、電源アダプターをつなげ(電源ON)、ノートPCを立ち上げました。
  ②コントロールパネル/ネットワークの状態とタスクの表示(ネットワークと共有センター)で 「新しい接続または。ネットワークのセットアップ」を実行 「ワイヤレスネットワークを手動で接続します」を選択。
  ③ルータの底面にあるネットワーク名、セキュリティの種類を[WPA2-パーソナル]、暗号化の種類を[TKIP]、初期PINコード(->セキュリティキー)を設定する。
  ④ネットワークと共有センターで「ネットワークに接続」を選ぶと、ワイヤレスネットワーク接続の選択リストが表示される。ここで③で設定したネットワークを選択する。
  ⑤ルータの設定画面を確認
   ●webブラウザを立ち上げると、いきなりルーターに繋がった(と思う)、そこでユーザー[root]でログインできた。
   ●設定画面を色々見、ログアウトした。

 2)ルーターをルータ機能OFFで起動
   ①今回のルーター使用は、ルーター起動OFFでの使用なので、電源を外し、背面のディップSWをOFFにして、電源を接続しなおした。
   ②ノートPCで無線LAN接続を試すが失敗。
     この時点での接続は、既存のルータ(DHCP稼働中)と この無線LANルータからの上位接続が必要と思われる。しかし、この無線LANルーターのサブネットアドレスが異なるため不可。
   (自宅のサブネットアドレスは 19x.16x.1x.00 ルータのサブネットアドレス(工場出荷時)は192.168.1.00) 

 3)ルーターのサブネットアドレスの変更(ルータ機能OFF)
   ①ノートPCと無線LANルーターをケーブルで接続した。
   ②ノートPCのIPアドレスを設定した。
    本来ノートPCのIPアドレスの設定はDHCPで割り当てられる設定になっています。
    この時点で、既存のDHCPと無線LANルータのサブネットが異なるので、ノートPCに固定のIPアドレスを設定します。無線LANルーターのサブネットと合せる為 一時的に 192.168.1.222 としました。
   ③ノートPC Webブラウザで無線LANルーターに接続します。
     http://192.168.1.220 で 設定画面に繋がります。
   ④無線LANルーターのIPアドレス変更
    ●設定画面 LAN側設定/ルーターIP で [LAN側IPアドレス]、既存DHCP(ルーター)の除外アドレスのうちの1つを設定する。 
    (今回 19x.16x.1x.105 を設定 既存のDHCPは 19x.16x.1x.100 ~ 163 のIPアドレスが割当除外となっています。) 
    ●ゲートウエイアドレス、DNSサーバーは、既存ルーターのアドレスを設定する。

3.無線LANルーターの確認
 1)ノートPCのIPアドレスの設定をDHCPによる割当に戻す。
 2)既存のルータの上位LANポートと無線LANルータのポートをつなぐ。
 3)ノートPCで無線LAN接続を確認した。

4.corega に対する希望
  設定画面 LAN側設定/ルーターIPで、ルーター機能ON、OFF両方のアドレス(初期値 192.168.1.1/192.168.1.220)設定が可能であれば、無線LAN設定がかなり容易となると思われます。

5.感想
 当初、無線LANルーターの導入設定は簡単だと思っていました。HUBの増設並みに考えていました。暗号化等のセキュリティ設定があるとは思いませんでした。
 実際、無線LAN接続を行うとき、無線LANの選択リストに10以上の無線LANが検出されました。近所にそれだけの、無線LANの使用者がいると言うことでしょう。セキュリティがしっかりしていないと他人のプライベートネットワークに接続出来てしまいます。なるほどと思いました。
 それにしても検出無線LANが10を超えていたのには驚きすら感じます。
 
 近年、液晶TV、BDレコーダ、ゲーム機、がネットワーク対応となって普通の家庭でもLANのポート数はかなり必要になっていると思います。8ポートのHUBでは早々に足りなくなると予想されます。
そこで、無線LAN・・・チャネル数は13、機器が必要になった場合のみチャネルが割当られます。家庭用のネットワークでは結構合理的なものと思います。
 

----メモ-----
※初期化ボタンで工場出荷時の状態に戻す方法
1 すべてのLAN ケーブルを抜きます。
2 AC アダプタを電源コンセントから抜き、1 分以上経過してから再び差し込みます。
3 初期化ボタンを15 秒以上押してから離します。

※現在ネットワーク接続機器
PC Desktop
NEC Value One [Celeron 2.93GHz WinXP]
HP xw4400 [Core 2 Duo 1.86GHz WinXP]
DELL Studio Slim [Core 2 Quad 2.33GHz WinVista]
DELL 430S [Pen4 WinXP]
PC Note
Dell inspiron 15 [Core 2 Duo 2.4GHz Win7]
Unix Workstation
IBM RS6000 [Power PC 604e 160MHz AIX 4.3]
Printer
EPSON PM-T960
液晶テレビ
 SHARP AQUOS LC-37GX3W
その他
 Panasonic DIGA Blu-ray Recoder
 HITACH Woo DVD Recoder
 SONY PS3
マイコン評価ボード等
 

2009年12月19日土曜日

LM3S8962 Evaluation Kit プログラム作成 2 (GNU gcc)

Texas Instruments(LUMINARY MICRO)社  Cortex-M3 MCU LM3S8962 マクロプロセッサ評価ボード EKI-LM3S8962 を、暇をみつけていじっています。
現在、引き続き、IAR Embedded Workbench のサンプルプログラムを、GNU gcc で作りなおしています。

1.Luminary Micro, Inc.サンプルプログラム。
 ・「sd_card」 SDカードのサンプルプログラム
 ・「enet_lwip」Ethernet接続のサンプルプログラム
 ・「qs_ek-lm3s8962」この評価ボードにインストールされていた、ゲームプログラム
 このうち、「sd_card」は、所定の動作を確認できました。
「enet_lwip」、「qs_ek-lm3s8962」については、Ethernetの割り込みの動作が不全で、今のところ、Ethernet、割り込みおよび、システム系の初期化関数等を点検しています。
 特に、これらのサンプルソースにある"#ifdef"文の挙動をチェックしています。

2.Luminary Micro, Inc.サンプルソースの手直し。
 1)cpu.s の編集
   arm-elf-as による、アセンブラコンパイルでエラーが起こる。エラーメッセージは、コメント行が不正と判断されている。
   このソースファイルについては、#include "../asmdefs.h" と C言語ライクなコメントに違和感を感じています。
   (対応するコンパイルオプションがあるのでしょうか?)
   ひとまず。
   ①全コメント行を削除。
   ② asmdefs.h の内容で、cpu.s を書き換える。
     セクション << The defines required for GCC.>> の #define文の内容で 書き換える。
    例  #define __EXPORT__ .globl   (asmdefs.h)
        __EXPORT__ CPUcpsid を .globl CPUcpsid に書き換える。


-------------cpu.s-書き換え前-(コメント削除済み)------------------
#include "../asmdefs.h"
__LIBRARY__ __lib_cpu
__TEXT_NOROOT__

__EXPORT__ CPUcpsid
__THUMB_LABEL__
CPUcpsid __LABEL__
mrs r0, PRIMASK
cpsid i
bx lr

__EXPORT__ CPUcpsie
__THUMB_LABEL__
CPUcpsie __LABEL__
mrs r0, PRIMASK
cpsie i
bx lr

__EXPORT__ CPUwfi
__THUMB_LABEL__
CPUwfi __LABEL__
wfi
bx lr

__END__

-------------cpu.s-書き換え後-------------------
.syntax unified
.thumb

@ __lib_cpu
.text

.globl CPUcpsid
.thumb_func
CPUcpsid :
mrs r0, PRIMASK
cpsid i
bx lr

.globl CPUcpsie
.thumb_func
CPUcpsie :
mrs r0, PRIMASK
cpsie i
bx lr

.globl CPUwfi
.thumb_func
CPUwfi :
wfi
bx lr

.end

-------------cpu.s end----------------

2009年12月9日水曜日

LM3S8962 Evaluation Kit プログラム作成 (GNU gcc)


Texas Instruments(LUMINARY MICRO)社  Cortex-M3 MCU LM3S8962 マクロプロセッサ評価ボード EKI-LM3S8962 について、キットに付随するサンプルプログラムをGNU gccでビルドし直しました。

1.サンプルプログラムの取り込み。
 1)IAR Embedded Workbenchでサンプルワークスペースを開く。
  ①IAR Embedded Workbenchを立ち上げる。
  ②Example applications
  ③Lumirary/Stellaris/boads/dk-lm3s8962を選択
 2)サンプルプログラムソースをコピー。
  ①開いている。ワークスペースのうち、とりあえず「driverlib」「blinky」「hello」「graphics」「uart_echo」のライブラリ、プログラムの File Propertisi... を調べる。 
   C:\Users\UserID**\Documents\IAR Embedded Workbench\arm\Luminary\Stellaris\src     C:\Users\UserID**\Documents\IAR Embedded Workbench\arm\Luminary\Stellaris\boards\ek-lm3s8962\graphics
  ②プログラムソースをGNU gcc開発フォルダにコピーする。
  「hello」の場合
    IAR サンプル ソース ......\Stellaris\boards\ek-lm3s8962\hello\helloc.c を
    GNU gcc 開発フォルダ(例) c:\Embedded\ARM_CortexM3\TI\Project\hello にコピー
  ③ライブラリソースをGNU gcc開発フォルダにコピーする。
   ・IAR ライブラリ ヘッダ 
    (共通ヘッダ)
     ......\Stellaris\asmdefs.h hw_adc.h hw_can.h hw_comp.h ......
    (driverlib.a用)
     ......\Stellaris\inc\lm3s8962.h
     ......\Stellaris\src\adc.h can.h comp.h ......
    (utilslib.a用)
     ......\Stellaris\utils\cmdline.h diag.h diagprintf.h ......
    (glib.a用)
     ......\Stellaris\glib\canvas.h checkbox.h container.h ......
    その他
     ......\Stellaris\glib\third_party以下のヘッダを適宜に。
   ・IAR ライブラリ ソース
    (driverlib.a用)
     ......\Stellaris\src\adc.c can.c comp.c ......
    (utilslib.a用)
     ......\Stellaris\utils\cmdline.h diag.h diagprintf.h ......
    (glib.a用)
     ......\Stellaris\glib\canvas.c checkbox.c container.c ......
    その他
     ......\Stellaris\glib\third_party以下のソースを適宜に。

   ・GNU gccライブラリ構成フォルダにコピー
    (共通ヘッダ)
     c:\Embedded\ARM_CortexM3\TI\Library\inc
    (driverlib.a)
     c:\Embedded\ARM_CortexM3\TI\Library\drivelib\inc
     c:\Embedded\ARM_CortexM3\TI\Library\drivelib\src
    (utilslib.a)
     c:\Embedded\ARM_CortexM3\TI\Library\utilslib\inc
     c:\Embedded\ARM_CortexM3\TI\Library\utilslib\src
    (glib.a)
     c:\Embedded\ARM_CortexM3\TI\Library\glib\inc
     c:\Embedded\ARM_CortexM3\TI\Library\glib\src
    その他 機能別に適宜にコピーする。

2.GNU gcc プログラム開発用環境構築 ライブラリ作成
 1)Makefile作成 「drivelib」「glib」「utilslib」...
  ・開発環境は、数値(浮動小数点)演算プロセッサなし(ソフト数値演算)を選択。
  ・コンパイルオプション -mthumb -O0 -v (とりあえず)
 2)メイク実行

3.各サンプルプログラムプロジェクト(ワークスペース)の整備
 1)スタートアッププログラムソース(startup.S)、メモリ定義ファイルの(memory.def)、メイクファイル(Makefile)の入手し、各サンプルプログラムプロジェクトフォルダに置き、適宜に修正する。

  ・CQ出版Interface誌2008年11月号の記事「Thumb-2対応GCCクロス開発環境の構築」関連のソース等を同サイトからダウンロードする。
  ・ダウンロードファイル gcc_sample_20080830.tar.zip を展開
  ・展開したフォルダ gcc_sample_20080830.tar に Cygwin でアクセスする。
  ・Cygwin で コマンド 「tar -jxvf gcc_sample_20080830.tar.bz2」を実行してサンプルソース等を展開する。
  ・gcc_sample_20080830.tar/gcc_sample/cortex-m3 が今回利用するサンプルソースのフォルダです。
 2)startup.sの修正。
-----------startup.s------------------------- 
.text

.extern main
.extern _sdata_loadaddr
.extern _sp_base
.extern SysTick_Handler << コメント化
.extern XXX_handler << 割り込みハンドラー関数を宣言

# Top of Stack
.long _sp_base
# Reset Handler
.long _startup+1
.org 0x0C << コメント化
# HardFault
.long BreakPoint_Handler + 1 << コメント化
.org 0x3C << コメント化
# SysTick Handler
.long SysTick_Handler + 1 << コメント化
# USART1
.org 0xD4 << コメント化
.long USART_handler + 1 << コメント化

# 割り込み設定
.org 0xXX << 割り込み位置を指定
.long XXX_handler + 1 << 割り込みハンドラー関数を指定。(thumbモードなので+1)

.org 0xEC
.global _startup
_startup:
LDR r1, =_sdata_loadaddr
LDR r2, =_sdata
LDR r3, =_edata
__copy_loop:
LDRB r4, [r1]
STRB r4, [r2, #0]
ADD r1, r1, #1
ADD r2, r2, #1
CMP r3, r2
BGT __copy_loop

LDR R0, =main
LDR R1, =0x1
ORR R0, R1
BX R0
-----------startup.s---end------------------- 
  ※割り込み位置 例UART0の場合
    UART0の Interrupt Vector Number: 21
    ==> 21 X 4 = 84
    ==> 0x54

 3)memory.defの修正。
memory_thumb.def を memory.defに
-----------memory.def------------------------ 
SECTIONS
{
.start 0x08000000 : { <<.start 0x00000000 に修正
_stext = .;
startup_thumb.o(.text)
_etext = .;
}

.text : {
_stext = .;
*(.text)
_etext = .;
}

.rdata : {
_srdata = .;
*(.rodata)
*(.rodata.str1.4)
_erdata = .;
}

.data 0x20000000: AT (LOADADDR(.rdata)+SIZEOF(.rdata)) {
_sdata_loadaddr = LOADADDR(.rdata)+SIZEOF(.rdata);
_sdata = .;
*(.data)
*(.zdata)
_edata = .;
}
.bss : { << 削除
_sbss = .; << 削除
*(.bss) << 削除
*(.comment) << 削除
_ebss = .; << 削除
} << 削除

_end = .;
. = ALIGN(0x4);
. += 0x200;
_sp_base = .;
}
-----------memory.def------------------------ 

 4)Malkefileの修正。
Malkefileは 適宜に修正 
   Lumirary MicroR Flash Progremmer用のバイナリファイルのために
$(OBJCPY) -O binary gcc_sample_thumb gcc_sample_thumb.bin を使用する。
  コンパイルオプションは
$(AS) -mcpu=cortex-m3 -mthumb --defsym THUMB=1 startup.s -o startup_thumb.o
$(CC) -mcpu=cortex-m3 -mthumb -c $< -o gcc_sample_thumb.o
   を参考にする。

4.各サンプルプログラムプロジェクトのビルドおよび実行
 1)「blinky」
   ・LED1の点滅を確認
 2)「hello」
   ・表示メッセージを変更
   ・表示位置を変更
   ・表示明度を変更
 3)「graphics」
   ・テロップ表示を変更
"This Aplication Developed by GNU gcc !" 写真はこのテロップの一部が表示された状態。
 4)「uart_echo」
   ・PC ターミナルソフトからのキー入力を返す(エコーバック)を確認
   ・PC ターミナルソフトからのキー入力を表示するように変更

5.デモプログラムの復旧 ※2010.1.29追記
 この評価キットのデモプログラム(ゲーム)の復旧は以下の手順で行う。
 1)以下のデモプログラムの存在を確認 (ドライブCの場合)
  C:\StellarisWare\boards\ek-lm3s8962\qs_ek-lm3s8962\gcc\qs_ek-lm3s8962.bin
  *存在しない場合Luminary MicorのHPより、EK-LM3S8962 Firmware Development Packegeをダウンロード、インストール実行
 2)Luminary MicorR Flash Programmerで上記のファイルを評価キットに書き込む。
  ①Configratoinタグ
    Quick Setで「LM3S8962 Ethernet and CAN Evaluation Boad」を選択
  ②Programタグ
    Select .bin fileで 上記ファイル「qs_ek-lm3s8962.bin」を選択
  ③Program実行
     

※IAR Embedded Workbenchによる開発 から GNU gccによる開発へ移行できなかった機能。
・cspy.cの持つ関数(Diag系関数)
※最初、生成したバイナリファイルXXX.binが500MB超えのファイルになった、確かにメモリマップを忠実にレイアウトすると、RAM領域0x20000000で512MB以上が確保されてしまう。始めは、仕方ないと思っていましたが、Flash Progremmerが受け付けないので色々試しているうちに、10KB前後のサイズになった。所定の機能が実現できたのでこれで良しと判断、結果オーライの感があり、少々不満。

2009年12月3日木曜日

GNU GCC 開発環境整備(For ARM7TDMI and Cortex-M3)

以前、ARM LPC2388 (CQ出版Interface誌付録基板) 用にGNU GCCの開発環境を整備しました。
今回、複数のタイプのARMプロセッサのアプリケーション開発に対応するため、再度開発環境を整備し直しました。
主な留意点は、
・浮動小数点演算コプロセッサ搭載、非搭載とMPUを2つに区分して、開発環境を整えます。

1.浮動小数点演算コプロセッサ非搭載(-msoft-float / -mfloat-abi=soft)
  ①インストール先ディレクトリ作成
   ・cd /usr/local
   ・mkdir arm-tools-sfp
  ②各パッケージの解凍(c:\DownLoad\GNUに各サイトよりダウンロード済み)
   ・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
   ・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
 1)binutilsパッケージのインストール
  ①cd binutils-2.20
  ②./configure --target=arm-elf --prefix=/usr/local/arm-tools-sfp ・・OK
  ③make  ・・失敗  2.19でOK
  ④make install ・・2.19でOK

 ※binutils-2.20の場合 ③のmakeでエラー ・・・インストール失敗
 
gcc -DHAVE_CONFIG_H -I. -I. -I. -I../bfd -I./config -I./../include -I./.. -I./.
./bfd -DLOCALEDIR="\"/usr/local/arm-tools-sfp/share/locale\"" -W -Wall -Wstrict
-prototypes -Wmissing-prototypes -Werror -g -O2 -MT tc-arm.o -MD -MP -MF .deps/t
c-arm.Tpo -c -o tc-arm.o `test -f 'config/tc-arm.c' || echo './'`config/tc-arm.c

config/tc-arm.c: In function `make_mapping_symbol':
config/tc-arm.c:2488: warning: empty body in an if-statement
make[4]: *** [tc-arm.o] Error 1
make[4]: Leaving directory `/usr/local/binutils-2.20/gas'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/binutils-2.20/gas'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/binutils-2.20/gas'
make[1]: *** [all-gas] Error 2
make[1]: Leaving directory `/usr/local/binutils-2.20'
make: *** [all] Error 2

 *まあ、よくわからないので、前回と同じbinutils-2.19で試す。
こちらは成功。
 *全てのパッケージのインストール後に再度binutils-2.20のインストールを試すが、やはりmakeで失敗した。

 2)gmpパッケージのインストール
  ①cd ../gmp-4.3.1
  ②./configure --prefix=/usr/local/arm-tools-sfp ・・OK
  ③make ・・OK
  ④make check ・・OK
  ⑤make install ・・OK

 3)mpfrパッケージのインストール
  ①cd ../mpfr-2.4.1
  ②./configure --prefix=/usr/local/arm-tools-sfp --with-gmp=/usr/local/arm-tools-sfp ・・OK
  ③make・・OK
  ④make check・・OK
  ⑤make install・・OK

 4)gccパッケージのインストール
  ①cd ..
  ②mkdir BuildGcc
  ③cd BuildGcc
  ④../gcc-4.4.2/configure --target=arm-elf --with-float=soft --with-gmp=/usr/local/arm-tools-sfp --with-newlib --with-mpfr=/usr/local/arm-tools-sfp --prefix=/usr/local/arm-tools-sfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
  ⑤make ・・・OK
  ⑥make install ・・・OK

  *ここで/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
  (newlibパッケージのインストール makeでの失敗対応)
  ・cd     ユーザーホームディレクトリへ移動
  ・.bash_profileを編集し、/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
   ( PATH=/usr/local/arm-tools-sfp/bin:${PATH} を追加)
  ・Cygwinを一旦終わらせ、再稼動させる。

 5)newlibパッケージのインストール
  ①cd /usr/local/newlib*
  ②./configure --target=arm-elf --with-float=soft --prefix=/usr/local/arm-tools-sfp ・・・OK
  ③make・・・失敗
  ④make install
 
  ※③のmakeでエラー ・・・インストール失敗
  
touch stmp-targ-include
Making all in libc
make[4]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
Making all in argz
make[5]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
arm-elf-cc -B/usr/local/newlib-1.17.0/arm-elf/newlib/ -isystem /usr/local/newli
-1.17.0/arm-elf/newlib/targ-include -isystem /usr/local/newlib-1.17.0/newlib/li
c/include -B/usr/local/newlib-1.17.0/arm-elf/libgloss/arm -L/usr/local/newlib-1
17.0/arm-elf/libgloss/libnosys -L/usr/local/newlib-1.17.0/libgloss/arm -DPACKAG
_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" -DPACKAGE_VERSION=\"1.17.0\" -DPA
KAGE_STRING=\"newlib\ 1.17.0\" -DPACKAGE_BUGREPORT=\"\" -I. -I../../../.././ne
lib/libc/argz -O2 -DARM_RDI_MONITOR -fno-builtin -g -O2 -c -o lib_a-dumm
.o `test -f 'dummy.c' || echo '../../../.././newlib/libc/argz/'`dummy.c
/bin/sh: arm-elf-cc: command not found
make[5]: *** [lib_a-dummy.o] Error 127
make[5]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[1]: *** [all-target-newlib] Error 2
make[1]: Leaving directory `/usr/local/newlib-1.17.0'
make: *** [all] Error 2

  *確かに arm-elf-cc は存在しなかった。
  *再度gccのインストール(上書き) make all も実行 ・・・同じエラー
  */usr/local/arm-tools-sfp/binのディレクトリにパスを通すと成功。


 6)gccパッケージの補足インストール
  ①cd ../BuildGcc
  ②make
  ③make install

 7)その他 
  ①cd     ユーザーホームディレクトリへ移動
  ②.bash_profileを編集し、 PATH=/usr/local/arm-tools-sfp/bin:${PATH} を削除
  ③Cygwinを一旦終わらせ、再稼動させる。
  

2.浮動小数点演算コプロセッサ搭載(-mhard-float / -mfloat-abi=hard)
  ①インストール先ディレクトリ作成
   ・cd /usr/local
   ・mkdir arm-tools-hfp
  ②各パッケージの解凍
   ・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
   ・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
 1)binutilsパッケージのインストール
  ①cd binutils-2.19
  ②./configure --target=arm-elf --prefix=/usr/local/arm-tools-hfp ・・OK
  ③make  ・・OK
  ④make install ・・OK

 2)gmpパッケージのインストール
  ①cd ../gmp-4.3.1
  ②./configure --prefix=/usr/local/arm-tools-hfp ・・OK
  ③make ・・OK
  ④make check ・・OK
  ⑤make install ・・OK

 3)mpfrパッケージのインストール
  ①cd ../mpfr-2.4.1
  ②./configure --prefix=/usr/local/arm-tools-hfp --with-gmp=/usr/local/arm-tools-hfp ・・OK
  ③make・・OK
  ④make check・・OK
  ⑤make install・・OK

 4)gccパッケージのインストール
  ①cd ..
  ②mkdir BuildGcc
  ③cd BuildGcc
  ④../gcc-4.4.2/configure --target=arm-elf --with-float=hard --with-gmp=/usr/local/arm-tools-hfp --with-newlib --with-mpfr=/usr/local/arm-tools-hfp --prefix=/usr/local/arm-tools-hfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
  ⑤make ・・・OK
  ⑥make install ・・・OK

  *ここで/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
  ・cd     ユーザーホームディレクトリへ移動
  ・.bash_profileを編集し、/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
   ( PATH=/usr/local/arm-tools-hfp/bin:${PATH} を追加)
  ・Cygwinを一旦終わらせ、再稼動させる。

 5)newlibパッケージのインストール
  ①cd /usr/local/newlib*
  ②./configure --target=arm-elf --with-float=hard --prefix=/usr/local/arm-tools-hfp ・・・OK
  ③make・・・OK
  ④make install・・・OK
 

 6)gccパッケージの補足インストール
  ①cd ../BuildGcc
  ②make
  ③make install

 7)その他 
  ①cd     ユーザーホームディレクトリへ移動
  ②.bash_profileを編集し、 PATH=/usr/local/arm-tools-hfp/bin:${PATH} を削除


3.2つの開発環境について 比較。
 1)コンパイラー等開発ツール
 ◎/usr/local/arm-tools-sfp/bin、/usr/local/arm-tools-hfp/binの主要ツール
 ・arm-elf-gcc.exe( 519708Byte)
 ・arm-elf-as.exe (2757595Byte)
 ・arm-elf-ar.exe (1804448Byte)
 ・arm-elf-objcopy.exe(2303260Byte)
についてバイナリサイズは2つの環境とも同じでした。浮動小数点演算コプロセッサー使用、非使用で各ツール自体に異なることはないと推測。
 2)ライブラリ
 ◎/usr/local/arm-tools-sfp/arm-elf/lib、/usr/local/arm-tools-hfp/arm-elf/libの主要ライブラリ
 ・libc.a(soft:3174978Byte hard:3169002Byte)
 ・libg.a(soft:3174978Byte hard:3169002Byte)
 ・libm.a(soft:953244Byte hard:876948Byte)
 ◎そのほかのライブラリ
 ・libgcc.a (soft:363326Byte hard:357882Byte)
 ・libgcov.a (soft:30906Byte hard:30906Byte) ・・・同じ
 についてライブラリサイズは若干、浮動小数点演算コプロセッサ使用のほうが小さい。

2009年11月29日日曜日

LM3S8962 Evaluation Kit! を試す。



STMicroelectronicsの評価キットを色々操作しているうちに、テキサス・インスツルメンツの評価キット LM3S8962 Evaluation Kit が届きました。
この評価キットは Cortex-M3コアの LM3S8962(メインボード)と、LM3S2110(サブボード)の2つのマイコンでCAN(Controller Area Network)通信を試せる構成になっています。
また、Ethernet、microSDカードスロット、スピーカー、128×64ドットOLED(グラフィック表示)等が搭載されていて、多彩なアプリケーションの開発が手軽に出来るのではと期待できます。


とりあえず一通り試します。

1.準備
 1)付属のDVDをPCにセットする。
   ○LUMINARY MICROのHTML画面
   ○Document/Read Me First - Viewで「LM3S8962 EVALUATONKIT README FIRST」を開く。

2.「README FIRST」記載に従う。
 1)付属フラットケーブル(10線)で LM3S8962 Evaluation Board(本体ボード)とLM3S2110 CAN Device Board(サブボード)のお互いのCANポートをつなぐ。
 2)付属USBケーブルでPCと LM3S8962 Evaluation Board P4をつなぐ
   ○微妙なサウンドと、液晶にLUMINARY、IARのロゴが表示された後ゲームが始まった。
   ○ゲームを一通り試す、敢え無くGame Over 注目すべきは、IPアドレスが表示される事、さらにスクリーンセーバも表示(詳細、後述)
 3)デバイスドライバのインストール
   ○PC側で新規デバイスの検出。
  ①デバイスドライブソフトウエアインストールを始める。
  ②ドライバの検索先をDVDドライブに指定する。
    「Stellaris Evaluation Boad A」のインストール完了を確認。

 ※ゲーム(サンプルアプリケーション)
   ①起動時、サウンドと伴にLUMINARY、IARのロゴが表示、Ethernet接続で、DNSからIPアドレスの割当を受ける、そのアドレスが表示される。
   ②一見パックマン風のゲーム、[SELECT]ボタンでゲーム開始 [SW3-6]ボタンで上下左右移動。[SELECT]ボタンでミサイル発射、モンスターを撃破
   ③ゲーム開始前、ゲームOver後、に一定期間経つと、スクリーンセーバが表示される。スクリーンセーバも消えた後、本体ボードLED1がゆるい点滅、CANサブボードLED100が点滅する。
   ④起動時、ゲームOver時のサウンドの音量はCANサブボードの[SW100,101]で調整できる。
   ⑤起動時、シリアルポートからWelcomeが出力される。ゲーム開始でスコア0、ゲームOverでスコアがシリアルポートに出力される。
     (PC並びにターミナルソフト設定 bau:11520 data:8bit parity:non stopbit:1 flow:non)
   
 ※あまりこのサンプルアプリケーションにはまると、本格的なアプリケーション開発前に基板が壊れてしまいそうなので注意。

2009年11月25日水曜日

ALTERA Quartus II 9.1 の インストール

先日ALTERAからのメールマガジンでQuartus IIのバージョンアップの案内がありました。
QuartusIIのインストールを行い、その手順を以下に記します。

1.DELL Inspiron 15 CPU:Core2Duo Mem:4GB(インストール作業前空き:1.5G) OS:Windows7 Home Premium 32bit その他:ウイルスセキュリティZero常駐

 1)ALTERAホームページにアクセスし、QuartusIIのダウンロードを行いました。
 2)ダウンロードファイルを実行し、インストール作業を行いました。
 3)インストール途中で エラー発生
Fueature:IP Library
Component: IP Library files
File: C:\altera\91\ip\altera\seriallite_ii\lib\ip_toolbench\utl\lib\Vx2\VxMa9607.rra
Error: このコマンドを実行するのに十分な記憶域がありません。
4)対処
   ①インストールプログラムを起動させた。
   ②インストールプログラムの操作中(Setup Typeの選択)、Windousタスクマネージャを立ち上げた。
   ③タスクマネージャ「プロセス」タグで、google toolbar,ウイルスセキュリティ関連のプロセスを終了させた。
   ④残りのインストール作業を続けた。
    >>>結果 前述のエラーが発生、③で停止させたプロセスとの関連性は解らないが、インストール発生箇所が異なった。
    >>>インストールを "Custom"で行い、インストール内容をCycloneに絞って行ってみたが同様に失敗した。
   
  ※現時点でWindows7でのQuartusII 9.1 のインストールは不可(私にとっては!)

2.DELL Studio Slim CPU:Core2Quad Mem:4GB(インストール作業前空き:0GB タスクマネージャ/パフォーマンス) OS:Windows Vista Home Premium 64bit その他:Windows Live OneCare等多数の
サービスが常駐。
 1)DELL Inspiron 15でダウンロードした QuartusIIのダウンロードファイルを。
 2)ダウンロードファイルを実行し、インストール作業を行いました。
 3)インストール成功

  ※Windows VistaでのQuartusII 9.1 のインストールはスムーズに行えた。

Windows7でのインストール失敗は、少々残念でした。
私のWindows7のイメージとして、VISTAが巨大で、おせっかいOSであったことにたいする見直しとして、Windows XPを、ブラシュアップし直したものと思っていました。
現在保有しているソフトウエアもある程度使えると思っていたのですが。。




2009年11月21日土曜日

IAR KickStart Kit STM3210E-SK を試す。



 STMicroelectronics のご好意により、先日ET2009で入手したIAR KickStart Kit STM3210E-SKを試します。

1.準備、キットの情報を調べる。
 1)「ST ARM Core-Based Microcontrollers and IAR KickStart Kit」(
リーフ)から。
  ・キット本体の構成 STM32F103ZE-SK+IAR J-Link (On Boad debug Interface)
    IAR J-Link(ARM 用USB 接続JTAG ICE)がキット本体にすでに乗っている。    
  ・IAR Embedded Workbench のコードサイズ制限 32KB (exsample application も32KB以下)
 2)IAR KickStartKit CDを調べる。
   環境 Windows VISTA 64
  ①CDをPCにセットする。
    自動起動 Start.exeを実行を許可する。[WinVISTA]
  ②IAR KickStartが立ち上がる。
  ③「QuickStart Guide and product Information」
    ・Guides and Manuals
     ・IAR Kit QuickStart Guid(.pdf)
    ・STM32F103 Information
     ・Reference manual
     ・Data sheet
    ・Boad schematic

  ※マイクロコントローラ:STM32F103ZE(LQFP144)  

2.IAR Embedded Workbench のインストール。
 引き続き、IAR KickStartの作業
  1)「Software installations」
   ①IAR Embedded Workbench のインストール
     KickStart Editionをクリック
   ②「Welcome to IAR Systems IAR Embedded Workbench Installation」
   ③Install IAR Embedded Workbenchをクリック
     ・Get a license
       ・IAR ホームページ 「Product Registration」でユーザ登録
           メールアドレス等を登録
           会社名、HPは適当に入力
       ・IARからメールが届く
       ・そこに登録確認用のhttpアドレスが記載、これをクリック
       ・IAR ホームページ 「Registration Confirmed」
           License Number と License Key が記載
     ・IAR Embedded Workbenchのインストール 
       ・ライセンスNo. License Key IARのホームページの記載のものCopy/Past
     ・IAR J-Link On Board のインストール
      ・PCとボードをUSBで接続(ステッピングモータの脇のUSBコネクタ)
       ・PWR_LED 点灯
       ・LED点滅
       ・STAT4(LED)点滅
       ・カラーLCDにIARのロゴ表示
     ・PCに「新しいハードうえあの検出」=>ドライバのインストールを実行
       ・ディレクトリC:\Program Files(x86)\IAR Systems\Embedded Workbench 5.0 Kickstart\arm\drivers\JLink\を指定
      ・評価ボード設定
        PWR_SEL Pin3-4 closed - power from J-Link
        JTAG_SEL Open, J-Link-OB is used
3.Example Application の実行
  1)Embedded Workbenchの実行
    ・スタート>すべてのプログラム>IAR Systems>IAR Embeded Workbench for ARM KickStart>IAR Embeded Workbench で実行
  2)Example アプリケーションの実行
    IAR Embeded Workbench IDE起動で「Embedded Workbench Start」ダイアログ表示
    ①Example アプリケーションをクリック
     ST>STM32F10x>IAR-STM32F103ZE-SKを選択しOpen
    ②「Choose destination folder」のダイアログが表示
     適宜なフォルダ ”IAR-SK-Work”を作成し、それを選択
    ③「Workspace」ウインドウで ”LCD_demo Flash Debug”を右クリック選択 「Set as Active」
   (④「LCD_Demo」タグを選択)
    ⑤Workspace」ウインドウの上部コンボボックスに”LCD_demo Flash Debug”が表示
    ⑥Exampleアプリケーションのメイク
     Project>Make 実行
    ⑦Exampleアプリケーションのダウロード
     Project>Download and debug
    ⑧Exampleアプリケーションのデバッグ実行
     評価キットのLCDにカラーパターン表示

3.Example Application LCD_demo について
 1)動作
  ①立ち上がり
    IARのロゴ表示
    カラーパターン表示
  ②実行中
   ・Push Button[USER]でバックライト調整モードに切り替え
   ・Push Button[WKUP]でコントラスト調整モードに切り替え
   ・TRIMMER[AN_TR]でバックライト、コントラストの調整を行う。
 2)解析
  ①Push Button[USER]
    ・CPUピン No.93
    ・ピン機能 PG8
  ②Push Button[WKUP]
    ・CPUピン No.34
    ・ピン機能 PA0、[WKUP]、USART2_CTS(8)、ADC123_IN0、TIM2_CH1_ETR、TIM5_CH1、TIM8_ETR
  ③TRIMMER[AN_TR]
    ・CPUピン No.44
    ・ピン機能 PC4、ADC12_IN14
  ④Graphic LCD
    CPU Pin Func.
    -------+------------------------------------------------------  
    No.42 SPI1_MISO、PA6、TIM8_BKIN、ADC12_IN6、TIM3_CH1、TIM1_BKIN
    No.41 SPI1_SCK、PA5、DAC_OUT2、ADC12_IN5
    No.42 SPI1_MOSI、PA7、TIM8_CH1N、ADC12_IN7、TIM3_CH2、TIM1_CH1N
    No.29 (LCD_CS)、PC3、ADC123_IN13
    No.75 (LCD_RS)、PB14、SPI2_MISO、TIM1_CH2N、USART3_RTS
    No.135 (LCD_BL)、PB5、I2C1_SMBA、SPI3_MOSI、I2S3_SD、TIM3_CH2、SPI1_MOSI

  ⑤Exampleアプリケーションの標準出力はこのLCDに行われる。
   (printf関数で文字が表示される。)

4.Example Application Acc_demo について
1)動作
  評価ボードの傾きを表示し、その傾きに合せてステッピングモータが回転する。
5.Example Application MassStrage について
  サイズ制限に引っかかる。
6.Example Application Temp_demo について
1)動作
   温度表示
7.Example Application USBMouse について
1)動作
   5V電源ジャック側のUSBコネクタとPCを接続
   ジョイステックと2プッシュボタンでマウスとして動作する。
8.Example Application AudioDevice について
1)動作
   5V電源ジャック側のUSBコネクタとPCを接続
   オーディオミニプラグでスピーカーにつなぐとUSBスピーカとして音声出力。
9.Example Application VirtualCom について
  サイズ制限に引っかかる。
10.RTOSを試す。
 1)インストール
  再び、IAR KickStartの作業
  ①「RTOS/middleware」をクリック
  ②「Boad support package」をクリック
    フォルダSTM_HDが表示される。 このフォルダを適宜なフォルダにコピーする。
  ③IAR Embedded Workbenchで ワークスペース[Start_STM32_HD.eww]をOpenし、メイク/ダウンロードする。
 2)実行 2つのLEDが 異なる周期で点滅する。
   2つのタスクを登録し、各タスクごとにLED点滅させる。

感想としてサンプルアプリケーションのソースコード、特にSTMicroelectronicsのライブラリ コードソース[stm32f10x_XXX.h stm32f10x_XXX.c |stm32f10x_systick stm32f10x_systick stm32f10x_systick....等 ]が充実している。
評価ボード自体、カラーLCD、SDカード、シリアルポート、おまけ的に温度センサ、傾斜センサ、ステッピングモータ等々多彩な機能を搭載している。 Ethernetが無いのが残念。
IAR Embedded Workbench の製品版を入手できれば、短期間で目的のアプリケーションが作成できると思われます。
ただ、後は、STMicroelectronics のダウンローダーDfuSe でWorkbench で開発したアプリケーションをどうやって実機にダウンロードするかが、これからの課題です。
一応、考えうる手順を書き留めます。

1)IAR Embedded Workbenchのアプリケーション作成。
 ①hexファイル出力設定
  ・Project>Optionsで「Option for node "XXXX"」ダイアログが表示される。
  ・Output Convert で Generate additional output のチェックボックスをチェックし、Output formatでIntel extendedを選択
 ②アプリケーションをメイクする。 XXXX.hexファイルが作成される。
2)DFUファイル作成
 ①DFU File Managerを立ち上げる
  ・スタート>すべてのプログラム>STMicroelectronics>DfuSe>DFU File Managerで起動
 ②”I want to GENARATE a DFU file from S19,HEX,BIN files”を選択
 ③[S19 or Hex...]で XXXX.hexファイルを開く
 ③Generate実行 ファイル名を指定する。
3)ダウンロード実行 
 ①DfuSe Demonstrationを立ち上げる。
  ・スタート>すべてのプログラム>STMicroelectronics>DfuSe>DfuSe Demonstrationで起動
 ②Upgrede or Verify Actionの[Chose...]でDFUファイルを選択する。
 ③[Upgrade]で書き込み実行

4)ダウンロードについて。調査課題
 ・IAR KickStart Kit STM3210E-SKにはJTAGコネクタが2つのUSBコネクタの間にある。このコネクタはSTM32F103ZEのJTAGデバッグポートに直結 STMicroelectronics STM32F20x用のJTAGケーブル(USB)が有ればいいのですが。現時点で、純正品で存在するのか、サードパーティで、Cortex-M3対応のJTAGデバッガツールでダウンロード可能なのか不明。
 また、自作について調べるが今だ情報にたどり着けない状況です。
 ・今まで、各種マイコンについて評価ボード、スタータキット、あるいは雑誌付録基板を使ってきました、何れの場合も、PCとUSB接続し、必要に応じて、PCに対応ドライバをインストールするだけで、事足りていました。マイコンチップ自体にどの様にアプリケーションをダウンロードしているのか考えもしなかった。この機会に少し調べてみようと思います。

※追加 
これまで、開発したアプリケーションを何とかして、コードサイズ制限のあるIAR Embedded Workbenchを使わずに、IAR KickStart Kit STM3210E-SKに書き込むことを考えてきたが、その手法案についてまとめる。

案1.JTAG書き込み1 前述のとおり、なんとかJTAGケーブル(USB対応)を調達し、このキットのJTAGコネクタを経由して開発アプリケーションを書き込む。

案2.JTAG書き込み2 このキット自体 IAR J-LinkというARM 用USB 接続JTAG ICEが搭載されている。IAR Embedded Workbench と同じ手法で開発アプリケーションを書き込む。
 (以下、案2についての試行錯誤)
 ・JLink.exeと言うツールをSEGGER社のサイトから取得する。
 ・このキットをUSB(JTAG)コネクタ経由でPCにつなぐ。
 ・JLink.exeを起動する。>> 一応 キットとの接続が確かめられた。
  (J-Linkによる、PCと、キットSTM32F103ZEの接続を確認)
 また、JLink.exeのダウンロード時に JFlashARM.exeも併せて取得した、STM32F103ZEにアプリケーションの書き込みには、JFlashARM.exeを使用するようですが、こちらのほうは接続に失敗した。

案3.DFU書き込み 案1、案2何れかの方法により、このキットの STM3210ZEにフラッシュROMにDFU(USBダウンローダー)を書き込む。(多少、DFUの修正は必要と思われる。)開発アプリケーションはDFU形式へのファイル変換を行い、DfuSeを使って、書き込む。

案3改 DFU書き込み 「案1、案2何れかの方法により、」というより、IAR Embedded Workbenchで書き込んでしまえばよいのではないのか、 DFU(USBダウンローダー)のサイズは12KBだから可能と思われる。。。。?

だんだん、手法は見えてきたが。IAR社がこのキットについて、IAR Embedded Workbench以外でのアプリケーションのダウンロードを阻止する意図があった場合。無駄な努力に帰することになる。




2009年11月20日金曜日

ET2009散歩(その2)

 本日(11/20)、先日に引き続き、パシフィコ横浜で開かれている。Embedded Technology 2009に行ってきました。
 今日は、カンファレンス(無料)参加と、32ビットマイコンの評価ボードの購入を念頭にブースを回りました。

---------------------------------------------------
◎カンファレンス (メモ書き)

 「最新FPGAで組込みシステムを簡単&柔軟設計!」
  ●Spartan6=>Spartan6 の改良点
  ・LUTが4から6入力になったことでのパフォーマンス向上
  ・MicroBlaze(ソフトCPU)のパイプラインは5段がパフォーマンスが良くなったかも知れない。(推測  Spartan3では3段のほうが早い)
  ●MicroBlaze Ver7までの更新履歴
  ●MicroBlazeのメモリ
  ・MCB(Memory Control Block)==MPMC(Multi Point Memory Controller) ==[BUS(PLBv4)]==MicroBlaze
  ●MicroBlazeにLinuxを搭載する際のTip。
    パイプラインの段数等の設定(5段)
  ●MCB
  ・データバス幅 4,8,16bit/MCB に限定 32bitの場合2つのMCBを使う。
  ●Xilinxの開発ツールの体系が理解できたように思う。
  ・IDS11:ISE® Design Suite 11の略 (始め、IDSと言われて解らなかった)
  ・EDK:Embedded Development Kitの略
  ・XPS:Xilinx Plat form Studioの略 (EDKに含まれるハードウエアデザインツール)
    ハードウエアデザイン用のツール。MicroBlaze(ソフトCPU)もこれで作成。 
  ・SDK:Software Development Kitの略 (EDKに含まれるMicroBlaze用ソフトウエア開発ツール)
    MicroBlazeに乗せるファームウエアの開発ツール C,C++コンパイラ等

 「FPGAにおける高速DDRメモリ ボードシステムの設計・評価事例」
  これは、受講テーマを間違えた。ほとんど理解不能のはず、しかし退屈せずに最後まで聞けた。
   (DDR2などのメモリの資料で目にする内容がある程度有ったからか?)

◎展示会(評価ボードめぐり)
 ●Texas Instruments
  Stellaris ARM Cortex-M3 シリーズ
 ・LM3S3748評価キット
   小さなカラーLCDが魅力、フラッシュメモリ128KBが難
 ・LM3S8962イーサーネット+CAN評価キット
   ある程度整った1枚
  いずれもその小ささに魅力を感じる。
 ●STMicroelectronics
 ・STM3210C-EVAL
 ・STM3210E-EVAL Ethernetあり
   これは魅力的
  プログラムダウンロードはUSBケーブルだけで出来ないとのこと。  
  担当者に色々と説明していただいているうちにIARのキット(ST32F103ZE搭載)を頂いた。感謝、感謝
 ●NXP セミコンダクターズ
  評価ボードは自社で作成しない。サードパーティで有るとの事
 ●NEC
  評価ボードは自社で作成しない。サードパーティで有るとの事
  (TESSERAの評価ボード)
 ●富士通
  評価ボードは無いとの事(Cortex-M3について)

◎展示会(FPGAめぐり)
 ●Xilinx 
 ・XilinxのFPGAのプログラム開発では、VHDL、Verilog(テキスト編集)による開発がメインで、Schematicでのシンボル操作による開発はあまりしないとのこと。
 ・XilinxのEvaluation Kitはあまり売り込む気が無いように感じられた。
 ●ALTERA
 ・NiosIIを使ったデモアプリケーションのデザインを見せてもらった。DDRメモリのインターフェース、Ethernetモジュール等はNiosII の内部にある。
---------------------------------------------------

今回、2日かけて、展示を見て回りました、色々と参考になる話を聞けて、有意義な時間を過ごせました。

残念な点は、ルネサスの展示が無かった(ルネサス北日本セミコンダクタ は有った)ことです。


来年も、展示会、カンファレンスに参加できたらと思います。 
出展各社、および各担当者に感謝。(本当にお邪魔いたしました。)

2009年11月18日水曜日

ET2009散歩


本日(11/18)パシフィコ横浜で開かれている。Embedded Technology 2009に行ってきました。

訪れたブースは以下のとおりです。

◎ARM
 前日メールマガジンでDW 2008-5 Cortex-M3付録基板付き が頂けると言う事で、浅ましくも訪れ、同誌をGet。先週ARM Forum 2009に行ってきたので。展示については素通り。
◎STマイクロエレクトロニクス
 STM8の説明を受ける。8ビットマイコンで液晶表示、microSDカード、等多彩の機能を実現したボードに魅力を感じた。
◎NEC(NECエレクトロニクス)
 V850の説明を受ける。また、前年につづき78Kの体験セミナを受ける。小さなインテリジェントLEDスタンドをGet、開発ツールApplilet EZを試す。 V850を使う場合、Appliletで、デバイスに関するソースを出力するだけであったのが、プログラムのコンパイルからダウンロードまで行う。
 LEDスタンドに内臓された78KはADC、PWM機能を搭載、結構高機能で、結構楽しめる石が入手できたと思います。
◎日本テキサスインスツルメンツ
 Cortex-M3の評価ボートの説明を受ける。1万円程度で入手可能とのこと、帰宅後、早速Digi-Keyで確認
結構入手性が良いと思います。サンプルアプリケーションも入手できるとのこと、リアルタイムOSを試すときには、使用したいと思いました。
 ET2009開催中に再度訪れたい。
◎富士通マイクロエレクトロニクス
 FRAMマイコンの説明を受ける。昨年より、書き換え保証回数が倍増(?)したとのこと。
 ARM Cortex-M3のマイコンの説明を受ける。面白いことに、導入の経緯、分野等ほとんどNECの説明と同じ内容であった。しかし、説明自体は丁寧で、面白い会話が出来た。
◎メンター・グラフィックス・ジャパン
 ModelSimの説明を受ける。過去にALTRA CycloneIIIで使ったModelSim(無償版)が結構制限がかかっていた事を知る。個人が趣味レベルで使える程度に制限を緩めて欲しいと思った。
◎インテル
 例年のサクマのドロップをもらった。
 サブブース アクセル、オムロン、PFUで説明を受ける。
 「AtomプロセッサはPen3~4並のパフォマンスだと思うが、なぜ、ハイビジョン画像がさくさく扱えるのか。」といった、素人の質問をした。「ボートにある、グラフィックチップが高性能だから」と言う答えが返ってきた。なるほど、組み込みの世界では、OS自体は軽いCPUで行い、目的とする重い処理は専用のチップでこなす。納得した。
 また、工作機器等にWindowsを実装する、PCボードを見た。
◎Xilinx(東京エレクトロンデバイス)
 ISE2の説明を求めたが、展示なし。説明なし。残念
Virtex等を搭載する基板の展示。このクラスの基板だと12層になり、配線をどの層に配置するかで、性能が変わるとの説明を受ける。
◎ALTERA(アルティマ)
 Quartus II の説明を受ける。
 無償になった、Nios II の説明、Cycloneで使う場合 Stratixで使う場合の差異等、丁寧な説明を受けた。
 CycloneIVの展示を期待していたが無かった。残念、スタータキットは来年4月以降出るらしいとのこと(不確定)
◎マイクロソフト
素通りしてしまった。
◎TOHOKUものづくりコリドー
 C言語 HDL変換ソフトの展示があり、説明を受ける。色々、ご教示いただいた。

本日これまで。

画像は、本日の戦利品、ARM DW誌(付録基板つき)、NECのLEDスタンド、TOHOKUものづくりコリドー のお米が結構うれしかった。

いつものことですが。アンケートに答えて、ノベリティグッズを貰うか、限られた時間を取るか悩ましいことです。

最終日(11/20)カンファレンスを2コマ受けようと思います。見落としたブースに行こうと思います。

2009年11月14日土曜日

Spartan-6 FPGA SP601 評価キットその後(奮闘中)



 Xilinx Spartan-6 FPGA SP601 評価キットを使い始めて、2ヶ月が経過しました。慣れぬISE等の開発ツールに もがきながらも、なんとか、容(かたち)が整ってきた状況です。

1.概要
  [[信号 100Hzから4MHz]] ==> FPGA(Spartan-6) ==> LPC2388(波形表示)

 1)FPGA(Spartan-6)処理
  ・ADCドライブ 
    エンコーダ波形1~50MHzをADCに出力、8ビットのデータをADCがら取り込む。
  ・データバッファリング
    ADCから取り込んだデータをRAMに書き込む。
  ・データの送出
    RAM上のデータをマイコンLPC2388に送信する。
 2)マイコン(LPC2388)処理
  ・ ユーザーIF
    FPGAにサンプリング開始/停止の指示、取得データの表示、FPGA動作パラメータの調整

2.動作確認
 1)検出波形 上限
    信号50KHzを50MSPS(1000Pont/Cycle)で取り込むことを確認。
 2)データ表示
    チャート表示および、数値表示 
 3)動作スピード切替。
    1,2,5,10,20,50 MSPSのサンプリング速度の切り替えを確認

3.不具合
 1)取り込んだデータにノイズが多い。
 2)トリガがかからない。
 3)連続取り込み時、中断できない。

4.課題
 1)エラーデータ
   取り込みデータをFPGAのRAMに書き込む前に、マイナス値を排除するモジュールを一時的に組み入れるが、マイコンに送られたデータにマイナス値が存在する。
   (ADCモジュールは単電源構成なので、負電圧は計測されないはず。)
 2)低速クロック(エンコーダ)信号を作成できない。
   IP(CORE Generator..)/Clocking Wizard で クロック入力 200MHzDifferential clock...の場合、4MHzが出力周波数の下限でした。 カウンタを利用してその周波数を1/2,1/4,1/8,,,で分周して低速のクロック信号は生成できるが、直接周波数指定でクロック信号を生成することが現状で出来ない。
 3)ISE等開発環境の不慣れ 
  ・always @(posedge IO_PinA)
    PlanAheadでピンを割当行う場合、T9:CLK1_M2C_P等のクロック属性を持つピンを割り当てないといけない。
  ・ucfファイルエラー
    ucfファイルに知らぬ間に、「INST "xxx_IBUF" LOC = x99;」のエントリが出来、エラーを起こす。
  ・Verilog HDL 除算
    除算では、除数が2の累乗に限定される。
  ・IP(CORE Generator..)で作成したモジュールの組み込み。
    修正が大変面倒
  ・プロジェクトのコピー
    コピーしたプロジェクトでピン割り当て(Planahead)が失敗
       EEROR: launching PlanAhead failed: can't execute "C\Windows\system32\cmd.exe":ディレクトリ名が無効です。 
 4)Memory Controller Block が難しい。
   Spartan-6で期待した最大の機能 Memory Controller Block ですがなかなか使えずにいます。
   IP(CORE Generator..)/MIG (Memory Interface Generator) で所定のパラメータを指定してサンプルプロジェクトを作成するまでは良いのですが、さてこれをどのように使うのかよくわからない。使えそうな部分(memc3_wrapper等)を切り出して、一時的にプロジェクトを作成して、試行錯誤を行おうとするが、プログラムファイル生成でこけます。1クロック毎に指定したビット幅で、指定したアドレスのメモリを読み書きしたいだけなのですが、ポートが6個もあったり。コマンドIFが有ったり、そのコマンド自体が不明だったりして前途多難です。門前払い状態です。現在泣く泣く128MB DDR2を棚上げして、RAMを上限近く(16KB)使い切ってなんとか誤魔化している状況です。

2009年10月3日土曜日

Xilinx ISE2 テクニカルメモ

Xilinx Spartan-6 FPGA SP601 評価キットでのプロジェクトの作成の際、気づいた点をまとめます。

◎開発環境 
 ・WindowsVISTA Home Premium 64bit RAM:4GB
 ・ISE Project Navigator 11.3
1.ISE(本体)
 *)不明事項
   ①VHDL/VerilogHDLモジュールをシンボル化後に、Schematicモジュール編集時、シンボルリストに追加されるタイミング(ああでもない、こうでもないと、いろいろもがいている内に、リストに追加されているといった状況)
   ②New Source/IP(CORE Generator & ....)で追加したモジュールをどのようにして利用するのか?(Schematicモジュールの編集で・・)

2.PlanAhead(Mapping)
 1)ピン定義
   ①同一Bankで異なるI/O Standerdは設定できない。??
     ※出来る場合もある??
 *)エラー対処
   ①ログファイルパーミッションエラーで起動不能になった場合。
    ・タスクマネージャ(Windows)でプロセス「_xilinxupdate.exe」を終了させる。
3.iMPACT(Device Programming)

4.FMC-LPC コネクタ のピンアサインについて(疑問)
 LPC2388とのデータインターフェース(16ビット)を試している時、ビット6とビット7の交差が認められた。次の2つの可能性があると思われる。
 ・FMC-LPC コネクタ H-25ピンにLA21_Nが、H-26ピンにLA21_Pが誤配線されている。
 ・SP601ハードウエア ユーザー ガイドの UCF 配置定義
     NET "FMC_LA21_N" LOC = "V4";
     NET "FMC_LA21_P" LOC = "T4"; 
  の誤記載。(V4とT4が入れ替わっている) ・・・2009/11/17 追加

Spartan-6 FPGA SP601 評価キットその後(FMC/GPIO変換ドータカードの作成)


今回は、Spartan-6 FPGA SP601 評価キットのFMC-LPC コネクタ からGPIOの引き出しにトライしました。その際使用したパーツは以下の通りです。

・FMC-LPCコネクタ Samtec社 ASP-134606-01 VITA 57 CONNECTOR 1個
・ハウジング付ピンヘッダ(オス)40P(2×20)          3個
・両面スルホール・ガラス・ユニバーサル基板 Bタイプ 1.27mmピッチ(95x72mm) 1枚
・耐熱電子ワイヤー(単線) 15m程度
・半田 0.3mm (0.6mmがちょうど良いかも?)

 評価キット(SP601)を本格的に使いたい、その前に、マイコン等のインターフェースにパラレルデータIFをこのキットで実現したい思いました。一応キット上には12-pin (8 I/O) headerが装備され、SPI、IICのヘッダーを利用すれば、8ビットデータ+α のインターフェースは組めることは組めるようですが、やはりFPGAの大量のGPIOを利用しないのはやはりもったいないと思いました。
 で、FMC-LPCコネクタからGPIOを引き出したドータカードが無いか、いろいろ探しました。しかしそのようなカードは見つけられませんでした。
(以前、ALTETRA CycloneIII スタータキット(DK-START-3C25N)を使った時は、同様のHSMCコネクタがあって。そのときは Terasic Technologies の BOARD ADAPTER HSMC TO GPIO を購入して対処したのですが。。。)
 以前、この評価キット関連のマニュアルをいろいろ漁っていたとき、FMC-LPCコネクタ自体が Samtec社から、出ていることを知りました。しかし、コネクタ自体あってもどうにも私の手先の不器用さでは手が出せないと思いました。
 最近、諦めきれずに、このコネクタの図面を眺めていたとき、コネクタから引き出されたピンの間隔が1.27mmでこの間隔は、ユニバーサル基板(1.27ピッチ)に一致すると気づきました。ひょっとしたらなんとかなりそうだと思い、デジキーでこのコネクタを発注しました。

 入手したFMC-LPCコネクタを使って、GPIO変換ドータカードを作成した手順は以下の通りです。
①まず、FMC-LPCコネクタの背面の両端の突起(基板に固定するためのもの)およびその周囲を削りました。
 ・・・配線用のピン(半田鍍金されています)がユニバーサル基板のホールに収まるように。
②FMC-LPCコネクタをユニバーサル基板に強めに押し込む。
 ・・・結構しっかりと固定されます。
③耐熱電子ワイヤー(単線)を10~15cmに切り分ける。120本 出力するGPIOを 8ビット、16ビット、32ビットのブロック分けをし、ブロック毎にワイヤー(単線)の長さを揃えました(気休め)。
④ワイヤー先端3mmの被覆をはがしました。
⑤FMC-LPCコネクタの背面のユニバーサル基板の穴に、ワイヤーを差し入れ、半田を流し込みます。
・・・コネクタの配線ピンの半田が溶けると、ワイヤーが更に1mm程度奥に押し込めるようになります。
⑥半田付けしたワイヤーをピンヘッダ(オス)40Pに配線します。
***延々と、120本繰り返す。***
⑦配線の導通、隣接配線とのショートをチェックしました。
***延々と、120本繰り返す。***
幸い、導通不良が1箇所で比較的容易に修復できました。

 さて、このGPIO変換ドータカードの検証ですが、以前この評価キット動作検証用に作成した、CLK発信プロジェクトの32ビットカウンタのうち、8ビットを信号として、FMC/GPIO変換ドータカード経由で外部LEDにつないでその動作を確認しました。

[プロジェクト概要]
クロック==>CLK生成==>32ビットカウンタ(UP)==>出力ビット選択==>CLK出力(本来の出力)
                     =>8ビット抽出==(FMC/GPIO変換カード)==>外部LED(検証用の出力)


あとがき
 とにかく大変でした、作成にまる1日、チェックに半日、材料費はほどほどで3千円、配線はぐちゃぐちゃ、配線は、Spartan6のバンクまで考慮していないため、将来、ピン設定との齟齬が出る怖れがあります。





 




2009年9月17日木曜日

Spartan6 Evaluation Kit(SP601)を使ってみました。

今まで、手が出せずに購入したままになっていた、Xilinx Spartan-6 FPGA SP601 Evaluation Kit を、使い始めました。

1.ボードの動作確認。
 キット同梱のマニュアル「Getting Strated with the Xilinx Spartan-6 ...」のとおり、シリアル(UART)接続での操作、サンプルの画像処理プログラムの動作を確認しました。

※開発環境 Windows VISTA 64bit Home Premium での確認は失敗しました。
 シリアル(UART)接続での操作では、VISTAにハイパーターミナルが実装されていないので・・・×
 画像処理プログラムの動作確認では、WinPcap の DLL が導入出来ず・・・×
(開発環境のセットアップ時 WinPcapのインストールは実行されるがDLLがインストールされなかった。)
==>Windows XP Home 32bit 環境で これらの動作確認は成功しました。

2.テストプログラムの作成、動作確認
 以前Altera CyclonIII スタータキットで最初に作成した、テストプログラムを Spartan6 EvaluationKit SP601 に移植しました。
 
 1)テストプログラム
   キットに実装されているクロックの信号をカウンタに取り込み、カウンタのビットの0/1の切り替えをクロック信号として外部に出力する。
  出力周波数の切り替えはプログラムモードによるカウンタのビット選択でおこなう。
  
  CyclonIII スタータキットで作成したテストプロジェクトより使えそうな部品VHDLソースは
    Func_gen.vhd  カウンタのビットをプログラムモードで選択し、CLK信号を出力
    Simple_Cunter.vhd キット実装の水晶発信器のCLK信号をカウント(カウンタ カウントアップ)
    mode_change.vhd 4プッシュボタンでプログラムモードチェンジ

 2)プロジェクトの作成
  ①ISE Project Navigatorを立ち上げる。(Xilix ISE Design Suite 11 / ISE / ISE 64ビット / ISE Project Navigator )
  ②「New Project」ボタンクリック
    ・Create New Projectダイアログ
     Name : TestFuncGen
Location : C:\Xilinx\Project\TestFuncGen << C:\Xilinx\Projectを指定していた場合
・Device Propertiesダイアログ
Product Category : All
Family : Spartan6
Device : XC6SL16
Package : CSG324
Speed : -2
・Create New Sourceダイアログ  スルー
・Add Existing Sourceダイアログ スルー
    *空のプロジェクトが出来る。
 3)プロジェクトに既存(前述)のソースファイルを追加する。
   プロジェクト名 TestFuncGenを選択し、右クリックして、各ソースファイルを追加。
 4)追加エンティティ(ソースファイル)のシンボル化
   追加された各ソースファイルを選択した状態で、[Processes]の Design Utilities / Create Schematic Symbol を実行
 5)プロジェクトに Schematec を追加 (CyclonIII スタータキットでの場合、トップエンティティ)
   プロジェクト名 TestFuncGenを選択し、右クリックして、New Source... を実行する。
New Source Wizrd
Select source type…: Schematic
File Name : TestFuncGen
 6)Schematic の編集
  ①シンボル化されたエンティティを追加する。
    シンボル選択ウインドウの Categories に プロジェクトのディレクトリが表示されるので、選択、>> 4)で作成されたシンボルが表示 これを選択、Schematic にドラッグ&ドロップで追加する。
  ②ワイヤーの追加
    Add Wire のアイコンで 各シンボル端子(シンボル間接続)にワイヤを張る。
  ③入出力の追加
    Add I/O Maker アイコンで 各シンボル端子(FPGAの入出力)に入出力を作成する。
  ◎IPの追加
   IPを使用する場合、一旦、仮プロジェクトを作成、そこにIPを CORE Generator & Architecture Wizard を使って追加する。
    すると、仮プロジェクトのディレクトリにVHDL(Verilog HDL)のソースファイルが生成されているので、このファイルを本プロジェクトに追加、シンボル化してこのSchematicに追加する。

 7)ピン配置(定義)
  ① Schematic (TestFuncGen) を選んだ状態で 「I/O Pin Plannig(PlanAhead) - Pre-Synthesis」 「I/O Pin Plannig(PlanAhead) - Post-Synthesis」「Floorplan Area/IO/Logic(PlanAhead)」のいづれかを選び ピンの定義 を行う。

 8)ダウンロード(Device Programming)
  ①Evaluation Kit ボードの USB(JTAG)コネクタとPCを接続する。
  ②Schematic (TestFuncGen) を選んだ状態で 「Configure Target Device」
    *ISE IMPACT立ち上がる
  ③iMPACTで Bundary Scan ==> Right click to Add Device or ….
  ④Mouse 右クリック
    Add Xilinx Device クリック 
     バイナリファイル C:/Xilinx/Project/TestFuncGen/testfuncgen.bit を選択 *FPGAのアイコンが表示
      Programを選択==> Device Programing Properties ダイアログ表示
             ダウンロード開始

--------------------------------------------
 今回 開発環境は Windows VISTA 64bit Home Premium で行いました。当初、7)ピン配置(定義)で 設定プログラム PlanAhead が 立ち上がり時 にダウンし、それ以降の作業が不能になりました。WindowsXPに開発環境(ISE WebPACK™ )を組み、同じ手順を試行しました。その結果、ピン配置、ダウンロードの処理が問題なく行え、不完全ながらキットでの動作確認ができました。
 その後、Windows VISTAの環境に戻り、あれやこれやと試した結果、libPackStanSolver.dll の読み込みでエラー発生していることがわかりました。
 XilixのHPで、ISE のアップデート 11.3 があったのでこれを適用したところ、この障害は解消されました。
--------------------------------------------
※操作性で違和感を感じる点
   ・ピン配置(定義)、ダウンロード時にソースを選択した状態で行ったこと。(プロジェクト単位で行った方が納得)
   ・IPの追加が、直接 Schematic に出来なかったこと。
   ・ソースファイルでシンボルを作成するが、なかなかシンボル選択リストに表示されなかったこと。
・ダウンロードiMPACTでは、バイナリファイル(ダウンロードファイル)を選択し、Programe実行て初めてFPGAが認識されるようです。慣れるまでは不安。
--------------------------------------------
 今回 手っ取り早くSpartan6を試したかったため、Altera CyclonIII の開発環境からソースファイルを転用しました。したがって、テストプロジェクトは、一つのトップエンティティ+複数の部品エンティティの構成でとなりました。
 どうも前述の違和感は、AlteraとXilixの文化の差に起因するのでしょうか?文化の差、、たとえばプロジェクト意味が異なるのでは、どうもXilinxでは、1つのプロジェクトは1つの開発環境を意味し、複数のトップエンティティがもてるように感じます。(必要なトップエンティティを選んでコンフィグレーション / ダウンロードするかたちを採るのでしょうか?)
 とにかく、現時点では、マニュアルを読み倒す必要があると思います。

2009年9月2日水曜日

Xilinx ISE Design Suite の導入

Xilinx Spartan6 FPGA SP601 評価キットがようやく入手できたので。開発環境を整えました。その手順をここに記録します。

////////////////////////////////
 
 概要
  1.Xilinxアカウント登録
  2.ライセンスの登録
  3.ISE Design Suiteのインストール
  4.ISE Design Suiteの動作確認

  ※今回のISE Design Suiteは 以前、Xilinxからのメール
  「Welcome to Xilinx Electronic Fulfillment」、
  「Xilinx, Inc. – Important Information Regarding Your Spartan(r)-6 FPGA SP601 Evaluation Kit Purchase」
  に従いインストール作業を行った。

  ※評価キット同梱のメディア(DVD、USBメモリ)は今回使用しなかった。

////////////////////////////////

1.Xilinxアカウント登録
 1)メール「Welcome to Xilinx Electronic Fulfillment」記載の
   https://secure.xilinx.com/webreg/register.do?group=esd_oms
  でXilinx HP にアクセス

  (1)ユーザアカウントの作成
     userid : ×××××@××××.×××  ※今回メールアドレスにしました。
     Corprate Email : ×××××@××××.××× ※Xilinxからのメールを受けたメールアドレス。
     password : ××××××××
     First Name : Taro
     Last Name : Yamada
    でユーザーアカウントを作成する。 
  (2)Xilinxからメール「Xilinx Registration: Account Activation」が届く
  (3)メール記載のアドレスでユーザーアカウントをアクティブ化する。
     https://secure.xilinx.com/webreg/activate.do?languageID=1&key=s5w7ea36827
  (4)ユーザーIDとパスワードでサインインする。
  (5)ユーザープロファイルを登録する。(メールアドレスは、Xilinxからメールを受け取ったアドレス)
  (6)サインアウト
        
2.ライセンスの登録
 1)準備 PCのEthernet MACアドレスを調べる。
  (1)すべてのプログラム/アクセサリ/コマンドプロンプトを起動
  (2) ipconfig /all を 実行
  
   Microsoft Visual C++ 2005 Redistributeale(x64)

   Windows IP 構成

    ホスト名 . . . . . . . . . . . . : My-PC-ORION
    プライマリ DNS サフィックス . . . . . . . :
   . . . . . . . . . . .
     Gigabit Ethernet NIC (NDIS 6.0)
    物理アドレス. . . . . . . . . . . : 00-21-70-XX-XX-XX
    DHCP 有効 . . . . . . . . . . . . : いいえ
   . . . . . . . . . . .

   が表示されるので ホスト名(My-PC-ORION)と物理アドレス(00-21-70-XX-XX-XX
)を控える。

 2)再度 https://secure.xilinx.com/webreg/register.do?group=esd_oms でXilinx HP にアクセス
  (1)ユーザーIDとパスワードでログインする。
  (2)Home/Support/Product Download and Licensing のページに切り替わる Tab:3.Create New Licences 
  (3)ISE Design Suite WebPack Edition, Node-Locked License にチェック 「Generate Node-Locked License」をクリック
  (4)Generate Node Liense ページ  [2 SYSTEM INFORMATION] 「Select a host] [
  (5)Add a host....
    Operating System : Windows 64-bit
    HostID Type : Ethernet MAC
    HostID Value : 00-21-70-XX-XX-XX
    HostID Name : My-PC-ORION
   「Add」をクリック
    
     ※手間取っていると タイムアウトエラー 一旦サインアウト サインイン
  (6)REVIEW LICENCE REQUEST
「Next」をクリック

    Congratulations
    Your new license file has been successfully generated and e-mailed to ...
    Please add this sender (xilinx.notification@entitlenow.com) to your ...    

   License File Details
    Node License
    Host ID: 002170XXXXXX

    Products
    ISE Design Suite: WebPack Edition, Node-Locked License (Full): 1 seats

  ※ Tab:4.Manage Licensesの表示に切り替わる。

3.ISE Design Suiteのインストール (引き続きXilinx ウエブサイトでの作業)
 1)Home/Support/Product Download and Licensing の Tab:1.Download Software に移る。
 2) の ISE Design Suite : Full DVD  
   Full DVD Single File Download Image 5.63GB の [Download] を実行
 
   *ダウンローダー プログラムのインストール が要求される。 適宜にインストール
   その後 ファイル Xilix_11.1_ISE_DS_SFD.tar のダウンロードが開始される。
   C:\DownLoad\Xilinx のフォルダを作成 そこにダウンロード

 3)Xilix_11.1_ISE_DS_SFD.tarの解凍
  (1)Cygwinを起動 (Windows用 tarコマンド(フリーソフト)を使う代り)
  (2)ダウンロードディレクトリへ cd /cygdrive/c/DownLoad/Xilinx を実行
  (3)解凍 tar xvf Xilix_11.1_ISE_DS_SFD.tar を実行

 4)xsetup.exe の実行
   (1)C:\DownLoad\Xilinx\Xilinx_11.1_ISE_DS_SFD\xsetup.exeを実行

    ((ウイルス対策ソフトをOFF  ?))

    ライセンス承諾
(2)インストールディレクトリの選択 そのまま
  (3)インストールする製品の選択 そのまま
  (4)インストールオプションの選択そのまま
     *ケーブルドライバ WindowsXP Pro x64 WindowsVISTA Business サポートの記述


  (5)インストールの実行
  (6)Xilinx License Configuration Manager  が立ち上がる。
     ・Start ISE WebPack を選択 「Next」をクリック
     ・ライセンスファイルのリスト表示 「Close」をクリック
  (7)Jungo デバイスソフトウエアのインストール 
     ・インストール
  (8)Xilinx デバイスソフトウエアのインストール 
    ・インストール

  (9)インストール完了

  (10)XilinxUpdateが立ち上がる。
    ・「Check for Update」をクリック
   エラー発生 [An error occurd when running the XilinxUpdate program]
[Unable to access the required files.Common reasons for this are:]
[The machine is not currently connected to the internet ]
 5)ISE Design Suite のアップデート( XilinxUpdateエラー対応)
  (1) http://www.xilinx.com/getproductでXilinxウエブサイトにアクセス
    Xilinxからのメール
  「Xilinx, Inc. – Important Information Regarding Your Spartan(r)-6 FPGA SP601 ..
記載のアドレス  
  (2)Tab:2.Software Updates  ISE Suite 11.2.Complete Update for Windows64 選択 
  (3)ダウンロードファイル Xilinx_11.2_ISE_DS_nt64.tar  を解凍
  (4)xsetup.exe の実行
     C:\DownLoad\Xilinx\Xilinx_11.2_ISE_DS_nt64\xsetup.exe

   ①Select Destination Directory
     C:\Xilinx\11.1   そのまま 「OK」クリック
   ②Warning      「Yes」クリック
   ③Updateリスト    そのまま 「OK」クリック
    * 進捗表示 0%の時間が長い。

4.ISE Design Suiteの動作確認
  (1)起動
    すべてのプログラム>Xilinx ISE Design Suite 11> ISE > ISE 64ビット > Project Navigator
  (2) Tip of the Day が表示 「OK」クリック
  (3)新規プロジェクトの作成
    File > New Project...
  (4)New Project Wizard が表示
   ・Name Test
   ・Location C:\Xilinx\Project\Test (C:\Xilinx\Projectフォルダ作成)
   「Next」クリック
  (5)New Project Wizard  Device Properties
   ・Family Spartan6 を選択
   ・Device XC6SLX16 を選択
   ・Package CSG324 を選択
   「Next」クリック
  (6)New Project Wizard  Create New Source
   「Next」クリック
  (7)New Project Wizard  Add File
    CQ出版 Interface 9月 の 3章のソース(同誌HPよりダウンロード)
     [test.ucf] [test.vhd] を 追加
   「Next」クリック
  (8)New Project Wizard  Preoject Summary
   「Finish」をクック
  (9)Adding Source Files....が表示
   「OK」をクック
  (10)Generate Program Fileを実行
   ① Designタブ Hirardy ウインドでトップモジュール test - rti(C:\Xilinx\Projct\Test\test.vhd) を選択
   ② Processes: test - rti ウインドで Generate Prograing File が表示 それをクリック
   ③ [Synthesis] [Implenet Design/Translate]まで通過、[Implenet Design/Map]でエラー

  一応ISE Design Suiteの 動作確認はできたことに???

////////////////////////////////
 積み残し
・Windows の適合性
 今回、PC環境はWindowsVISTA64ビットHomePre.、XilinxのツールでWindowsVISTA Businesを前提にしているものかあり、実際に評価キットでの開発を始めたら、インストールし直しする羽目になる可能性あり。
・USB/シリアル ドライバーのインストール
 今回使用PCは、他のマイコン用に同様なドライバが組み込まれているので、一連のインストール作業のうち USB/シリアル ドライバーのインストールは省いた。

////////////////////////////////
 今回は、時間が取れなくて、ちょっとお茶を濁した程度、まだ評価キット自体にたどり着けない、、ちょっともどかしい。。。こんなところです。
 

2009年8月31日月曜日

Spartan-6 Evaluation Kit が届きました。

先日、Digi-Keyを通して発注した Xilinx Spartan-6 Evaluation Kit(EK-S6-SP601-G-J) が 本日(8/31)届きました。
 発注当時、納期が10月中旬だったのですが 8/29 に 出荷の案内メールが届き、 本日の納品となりました。
 さて、アジア系の兄ちゃんが腕組みをしているパッケージを開封する。レター、マニュアル、すべて英文で日本語が一切無い。さらに、さらに、電源アダプターが無い。
 ここで、パッケージを見直す。何処にも、品番EK-S6-SP601-G-Jの表示が無い。はたして、届いたこのキット自体本当に「EK-S6-SP601-G-J」なのか?? 納期を犠牲にして、-Jを発注したのに、EK-S6-SP601-G が届いたのか。それだと多少不満が残る。
 そこで、Xilinx (Japan)に以下の内容で問い合わせる。(パッケージ記載の電話番号)
*届いた製品が、品番EK-S6-SP601-G-J であることの確認
 ・パッケージの何処を見れば、-G-J、-G の区別が出来るのか。
 ・シリアル番号等で確認出来ないのか。 
*電源アダプタが入っていない。
 
 Xilinx (Japan)の対応 
 「Digi-KeyはXilinx Japanの代理店ではないので、一切対応は出来ない。」とのこと。
 
 営業担当との、会話で、余談的に出た内容ですが。EK-S6-SP601-G-J は、電源アダプターが、日本の安全基準を満たさないので、電源アダプターだけ、適合するものに置き換えただけとのこと。


 まあ、愚痴はこの辺にして、開発環境の整備を暇をみて始めようと思います。




 
 
 
 
  

2009年7月30日木曜日

Spartan-6  Evaluation Kit を発注しました。

以前から、購入を考えていた、Xilinx Spartan-6 Evaluation Kit をDigi-Keyで発注しました。
 価格 35,057円(税別) 発送予定 10月中旬 たぶん忘れた頃届くと思われます。

Xilinxの発売と同時にAVNET等で購入した人は既に手に入れらたのではと思います。(当時 納期は6週間待ち)

 購入目的は、「このキットをただ触ってみるだけ」、そんな訳でDigi-Keyや、東京エレクトロンデバイスなどで取り扱いが始まってから購入しようと思っていました。

 先日まで、Digi-Keyのホームページで、Xilinxの新製品情報が無いか、こまめにチェックしていたのですが、このキットの情報にたどりつくことはありませんでした。
 
 本日たまたま、このホームページでDC/DCコンバータの価格を調べたついでに、Xilinxの開発キットを見てみると、検索フィルターにSpartan@6のエントリがあったので、検索をかけると、Spartan-6 Evaluation Kit にたどりつけました。で 早速発注。

 今回は、品番EK-S6-SP601-G-Jを発注しました、Digi-Keyでは非在庫なので、10月中旬の納期予定になりました。
 品番EK-S6-SP601-Gを発注したほうが、遥かに早い納期(7月30日発注で8月中旬納期)なのですが、今ひとつ勇気が無く-Jを発注しました。(多分、マニュアルの一部が日本語と言う程度の差だとは思うのですが。)

余談
 あとは、評価キットが届くころ、思いっきりの円高になっていると、ガックリ(予想) 日ごろ為替レート(ドル/円)には無縁の経済音痴なのですが、Digi-Keyで物を購入すると、ニュースの経済情報(為替レート)に思わず注目している自分がいます。

2009年7月9日木曜日

LPC2388 GNU GCC 浮動小数点の扱い

CQ出版、Interface誌 付録基板 LPC2388 を あいも変わらず、暇をみてはいじっています。
 以前に組み込んだプログラムの一つに不具合があり、これを調べていて、その原因が浮動小数点(float、double)の扱いにあることが判りました。

 今のところ、まだ解決の目途は立っていません。

1.コンパイルオプション -mhard-float について。
 LPC2388を触り始めたころ、浮動小数点の扱いで、-mhard-float  をコンパイルオプションに加えるようになった。
 どうもこのコンパイルオプションが問題と思われるようになった。
 1)コンパイルオプション -mhard-float なしで、問題のプログラムを Make する。
   標準Cライブラリ(libc.a、libm.a、、)の関数を使用しているサブルーチン、関数、では、依然、不具合は解消されず。しかし、標準Cライブラリ(libc.a、libm.a、、)の関数を使用しないサブルーチンでは不具合は解消していた。
 2)コンパイルオプション -msoft-float を加えて、問題のプログラムを Make する。
   Make時、リンクでエラーが起こる。(標準Cライブラリが不適合)

2.msoft-float 環境のgcc開発環境について、
  標準Cライブラリを msoft-float で構成すれば、問題解決と思い。gcc開発環境の再インストールを行った。
 (gccのインストールで、configure の オプションに --with-float=soft を加えた。)
 1.2)のMakeエラーは解消、でも不具合は残った。


3.ARM7TDMI-Sの浮動小数点対応について。
 Interface 2009/5 P58 の 「機能を拡張するコプロセッサ」の節 表2 コプロセッサ番号 CP11、CP12 で 倍精度/単精度浮動小数点 の記載があり、LPC2388が浮動小数点処理機能をハードで実現すると思われ、コンパイルオプション -mhard-float  は妥当と思われた。
 しかし ARM7TDMI-S Revision r4p3 Technical Reference Manual の 4.1.1 「Coprocessor abailability」では、CP14 Debug controller と CP15 System contorol だけの記載  やはり コンパイルオプション -msoft-float が正解なのか。。。


※ もともと、gccの開発環境は、同じCQ出版 DW誌の STM32F103(Cortex-M3)の開発環境です。
 LPC2388で使う場合、CPUのアーキテクチャの差異を考慮して、gccの再インストールしなければならないと思います。

 今回、-msoft-float 対応 で gccのインストールのみ、configure の オプションに --with-float=soft を加えたが、newlibについては行わなかった。(makeが通ったのでかまわなかったと判断)
 次は、newlibの再インストールでも行おうと思います。(指定可能かどうか不明ながら)。。

 現時点では コンパイルオプション -mhard-float  の適否は不明。(-msoft-floatが正解と言い切る自信無し。)


ひまを見てボチボチと、、、、

 >>追加検証 
  gccとnewlibのインストール configureオプションに --with-float=soft を追加。 + コンパイルオプション -msoft-float の make。
   浮動小数点でこけていた箇所が通るようになった。 一応動作確認。(7/10)

2009年7月6日月曜日

デジタル・デザイン・テクノロジ(付録Lattice XP2)を眺めてみる。


以前、購入していたCQ出版デジタル・デザイン・テクノロジ①を眺めています。
感想を言えば、付録FPGA基板を使えるまでが大変!

ネックとなりそうな点
部品
 ・水晶発信器
 ・フラッシュメモリ
ダウンロードケーブル


 今回、ダウンロードケーブルにこだわってみました。
まず、P24の図2 「Lattice社FPGAをプログラミングするための回路」について。
1.部品をチェック
 ・ロジックIC 74VHC244 1ヶ
 ・抵抗 10KΩ 6ヶ 100Ω 5ヶ
 ・コンデンサー 100pF 5ヶ
 ※ここまでは、手持ちのパーツでまかなえますが。
 パラレルポートのP7(JTAG)、74VHC244のP1、P17に接続している論理回路記号 NOT + AND が何気なく書いてある。
 どうすればよいのか???

2.論理回路 NOT + AND について。
 まず、調べる。トランジスタとダイオードで回路が組めそうです。

3.論理回路 NOT + AND を検証する。

 真理値表は

 入力A   入力B   出力C
74HVC-P17  JTAG 74HVC-P1
  真     真     偽
  真     偽     真
  偽     真     偽
  偽     偽     偽   

 手持ちの トランジスタ 2SC1815 、ダイオード ショットキーバリア VRM 60V で上記の NOT + AND 部の回路を組む。
 抵抗は ほどほどの結果が R1 1KΩ、R2 200Ω、R3 20KΩ の組み合わせて得られた。

Vccおよび 入力Hiは 3.3Vで試した。(今回は回路の動作を検証することがせいぜい) 

 1)論理を検証
   真理値表に従い 入力/出力を確認
 2)入力B(パラレルポート P7(JTAG))でファンクションジェネレータで生成した方形波(デューティ比50%)を受ける。入力Aは Hi(真)。


  出力Cで得られる結果

     入力方形波  結果(出力Cの波形チェック)   
      10KHz ◎
      20KHz ◎
      40KHz ○
      50KHz △ デューティ比 45%
     100KHz △ デューティ比 40%
     200KHz × デューティ比 10% で かなり波形は崩れる。かろうじて周波数が検出できる。


 とりあえず、論理回路の動作が検証できたところで、ひと満足、ダウンロードケーブルの完成は先のまた先、FPGAの検証は果てしなく遠い彼方、、、

 PCのパラレルポートの規格から言うと、数MHzの動作が欲しいが、果たして、LatticeのFPGAのダウンローダーがどの程度の転送レートか、まだ調べてもいない。 (今後要チェック)

 19200のボーレートでの書き込みが出来ればよいのですが、高周波に対応するためのトランジスタ、ダイオードの選定が必要になるかも知れません。(パラレルポートでボーレートというのも変ですが、、)

 また、信号のレベルに応じて、抵抗を選び直さなければいけないかも知れません。

 ロジックIC 74VHC04 (NOT) 74VHC08 (AND)で 組むことも 選択枝のひとつになります。

   
  

 

2009年6月25日木曜日

Spartan-6  Evaluation Kit が出ました。

以前より気になっていました。Xilinx Spartan-6 の 評価キットがようやく出てきました。
詳細は http://japan.xilinx.com/products/boards_kits/spartan6.htm にあります。

評価キット[EK-S6-SP601-G-J]は Spartan-6 XC6SLX16-CS324-2CES を搭載、価格は$295で あとはいつ入手できるか です!

1.FPGA仕様
 ロジックセル 14,579 ブロックRAM 72Kバイト

旧スタータキット(HW-SPAR3AN-SK-UNI-G 価格$199)搭載の Spartan-3 XC3S700 の ロジックセル 13,248 ブロックRAM 45Kバイトに比べると ひとつ上の XC6SLX25 搭載が順当とも思われ、少々残念。

2.キット仕様
 ・Flashメモリ 64MB      パンフレットでは 256Mb とある。
 ・RAM     128MB DDR2  パンフレットでは 128Mb とある。
 ・クロック  200MHz
 ・LAN 10/100/1000 Ethernet
 ・GPIO FMC-LPC connector という コネクタで 64ピンの信号が取れるようです。
 
 なんと言っても、このキットの魅力は、「FPGA自体にMemory Controller Blockが搭載されていることで、128MBのDDR2が利用できるらしい!」と言うことです。
 現在、ALTERA CycloneIII のスタータキットを使っていますが、キット搭載の32MB DDR を利用しようとして、メモリコントローラを構成したのですが、ピンアサインでエラーが発生、仕方なくFPGA内部に64KBのメモリを構成し何とか凌いでいます。

 また、気になる点が GPIO(UserI/O)のほとんどが専用コネクタ(FMC-LPCと言う規格らしい)になり。対応のケーブル、サブボートが必要になりそうな点です。Xilinxの従来のキット(Spartan-3A DSP 3400A )でも使用されているコネクタなので、なんとかなるようですが、少々不安。
>> 現時点で、このコネクタ(FMC-LPC)から、UW-SCSIケーブルコネクタ(らしき)への変換サブボードが存在するみたいですが、詳細不明 個人的には、UW-SCSIの内部コネクタへの変換サブボードがあれば、80線のフラットケーブルにGPIOが引き出されるのでありがたいのですが。。。


3.購入について、
 USの購入サイトAvnet,NuHorizons を覗いてみると、価格は上記定価で、Xilinx出荷6週間となっている。発売開始が6週間後ということでしょう。8月中に入手できればと思います。    

LPC2388 GCCによる開発 メモ 中間まとめ

未だ、CQ出版 Interface誌 LPC2388付録基板のベースシステムの構築が出来ていません。


1.IRQによる割り込み処理のハンドリング。
 1)実装するIRQ

  ベースシステムのIRQ例外処理のはとりあえず。
  ・システムの稼動チェック(ハートビート)用に TIMER0の割り込み。 
  ・LCD(SG12864ASLB-GB-R01)のリフレッシュ用に TIMER1の割り込み。
  ・Key入力用(タクトスイッチのON/OFFスキャン用)に TIMER3の割り込み。
  ・システム汎用にTIMER2の割り込み。
  ・シリアル通信受信用のUART1の割り込み。
  を、使用します。

 2)IRQのハンドリング(手法1)  >> 今のところ不調
    I誌のgcc用のサンプルを利用
  (1)IRQハンドリング関数は CPU_IRQInterrupt(void)を使用 
     gcc_sample.cで定義/宣言され、startup.sでIRQ割り込みとして呼び出される。   
  (2)IRQハンドリング関数で VICIRQStatus による分岐で各IRQ割り込み処理を実行する。

   /* CPU割り込み処理 */
    void CPU_IRQInterrupt(void)
    {
     switch(VICIRQStatus)
     {
       case INT_IRQ_TIMER0:
        // for Timer0 IQR Interrupt
        TIMER0_IRQInterrupt(); // システム監視 ハートビート
        /* タイマ割り込みクリア */
        TIMER_InterruptReset(&TIMER_0);
        break;
       case INT_IRQ_TIMER1:
        // for Timer1 IQR Interrupt
         Lcd_IRQ_Handler();   // LCDリフレッシュ
        /* タイマ割り込みクリア */
        TIMER_InterruptReset(&TIMER_1);
        break;
       case INT_IRQ_TIMER2:
       ----------------------------

 3)IRQのハンドリング(手法2)
  (1)ハンドリング関数は CPU_IRQInterrupt(void)を使用 (手法1と同じ)
  (2)それぞれのIRQ例外処理関数のアドレスを VICVectAdd4,VICVectAdd5,,,にセットする。
  (3)IRQハンドリング関数で VICVectAddr にセットされた関数のアドレスを使用して、各タイマー、UARTのIRQ例外処理を実行する。
   ※IRQ例外処理側 (関数ポインタの扱い)
      void (*pfunc)(); // 関数ポインタ宣言
      pfunc = VICVectAddr; // 関数のアドレスを代入
      (*pfunc)(); // IRQ例外処理関数のCall
      VICVectAddr = 0x00000000; //IRQアドレスクリア(※訂正)
   ※IRQ設定側
      extern void Sys_IRQInterrupt( void ); //IRQ例外処理関数(TIMER0)
       /* ↑ 同一ソースファイル内で定義されていれば不要 */
      --------------
      VICVectAddr4 = (u32)Sys_IRQInterrupt; // IRQ例外処理関数のアドレスをセット


2.ARMモード/Thumbモードについての注意事項
 1)ARMモードでの標準ライブラリ(libc.a, libm.a等)の指定
    LIBRARY_DIRS = -L /usr/local/arm-tools/arm-elf/lib -L /usr/local/arm-tools/lib/gcc/arm-elf/4.4.0
 2)Thumbモードでの標準ライブラリ(libc.a, libm.a等)の指定
    LIBRARY_DIRS = -L /usr/local/arm-tools/arm-elf/lib/thumb -L /usr/local/arm-tools/lib/gcc/arm-elf/4.4.0/thumb
   ※一部でもARMモードのモジュールがあると、標準ライブラリを組み込む場合、リンク時にinterworkのワーニングが出、動作が怪しくなる。
   ※gccパッケージのインストールでconfigureオプション--enable-interworkを指定しているのにワーニングが出るのが不可解。


3.リンクスクリプトファイル
  FreeRTOSのサイトから次のソースをダウンロード
  FreeRTOSV5.2.0/デモ/[ARM7_LPC2368_Eclipse]/RTOSDemoの lpc2368.ld を修正し利用。
 1)ramサイズを64Kに変更   
 2)usbramを16Kに変更


※※※※訂正※※※※
  手法2の動作確認 不調 >> 最初の1歩に戻り再検証
  ①再度 CQ出版 I誌から再び、gcc_sample を 入手
     ● 5/13 gcc用サンプル・プログラム アップデート(gcc_sample.zip)
  ②gcc_sample.zipを解凍、gcc_sampleをビルド
  ③基板上のLEDの点滅を確認 [手法1の IRQで呼び出される関数でLEDを点滅]
  ④gcc_sample.cを手法2で出来るように修正

**修正箇所**

a. define

  /* 割り込みコントローラ(VIC) */
  #define VIC_BASE_ADDR 0xFFFFF000
  #define VICVectAddr4 (*(volatile unsigned long *)(VIC_BASE_ADDR + 0x110))
  #define VICVectAddr (*(volatile unsigned long *)(VIC_BASE_ADDR + 0xF00))

b.IRQハンドラー関数

  /* TIMER0 割り込み処理 */
  void TM0_IRQInterrupt(void)
  {
    if( toggle == 0 ) {
      toggle = 1;
      *FGPIO_FIO1PIN =0x00000000; /* P1[18,19] '0' -> LED ON */
    } else {
      toggle = 0;
      *FGPIO_FIO1PIN =0x000C0000; /* P1[18,19] '1' -> LED OFF */
    }
    *TIMER_T0IR =1;  /* タイマ割り込みクリア */
  }

  /* CPU割り込み処理 */
  void CPU_IRQInterrupt(void)
  {
    void (*pFunc)();
    pFunc = (void*)VICVectAddr;
    (*pFunc)();

    VICVectAddr = 0x00000000; // VICVectAddr のクリア ※1 追加
  }

c.Main関数
     検証用にポート1の19ピンに繋がるLEDの点滅を加える。

/* タイマ割り込みLED点灯制御プログラム */
  int main(void)
  {
    *SYS_SCS = *SYS_SCS | 1; /* FGPIO Select */

    /* LED点灯制御設定 */
    *FGPIO_FIO1DIR =0x000C0000; /* P1[18,19] OutPut */
    *FGPIO_FIO1MASK=0x00000000; /* P1[18] Non Mask */
    *FGPIO_FIO1PIN =0x000C0000; /* P1[18,19] '1' -> LED OFF */
    ----------
    *TIMER_T0MR0 = 1000000;      /* 供給クロック周波数=1秒 */
    *TIMER_T0MCR = 0x00000003;    /* Match時にTCクリア&割り込み */

    VICVectAddr4 =(unsigned long )TM0_IRQInterrupt;
    *TIMER_T0TCR = 1;         /* タイマスタート*/
toggle = 0;
    ----------
**動作検証**
 結局不調       
 TIMER0 割り込み処理 TM0_IRQInterrupt(void) の最初の割り込みの実行は確認
 でもそれっきり。

**さらにもがく**
    VICVectAddr = 0x00000000;(※1)をIRQハンドリング関数(IRQInterrupt)に追加

※※動作検証※※
  ようやく成功。





2009年5月25日月曜日

FreeRTOSV5.2.0(LPC23xx)を解析する。

CQ出版 Interface誌 2009.5付録基板 LPC2388を何とか使えるようにしたいと思い、悪あがきを続ける。

1.GNU GCCによる開発環境の整備
 ・バージョン4.3.0 4.4.0 いづれも LED点滅など簡単なプログラムは可能
 ・複数割り込み等、少々込み入ったプログラムは、一定時間稼動後ハングする。

2.FreeRTOSによる開発プロトタイプの構築
 ・http://www.freertos.orgにアクセスし、ダウンロードサイト(http://sourceforge.net)からFreeRTOSV5.2.0.zipをダウンロードする。
 ・zipファイルを展開し、ARM7_LPC2368_Eclipse,Common,SourceのフォルダをCopyし、プロトタイプの構築を試みる。
 ・ARM7_LPC2368_Eclipse/RTOSDemoのフォルダでバージョン 4.4.0 でmakeを実行
 ・configPINSEL2_VALUEの未定義エラーが起こる、FreeRTOSConfig.h の #define confinPINSEL2_VALUEのコメントをはずす。
 ・再度ビルド、 no memory region specified for loadable section `.eh_frame' が起こる。
 ・適当に、lpc2368.ld(リンカスクリプト)を修正
    ※追記内容
     .eh_frame_hdr : ALIGN (4)
     {
     KEEP (*(.eh_frame_hdr))
     } >ethram          <<(ramをethramに変更)
     .eh_frame : ALIGN (4)
     {
     KEEP (*(.eh_frame))
     } >ethram          <<(ramをethramに変更)

     (ramでは「RTOSDemo.elf section .eh_frame will not fit in region ram」ビルドエ- で ethramに変更 これも適当)

 ・再度ビルド実行 成功 ただし、「does not support interworking」のワーニング表示
 ・このディレクトリをCopyしRTOS開発環境のプロトタイプとする。
    ARM7_LPC2368_Eclipse >> ARM7_LPC2388_Prototype
RTOSDemo >> RTOS_Prototype
    lpc2368.ld >> lpc2388.ld ファイル名変更
    Makefileの内容も併せて変更 lpc2368 を lpc2388 に変更
    ビルドを試す。 >OK

3.FreeRTOSによる開発プロトタイプの構築 その2
 プロトタイプへの修正内容
  ・LCD関連の無効化(将来 SG12864に対応)
  ・TCP/IPプロセスの無効化
  ・LEDを 基板LED1 Port1 Pin18に変更
 1)FreeRTOSの分析
  ・main.cの分析

4.自作関数の組み込み
 1)LEDコントロールの組み込み
 2)LCD(グラフィック)コントロールの組み込み。
  不具合
  ・memset,strcpy,strncpy,strlen,strcatでハングする。
  ・memset等の関数を自作する。LPC_memset等 とする。
    >>一応 動作OK
 *memset,strcpy等の標準関数は今後必須としたいので、>>
  ・コンパイルオプション検討(自作関数用 LPC23Lib.a )
    COMPILE_OPTS = -O1 -mcpu=arm7tdmi-s -fomit-frame-pointer -mthumb-interwork
       を
    COMPILE_OPTS = -mthumb -O0 -v -mhard-float に変更。
    (-mcpu=arm7tdmi-s で エラー Error: selected processor does not support requested special purpose register -- `mrs r3,CPSR'... )
    でようやくOK

5.デバッグ用にLOGのLCD出力
  FreeRTOSの関数 xTaskCreate() 正常に実行される。
   〃       vTaskStartScheduler() ほどほどに動作。
    ・タイマー0の割り込みで実行される関数を portISR.c (ARMモードでコンパイル)から自作関数(thumbモードでコンパイル)に置き換えると、VICVectAddr4に設定されるアドレスが1バイトずれる。> 仕方なく、portISR.c にコードを書き込む。(原因不明)
    ・このタイマー割り込み関数は、最初の割り込み時に実行される。しかし、それ以降の割り込みは確認出来ず。

6.泥沼。
  1)thumbモードをARMモードにしたり、thumbモードに戻したり。(Makefileをいろいろイジル)
  2)etc.

7.現時点でのLPC2388の壁
 1)割り込み関連の扱い VICVectAddrX, VICVectCntrlX,,,etc.
 2)命令系がARMモードとThumbモードの2ある事。
    参考にするサンプルコード(プロジェクト)が両方使っているケースが多い。
 3)startup.s , boot.s 等のスタートアップ用のアセンブラコードが難解。
 4)リンクスクリプトファイルも難解。
 5)とにかくタイマー0の割り込みが安定的に動かない。。。。。
 6)GNU GCC の地雷 >> 単に変数を追加するだけで動作が異なる。









    





 

2009年5月14日木曜日

GNUによる開発環境の整備(for ARM7TDMI)

組み込み用の開発環境として、GNUによる開発環境の整備を試行します。
問題はWindowsVISTA 64bit、失敗覚悟で行います。

1.linux環境の構築(Cygwinのインストール)
 1)"http://www.cygwin.com"にアクセス
 2)「Install or update now!」のアイコンをクリック ダウンロードで「実行」
    [Cygwin Setup]インストーラが立ち上がる。
 3)「Choose A Dounload Source」で Install from Internet を選択
 4)「Select Root Install Directory」は デフォルト"C:\cygwin"のまま設定
 5)「Select Local Packege Directory」は 適当にディレクトリ"C:\DownLoad\Cygwin"を設定
 6)「Select Your Internet Connection」で Direct Connection を選択
 7)「Select Download Site」で 適当にダウンロードサイトを選択
 8)「Select Packeges」先頭の"All"の横の"Default"はそのまま。
   ①パッケージの追加
    再度[Cygwin Setup]インストーラが立ち上げ以下のパッケージを追加する。
     ・"Archive" zip等のファイルの圧縮/解凍
     ・"Devel"  gcc、make等の開発ツール
     ・"Editors" vi等のエディター
     ・"Net"/"inetutils" telnet等のネットワークツール

--アンインストールの場合  
( ⑧「Select Packeges」で 先頭の"All"の横の"Default"をクリックして"Uninstall"に変更する。)
     

2.GNU開発環境のインストール
 1)GNU関連パッケージの入手
  ①"http:://www.gnu.org"にアクセス
  ②[DownLoad]をクリック
  ③「How to get GNU software」の[・Download it from the web or via FTP:we....]をクリック
  ④「GNU mirror list」の[Asia/Japan ftp://ftp.ring.gr.jp/pub/GNU]をクリック
  ⑤gccパッケージの入手
   ・[gcc]をクリック
   ・[gcc-4.4.0]をクリック(最新版にトライ)をクリック
      ※IE8.0では不調 [Apr 22 09:39 gcc-4.4.0]の表示
   ・[gcc-4.4.0.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑥binutilsパッケージの入手( ④のFTPサイトより。)
   ・[binutils]をクリック
   ・[binutils-2.19.1.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑦gmpパッケージの入手( ④のFTPサイトより。)
   ・[gmp]をクリック
   ・[gmp-4.3.1.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑧mpfrパッケージの入手
   ・"http://www.mpfr.org/”にアクセス
   ・[Latest release: download]をクリック
   ・[mpfr-2.4.1.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑨Insightパッケージの入手
   ・"ftp://sourceware.org/pub/insight/releases/”にアクセス
   ・[insight-6.8.tar.bz2]をクリック
   ・c:\Download\GNUに保存
  ⑩newlibパッケージの入手
   ・"ftp://sourceware.org/pub/newlib”にアクセス
   ・[ newlib-1.17.0.tar.gz]をクリック
   ・c:\Download\GNUに保存

 2)インストール (Cygwinでの作業)
  ①インストール先ディレクトリ作成
   ・cd /usr/local
   ・mkdir arm-tools
  ②各パッケージの解凍
   ・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.19.1.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.0.tar.bz2
   ・tar jxvf /cygdrive/c/DownLoad/GNU/insight-6.8.tar.bz2
   ・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
(arm-tools以下をバックアップ)
  ③binutilsパッケージのインストール
   ・cd binutils*
   ・./configure --target=arm-elf --prefix=/usr/local/arm-tools
   ・make
   ・make install
  ④gmpパッケージのインストール
   ・cd ../gmp*
   ・./configure --prefix=/usr/local/arm-tools
   ・make
   ・make check
   ・make install

  ⑤mpfrパッケージのインストール
   ・cd ../mpfr*
   ・./configure --prefix=/usr/local/arm-tools --with-gmp=/usr/local/arm-tools
   ・make
   ・make check
   ・make install

  ⑥gccパッケージのインストール
   ・cd ../
   ・mkdir BuildGcc
   ・cd BuildGcc
   ・../gcc-4.4.0/configure --target=arm-elf --with-gmp=/usr/local/arm-tools --with-mpfr=/usr/local/arm-tools --prefix=/usr/local/arm-tools --enable-interwork --enable-multilib --enable-languages=c --disable-libssp
    (--with-newlib を追加 */* 下記参照)
    (--with-float=soft を追加 7/10 )
   ・make
   ・make install

   (/usr/local/arm-tools/binにPATHを通す。 <== newlibインストール失敗対応 12/4 )

  ⑦newlibパッケージのインストール
   ・cd ../newlib*
   ・./configure --target=arm-elf --prefix=/usr/local/arm-tools
    (--with-float=soft を追加 7/10 )
   ・make
   -- インストールの中断(エラーによる)

     エラー発生
       内容
         lib_a-dummy.oのコンパイル時
/bin/sh: arm-elf-cc: command not found

     エラー解析
      a.現在GNU開発環境があるPCでnewlibのconfigureを実行、出力Makefileを今回のMakefileと比較(diff)
       > CC_FOR_TARGET=$(STAGE_CC_WRAPPER) arm-elf-gcc $(FLAGS_FOR_TARGET) 
       < CC_FOR_TARGET=$(STAGE_CC_WRAPPER) arm-elf-cc $(FLAGS_FOR_TARGET) <=今回
       なぜ arm-elf-cc になったのか?
      b.config.logを確認
       591行目 CC_FOR_TARGET があった。
      c.configureの確認
       8539行以降にCC_FOR_TARGETの設定が記述

対処
      a.深く考えなく、GCCのバージョン を 4.3.3 に入れ替える。
             ==>変わらなかった。
      b.GCCのインストール 各オプションを変える。
             ==>検討中 ==> 解決
次のオプションでgccの configure を実行 (--with-newlib を追加)
     ../gcc-4.4.0/configure --target=arm-elf --with-gmp=/usr/local/arm-tools
         --with-mpfr=/usr/local/armtools --prefix=/usr/local/arm-tools
         --enable-interwork --enable-multilib --enable-languages=c
         --disable-libssp --with-newlib
       で gccとnewlibのインストール作業をやり直した。

※newlibでの再ビルドは make clean では不十分、newlib-1.17.0.tar.gz の解凍からやり直したほうが良さそう。

   --インストールの続き
   ・make install

  ⑥gccパッケージの補足インストール
   ・cd ../BuildGcc*
   ・make all
   ・make install

3.GNU検証
 1)newlibインストール失敗(未解決)での検証
   ① TIMERでLEDを点滅プログラム
             ==> 成功
 ② LCD表示プログラム
     ・リンクで、-lc オプションがエラー  llibc がリンクできず。

その他
 1)NXP LPC2388用 ダウンローダー 「Flash Magic」のインストール
   ①"http://www.flashmagictool.com/"にアクセス
   ②Download FlashMagic.exe (ページ右側)をクリック
   ③インストールプログラムを実行
 2)CP2102_USB ドライバのインストール
   ①LPC2388基盤をUSB接続
   ②ドライバインストールを促されるので、インターネットでドライバを検索する方法でインストールを行う。