http://infocenter.arm.comにアクセスする必要があります。ビーグルボーンは、ARMv7であるCortex-A8を使用します。左側のCortex-Aシリーズプロセッサの下で、Cortex-A8は最新のマニュアルr3v2(rev 3.2)を入手します。ARMアーキテクチャでリファレンスマニュアルを展開すると、ARMv7-ARが必要になります(この記事の執筆時点では、C号が最新です)。
私の例に行くその情報を取る
http://github.com/dwelch67/beaglebone_samples
私のビーグルボーンショーの機能例:
12345678
Hello World!
413FC082
410330C3
00000000
00001131
00000011
00000000
00000000
00000000
00000002
13112111
00000000
00000000
00000002
12345678
つまり、これはr3p2(rev 3.2)コアのように見えます。マニュアルにあるように、ThumbEE、Jazelle、thumb、ARMがサポートされています。
紛らわしいのは、ti WebサイトのTRMです。これに焦点を当てるまで、ARMtrmはすべてJazelleがサポートされていると言っています。
ジャゼルエクステンション
Cortex-A8プロセッサは、Jazelle拡張機能の簡単な実装を提供します。これは、プロセッサがバイトコードの実行を加速せず、すべてのバイトコードがソフトウェアルーチンによって実行されることを意味します。
Jazelle拡張機能の実装では:
Jazelle状態はサポートされていません
BXJ命令はBX命令として動作します。
それは私たちにいくつかのことを教えてくれます。これは、他の場所がそう言っているにもかかわらず、このプロセッサにJazelleハードウェアがないことを本当に意味しますか?
また、jazelleコードを実行するには、bxと同じようにbxjを実行して、アームモードとサムモードを切り替えることも示しています。だから私はそれを試しました:
.globl bxjtest
bxjtest:
ldr r0,=skip
bxj r0
mov r0,#1
bx lr
skip:
mov r0,#2
bx lr
アセンブラがbxjを実装したように見えます
82000064 <bxjtest>:
82000064: e59f0044 ldr r0, [pc, #68] ; 820000b0 <GET32+0x8>
82000068: e12fff20 bxj r0
8200006c: e3a00001 mov r0, #1
82000070: e12fff1e bx lr
82000074 <skip>:
82000074: e3a00002 mov r0, #2
82000078: e12fff1e bx lr
ただし、コードはそのアドレスのarm命令から2を返します。それが何かを意味するかどうかわからない、多分あなたがジャゼルを働かせるためにあなたがしなければならない他のことがあるでしょう。そこには本当にジャゼルコアがないという印象を受けますが、ソフトウェアライブラリを購入するという印象を受けます。
Jazelleドキュメントは、アクセスするためにARMに連絡する必要がある種類のようです。だから私はそれ以上に実際にそれを使う方法を知りません。
ARMでさらに読んでください。ID_ISAR1レジスタは1を示します
0b0001
BXJ命令とPSRのJビットを追加します。
この設定は、Jazelle拡張機能の簡単な実装を示している可能性があります。
そして、ID_PFR0レジスタのARM ARM記述には、TRMよりも多くの情報が含まれているとのことです。
Jazelle拡張機能の簡単な実装は、値0b0001で示されます。
そして、0b0001は、そのレジスタのそのフィールドに対して読み取っているものです。
掘り下げるほど、これは「些細な実装」であるように見えます。これは、私にとって「そこにいない」ことを意味します。JMCRレジスタは、それが些細な実装である場合、読み取りはゼロ(RAZ)として返され、書き込みは無視される(WI)必要があることを示しています。それでも、BXJ命令を試しましたが、それでもarmコードが実行されました。