Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
beagleboard rev c3:
2
cortex-a8 cpu: arm v7-a arch. rev 3, 500MHz, dual-issue
3
OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz
4
OMAP3 Beagle board + LPDDR/NAND
5
DRAM:  256 MB
6
NAND:  256 MiB
7
Board revision C
8
Serial #784200230000000004013f790401d018
9
 
10
igepv2 board:
11
cortex-a8 cpu: arm v7-a arch. rev 3, 720MHz, dual-issue
12
OMAP3530-GP ES3.1, CPU-OPP2 L3-165MHz
13
IGEP v2.x rev. B + LPDDR/ONENAND
14
DRAM:  512 MB
15
Muxed OneNAND(DDP) 512MB 1.8V 16-bit (0x58)
16
OneNAND version = 0x0031
17
Chip support all block unlock
18
Chip has 2 plane
19
Scanning device for bad blocks
20
Bad eraseblock 3134 at 0x187c0000
21
Bad eraseblock 3135 at 0x187e0000
22
OneNAND: 512 MB
23
 
24
omap3530 SoC
25
CORE_CLK runs at 26MHz
26
see spruf98d from ti.com (/public/doc/ti/omap35x.ref.spruf98d.pdf)
27
 
28
separate i & d tlbs, each 32 entries
29
	can invalidate i, d or both tlbs by { all, mva, or asid match }
30
 
31
i & d L1 caches, 16K each, 4 ways, 64 sets, 64-byte lines
32
	i is VIPT, d is PIPT
