]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/bcm/words
kernel: do all fp state fork from procfork() (like pc kernel)
[plan9front.git] / sys / src / 9 / bcm / words
1 raspberry pi
2
3 broadcom 2835 SoC (based on 2708)
4 arm1176jzf-s (v6 arch) 700MHz cpu, apparently dual-issue, with vfp2
5 videocore 4 gpu
6
7 l1 I & D VIPT caches
8         16K each: 4-way, 128 sets, 32-byte lines
9         l1 D is write-through, l1 I is write-back
10 unified l2 PIPT cache 128K: 4-way?, 1024? sets, 32-byte lines, mostly for gpu
11 (by default CPU doesn't see it)
12
13 we arrange that device register accesses are uncached.
14
15 256MB of dram at physical address 0, shared with gpu
16 non-16550 uart for console
17         uart serial voltages are wrong (3.3v but rs232 is nominally 12v);
18         could use usb serial (ick).
19 there's no real ethernet controller, so we have to use usb ether,
20 and the usb controller is nastier than usual.
21
22 There's a serial port (115200b/s) on P1 connector pins (GND,TXD,RXD) =
23 (6,8,10).  These are 3v TTL signals: use a level-shifter to convert to
24 RS232, or a USB-to-TTL-serial adapter.  Add the line "console=0
25 b115200" to the /cfg/pxe file on the server, or the parameter
26 "console='0 b115200'" to cmdline.txt on the SD card.
27
28 9pi is a Plan 9 terminal, which can boot with local fossil root on the
29 sd card (/dev/sdM0), or with root from a Plan 9 file server via tcp.
30
31 9picpu is a Plan 9 cpu server, which could be used in a headless
32 configuration without screen, keyboard or mouse.
33
34 9pifat is a minimal configuration which boots a shell script boot.rc
35 with root in /plan9 on the dos partition, maybe useful for embedded
36 applications where a full Plan 9 system is not needed.
37
38 Network booting with u-boot:
39 start with a normal rpi u-boot sd (e.g. raspberry-pi-uboot-20120707).
40 update the start.elf with a version from a newer rpi distro (see below).
41 mk installall
42 add new system to ndb
43 see booting(8)
44
45 Booting from sd card:
46 - start with a normal rpi distro sd (e.g. 2012-08-16-wheezy-raspbian)
47   [NB: versions of start.elf earlier than this may not be compatible]
48 - copy 9pi to sd's root directory
49 - add or change "kernel=" line in config.txt to "kernel=9pi"
50 - plan9.ini is built from the "kernel arguments" in cmdline.txt - each
51   var=value entry becomes one plan9.ini line, so entries with spaces will
52   need single quotes.
53
54
55         physical mem map
56
57 hex addr size   what
58 ----
59 0        256MB  sdram, cached
60 00000000 64     exception vectors
61 00000100 7936   boot ATAGs (inc. cmdline.txt)
62 00002000 4K     Mach
63 00003000 1K     L2 page table for exception vectors
64 00003400 1K     videocore mailbox buffer
65 00003800 2K     FIQ stack
66 00004000 16K    L1 page table for kernel
67 00008000 -      default kernel load address
68 01000000 16K    u-boot env
69 20000000 16M    peripherals
70 20003000        system timer(s)
71 20007000        dma
72 2000B000        arm control: intr, timers 0 & 1, semas, doorbells, mboxes
73 20100000        power, reset, watchdog
74 20200000        gpio
75 20201000        uart0
76 20202000        mmc
77 20215040        uart1 (mini uart)
78 20300000        eMMC
79 20600000        smi
80 20980000        otg usb
81
82 40000000        l2 cache only
83 7e00b000        arm control
84 7e2000c0        jtag
85 7e201000?       pl011 usrt
86 7e215000        aux: uart1, spi[12]
87
88 80000000
89
90 c0000000        bypass caches
91
92         virtual mem map (from cpu address map & mmu mappings)
93
94 hex addr size   what
95 ----
96 0        512MB  user process address space
97 7e000000 16M    i/o registers
98 80000000 <=224M kernel ram (reserve some for GPU)
99 c0000000 256MB  kzero, mapped to 0
100 ffff0000 4K     exception vectors
101
102 Linux params at *R2 (default 0x100) are a sequence of ATAGs
103   struct atag {
104         u32int size;            /* size of ATAG in words, including header */
105         u32int tag;             /* ATAG_CORE is first, ATAG_NONE is last */
106         u32int data[size-2];
107   };
108 00000000        ATAG_NONE
109 54410001        ATAG_CORE
110 54410002        ATAG_MEM
111 54410009        ATAG_CMDLINE
112
113 uart dmas       15, 14
114
115 intrs (96)
116 irq1
117 0       timer0
118 1       timer1
119 2       timer2
120 3       timer3
121 8       isp
122 9       usb
123 16      dma0
124 17      dma1
125
126 28      dma12
127 29      aux: uart1
128 30      arm
129 31      vpu dma
130
131 irq2
132 35      sdc
133 36      dsio
134 40      hdmi0
135 41      hdmi1
136 48      smi
137 56      sdio
138 57      uart1 aka "vc uart"
139
140 irq0
141 64      timer
142 65      mbox
143 66      doorbell0
144 67      doorbell1
145 75      usb
146 77      dma2
147 78      dma3
148 82      sdio
149 83      uart0