3 broadcom 2835 SoC (based on 2708)
4 arm1176jzf-s (v6 arch) 700MHz cpu, apparently dual-issue, with vfp2
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)
13 we arrange that device register accesses are uncached.
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.
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.
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.
31 9picpu is a Plan 9 cpu server, which could be used in a headless
32 configuration without screen, keyboard or mouse.
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.
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).
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
60 00000000 64 exception vectors
61 00000100 7936 boot ATAGs (inc. cmdline.txt)
63 00003000 1K L2 page table for exception vectors
64 00003400 1K videocore mailbox buffer
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)
72 2000B000 arm control: intr, timers 0 & 1, semas, doorbells, mboxes
73 20100000 power, reset, watchdog
77 20215040 uart1 (mini uart)
82 40000000 l2 cache only
86 7e215000 aux: uart1, spi[12]
90 c0000000 bypass caches
92 virtual mem map (from cpu address map & mmu mappings)
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
102 Linux params at *R2 (default 0x100) are a sequence of ATAGs
104 u32int size; /* size of ATAG in words, including header */
105 u32int tag; /* ATAG_CORE is first, ATAG_NONE is last */
111 54410009 ATAG_CMDLINE
138 57 uart1 aka "vc uart"