words 3.8 KB

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