ARMのマニュアルを直接読んでおく必要があります。テクニカルリファレンスマニュアルでは、このようなことについて触れています。実際にチップに組み込むときにcortex-m3のソースがある場合は、手で触れることができる外側のレイヤーや設定オプションが表示されます。いつものCortex-M3のTRMから
SETEND障害。コンフィギュレーションピンはCortex-M3 エンディアンを選択します。
そして、我々は別のヒットでそれを持っている:
プロセッサは、あなた が選択でき、設定ピン、BIGENDが、含まれているいずれかリトルエンディアンまたはBE-8ビッグエンディアン形式。この コンフィギュレーションピンはリセット時にサンプリングされます。リセット時にendimanness を変更することはできません。
技術的には、BIGENDに接続された外部ストラップを使用して設計することができます。ヒューズやその他の不揮発性のものを触れることができますARMコアのリセット、ARMコアのブートを管理する他のプロセッサまたはロジックを持ち、ARMコアのリセットを解除する前にそれを話したりプログラミングしたりすることができます。
一般に、アーキテクチャーのデフォルトエンディアンでグレインに反するのは悪い考えです。特に2つのフレーバーがあり、後者(BE-8)が(BE-32よりも)痛みを伴うようになりました。 gcc以外のツールチェーンがあることは認められていますが、大多数のユーザでさえ、間接テストの大部分はネイティブ(リトルエンディアン)モードです。本当にロジックをテストしたのか疑問に思うでしょう、ARMの設計検証の外にいる人は、実際にそのモードを押しますか?彼らはそれを十分にテストしましたか?
実際にビッグエンディアンのcortex-m3コードを作成しようとしましたか? cortex-mは16ビットの命令セット(サム2拡張付き)なので、どのようにBE-8に影響しますか? ARM命令を含むフルサイズのARMにBE-8を使用すると、32ビットのデータはスワップされますが、32ビットの命令はスワップしません。おそらくこれはTRMにあり、私はもっと読むべきですが、それは皮質に同じように働きますか? 16ビット命令はスワップしませんが、データはどうなりますか?親指で指示されたフルサイズの腕はどうですか?また、ツールチェーンは、ハードウェアが期待するものと一致しますか?
ところで、これは、cortex-m3の周りにチップを構築するときにインターフェイスするロジックにBIGENDという信号があり、そのロジックに入り、BIGENDのデフォルト設定を変更できることを意味します1つを提供しています)、または上記のように、チップにロジックを追加して、コンパイル時ではなくランタイムオプションにすることができます。
私はLPC1769マイクロコントローラのcortex m3ベースを持っていますので、どのレジスタをエンディアン設定を変更する必要がありますか –
@KalidasTateこれもまた、実行時に変更できるものではありません。登録はありません。 LPC1769はリトルエンディアンのデバイスです。 – duskwuff
リトルエンディアンのスティック。これはCortex-Mの業界標準です。 –