Bonjour,
Voici un petit post sur l'utilisation d'une sonde JTAG BDI2000 sur une SAM460Ex avec Amiga OS
La sonde BDI2000 n'est plus produite depuis longtemps mais peut se trouver sur Ebay.
Elle permet un debug en gélant completement le CPU et permet d'afficher les etats des registres/cache/MMU/.. du CPU
Elle dispose d'une interface de commande propriétaire pour faire des actions tres bas niveau ( halt et go du CPU et affcher des états)
Et aussi d'un interface GDB permetttant du debug source.
Voici un exemple de ce que l'on peut voir avec l'interface de commande propriétaire.
Je demarrre la carte et je lance la commande 'halt' alors que le CPU est toujours dans le Uboot.
On observe par exemple l'etat de la MMU avec la commande 'TLB 0 0xffffffff'
460EX>tlb 0 0xffffffff
IDX TID EPN SIZE VTS RPN USER WIMGE USRSVC
0 : 00 f0000000 256MB V0 -> 4_f0000000 U:0000 WI-G- XWRXWR
1 : 00 d0000000 256MB V0 -> c_00000000 U:0000 -I-G- -WR-WR
2 : 00 80000000 256MB V0 -> c_80000000 U:0000 -I-G- -WR-WR
3 : 00 90000000 256MB V0 -> c_90000000 U:0000 -I-G- -WR-WR
4 : 00 a0000000 256MB V0 -> d_a0000000 U:0000 -I-G- -WR-WR
5 : 00 b0000000 256MB V0 -> d_b0000000 U:0000 -I-G- -WR-WR
6 : 00 c0000000 256MB V0 -> d_c0000000 U:0000 -I-G- -WR-WR
7 : 00 e0000000 16MB V0 -> d_00000000 U:0000 -I-G- -WR-WR
8 : 00 e1000000 16MB V0 -> d_20000000 U:0000 -I-G- -WR-WR
9 : 00 e3000000 1KB V0 -> d_10000000 U:0000 -I-G- -WR-WR
10 : 00 e3001000 1KB V0 -> d_30000000 U:0000 -I-G- -WR-WR
11 : 00 e4000000 16KB V0 -> c_08010000 U:0000 -I-G- -WR-WR
12 : 00 e5000000 1MB V0 -> 4_00000000 U:0000 -I--- XWRXWR
13 : 00 ef000000 16MB V0 -> 4_ef000000 U:0000 -I-G- XWRXWR
14 : 00 e2000000 1MB V0 -> 4_bff00000 U:0000 -I-G- XWRXWR
15 : 00 00000000 256MB V0 -> 0_00000000 U:0000 -I--- XWRXWR
16 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- XWRXWR
17 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
18 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
19 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
20 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
21 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
22 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
23 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
24 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
25 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
26 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
27 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
28 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
29 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
30 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
31 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
32 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
33 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
34 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
35 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
36 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
37 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
38 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
39 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
40 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
41 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
42 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
43 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
44 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
45 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
46 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
47 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
48 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
49 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
50 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
51 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
52 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
53 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
54 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
55 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
56 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
57 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
58 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
59 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
60 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
61 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
62 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
63 : 00 00000000 1KB -0 -> 0_00000000 U:0000 ----- ------
On observe un etat de la MMU assez simple avec beaucoup de TLB (de 17 a 63) resté a 0.
Puis on continue l'execution avec la commande 'go' et on s'arrete avec la commande 'halt' lorsque l'on se trouve dans AmigaOS.
on observe l'etat de la MMU.
460EX>tlb 0 0xffffffff
IDX TID EPN SIZE VTS RPN USER WIMGE USRSVC
0 : 00 62171000 4KB V1 -> 0_03215000 U:0000 ----- -WR-WR
1 : 00 ffcbc000 4KB V1 -> 0_02f11000 U:0000 ----- -WR-WR
2 : 00 6ffaa000 4KB V1 -> 0_00057000 U:0000 ----- -WR-WR
3 : 00 ffff4000 4KB V1 -> 0_7fffe000 U:0000 ----- -WR-WR
4 : 00 7fa33000 4KB V1 -> 0_7d369000 U:0000 ----- X-RX-R
5 : 00 7fa34000 4KB V1 -> 0_7d36a000 U:0000 ----- X-RX-R
6 : 00 7fa32000 4KB V1 -> 0_7d368000 U:0000 ----- X-RX-R
7 : 00 7fa5b000 4KB V1 -> 0_7d317000 U:0000 ----- X-RX-R
8 : 00 60391000 4KB V1 -> 0_7d1ac000 U:0000 ----- -WR-WR
9 : 00 6ffae000 4KB V1 -> 0_0004f000 U:0000 ----- -WR-WR
10 : 00 6fffe000 4KB V1 -> 0_00009000 U:0000 ----- -WR-WR
11 : 00 60393000 4KB V1 -> 0_7d1ae000 U:0000 ----- -WR-WR
12 : 00 6ff9d000 4KB V1 -> 0_0005d000 U:0000 ----- -WR-WR
13 : 00 6fd54000 4KB V1 -> 0_023f9000 U:0000 ----- -WR-WR
14 : 00 6003b000 4KB V1 -> 0_7d4ae000 U:0000 ----- -WR-WR
15 : 00 ffbf6000 4KB V1 -> 0_7d183000 U:0000 ----- -WR-WR
16 : 00 60ffe000 4KB V1 -> 0_7ea8f000 U:0000 ----- -WR-WR
17 : 00 62ca4000 4KB V1 -> 0_7c98a000 U:0000 ----- -WR-WR
18 : 00 ffcc0000 4KB V1 -> 0_00cdd000 U:0000 ----- -WR-WR
19 : 00 61005000 4KB V1 -> 0_7ea86000 U:0000 ----- -WR-WR
20 : 00 621bd000 4KB V1 -> 0_02e83000 U:0000 ----- -WR-WR
21 : 00 621be000 4KB V1 -> 0_02e84000 U:0000 ----- -WR-WR
22 : 00 6ff6e000 4KB V1 -> 0_7ffd5000 U:0000 ----- -WR-WR
23 : 00 61b0a000 4KB V1 -> 0_7e45c000 U:0000 ----- -WR-WR
24 : 00 6ff1b000 4KB V1 -> 0_7ffbb000 U:0000 ----- -WR-WR
25 : 00 6ff60000 4KB V1 -> 0_0017a000 U:0000 ----- -WR-WR
26 : 00 61b14000 4KB V1 -> 0_7d2ff000 U:0000 ----- -WR-WR
27 : 00 621b1000 4KB V1 -> 0_02f49000 U:0000 ----- -WR-WR
28 : 00 02300000 256KB V1 -> 0_02300000 U:0000 ----- -WR-WR
29 : 00 02200000 1MB V1 -> 0_02200000 U:0000 ----- -WR-WR
30 : 00 02100000 1MB V1 -> 0_02100000 U:0000 ----- -WR-WR
31 : 00 02000000 1MB V1 -> 0_02000000 U:0000 ----- -WR-WR
32 : 00 01f00000 1MB V1 -> 0_01f00000 U:0000 ----- X-RX-R
33 : 00 01e00000 1MB V1 -> 0_01e00000 U:0000 ----- X-RX-R
34 : 00 01d00000 1MB V1 -> 0_01d00000 U:0000 ----- X-RX-R
35 : 00 01c00000 1MB V1 -> 0_01c00000 U:0000 ----- X-RX-R
36 : 00 01b00000 1MB V1 -> 0_01b00000 U:0000 ----- X-RX-R
37 : 00 01a00000 1MB V1 -> 0_01a00000 U:0000 ----- X-RX-R
38 : 00 01900000 1MB V1 -> 0_01900000 U:0000 ----- X-RX-R
39 : 00 01800000 1MB V1 -> 0_01800000 U:0000 ----- X-RX-R
40 : 00 01700000 1MB V1 -> 0_01700000 U:0000 ----- --R-WR
41 : 00 01600000 1MB V1 -> 0_01600000 U:0000 ----- --R-WR
42 : 00 01500000 1MB V1 -> 0_01500000 U:0000 ----- --R-WR
43 : 00 01400000 1MB V1 -> 0_01400000 U:0000 ----- --R-WR
44 : 00 01300000 1MB V1 -> 0_01300000 U:0000 ----- --R-WR
45 : 00 01200000 1MB V1 -> 0_01200000 U:0000 ----- --R-WR
46 : 00 01100000 1MB V1 -> 0_01100000 U:0000 ----- --R-WR
47 : 00 01000000 1MB V1 -> 0_01000000 U:0000 ----- --R-WR
48 : 00 e0040000 64KB V1 -> 4_00040000 U:0000 -I-G- -WR-WR
49 : 00 e0100000 64KB V1 -> 4_00100000 U:0000 -I-G- -WR-WR
50 : 00 ff000000 4KB V1 -> 4_ff000000 U:0000 -I-G- -WR-WR
51 : 00 ff000000 4KB V0 -> 4_ff000000 U:0000 -I-G- -WR-WR
52 : 00 e9000000 16MB V1 -> d_e9000000 U:0000 -I-G- -WR-WR
53 : 00 e9000000 16MB V0 -> d_e9000000 U:0000 -I-G- -WR-WR
54 : 00 e2000000 1MB V0 -> 4_bff00000 U:0000 -I-G- -WR-WR
55 : 00 eec00000 1MB V0 -> c_0ec00000 U:0000 -I-G- -WR-WR
56 : 00 e8000000 16MB V0 -> c_08000000 U:0000 -I-G- -WR-WR
57 : 00 e2000000 1MB V1 -> 4_bff00000 U:0000 -I-G- -WR-WR
58 : 00 eec00000 1MB V1 -> c_0ec00000 U:0000 -I-G- -WR-WR
59 : 00 e8000000 16MB V1 -> c_08000000 U:0000 -I-G- -WR-WR
60 : 00 ef000000 16MB V0 -> 4_ef000000 U:0000 -I-G- -WR-WR
61 : 00 ef000000 16MB V1 -> 4_ef000000 U:0000 -I-G- -WR-WR
62 : 00 40000000 1GB V0 -> 0_40000000 U:0000 ----- XWRXWR
63 : 00 00000000 1GB V0 -> 0_00000000 U:0000 ----- XWRXWR
On oberve une programmation bien plus riche.
Les connaisseurs reconnaitront les zones OS et Application ainsi que les zones I/O.
Je tente le debug avec l'interface GDB au lieu cette interface de commande propriétaire pour un prochain Post.
Christophe.
Amiga 500 / SAM460LE / SAM460EX