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.
|