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等の設定
     ともかくいろいろありそうです。

0 件のコメント:

コメントを投稿