Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_unix/sys/src/9/bcm/words – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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 and unbuffered
14
(strongly ordered, in armv6/v7 terminology).
15
 
16
256MB or 512MB of dram at physical address 0, shared with gpu
17
non-16550 uart for console
18
	uart serial voltages are TTL (3.3v, not rs232 which is nominally 12v);
19
	could use usb serial (ick).
20
there's no real ethernet controller, so we have to use usb ether,
21
and the usb controller is nastier than usual.
22
 
23
There's a serial port (115200b/s) on P1 connector pins (GND,TXD,RXD) =
24
(6,8,10).  These are 3v TTL signals: use a level-shifter to convert to
25
RS232, or a USB-to-TTL-serial adapter.  Add the line "console=0
26
b115200" to the /cfg/pxe file on the server, or the parameter
27
"console='0 b115200'" to cmdline.txt on the SD card.
28
 
29
9pi is a Plan 9 terminal, which can boot with local fossil root on the
30
sd card (/dev/sdM0), or with root from a Plan 9 file server via tcp.
31
 
32
9picpu is a Plan 9 cpu server, which could be used in a headless
33
configuration without screen, keyboard or mouse.
34
 
35
9pifat is a minimal configuration which boots a shell script boot.rc
36
with root in /plan9 on the dos partition, maybe useful for embedded
37
applications where a full Plan 9 system is not needed.
38
 
39
Network booting with u-boot:
40
start with a normal rpi u-boot sd (e.g. raspberry-pi-uboot-20120707).
41
update the start.elf with a version from a newer rpi distro (see below).
42
mk installall
43
add new system to ndb
44
see booting(8)
45
 
46
Booting from sd card:
47
- start with a normal rpi distro sd (e.g. 2012-08-16-wheezy-raspbian)
48
  [NB: versions of start.elf earlier than this may not be compatible]
49
- copy 9pi to sd's root directory
50
- add or change "kernel=" line in config.txt to "kernel=9pi"
51
- plan9.ini is built from the "kernel arguments" in cmdline.txt - each
52
  var=value entry becomes one plan9.ini line, so entries with spaces will
53
  need single quotes.
54
 
55
 
56
	physical mem map
57
 
58
hex addr size	what
59
----
60
 
61
00000000 64	exception vectors
62
00000100 7936	boot ATAGs (inc. cmdline.txt)
63
00002000 4K	Mach
64
00003000 1K	L2 page table for exception vectors
65
00003400 1K	videocore mailbox buffer
66
00003800 2K	FIQ stack
67
00004000 16K	L1 page table for kernel
68
00008000 -	default kernel load address
69
01000000 16K	u-boot env
70
20000000 16M	peripherals
71
20003000	system timer(s)
72
20007000	dma
73
2000B000	arm control: intr, timers 0 & 1, semas, doorbells, mboxes
74
20100000	power, reset, watchdog
75
20200000	gpio
76
20201000	uart0
77
20202000	mmc
78
20215040	uart1 (mini uart)
79
20300000	eMMC
80
20600000	smi
81
20980000	otg usb
82
 
83
40000000	l2 cache only
84
7e00b000	arm control
85
7e2000c0	jtag
86
7e201000?	pl011 usrt
87
7e215000	aux: uart1, spi[12]
88
 
89
80000000
90
 
91
c0000000	bypass caches
92
 
93
	virtual mem map (from cpu address map & mmu mappings)
94
 
95
hex addr size	what
96
----
97
 
98
7e000000 16M	i/o registers
99
80000000 <=224M	kzero, kernel ram (reserve some for GPU)
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
 
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