So-net無料ブログ作成

簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の九 [ALFAT]

※注意!
これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

動作確認編6


RTCらしく時刻をセットし、時計として機能させています。また同時に内部の温度センサーの出力を表示しています。
隣の温度計とは3度程高めに出力していたので、3を引き算してからLCDに表示させています。


簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の八 [ALFAT]

※注意!
これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

動作確認編5


ちょっと更新に間が空きましたが、別にサボって居た訳ではなく、ALFATの操作にガッツリ入る前に、ハードウエアデバックを完了させて置きたい思惑からですが、RTCでどっぷりはまりました。

取り敢えず今現在では、RTC内蔵のSRAMの読み書きや温度の取得辺りは動いているので、時計をセットして正しく使えるかを調べたり、うーん、残っている作業としてはH8のRTC機能の確認と、E8エミュレータの接続試験位になったかな?。

しかし今日はもうこんな時間なので寝る!。


簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の七 [ALFAT]

※注意!
これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

動作確認編4


前回まではシリアル通信のプログラミングを行い、ALFATのコマンドラインインタフェースへアクセスする野望への第一歩を踏み出しました。

今回はH8のI2C機能を有効とし、ALFATとの簡単な通信を行って、ALFATチップにファームウエアのインストールまでを行ってみたいと思います。



