SHOW:
|
|
- or go back to the newest paste.
1 | # [USER:8][NEW:1][MEMSIZE:3][MANUFACTURER:4][PROCESSOR:4][TYPE:8][REV:4] | |
2 | - | // [USER:8][NEW:1][MEMSIZE:3][MANUFACTURER:4][PROCESSOR:4][TYPE:8][REV:4] |
2 | + | # NEW 23: will be 1 for the new scheme, 0 for the old scheme |
3 | - | // NEW 23: will be 1 for the new scheme, 0 for the old scheme |
3 | + | # MEMSIZE 20: 0=256M 1=512M 2=1G |
4 | - | // MEMSIZE 20: 0=256M 1=512M 2=1G |
4 | + | # MANUFACTURER 16: 0=SONY 1=EGOMAN 2=EMBEST |
5 | - | // MANUFACTURER 16: 0=SONY 1=EGOMAN 2=EMBEST |
5 | + | # PROCESSOR 12: 0=2835 1=2836 |
6 | - | // PROCESSOR 12: 0=2835 1=2836 |
6 | + | # TYPE 04: 0=MODELA 1=MODELB 2=MODELA+ 3=MODELB+ 4=Pi2 MODELB 5=ALPHA 6=CM |
7 | - | // TYPE 04: 0=MODELA 1=MODELB 2=MODELA+ 3=MODELB+ 4=Pi2 MODELB |
7 | + | # REV 00: 0=REV0 1=REV1 2=REV2 |
8 | - | 5=ALPHA 6=CM |
8 | + | #For 1 bit, AND 0x1. |
9 | - | // REV 00: 0=REV0 1=REV1 2=REV2 |
9 | + | #For 3 bits, AND 0x7. |
10 | #For 4 bits, AND 0xf. | |
11 | - | // pi2 = 1<<23 | 2<<20 | 1<<12 | 4<<4 = 0xa01040 |
11 | + | #For 8 bits, AND 0xff. |
12 | - | // rev1.1 B+ = 1<<23 | 1<<20 | 0<<12 | 3<<4 | 0xf<<0 = 0xa0003f |
12 | + | |
13 | # pi2 = 1<<23 | 2<<20 | 1<<12 | 4<<4 = 0xa01040 | |
14 | # rev1.1 B+ = 1<<23 | 1<<20 | 0<<12 | 3<<4 | 0xf<<0 = 0xa0003f | |
15 | ||
16 | proc getfield {hex offset mask} {return [expr {(($hex >> $offset) & $mask)}]} | |
17 | ||
18 | proc humanize {typ num} { | |
19 | set r "unknown - $num" | |
20 | switch $typ { | |
21 | new { | |
22 | switch $num { | |
23 | 0 {set r "Old Scheme"} | |
24 | 1 {set r "New Scheme"} | |
25 | } | |
26 | } | |
27 | memsize { | |
28 | switch $num { | |
29 | 0 {set r 256MB} | |
30 | 1 {set r 512MB} | |
31 | 2 {set r 1GB} | |
32 | } | |
33 | } | |
34 | manufacturer { | |
35 | switch $num { | |
36 | 0 {set r SONY} | |
37 | 1 {set r EGOMAN} | |
38 | 2 {set r EMBEST} | |
39 | } | |
40 | } | |
41 | processor { | |
42 | switch $num { | |
43 | 0 {set r 2835} | |
44 | 1 {set r 2836} | |
45 | } | |
46 | } | |
47 | type { | |
48 | switch $num { | |
49 | 0 {set r "rPi1 Model A"} | |
50 | 1 {set r "rPi1 Model B"} | |
51 | 2 {set r "rPi1 Model A+"} | |
52 | 3 {set r "rPi1 Model B+"} | |
53 | 4 {set r "rPi2 Model B"} | |
54 | 5 {set r ALPHA} | |
55 | 6 {set r CM} | |
56 | } | |
57 | } | |
58 | rev { | |
59 | switch $num { | |
60 | 0 {set r rev0} | |
61 | 1 {set r rev1} | |
62 | 2 {set r rev2} | |
63 | } | |
64 | } | |
65 | } | |
66 | return $r | |
67 | } | |
68 | ||
69 | ||
70 | set hex 0xa01040 | |
71 | set hex 0xa0003f | |
72 | #set hex 0x0010 | |
73 | puts "NEW:\t\t[humanize new [getfield $hex 23 0x1]]" | |
74 | puts "MEMSIZE:\t[humanize memsize [getfield $hex 20 0x7]]" | |
75 | puts "MANUFACTURER:\t[humanize manufacturer [getfield $hex 16 0xf]]" | |
76 | puts "PROCESSOR:\t[humanize processor [getfield $hex 12 0xf]]" | |
77 | puts "TYPE:\t\t[humanize type [getfield $hex 04 0xff]]" | |
78 | puts "REV:\t\t[humanize rev [getfield $hex 00 0xf]]" |