バスマトリクス制御マクロ命令


【概要】

PIC32MXファミリのバスはバスマトリクスにより切り替えられて使われます。
この切り替えに関する制御用のマクロ命令が用意されています。

【バスマトリクス制御マクロ一覧】

主なバスマトリクス制御用のマクロ命令には下記のようなものが含まれます。

関数、マクロ名 機能内容
mBMXSetArbMode バスマトリクスの優先制御モードの設定
《書式》
  mBMXSetArbMode(mode);
    mode :アービトレーションモード(0、1、2)
mBMXSetRAMKernProgOffset RAM上でカーネルのプログラムを実行する場合の開始番地を指定する
BMXDKPBAレジスタを設定する
《書式》
  mBMXSetRAMKernProgOffset(offset);
    offset :カーネルプログラムの開始番地
《使用例》
  mBMXSetRAMKernProgOffset(0x4000);  //RAMの0x4000番地が開始番地
mBMXSetRAMUserDataOffset RAM内のユーザーデータ領域の開始番地を指定する
BMADUDBAレジスタを設定する
《書式》
  mBMXSetRAMUserDataOffset(offset);
    offset :ユーザーデータ部のRAM上の開始番地
《使用例》
  mBMXSetRAMUserDataOffset(0x6000);
mBMXSetRAMUserProgOffset RAM上でユーザープログラムを実行する場合の開始番地を指定する
BMXDUPBAレジスタを設定する
《書式》
  mBMXSetRAMUserProgOffset(offset);
   offset :ユーザープログラムの開始番地
《使用例》
  mBMXSetRAMUserProgOffset(0x7000);



【使用例】

このバスマトリクス制御マクロ命令を直接使うことは余りなく、RAM上でプログラムを
実行させる場合には、普通は関数のアトリビュートを使って行います。
このアトリビュートには下記が用意されています。

  __ramfunc__    :RAM上の関数として指定するがRAM内からのみ呼び出し可能
  __longramfunc__ :RAM上の関数として指定するが、どこからでも呼び出し可能

上記アトリビュートを実際に使った例が下記となります。
この例題では、IO_OnRAM()という関数がRAMに配置され実行されます。
__lonframfunc__アトリビュート指定されていますので、フラッシュメモリにある
main関数からの呼び出しが可能で、呼び出された後は、RAM上での繰り返しの
プログラムとなります。
 RAMですからフラッシュに比べウェイトステートが少なくなり、このプログラムでは
5.7MHzでの繰り返し周期となります。
 このプログラムでコメントアウトされている、SYSTEMConfigPerformance()関数を
有効とすると、繰り返し周期は11.4MHzの最高速度となります。








目次に戻る