summaryrefslogtreecommitdiffstats
path: root/docs/install/bbb_setup.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/install/bbb_setup.html')
-rw-r--r--docs/install/bbb_setup.html332
1 files changed, 332 insertions, 0 deletions
diff --git a/docs/install/bbb_setup.html b/docs/install/bbb_setup.html
new file mode 100644
index 0000000..840b4ad
--- /dev/null
+++ b/docs/install/bbb_setup.html
@@ -0,0 +1,332 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <style type="text/css">
+ @import url('../css/main.css');
+ </style>
+
+ <title>Setup the BeagleBone Black as an SPI flashrom programmer</title>
+</head>
+
+<body>
+
+ <header>
+ <h1 id="pagetop">Setup the BeagleBone Black as an SPI flashrom programmer</h1>
+ <aside>How to use the BBB as an external flashrom programmer, for reading/writing an SPI flash chip.</aside>
+ </header>
+
+ <p>Or go <a href="index.html">back to main index</a></p>
+
+<hr/>
+
+ <h1 id="hardware_requirements">Hardware requirements</h1>
+
+ <p>
+ Shopping list (pictures of this hardware is shown later):
+ </p>
+ <ul>
+ <li>
+ External SPI programmer: <b>BeagleBone Black</b> (rev. C)
+ is highly recommended. Sometimes referred to as 'BBB'.
+ </li>
+ <li>
+ Clip for connecting to the flash chip: <b>Pomona 5250</b>
+ (SOIC-8) or <b>Pomona 5250</b> (SOIC-16) is recommended
+ (<b>X200S and X200 Tablet users will need a soldering iron
+ instead</b>, because of the type of package the flash chip is
+ in on those machines).
+ </li>
+ <li>
+ <b>External 3.3V DC power supply</b>. The one used by this
+ author has the label HF100W-SF-3.3 on it, but any decent
+ supply will be fine. Some people use the 3.3V from an ATX
+ PSU for instance (the kind that you get on a typical
+ Intel/AMD desktop computer. 6A supply should be fine,
+ the one used by this author is 20A (it won't actually use
+ that, it's just what the PSU is capable of).
+ </li>
+ <li>
+ Dupont <b>jumper cables</b> (2.54mm / 0.1&quot; headers)
+ You should get male-male, male-female and female-female
+ cables in 10cm and 20cm sizes. Just get a load of them.
+ </li>
+ <li>
+ <b>Mini USB A-B cable</b> (the BeagleBone probably already comes
+ with one.)
+ </li>
+ <li>
+ <b>FTDI serial board</b>, for unbricking the BeagleBone if
+ necessary.
+ </li>
+ <li>
+ <b>5V DC power supply</b> (from wall outlet to the BeagleBone).
+ The BeagleBone can have power supplied via USB, but a
+ dedicated power supply is recommended.
+ </li>
+ </ul>
+
+ <p>
+ <a href="#pagetop">Back to top of page.</a>
+ </p>
+
+<hr/>
+
+ <h1 id="configure_bbb">Configuring the BeagleBone Black</h1>
+
+ <h2>Setting up the 3.3V DC PSU</h2>
+ <p>
+ With my PSU, first I had wire up the mains power cable. Any clover or kettle lead will do. Cut the end off (not the one
+ that goes in the wall, but the kettle/clover connector).
+ Strip the protection away by a decent length, then strip the wires inside so that a decent amount of
+ copper is shown. Then wire up earth/live/neutral. This will vary according to what country you live in
+ and/or the colour codes that your cable uses inside. <b>Make sure to get this right, as a botched job
+ could result in extreme damage to you and your surroundings. Here's what mine looks like after wiring up
+ the power cable: <a href="images/x200/psu_power.jpg">images/x200/psu_power.jpg</a> - also, make sure
+ that the plug (for the wall) has the correct fuse. In my case I had a 240V wall socket, and the device
+ says that it accepts 1.5A at that voltage, so I used the smallest fuse available (3A). For 110-120V the device
+ says it needs 2.8A.</b> Also, if yours looks like in the image linked above, make sure to wrap electrical tape (lots)
+ around it for safety. (otherwise, don't touch the terminals while the PSU is plugged in).
+ </p>
+ <p>
+ Now take a red and black 20cm female-female jumper lead, and cut one of the ends off. Strip away the bare copper by about 1 or
+ 1.5cm so you get this: <a href="images/x200/stripped_jumper_lead.jpg">images/x200/stripped_jumper_lead.jpg</a>.
+ </p>
+ <p>
+ Black goes on -V, red goes on +V. In my case, I removed those screws from my PSU like this:
+ <a href="images/x200/psu_screws_removed.jpg">images/x200/psu_screws_removed.jpg</a>. Then,
+ </p>
+ <p>
+ Then I twisted the exposed copper on the jumper leads (so that they don't fray), and wrapped each to one of the
+ screws each, around it near the head. I then screwed them in:
+ <a href="images/x200/psu_jumper_leads.jpg">images/x200/psu_jumper_leads.jpg</a>.
+ </p>
+ <p>
+ If you are using a different PSU, then the steps will change from those above. Anyway, once you are satisfied,
+ continue reading...
+ </p>
+ <h2>Setting up the BBB</h2>
+ <p>
+ Your BBB will have an sshd with no password on root. Find it's IP address
+ (it will use DHCP by default) and set a root password. The steps below
+ are done while SSH'd into a BBB.
+ </p>
+ <p>
+ Since it's a bare board (no case) and you are also touching inside your X200, you should be earthed/grounded.
+ <a href="images/x200/strap.jpg">images/x200/strap.jpg</a> shows how I earthed myself. This is to prevent you
+ from causing any ESD damage. The surface that you place components on should also be earthed/grounded.
+ (for this, I used a shielded ESD bag with a wire, copper exposed, attached from the bag to the exposed metal
+ part on a radiator, which was earthed - not professional, but it should work. see <a href="images/x200/mat.jpg">images/x200/mat.jpg</a>).
+ Most people ignore this advice and don't ground/earth themselves, at their own risk. You should also store the BBB
+ in a shielded anti-static bag when you are finished with it.
+ (the principles above apply to any computer components, since they are extremely sensitive te ESD).
+ </p>
+ <p>
+ These instructions may or may not work for you. They are simply the steps that this author took.
+ </p>
+ <p>
+ setting up SPIDEV on the BBB: <a href="http://elinux.org/BeagleBone_Black_Enable_SPIDEV#SPI0">http://elinux.org/BeagleBone_Black_Enable_SPIDEV#SPI0</a>
+ - If you only setup SPI0, you don't have to disable the HDMI out. (you only need one).
+ That guide is for seting up the device overlay for SPIDEV, last part is to make it persist across reboots.
+ Needed to turn the BBB into an SPI flasher.
+ </p>
+ <p>
+ Don't bother modifying uEnv.txt. it won't work;
+ use the workaround here instead: <a href="http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Loading_custom_capes">http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Loading_custom_capes</a>.
+ </p>
+ <p>
+ Follow the instructions at <a href="http://elinux.org/BeagleBone_Black_Enable_SPIDEV#SPI0">http://elinux.org/BeagleBone_Black_Enable_SPIDEV#SPI0</a>
+ up to (and excluding) the point where it tells you to modify uEnv.txt
+ </p>
+ <p>
+ You need to update the software on the BBB first. Before being able to use apt-get,
+ I had to use the workaround defined <a href="https://groups.google.com/forum/?_escaped_fragment_=msg/beagleboard/LPjCn4LEY2I/alozBGsbTJMJ#!msg/beagleboard/LPjCn4LEY2I/alozBGsbTJMJ">here</a>:<br/>
+ - Replace the contents of /etc/init.d/led_aging.sh with:
+ </p>
+<pre>
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides: led_aging.sh
+# Required-Start: $local_fs
+# Required-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start LED aging
+# Description: Starts LED aging (whatever that is)
+### END INIT INFO
+
+x=$(/bin/ps -ef | /bin/grep "[l]ed_acc")
+if [ ! -n "$x" -a -x /usr/bin/led_acc ]; then
+ /usr/bin/led_acc &amp;
+fi
+</pre>
+ </p>
+ Run <b>apt-get update</b> and <b>apt-get upgrade</b> then reboot the BBB, before continuing.
+ </p>
+ <p>
+ Run those commands:<br/>
+ # <b>echo BB-SPI0-01 &gt; /sys/devices/bone_capemgr.*/slots</b><br/>
+ Then I did:<br/>
+ # <b>ls -al /dev/spidev0.*</b><br/>
+ <i>ls: cannot access /dev/spidev0.*: No such file or directory</i><br/>
+ Then I rebooted and did:<br/>
+ # <b>cat /sys/devices/bone_capemgr.*/slots</b><br/>
+ Output:
+ </p>
+<pre>
+ 0: 54:PF---
+ 1: 55:PF---
+ 2: 56:PF---
+ 3: 57:PF---
+ 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
+ 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
+</pre>
+ <p>
+ And then:<br/>
+ # <b>ls /lib/firmware/BB-SPI0-01-00A0.*</b><br/>
+ Output:
+ </p>
+<pre>
+/lib/firmware/BB-SPI0-01-00A0.dtbo
+</pre>
+ <p>
+ Then:<br/>
+ # <b>echo BB-SPI0-01 &gt; /sys/devices/bone_capemgr.*/slots</b><br/>
+ # <b>cat /sys/devices/bone_capemgr.*/slots</b><br/>
+ Output:
+ </p>
+<pre>
+ 0: 54:PF---
+ 1: 55:PF---
+ 2: 56:PF---
+ 3: 57:PF---
+ 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
+ 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
+ 7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-SPI0-01
+</pre>
+ <p>
+ Then check if the device exists:<br/>
+ # <b>ls -al /dev/spidev0.*</b><br/>
+ Output:
+ </p>
+<pre>
+ls: cannot access /dev/spidev0.*: No such file or directory
+</pre>
+ <p>
+ It didn't exist under that name, but I then did:<br/>
+ # <b>ls -al /dev/spid*</b><br/>
+ Output:
+ </p>
+<pre>
+crw-rw---T 1 root spi 153, 0 Nov 19 21:07 /dev/spidev1.0
+</pre>
+ <p>
+ Now the BBB is ready to be used for flashing. Make this persist
+ across reboots:<br/>
+ In /etc/default/capemgr add <b>CAPE=BB-SPI0-01</b> at the end
+ (or change the existing <b>CAPE=</b> entry to say that, if an
+ entry already exists.
+ </p>
+ <p>
+ Now you will download and build <b>flashrom</b> on the BBB.<br/>
+ # <b>apt-get install libpci-dev pciutils zlib1g-dev libftdi-dev build-essential subversion</b><br/>
+ # <b>svn co svn://flashrom.org/flashrom/trunk flashrom</b><br/>
+ # <b>cd flashrom/</b><br/>
+ # <b>make</b>
+ </p>
+
+ <p>
+ Now test flashrom:<br/>
+ # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512</b><br/>
+ Output:
+ </p>
+<pre>
+Calibrating delay loop... OK.
+No EEPROM/flash device found.
+Note: flashrom can never write if the flash chip isn't found automatically.
+</pre>
+
+ <p>
+ This means that it's working (the clip isn't connected to any flash chip,
+ so the error is fine).
+ </p>
+ <h2>
+ Connecting the Pomona 5250/5252
+ </h2>
+ <p>
+ Use this image for reference when connecting the pomona to the BBB:
+ <a href="http://beagleboard.org/Support/bone101#headers">http://beagleboard.org/Support/bone101#headers</a>
+ (D0 = MISO or connects to MISO).
+ </p>
+
+ <p>
+ The following shows how to connect clip to the BBB (on the P9 header), for SOIC-16 (clip: Pomona 5252):
+ </p>
+<pre>
+ NC - - 21
+ 1 - - 17
+ NC - - NC
+ NC - - NC
+ NC - - NC
+ NC - - NC
+ 18 - - 3.3V PSU RED
+ 22 - - NC - this is pin 1 on the flash chip
+<i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i>
+</pre>
+ <p>
+ The following shows how to connect clip to the BBB (on the P9 header), for SOIC-8 (clip: Pomona 5250):
+ </p>
+<pre>
+ 18 - - 1
+ 22 - - NC
+ NC - - 21
+ 3.3V PSU RED - - 17 - this is pin 1 on the flash chip
+<i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i>
+</pre>
+ <p>
+ <b>NC = no connection</b>
+ </p>
+ <p>
+ <b><u>DO NOT</u> connect 3.3V PSU RED yet. ONLY connect this once the pomona is connected to the flash chip.</b>
+ </p>
+ <p>
+ <b>You also need to connect the BLACK wire from the 3.3V PSU to pin 2 on the BBB (P9 header). It is safe to install this now
+ (that is, before you connect the pomona to the flash chip).</b>
+ </p>
+ <p>
+ if you need to extend the 3.3v psu leads, just use the same colour M-F leads, <b>but</b> keep all other
+ leads short (10cm or less)
+ </p>
+
+ <p>
+ <a href="images/x200/5252_bbb0.jpg">images/x200/5252_bbb0.jpg</a> and
+ <a href="images/x200/5252_bbb1.jpg">images/x200/5252_bbb1.jpg</a> shows a properly wired up BBB with Pomona
+ 5252 before being connected to the flash chip on the X200.
+ </p>
+
+ <p>
+ That's basically it. Now refer back to the documentation for how to use this on your board.
+ </p>
+
+ <p>
+ <a href="#pagetop">Back to top of page.</a>
+ </p>
+
+<hr/>
+
+ <p>
+ Copyright &copy; 2014 Francis Rowe &lt;info@gluglug.org.uk&gt;<br/>
+ This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions.
+ A copy of the license can be found at <a href="../license.txt">../license.txt</a>.
+ </p>
+
+ <p>
+ This document is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information.
+ </p>
+
+</body>
+</html>