-
Notifications
You must be signed in to change notification settings - Fork 8
/
README.hardware
60 lines (47 loc) · 1.94 KB
/
README.hardware
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
It is hard running a backward compatible bare-metal OS on
Pi as things keep changing.
Some of this is mitigated if you parse the device tree
found on newer setups.
Hardware Changes:
=================
+ On 1GB systems the IO_BASE moved
from 0x20000000 to 0x3f0000000
+ Processor architecture changed from ARMv6 to ARMv7 to ARMv8
+ On Pi3 the pl011 is hooked to bluetooth, so
mini-uart is the default (pl011 is mapped to gpio 32/33)
+ ACT LED:
Model B was GPIO16, Active Low
On 2/B+/A+ was GPIO47, Active High
On 3B it is on an i2c/GPIO expander controlled by GPU
On 3B+ it is on GPIO29, Active??
+ When using mailbox to request firmware address, or the address
with 0xc0000000 instead of 0x40000000
+ Pi3 the Arasan MMC interface is enabled, and mapped to GPIOs 48-53,
Used by wifi?
+ Pi3 GPCLK2 is mapped to GPIO 43.
+ Pi2/Pi3, firmware brings system up in HYP (hypervisor) mode
+ Pi2/Pi3 have extra interrupt sources (PMU, etc)
Processor Changes:
==================
+ On ARM1176 the "wfi" instruction is a nop, you need to
use a MSR write to wait for instruction
Firmware Changes:
=================
+ Older firmware, the framebuffer byte order was GRB instead of RGB
+ Older firmware, the UART_CLOCK was 3MHz, it's 48MHz on newer
+ Older firmware, did ATAGS, newer use device-tree
+ Have issue on older-firmware loading kernel image >15MB
not sure if bug or not
It should be possible to port to Model 2-B with minimal impact:
+ Change mmio base address
+ Possibly some IRQ handler changes?
+ Cache and other low-level register support?
+ Major changes needed to make it SMP capabale
Model 3-B support will be harder:
+ ACT LED now on GPIO expander that is hooked to i2c-0
and accessible through GPU mailbox
+ UART now goes to bluetooth, need to handle mini-UART
which lacks features and handles frequency
changes poorly
+ SD card I/O via different (undocumented?) interface
+ Full 64-bit and SMP support will be