こんにちは。NoMaYです。最近、以下のスレッドに関わったのですが、どうもiodefine.hの作成ミスがあったのではないかなぁと思われましたので、スレッドを立ててみることにしました。iodefine.h で、IODEFINE_H_HISTORY キーワードについてjapan.renesasrulz.com/cafe_rene/f/forum5/8446/iodefine-h-iodefine_h_history続く。(すみません、上記スレッドの投稿主さんのhirakuni45さんにおかれましては、当方の投稿が終了するまで暫くお待ち頂ければ、と思います。あわてない、あわてない、との、一休さんの心持も良いかと思うのです。)
こんにちは。NoMaYです。ビットフィールド定義が使えない品種中で一番古いのはRX64Mだと思います。他方、RX64Mの前後の品種としてはRX63N及びRX65Nになると思いますが、どちらもビットフィールド定義が使えるようになっています。ハードウェアマニュアルの画面コピーは以下の通りですが、RX64Mのiodefine.hが前後の品種と異なっている合理的な理由らしきものは見当たらないです。ただ、RX64Mには2種類のUSB IPが内蔵されていて、片方はRX63N(直系の前世代版USB IP)及びRX65N(同一品のUSB IP)とも同一系統なのですが、もう片方は分家の新世代バージョンみたいなもののようでした。そして、こちらの分家の方に関しては、ビットフィールド定義を無効とした合理的な理由があると思いました。以下の画面コピーに赤文字で記入したように、読むと不定値が読めます、書く場合“0”としてください、と記載されている未使用ビットを含んでいるレジスタがゴロゴロしていまして、そのようなレジスタに対しては以下によりビットフィールドによる書き換えは不可ですので、あえて出来ないようにした、というのであれば(異論もあると思いますけれども)合理的な理由だと私には思えました。(それが理由かどうかは、あくまで私個人の推測、です。)理由:● C言語でのビットフィールド書き換えでは対象のビットフィールド以外のビットは読み出し値を書き戻す処理であるけれども⇒ 読むと不定値が読めます、書く場合“0”としてください⇒ 不定値が読めるなら“1”が読める可能性もある⇒ その読み出した“1”を書き戻す可能性もある⇒ でも“1”を書くことは禁止されている⇒ C言語でのビットフィールド書き換えは出来ない異論:(1) ビットフィールド書き換えは出来なくてもビットフィールド読み出しは可能なのだから合理性など無いのでは?⇒ この種のことで自分や身内が犠牲者になっているかどうかで意見は変わるのではないかなぁ、、、という気がするのです(2) 分家の新世代バージョンみたいなものとはいえ本家バージョンの流用設計の筈だからドキュメントの間違いでは?⇒ それはそれ、これはこれ、、、としか言いようがないかなぁ、という気がするのです(3) 分家の新世代バージョンのみビットフィールド定義を無効とするだけで良かったのでは?(本家バージョンを変える思考が全く理解不能!)⇒ 後日、推測(というか妄想かも?)してみます続く。以下、ドキュメントの画面コピーです。RX64Mグループ ユーザーズマニュアル ハードウェア編Rev.1.10 2016.10www.renesas.com/jp/ja/document/mah/rx64m-group-users-manual-hardware-rev110#page=1747RX63Nグループ、RX631グループ ユーザーズマニュアル ハードウェア編Rev.1.80 2014.04www.renesas.com/jp/ja/document/mah/rx63n-group-rx631-group-users-manual-hardware-rev180#page=1247RX65Nグループ、RX651グループ ユーザーズマニュアル ハードウェア編Rev.2.30 2019.06www.renesas.com/jp/ja/document/mah/rx65n-group-rx651-group-users-manualhardware-rev230#page=1519(参) 分家の新世代バージョンみたいなUSB IPの方RX64Mグループ ユーザーズマニュアル ハードウェア編Rev.1.10 2016.10www.renesas.com/jp/ja/document/mah/rx64m-group-users-manual-hardware-rev110#page=1855www.renesas.com/jp/ja/document/mah/rx64m-group-users-manual-hardware-rev110#page=1857