33
	no `test and clean D & U all' operations
34
	no prefetching, no cache maintenance
35
	can invalidate i, d or both cache but not D & U all
36
	can invalidate entire i-cache only
37
	can clean or invalidate by set and way data/unified cache
38
unified L2 PIPT cache, 256K, 8 ways, 512 sets, 64-byte lines
39
no hardware cache coherence
40
 
41
l3 interconnect firewalls are all off at boot time, except for a bit of
42
	secure ram
43
sram at 0x40200000 size 1MB
44
l4 interconnect firewalls seem to be sane at boot time
45
 
46
___
47
The state of the Beagleboard/IGEPv2 (TI OMAP35 SoC, Cortex-A8) port.
48
 
49
Plan 9 runs on the IGEPv2 and Gumstix Overo boards.
50
 
51
On the Beagleboard, Plan 9 is not yet usable but it gets as far as
52
trying to access the USB ethernet (since the Beagleboard has no
53
built-in ethernet and must use USB ethernet).
54
 
55
IGEP & Gumstix Ethernet
56
 
57
The smsc9221 ethernet consumes a lot of system time.  The design
58
decision to use fifos rather than buffer rings and to not incorporate
59
dma into the ethernet controller is probably responsible.  With only a
60
single core, running the 9221 consumes a lot of the available CPU
61
time.  It's probably worth trying to use the system dma controller again.
62
 
63
USB
64
 
65
The ohci and ehci controllers are seen, but no devices yet.
66
 
67
There are four USB errata that need to be looked into for the igepv2
68
(silicon 3.1) at least.  From the omap3530 errata (rev e):
69
 
70
- 3.1.1.130 only one usb dma channel (rx or tx) can be active
71
	at one time: use interrupt mode instead
72
- 3.1.1.144 otg soft reset doesn't work right
73
- 3.1.1.183 ohci and ehci controllers cannot work concurrently
74
- §3.1.3 usb limitations: all ports must be configured to identical speeds
75
	(high vs full/low)
76
 
77
Flash
78
 
79
access to nand flash would be handy for nvram and paqfs file systems.
80
 
81
In the flash, x-loader occupies up to 0x20000, then u-boot from
82
0x80000 to 0x1e0000, and there's a linux kernel after that (if you
83
care).  The beagle's flash chip is a micron pop 2Gb nand
84
mt29f2g16abdhc-et (physical marking jw256), and the igep's is a
85
samsung onenand.
86
 
87
VFPv3 Floating Point
88
 
89
The Cortex-A8 has VFPv3 floating point, which uses different opcodes
90
than 5c/5l currently generate.  New 5c or 5l is in the works.
91
 
92
Video
93
 
94
The display subsystem for omap3 (dss) is divided into 3 parts, called lcd,
95
video and dsi (ignoring the various accelerators).  The system only
96
supports the lcd via dvi interface so far because it's the only one we
97
have been able to test.  1280x1024x16 is the default resolution, this
98
might be changed.  Writing to /dev/dssctl (e.g., echo 1024x768x16
99
>/dev/dssctl) changes the resolution.  Currently the system does not
100
use the rfbi since it seems like an unnecessary optimisation at this
101
point.  Per Odlund wrote the first draft of the video driver for a
102
Google Summer of Code project.
103
 
104
Stray Interrupts
105
 
106
IRQs 56 and 57 are I2C.  83, 86 and 94 are MMC.
107
 
108
___
109
 
110
The code is fairly heavy-handed with the use of barrier instructions
111
(BARRIERS in assembler, coherence in C), partly in reaction to bad
112
experience doing Power PC ports, but also just as precautions against
113
modern processors, which may feel free to execute instructions out of
114
order or some time later, store to memory out of order or some time
115
later, otherwise break the model of traditional sequential processors,
116
or any combination of the above.
117
___
118
 
119
There are a few rough edges:
120
 
121
- the clock.c scheduling rate (HZ) is quite approximate.  The OMAP
122
timers are complex, but one could eventually do better (or just let
123
timesync compensate).
124
 
125
- User processes are limited to 512MB virtual (mainly by the IGEPv2 Ethernet
126
being at 0x2c000000), which isn't a problem since Beagleboards only
127
have 256MB of dram and IGEPv2s have 512MB, and we don't want to swap.
128
 
129
- might use ucalloc.c to allocate uncached scratch space for generated code
130
in coproc.c.
131
 
132
- the C implementation of cache primitives failed with mmu off; still true?
133
 
134
- unlock, setup: protect module register target APE (PM_RT) per spruf98c §1.6.7
135
 
136
- setup mpp (multi-purpose pins)?
137
 
138
___
139
	memory map (mostly from omap35x ref)
140
hex addr	size	what
141
----
142
 
143
20000000	16MB	virtual address of flash registers, buffers
144
2c000000	?	smc 9221 ethernet
145
38000000	16MB	256MB (beagle) or 512MB (igep) nand flash mapped here
146
 
147
40000000	112K	boot rom, top of user space
148
40200000	64K	sram
149
 
150
48000000	16MB	L4 core
151
48002000	8K	system control (scm)
152
48004000	16K	clock manager
153
48040000	8K	L4-core config
154
48050000	4K	graphics
155
48062000	4K	usb tll
156
48064000	1K	usb uhh_config
157
48064400	1K	ohci
158
48064800	1K	ehci
159
4806a000	8K	8250 uart0
160
4806c000	8K	8250 uart1
161
48086000	4K	gptimer10
162
48088000	4K	gptimer11
163
4809c000	8K	mmc/sd goo
164
480ab000	8K	hs usb otg
165
480ad000	8K	mmc/sd goo
166
480b4000	8K	mmc/sd goo
167
480c7000		device intr controller
168
48200000	2K	intr ctlr (intc)
169
 
170
48300000	256K	L4-wakeup
171
48304000	4K	gptimer12
172
48318000	8K	gptimer1
173
 
174
49000000	1MB	L4 peripherals
175
49020000	8K	8250 uart2 (with exposed connector for console)
176
49032000	4K	gptimer2
177
49034000	4K	gptimer3
178
179
49040000	4K	gptimer9
180
49050000	8K	gpio2
181
182
49058000	8K	gpio6
183
 
184
50000000	64K	graphics accelerator
185
 
186
68000000	1K	L3 config (rt)
187
68004000	1K	L3 hs usb host
188
68004400	1K	L3 hs usb otg
189
68005400	1K	L3 graphics
190
68006800	1K	L4-core config
191
68010000		L3 protection mechanism
192
 
193
6e000000	?	gpmc
194
 
195
80000000	256MB	dram on beagle
196
		512MB	dram on igep
197
 
198
c0000000	1GB	kernel virtual space, mapped to 80000000
199
 
200
apparently the vector address (0 or 0xffff0000) is virtual,
201
so we're expected to map it to ram.