カスタマーサポートセンター

FAQ~よくある質問~ | FAQマスタ詳細表示

FAQ詳細情報

ID 10810542
FAQカテゴリ(大) デバイス対応
最終更新日 2016-01-17

質問内容

TN44885: 78K/RL78 でハードウェア乗算器を使う

回答内容

ターゲット:78K、RL78
コンポーネント:一般
公開日:2015年1月28日10時02分

 

概要
RL78 と 78K マイコンにはハードウェア乗徐算器を持つものがあります。これらのマイコンのランタイムサポートに、ハードウェア乗算器を含めたい場合は、以下の手順で行ってください。

 

RL78 用 IAR Embedded Workbench バージョン2.10 以降
プロジェクトオプション > 一般オプション > ライブラリ設定タブ にある、
□ハードウェア乗算/除算ユニットを無効化
のチェックを外してください。 現在選択されてRL78デバイスがハードウェア乗算/除算ユニットを持っていない場合、このオプションは使用できません。

コマンドラインからプロジェクトをビルドする場合、 src\hw_multiply_division_units フォルダにある、アセンブラファイルhwmdu_LibReplacement.s を含める必要があります。

 

78K用 IAR Embedded Workbench または、RL78用 IAR Embedded Workbench version 1.40 以前
IDEの、
プロジェクトオプション > 一般オプション > ライブラリの設定タブの
「ハードウェア乗算/除算器ユニットを使用」オプションを選択
現在選択されている 78K または RL78デバイスがハードウェア乗算/除算ユニットを持っていない場合、このオプションは使用できません。

コマンドラインからプロジェクトをビルドしている場合は、src\<LIB>\hw_multiply_division_unitsディレクトリに配置されたアセンブラファイルhwmdu_LibReplacement.snnまたはhwmuldiv_LibReplacement.snnを含める必要があります。

 

一般
使用しているデバイスがどの種類のハードウェア乗算器/除算器を使用しているか分からない場合は、\config\device フォルダにあるデバイスファイル(.menu) を調べてください。 このXMLファイルのエントリは <muldiv> 以下のいずれかの値を持ちます。

mul+div+mac = ハードウェア乗算器、除算器、MACユニットを持っています。
MUL + DIV = ハードウェア乗算器、除算器を持ってます。
MUL = ドウェア乗算器を持ってます。
なし=サポートされていません

さらに、以下のリンカのオプションを使用して、これらのルーチンを元のライブラリルーチンと入れ替えます。

RL78例(バージョン2.10以降):
--redirect ?I_MUL_L02=HWMUL_16_16_16
--redirect ?L_MUL_L03=HWMUL_32_32_32 
--redirect ?UC_DIV_L01=HWDIV_8_8_8 
--redirect ?UI_DIV_L02=HWDIV_16_16_16
--redirect ?UL_DIV_L03=HWDIV_32_32_32 
--redirect ?UC_MOD_L01=HWMOD_8_8_8
--redirect ?UI_MOD_L02=HWMOD_16_16_16
--redirect ?UL_MOD_L03=HWMOD_32_32_32 
--redirect ?SC_DIV_L01=HWSDIV_8_8_8 
--redirect ?SI_DIV_L02=HWSDIV_16_16_16
--redirect ?SL_DIV_L03=HWSDIV_32_32_32 
--redirect ?SC_MOD_L01=HWSMOD_8_8_8 
--redirect ?SI_MOD_L02=HWSMOD_16_16_16
--redirect ?SL_MOD_L03=HWSMOD_32_32_32

RL78例(バージョン1.40およびそれ以前):
-eHWDIV_8_8_8=?UC_DIV_L01
-eHWDIV_16_16_16=?UI_DIV_L02
-eHWDIV_32_32_32=?UL_DIV_L03
-eHWMUL_16_16_16=?I_MUL_L02
-eHWMUL_32_32_32=?L_MUL_L03
-eHWSDIV_8_8_8=?SC_DIV_L01
-eHWSDIV_16_16_16=?SI_DIV_L02
-eHWSDIV_32_32_32=?SL_DIV_L03

78K0R / K0 / K0S例:
-eHWMUL_16_16_16=?I_MUL_L02
-eHWMUL_32_32_32=?L_MUL_L03
-eHWDIV_8_8_8=?UC_DIV_L01
-eHWDIV_16_16_16=?UI_DIV_L02
-eHWDIV_32_32_32=?UL_DIV_L03
-eHWSDIV_8_8_8=?SC_DIV_L01
-eHWSDIV_16_16_16=?SI_DIV_L02
-eHWSDIV_32_32_32=?SL_DIV_L03

 

注意
上記のリストは完全ではありません。各リストは、それぞれの IAR Embedded Workbenchのリリースで別のリストになるかもしれません。

また、特定のアセンブラルーチンが交換する hwmuldiv_LibReplacement.snn または hwmdu_LibReplacement.s にあるライブラリ関数に記載されています。

 

すべての製品名は、各社の商標または登録商標です。

参考資料URL