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]]" |