A tool for coreboot developers and users. The firmware itself is based on vanilla OpenWRT Chaos Calmer with some modifications. This firmware is mainly intended for beagle bone black (BBB).
- SDCard only release
- USB debug gadget on USB
- flashrom support
- SPI pins are 17/18 21/22 on P9. 1/2 GND, 3/4 VCC 3.3V.
- based on OpenWRT Chaos Calmer release rev r47050
- some old bbb won't boot (from sd card). Wiping the eMMC fixes this problem.
You have to copy it raw on a sd card. The screwdriver can not (yet) installed on the eMMC. Under linux you can use dd.
WARNING If you choose a wrong X you can damage your OS!!!
dd if=openwrt-0.3-omap-beagleboneblack-sdcard-vfat-am335x_evm.img of=/dev/sdX
- via network
- via rs232 3.3V TTL
- screwdriver provides a dhcp server and is accessable via 192.168.1.1
- connect network cable
- username/password root/coreboot
ssh root@192.168.1.1
- connect a 3.3V serial adapter to pin 1 GND, 4 & 5 data
- no password required
flashrom -p linux_spi:dev=/dev/spidev1.0 -r /tmp/foo
1 & 2 | 4 | Ground GND
3 & 4 | 8 | VCC 3.3 V
17 | 1 | CS ChipSelect
18 | 5 | MOSI MasterOutSlaveIn
21 | 2 | MISO MasterInSlaveOut
22 | 6 | CLK Clock
VCC is not connected in all cases!!! Be sure you don't power the chip from 2 sources, it's a bad idea!
cat /dev/ttyGS0 | tee -a /tmp/output
For questions write a mail to lynxis@fe80.eu or come to irc channel #coreboot on freenode. If you find bugs please report them at: issues
Please take a look at the OpenWrt documentation
for a complete and uptodate list of packages for your operating system. Make
sure the list contains quilt
. We use it for patch management.
On Ubuntu/Debian:
apt-get install git subversion build-essential libncurses5-dev zlib1g-dev gawk \
unzip libxml-perl flex wget gawk libncurses5-dev gettext quilt python
To get the source and build the firmware locally use:
git clone https://github.com/lynxis/bbb_screwdriver_builder
cd firmware
make -j4
# -j4 means it builds with 4 threads at the same time. depends how many cores and threads your machine has.
ls firmwares/omap/default/
The build will take some time. You can improve the build time with
build options such as
-j <number of cores>
. V=s
will give more verbose error messages.
An internet connection is required during the build process. A good internet connection can improve the build time.
You need approximately 10GB of space for the build.
You can find the actual firmware images generated by the ImageBuilder (and the ImageBuilder itself)
in firmwares
. The layout looks like the following:
firmwares/
omap/
OpenWrt-ImageBuilder-....tar.bz2
default/
images..
packages/
base/
luci/
packages/
routing/
As you notice there are two different versions:
default
: BBB screwdriver
Every release has a semantic version number;
For a new release, create a new branch. The branch name must be a semantic version number. Make sure you change the semantic version number and, for major releases, the codename in the README and config files (./configs/*)
Also create a tag for every release.
Important: all patches should be pushed upstream!
If a patch is not yet included upstream, it can be placed in the patches
directory with the quilt
tool. Please configure quilt
as described in the openwrt wiki (which also provides a documentation of quilt
).
In order to add, modify or delete a patch run:
make clean pre-patch
Then switch to the openwrt directory:
cd openwrt
Now you can use the quilt
commands as described in the openwrt wiki.
quilt push -a # apply all patches
quilt new 008-awesome.patch # tell quilt to create a new patch
quilt edit somedir/somefile1 # edit files
quilt edit somedir/somefile2
quilt refresh # creates/updates the patch file
Please create a pull request for the project you want to submit a patch.
Create a commit in the openwrt directory that contains your change. Use git format-patch
to create a patch:
git format-patch origin
Send a patch to the openwrt mailing list with git send-email
:
git send-email \
--to=openwrt-devel@lists.openwrt.org \
--smtp-server=mail.foo.bar \
--smtp-user=foo \
--smtp-encryption=tls \
0001-a-fancy-change.patch
Additional information: https://dev.openwrt.org/wiki/SubmittingPatches