SSブログ

BBB(am335x) のROM exception vectorの中身を調べる

■ROM MAP
以下TIのam335xの技術リファレンスマニュアルを参照。

---------------------- 0x20000
|  ROM Exc. Vectors  |
|--------------------| 0x20020
|  Public ROM CRC    |
|--------------------| 0x20080
|     Dead loops     |
|--------------------| 0x20100
|                    |
|      Code          |
|                    |
|                    |
|--------------------| 0x2BFFC
|    ROM Version     |
---------------------- 0x28fff

上記のROM Exc. Vectorsの配置は以下の通り。

----------------------------
| 20000h |  Reset          | Branch to the Public ROM Code startup
|--------------------------|
| 20004h | Undefined       | PC = 4030CE04h
|--------------------------|
| 20008h | SWI             | PC = 4030CE08h  
|--------------------------|
| 2000Ch | Pre-fetch abort | PC = 4030CE0Ch
|--------------------------|
| 20010h | Data abort      | PC = 4030CE10h
|--------------------------|
| 20014h | Unused          | PC = 4030CE14h
|--------------------------|
| 20018h | IRQ             | PC = 4030CE18h
|--------------------------|
| 2001Ch | FIQ             | PC = 4030CE1Ch
---------------------------

■使用ツール
(1) U-Boot
(2) オンライン逆アセンブラ(http://www.onlinedisassembler.com/odaweb/)

■U-Bootのmdで0x20000をdump

U-Boot# md 20000
00020000: ea000232 e59ff018 e59ff018 e59ff018    2...............
00020010: e59ff018 e59ff018 e59ff018 e59ff018    ................

ARMのVector tableはアドレスではなくて、マシン語命令が入ってるようだから、
これだけだと分からん。調べるとオンラインの逆アセンブラがあった!
(http://www.onlinedisassembler.com/odaweb/)

逆アセンブラ結果。

.data:0x00020000	ea000232	b      0x000208d0	
.data:0x00020004	e59ff018	ldr	pc, [pc, #24]	; 0x00020024	
.data:0x00020008	e59ff018	ldr	pc, [pc, #24]	; 0x00020028	
.data:0x0002000c	e59ff018	ldr	pc, [pc, #24]	; 0x0002002c

なるほど、reset あとは、0x208d0に飛んでいるのか!
ここに am335x の Boot Codeが入っている訳ね。


以上。

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。