ALFATはH8に外付けされる周辺機能デバイスなので、H8とALFAT間で幾つかの信号線を接続する必要が有ります。具体的には

  • I2Cの信号線であるSDA(H8のP56)、SCL(H8のP57)
  • ALFAT側のデータが準備できた事を示すDATARDY、これはH8の割り込み(P14/IRQ0)に接続。負論理。
  • ALFATがアクセスできない状態である事を示すBUSY(H8のP12)。負論理。
  • ALFATをリセットするALFAT_RES(H8のP20)。負論理。
  • です。 I2Cの使い方の詳細は省きます。説明すると長いですから。
    ルネサスにはH8のI2Cの使い方のアプリケーションノートが公開されていますので、これを参考にしてください。
    IOポート等の初期化完了後、I2Cバスを有効にする初期化を行い、H8をI2CバスマスタにしてALFATに対してアクセスして行きます。この時、ALFATのデバイスIDは0xA4となります。
    初期状態のALFATチップにはブートローダーのみ書かれておりファームウエアは書かれていないので、まず初期化済みのSD/MMCカードに、ルートディレクトリにファームウエアのファイルだけを入れた状態で用意しておきます。 ALFATチップのファームウエアはGHI社のサイトからダウンロードしてください。

    電源を落とした状態で上記SD/MMCカードをソケットに挿し、電源を投入し、デバックモニタにALFATのコマンドラインインタフェースを中継するのみのプログラムを転送し、GOコマンドで実行させます。以下がその時のログです。途中は省いています。
    L
      Top Address=E800
      End Address=F881
    : G
    BL  ←ブートローダーの起動。実際には表示されていない
    LQUA  ←HTERMのコンソールからタイプしたファームウエアをロードするコマンド
    W00  ←読み込み開始
    W01
     ・
     ・
     ・
    W92
    W93
    ER 00  ←正常終了
    R  ←HTERMのコンソールからタイプしたファームウエアの実行コマンド
     GHI Electronics, LLC
    ----------------------
        ALFAT(TM) 3.18  ←ファームウエアバージョンの表示
    Z:>A:  ←HTERMのコンソールからタイプしたドライブの切り替え
    
    A:>LF  ←DIRコマンドと同じ(List Fileの略?)
    
    ALFATFWR.GHI  0x00012630 75312  ←ファームウエアファイル
    A:
    
    SD/MMCカードのドライブ番号はAドライブとなります。ユーザーインタフェースは、省略形式のDOSコマンドイメージです。簡単なコマンドだけなので、すぐに使えるようになります。
    今回使用したmainプログラムの一部
      /*SCI3の初期化 38400bpsに設定する。*/
      SCI3Init( 15 );
      /*I2Cの初期化*/
      I2CInit();
      /*ALFATのリセット*/
      cmd_w( alfat_reset );
      /*BOOT LOADERの起動待ち*/
      do { I2CMasterGetc( ALFAT_ADR, &rcv_data );} while( rcv_data != 'B' );
      do { I2CMasterGetc( ALFAT_ADR, &rcv_data );} while( rcv_data != 'L' );
    
      while( 1 )
      {
        if( (c = SCI3Getc()) != EOF )
        {
          if( c == '\r' ) SCI3Puts( "\r\n" );
          else SCI3Putc( c );
          I2CMasterPutc( ALFAT_ADR, c );
        }
    
        if( DATA_RDY == 0 )
        {
          while( DATA_RDY == 0 )
          {
            I2CMasterGetc( ALFAT_ADR, &rcv_data );
            SCI3Putc( rcv_data );
            if( rcv_data == '\r' ) SCI3Putc( '\n' );
          }
          I2CMasterGetc( ALFAT_ADR, &rcv_data );
          SCI3Putc( rcv_data );
        }
      }
    

    簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の六 [ALFAT]

    ※注意!
    これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

    動作確認編3


    前回までは簡単なプログラムを作成し、LCDに適当なメッセージを表示する所までやりました。

    今回はALFATのコマンドラインインタフェース機能にアクセスするべく、H8のシリアルとIC2を連結して、H8経由でALFATのユーザーインタフェースとやり取りするまでを行おうと思っていたのですが、作業開始時間が大きく遅れ、シリアルでのエコーバックまでしか行えませんでした。ALFATのユーザーインタフェースとの接続は次回に持越しです。



    もっとも、確実に進める為には一つ一つの機能を確認しながら実現していかなければならないので、今回はシリアルを受信に関しては割り込みを使いながらプログラムを作って行きます。

    シリアル通信定番のエコーバックです。

    以下がmainルーチンです。詳細の関数に関しては説明を省きます。

    void main(void)
    {
      int c;
    
      /*SCI3の初期化 38400bpsに設定する。*/
      SCI3Init( 15 );
    
      while( 1 )
      {
        c = SCI3Getc();
        if( c != EOF )
        {
          SCI3Putc( c );
          if( c == '\r' ) SCI3Putc( '\n' );
        }
      }
    }
    


    H8/3687Fには2つのシリアルポートが有りますが、その内の一つSCI3を使用します。

    受信に関しては割り込みでハンドラを起動し、リングバッファで構成される受信バッファに順次取り込みます。関数SCI3Getcはリングバッファから1文字取って来る関数で、バッファにデータが無ければEOFを返す仕様となっています。

    関数SCI3Putcは一文字送信する関数で、特に割り込みを使ってはいません。


    割り込みベクタテーブルは以下の様に作成します。長いので一部抜粋で。

    void PowerON_Reset( void );
    void abort(void);
    
    #pragma interrupt(TRAP0) /*トラップ命令#0*/
    void TRAP0( void ){}
    
            省略
    
    #pragma interrupt(IRQ0) /*外部割込み端子0*/
    void IRQ0( void ){}
    
    #pragma interrupt(IRQ1) /*外部割込み端子1*/
    void IRQ1( void ){}
    
    #pragma interrupt(IRQ2) /*外部割込み端子2*/
    void IRQ2( void ){}
    
    #pragma interrupt(IRQ3) /*外部割込み端子3*/
    void IRQ3( void ){}
    
            省略
    
    void SCI_3( void ); /*外部参照する為に、プロトタイプ宣言を行う。*/
    
    #pragma interrupt(IIC_2) /*I2C*/
    void IIC_2( void ){}
    
            省略
    
    #pragma interrupt(SCI_3_2) /*シリアル*/
    void SCI_3_2( void ){}
    
    #pragma section VECT
    /* 仮想ベクタテーブル */
    void (*const VEC_TBL[])(void) =
    {
      PowerON_Reset,	/*Vector 0 Reset Vector*/
      (void *)0,	/*Vector 1*/
      (void *)0,	/*Vector 2*/
      (void *)0,	/*Vector 3*/
      (void *)0,	/*Vector 4*/
      (void *)0,	/*Vector 5*/
      (void *)0,	/*Vector 6*/
      abort,		/*Vector 7*/
      TRAP0,		/*Vector 8*/
    
           省略
    
      IRQ0,		/*Vector 14*/
      IRQ1,		/*Vector 15*/
      IRQ2,		/*Vector 16*/
      IRQ3,		/*Vector 17*/
    
           省略
    
      SCI_3,		/*Vector 23*/
      IIC_2,		/*Vector 24*/
    
           省略
    
      SCI_3_2,		/*Vector 32*/
    };
    


    セクション定義ファイル(*.hsi)は以下の様になっています。CVECTと言うセクションが追加となっている点に注目してください。この割付アドレスは、デバックモニタの「User Vector」に一致させる必要が有ります。

    [Hew Section Information]
    Version=1.0
    Entry=2
    Group1=PResetPRG,P,C,C$DSEC,C$BSEC,D(0000E800)
    Group2=CVECT,B,R,S(0000F840)
    

    簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の五 [ALFAT]

    今日、明日はALFAT関連のドキュメント作成はお休み。

    写真は、左が今回の新しい基板。右はプロトタイプ。

    なんだかんだ言って、トラ技のおまけ基板(H8とかR8C)は色々と使っているんだな。
    過剰に性能を強調せず、押さえる所は押さえているので、ちゃんと使える所がいい。


    簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の四 [ALFAT]

    ※注意!
    これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

    動作確認編2


    前回まではデバックモニタをインストールし、HTERMに標準で備え付けられている機能を使って、汎用ポートの動作確認をしました。

    まあそこそこの機能的な確認をこのHTERMのPeripheral機能だけで出来る事が判って貰えたと思いますが、しかしより複雑な設定が必要となるデバイスの場合は、Peripheralで行うのは実際的ではありません。

    そこで今回からは簡単なプログラムを作成して周辺を動かしてみます。

    いきなりALFATの動作確認に入るのは止めて、まずはLCDからです。


    さて、動作確認は折角前回デバックモニタをインストールしたのだから、これを使わない手は無い訳で、H8/Tinyの内蔵RAM上にプログラムを展開します。なお、このプログラムはHEWのワークスペースとして作成しました。このワークスペースも収録する予定となっています。
    以下がセクション情報を保存したhsiファイルの中身で、この割付を参考に各セクションを配置すれば、なんとか内蔵RAMに納まると思います。
    [Hew Section Information]
    Version=1.0
    Entry=2
    Group1=PResetPRG,P,C,C$DSEC,C$BSEC,D(0000E800)
    Group2=B,R,S(0000F840)
    
    H8/3687Fには4KbyteのSRAMが内蔵されている事は以前書きましたが、実際には4Kbyteが連続領域にある訳ではなく、2つに分断される形で存在します。 そこで、2つの領域に上手く収まる様にセクションを割り振る必要があります。 今回はプログラムコードの類がそれ程大きなサイズではなかったので、ROM上に配置すべきセクションと、RAM上に配置すべきセクション程度の理由で別けてあります。
    各セクションを簡単に解説すると、
    PResetPRGはHEWのウイザードが生成した起動ルーチンのセクションです。
    Pは標準のプログラムコードセクションです。
    Cは標準のコンストセクションです。
    C$DSEC、C$BSECは変数領域の初期化時にHEW独自の組み込み関数が使用する変数領域のセクション名です。dbsct.cの中でセクション定義を見る事が出来ます。
    Dはデータ領域のコピー元のセクションです。これと対になるのがRセクションで、こちらはコピー先なのでRAM上に配置する必要があります。
    Bはmainが走る前に初期化を必要としない変数領域のセクションです。しかし初期化を行わないと言っても、mainが走る前には領域全体は0クリアされている事が前提となっています。
    Rは先程のDセクションのコピー先の変数領域です。つまりmainが走る前に決められた初期化が完了している必要があります。
    B、R共に0クリアであったり、初期化であったりの処理は何処で行われているかと言えば、HEWのウイザードが生成する「resetprg.c」の中の「_INITSCT()」と言う関数で行われています。この関数はソースコードが提供されておりませんので、具体的な解説は出来ません。内緒だそうです。
    Sはスタック領域のセクションです。Call Walkerやシミュレータを使って正確なスタックサイズを調べて、stacksct.hの定義を修正して使います。
    ※今回は割り込みを使用していないので、割り込みベクター関連のセクションは用意していません。
    ところでこのLCDですが、きわめて一般的なキャラクタLCDであり、まあほとんどの方が何らかのマイコンでいじった事があると思われるので、プログラミングに関しての詳細な解説は省きます。大変ですから。
    このLCDはH8/3687Fのポート3に接続されています。それぞれの信号線とbitの対応をイメージし易い様にビットフィールドで表しますと、
    typedef	struct
    {
     unsigned char led2  :1;    /*LED2*/
     unsigned char led1  :1;    /*LED1*/
     unsigned char e      :1;    /*Ebit*/
     unsigned char rs     :1;    /*RSbit*/
     unsigned char data  :4;    /*D4からD7までの線に接続*/
    } LCD;
    
    です。LCDは4bitモードで使用し、R/W端子はGNDへ固定としている為に、データは4bitずつ二回に別けて転送し、また書き込みのみしか使えないと言う事になます。
    H8の周辺I/OはメモリマップドI/Oであり、またデータレジスタはリードモデファイライトなので、一種のメモリとしてポートを扱う事とすると、構造体のポインタを用いて以下の様に記述する事が出来ます。
    LCD *lcd = (LCD *)&IO.PDR3.BYTE;
    
    static void LcdWrite4( char c )
    {
     lcd->e = 1;      /*Ebitを立てる*/
    /* lcd->e = 1;*/      /*Ebitを立てる*/
     lcd->data = c;  /*データ書込み*/
    /* lcd->data = c;*/  /*データ書込み*/
     lcd->e = 0;      /*Ebitを下げると書き込まれる*/
    }
    
    さて。適当なメッセージを決めたらビルドを行って、HTERM上からターゲットに転送を行いましょう。正しくエントリーポイントが設定されているならば、GOコマンドでメッセージが表示されます。が、メッセージが表示されない方はまずLCDのコントラストを調整してみてください。LCDの左下に有る半固定抵抗がそれです。
    コントラストをいじってもメッセージの影も形も見られないなら、それこそデバックモニタの出番です。HEWのDebugセクションでプログラムのビルドを行ったのなら、自動的にABSファイルにソースコードを参照する情報を付加されていますので、ABSファイルの読み込みが終了した時点で開くダイアログではソースコードの表示を行う方を選択し、HTERMのソースコードウインドウにソースコードを表示させます。これでソースレベルデバックが可能となりました。

    簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の三 [ALFAT]

    ※注意!
    これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

    動作確認編


    前回組み立てを完了?させたので、今回は簡単な動作確認を行ってみます。

    動作確認に使用するのは、例によってルネサスで無償配布されているデバックモニタです(新しいルネサスのマイコンボードを作ると、必ずこのデバックモニタで確認します。なんとなくこれが動けば安心できるので。)。


    書き込みにはHTERMでも構わないのですが、HTERMの場合は書き込みモジュールを用意しないと書き込みができません。H8/Tiny用の書き込みモジュールは自作しなくとも、秋月のH8/3664Fのキットに含まれている3664.MOTがH8/3694FやH8/3687F、つまり32byte書き込みタイプのTinyシリーズ全てに付いて流用できるのです(もともと3664.MOTは鹿取さんが提供した物ですし。)が、誰でも用意できる事を前提とするとFDTでの書き込みと言う事になります。FDTはあまりにもでかいプログラムなので、個人的にはあまり使わないんですがね。
    まず今回の基板の電源を投入する前に、電源スイッチ横の2極のピアノスイッチを両方とも下げておきます。この状態でパソコンと基板間をRS232Cケーブルで接続し、DCジャックに+5V電源を供給します。

    FDTを起動し、新規ワークスペースをウイザードを使って作成して下さい。
    基板の電源LEDが点灯している事を確認し、FDTのデバイス(D)メニューからデバイスとの接続を押すと、上手く行けば一番上の図の様に「Connection complete」と表示されるはずです。接続が失敗したときは、COMポート番号が一致していない、ケーブルのタイプが異なる、ピアノスイッチが下りていない、などなどの理由が有ると思いますので、適宜解決をお願いします。
    ファイル(F)から「Sレコードを開く」でデバックモニタのMOTファイルを読み込み、デバイス(D)から「対象ファイルのダウンロード」を行うと、ターゲットのマイコンにダウンロードを開始します。最終的には「Image successfully written to device」とメッセージが出れば成功です。
    電源を落とし、ピアノスイッチを両方とも上げて、FDTを終了させます。 ※FDTを終了させなくとも、デバイス(D)からデバイスとの切断を行うだけでも構いません。

    HTERMを起動します。HTERMの通信条件は38400bpsを選択します。この時マイコン基板と接続されているCOMポートを指定しても開けない時は、FDTがコネクションを張ったままの状態だと思われますので、FDTを確実に終了させて下さい。
    マイコン基板に電源を投入するとHTERMのコンソール画面にクレジットが表示されます。また、コンソール画面上で?をタイプすると、デバックモニタの内部情報やコマンドが表示されます。
    おめでとうございます!。ここまで動いたと言う事は、少なくとも通信は正常に動いていると言う事です。これさえ動けば後のトラブルなんて何とかなるものです。一安心!。
    注意!本来デバックモニタを使用するにはルネサス社の利用規定に同意する必要が有ります。今回収録されているデバックモニタは、ルネサス社のご好意で収録されているもので、利用する前に必ずルネサス社の半導体セミナーページの利用規定をよく読んで、納得の上で使用する事が前提となります。
    それでは早速デバックモニタの機能を利用してみましょう。デバッカーなのでプログラムの実行、ブレーク、ステップ実行、逆アセンブル表示、ソースレベル表示等が出来るのは当然なのですが、H8には沢山の周辺モジュールが実装されており、この周辺モジュールの設定、読み込みも可能です。
    表示(V)からPeripheralを起動すると、どの周辺モジュールを使用するか選択するダイアログが出ますので、今回は判り易いように「I/O」を選択してみました。

    画面を見て判るように、汎用ポートの各レジスタが一覧で表示され、また現在の設定状況も判ります(Write Only属性のレジスタの場合、必ずしも設定内容が反映されている訳ではありません、そこの所は注意が必要です。)。

    例えばタクトスイッチのSW4からSW7はポート5のP50からP53までに接続されていますから、これらスイッチを押した状態でCtrl+Rで画面を更新すれば、PDR5レジスタの該当するビットが0になる様子が見れます。
    こんな感じで汎用ポートの確認は容易に行えます。なおCN1に引き出されているポートは全てプルアップされていますので、このコネクタの各端子をGNDにショートすると0、何もしないと1と変化します。
    同様に周辺機能のTimer V(TV)を開き、適宜設定を行うと、圧電スピーカーを鳴らす事がこのデバックモニタのPeripheral機能で可能となります。

    COMポートの無いパソコンの場合は、USB/シリアルアダプター等を利用するかと思いますが、必ずしも全てのアダプターがFDTやHTERMと相性が良いわけではないようです。詳細は以下のリンクのページをお読みください。
    http://blog.so-net.ne.jp/hamayan/2006-05-04



    追記

    アナログ/入力専用ポートの引き出し先のCN6に来ている各信号は、全て100KΩでプルダウンされています。なので適当な電圧を掛けて動作確認をしてください。
    但し、当然の事ですが、H8の電源電圧である+5Vを超える入力は絶対にしないで下さい。壊れます。
    また、H8/Tinyのアナログ兼入力ポートは、どんな設定を行っても少なくとも1本はアナログポートとなってしまいます。だから、リセット後の状態のまま各ポートに電圧を印加しても、ch0のみはそれが反映されないでしょう。ch0を入力ポートとして確認する時は、ADコンバータの設定でch0以外のチャネルをA/Dと設定する必要があります。これがH8/Tinyの不思議な所。


    簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の二 [ALFAT]

    ※注意!
    これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

    組み立て編


    この基板が販売される時の形態は”キット”扱いで販売されます。具体的には面実装部品のみ出荷時に実装され、リード部品は購入した皆さんに半田付けを頑張ってもらいます。全部実装した状態で販売すると必然的に価格に実装費用が上乗せされてしまいますからね。勿論、大量注文の方はご相談くださいなのですが、まず居ないでしょう。


    基本的な手順は、背の低い部品から実装する!です。 付属部品の中ではタクトスイッチが一番背が低いかな。
    徐々に背の高い部品を実装していきますが、一つ加工して実装する部品が有ります。C16の電解コンデンサなのですが、うっかりしていて、LCDを実装した時に干渉する可能性が有ります。LCDと基板を接続するヘッダーの嵌合状態の間隔が11mm、電解コンデンサの部品高さがやはり11mm・・・orz。 なのでちょっと傾けた状態で実装してください。
    ジャンパーPINに付いて
    JP1、2、3、5のジャンパーPINがありますが、JP2、3はショートのままで使用します。特にPINを立てずとも、抵抗の足等で直接ショートして構いません。 JP1、5に付いては後ほど説明します。
    LCDを実装する場合は、LCDに付属しているPINヘッダーまたはソケットヘッダーを実装してください。
    スタットを立ててLCDを固定するとなお良いです。
    E8エミュレータを接続する時は、この位置にアングルタイプの14pinMILコネクタを実装してください。が、現時点ではマルツさんにアングルタイプの取り扱いが無いので、扱ってもらえるよう言って置きます。
    無いよりは有った方が良い機能としてRTCが有ります。前回説明したようにダラスセミコンダクタのDS1629が使用できますが、このRTCは温度保証タイプなので結構高価な方のRTCです。なので部品として付属はしていません。
    しかしファイルのタイムスタンプにも関係するので、やはり有った方が・・・。
    内緒の話ですが、ダラスセミコンダクタ(マキシム)はサンプル(無料)を請求すると気前良く送ってくれる事が多いです。よく量産時に注文すると物が入ってこないと言われるマキシムですが、マキシムダイレクトから購入するとそれ程でも無い・・・かな?。よくお世話になるので宣伝でした。 32KHzの時計用水晶は抵抗の足等でがっちり基板に固定して下さい。固定しないと振動で壊れる事があります。
    RTCのバックアップ電池は半田面側に実装します。半田面シルクが無いので写真を見て、極性を間違わないように慎重に実装してください。
    マイコンのクロック用にセラロックを用意していますが、HC49等の水晶振動子を実装する事も可能です。この場合は半田面側にチップコンデンサを実装する為のPADが用意されていますので、まずチップコンデンサを実装してから水晶振動子を実装すると良いでしょう。コンデンサの容量はH8のデータシート等を参考に決めてください。
    またH8/3687FにはRTC機能が実装されていますが、32KHzの時計用サブクリスタルを実装する事で実現可能となります。水晶振動子の実装上の注意点は、RTの時と同じです。


    その他

    極性の有る部品の実装には十分注意してください。

    モジュール抵抗の場合、シルクで1pinの位置に線が入っているのと、角ランドを使用しています。

    電解コンデンサの場合は、”+”マークがシルクで入っています。

    LEDは、足の長い方がアノードです。


    簡単ファイルシステム評価ボード ALFATを使ってみよう! 其の一 [ALFAT]

    ※注意!
    これからこのブログを書きながら最終的なハードウエアデバック、アプリケーションソフトウエアの構築に入ります。なので、写真や文章と実際の製品では異なる部分が出る可能性が有ります。その点をご了承下さい。

    近々の話ですが、マルツ電波で発売される簡単ファイルシステム搭載マイコンボード(基板サイズ150mm×100mm)のプレビューを何回かに別けて紹介します。
    このマイコンボードの特徴を説明しますと、従来は使用するマイコンにソフトウエアでファイルシステムを構築する事で様々な記録メディアを取り扱うようにして来た訳ですが、その場合の問題点としてまず実用的なファイルシステムの構築にはそれなりのソフトウエアのスキルが必要である事。もしこの部分をミドルウエアと言う形で購入するとなるとそれなりの値段(多分最低でも50マン)を支払うか、若しくはライセンス購入と言う形となり、まずアマチュアがミドルウエアの購入する事は考えられないなどなど、結構ファイルシステムの壁は大きかったのが実情です。
    そもそもミドルウエアで購入しても、ソフトウエアの最下層のデバイスドライバは自分で用意する必要が有りますし・・・。
    そこでこのAFLATチップを搭載したマイコンボードの出番となるわけです。
    このALFATチップを簡単に説明しますと、FAT12、FAT16、FAT32サポート。ディレクトリ構造サポート。各種メディア、SD、MMC(この基板ではサポートしていませんが、CFも接続できます。)のサポートです。 ※但し注意が必要なのは、VFATには対応していない点と、ALFATはイスラエルUSAの会社が開発した製品なので、ファイル名やディレクトリ名に日本語を扱う事はできません。もっともパソコンじゃあないのだからなんでもかんでも出来るなんて事はそれ程重要ではないでしょう。限定的な使い方になってしまいますが工夫すれば不自由はしないと思います。
    それ以外では書き込み、読み込みの性能が気になる所ですが、一応公称値で書き込みが最大128Kbyte/秒、平均で35Kbyte/秒です。 読み込みは当然もっと早くて、最大500Kbyte/秒250Kbyte/秒です。
    また、実はここが他の製品との差別化になるのかもしれませんが、ファイルの同時オープン数が16まであります。H8とかAVRとかR8Cとかの小さなメモリのマイコン上でソフトウエアでファイルシステムを実現した場合開けるファイル数は・・・、あまり期待はできませんね。
    ALFATとマイコンとの接続は、RS232C、SPI、I2Cの何れかの方法を選ぶ事が出来ますが、このマイコンボードではI2Cを選択しました。

    次にマイコン側の説明をします。
    使用しているマイコンはルネサスのH8/TinyシリーズのH8/3687Fです。 H8/3664Fやトラ技のおまけだったH8/3694Fを使った事のある方なら多いと思いますが、これらTinyシリーズに対してH8/3687Fの場合は、ROM、RAM共に容量が大幅UP(ROM 32Kbyte→56Kbyte、RAM 2Kbyte→4Kbyte)、また汎用ポートもH8/3694F辺りは総PINに対して意外とポートが少なかったりしますが、H8/3687Fには無駄なPINが無く、殆どのPINに何らかの機能が割り当てられている、真の使えるマイコンとなっています。
    こういった点からマイコンの選択はH8/3687F以外譲れませんでした。
    とまあここまで読んでいただいたなら、かなり高機能なファイルシステムをH8マイコンで取り扱いが可能で、しかもマイコン側のメモリ使用量もかなり抑えれられる為に空いたメモリとCPUパワーを存分にアプリケーションで利用出来そうだぞ!と思われたのではないでしょうか?(この程度の説明では無理か)。
    真の実用的なファイルシステムを実装したアプリケーションの一つの回答として、このALFATを利用したマイコンボードをお勧めしているのです。

    ALFATが高機能なのは実はとんでもない理由があります。ALFATは今流行りのIP物ではなく、何て事無いALFAT自身がマイコンだからです。フィリップスのARMマイコンLPC2114です。ぶっちゃけた話、メインのマイコンよりも遥かに強力なマイコンでファイルシステムを受け持っちゃって居るわけです( ̄ー ̄)。

    マイコンなので当然ソフトウエア(ファームウエア)がこのALFATチップにも搭載されている訳ですが、ファームのアップ方法は物凄く簡単で、メディアに特定のファイル名で新しいファームを入れて起動すれば、自動的にバージョンアップされると言う優れものです。ソフトウエアなので当然バグは付き物ですが、簡単な更新方法が用意されていると言うものこのALFATチップの性能の一つとして数えても良いでしょう。
    ではマイコンとALFAT以外の部分にも目を向けてみます。
    メディアソケット:
    まずカードソケットにはちょっとリッチにプッシュリリースタイプのソケットを選んでみました。
    通信コネクタ:
    D-SUB 9pinにはメスタイプを使用しています。あまり大きな声で言えませんが、マルツの秋葉原店の斜め向かいの店のキットを利用している方なら結構、オス/メスストレートケーブルを持って居たりするのではないでしょうか。それ、そのまま流用できます。
    デバックインタフェース:
    オプションですが、アングルタイプの14pin MILコネクタを用意していただければ、E8エミュレータで開発が可能です。
    電源:
    電源の入力はDCジャックから行います。5V電源をご用意ください。
    3LED:
    一つは電源のパイロットランプですが、残りはH8の汎用ポートに接続されているだけです。如何様にも利用できます。
    RTC:
    オプションですがダラスセミコンダクターのDS1629と言うRTCを実装できます。このRTCは単に時計機能だけではなく、時計補正用に使っている温度センサーの値も読み出す事ができますので、簡易的な温度計としても利用できます。 バックアップはリチウム電池(CR2032)で可能です。 別途ホルダー時計用水晶もご用意ください。
    キャラクタLCD:
    オプションですが16文字×2行のキャラクタLCDを実装できます。これは持っている人多いだろうとの判断で、オプション扱いになっています。手持ちのLCDを実装しても良いですし、勿論マルツさんでもここから購入できます。
    4スイッチとリセットスイッチ:
    4つのスイッチは汎用ポートに接続されています。H8マイコンのポート5はWKP端子と兼用となっているので、スイッチの入力をSLEEPやスタンバイモードからの復帰にも利用できます。省電力にどうぞ。
    あと、デバック時に便利なリセットスイッチも用意しました。
    汎用ポートコネクタ:
    基板内部で限定的な利用をされていない汎用ポートの殆どをここに引き出してあります。全部で26本の汎用ポートが利用できます。なお基板コネクタはオプション扱いで付属しませんが、このコネクタが利用できます。※必ずしも使わなければいけない理由が無いので、価格を下げる為にもオプションとしています。
    アナログ入力ポートコネクタ:
    8つのアナログポートの全てをここに引き出してあります。基板コネクタはオプション扱いで付属しませんが、このコネクタが利用できます。※必ずしも使わなければいけない理由が無いので、価格を下げる為にもオプションとしています。
    ユニバーサル領域:
    簡易的な回路を実装出来るようにユニバーサル領域を用意しました。 しかしこの領域を使う予定が無いのなら、ばっさり切り捨てても良いように、基板取り付け穴をポートコネクタの並びにも用意してあります。ここを切り捨てれば基板サイズは約120mm×100mmとなります。
    ブザー:
    操作音等を発生させる目的で、圧電スピーカを用意しました。ちょっとでかくて隣のスイッチの操作にやや支障を来たしますが、その辺はご容赦ください。
    容易に音を鳴らせるようにTMOV端子に接続してあります。

    この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。