added generic SPI docs
parent
23d54da0d4
commit
52dffc4d84
|
@ -18,6 +18,7 @@ libreboot currently documents how to use these SPI programmers:
|
||||||
|
|
||||||
* Raspberry Pi (RPi)
|
* Raspberry Pi (RPi)
|
||||||
* BeagleBone Black (BBB)
|
* BeagleBone Black (BBB)
|
||||||
|
* Libre Computer 'Le Potato'
|
||||||
|
|
||||||
Many other SPI programmers exist. More of them will be documented on this page,
|
Many other SPI programmers exist. More of them will be documented on this page,
|
||||||
at a date in the future. You can otherwise figure it out on your own; certain
|
at a date in the future. You can otherwise figure it out on your own; certain
|
||||||
|
@ -153,6 +154,14 @@ directly.
|
||||||
Software configuration
|
Software configuration
|
||||||
======================
|
======================
|
||||||
|
|
||||||
|
General/Le potato
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The [generic guide](spi_generic.md) is intended to help those looking to use an
|
||||||
|
SBC which is not listed in this guide.
|
||||||
|
The guide will, however, use the libre computer 'Le Potato' as a reference board.
|
||||||
|
If you have that board, you should refer to the [generic guide.](spi_generic.md)
|
||||||
|
|
||||||
BeagleBone Black (BBB)
|
BeagleBone Black (BBB)
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
---
|
||||||
|
title: Generic SPI Flashing Guide
|
||||||
|
x-toc-enable: true
|
||||||
|
...
|
||||||
|
|
||||||
|
There are a plethora of single board computers with which you can flash libreboot to a SOIC chip.
|
||||||
|
Some users might be daunted by the price of a raspberry pi.
|
||||||
|
This guide is intended to help users looking to use a programmer which is not listed in the [main guide.](spi.md)
|
||||||
|
As an example, this guide will use the [libre computer 'le potato.'](https://libre.computer/products/aml-s905x-cc/)
|
||||||
|
You should note however, that this guide is intended to demonstrate how to set up any SBC with SPI programming capabilities for flashing libreboot.
|
||||||
|
|
||||||
|
If you are wondering about which SBC to buy, keep these things in mind:
|
||||||
|
|
||||||
|
+ The board *must* support SPI (look at the specs/pinout to find out if it does)
|
||||||
|
+ It is easier to use a board that supports raspbian/raspberry pi OS
|
||||||
|
+ Boards often require their own kernel patches which rarely get upstreamed
|
||||||
|
|
||||||
|
All of this means that you should try to find a board that is *known* to support SPI on an OS for which there are available images.
|
||||||
|
It is *not* enough to know that the board itself supports SPI.
|
||||||
|
|
||||||
|
Selecting an Operating System
|
||||||
|
=============================
|
||||||
|
|
||||||
|
In theory, any linux based operating system will do.
|
||||||
|
In practice, many distros are highly limited when it comes to single-board-computers.
|
||||||
|
SBCs often require specialized kernel patches which are rarely upstreamed.
|
||||||
|
Additionally, armhf boards (like the le potato) are not supported in most modern distros.
|
||||||
|
|
||||||
|
In light of the above facts, it is a good general rule to use a distro aimed at supporting SBCs.
|
||||||
|
[Armbian](https://www.armbian.com/) is one such distro you might use.
|
||||||
|
Note that not all armbian images support SPI.
|
||||||
|
If your SBC supports [Raspbian](https://www.raspberrypi.com/software/) then using it will make your work much easier.
|
||||||
|
As a bonus, you may refer to the [main guide](spi.md) if the SBC you have supports raspbian, should you get confused with this guide.
|
||||||
|
|
||||||
|
Connecting to your Programmer
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Many SBC operating systems enable ssh by default.
|
||||||
|
If the OS you chose does not enable ssh on first boot, try checking the distro documentation and looking for terms such as 'headless install.'
|
||||||
|
|
||||||
|
You will need the IP address of your programmer to continue.
|
||||||
|
Connecting via ethernet is generally easier than doing so with WiFi.
|
||||||
|
Check your distro's docs if you wish to connect with WiFi only.
|
||||||
|
To determine the IP address of your programmer, log in to your AP/Router web interface.
|
||||||
|
If you're not sure the IP address of your AP, it is likely `192.168.1.1.`
|
||||||
|
You can determine the correct IP address with `ip r` on a linux machine.
|
||||||
|
You should see your programmer somewhere on the homepage, depending on your router firmware.
|
||||||
|
This author recommends using [https://openwrt.org/](https://openwrt.org/) for your router firmware.
|
||||||
|
|
||||||
|
SSH to your programmer using the default credentials as specified in your distro's docs.
|
||||||
|
The IP address is the one determined in the earlier step.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
`ssh root@192.168.0.167`
|
||||||
|
|
||||||
|
Finding GPIO Pins
|
||||||
|
=================
|
||||||
|
|
||||||
|
If you have determined that a board supports SPI then the only step left is to
|
||||||
|
determine the correct location of the SPI pins.
|
||||||
|
The board will have the pinout in its documentation.
|
||||||
|
The Le potato board has the same pinout as the raspberry pi so you can refer to the [main SPIC documentation.](spi.md#gpio-pins-on-raspberry-pi-rpi-40-pin)
|
||||||
|
|
||||||
|
If your board is not raspberry pi compatible, refer to the [wiring table.](spi.html#soic8dip8wson8-wiring-diagram)
|
||||||
|
Match each of the categories in the 'signal' column with those in the 'pin' column.
|
||||||
|
Using this method, you can theoretically use any single board computer with SPI support.
|
||||||
|
|
||||||
|
Enabling SPI
|
||||||
|
============
|
||||||
|
|
||||||
|
The modules needed and methods to enable SPI vary based on the SBC you choose.
|
||||||
|
You should always make sure there is a well documented method for enabling SPI on your SBC before purchasing.
|
||||||
|
In the case of the *le potato,* SPI is enabled by activating the correct overlays as such (raspbian):
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo ldto enable spicc spicc-spidev
|
||||||
|
sudo ldto merge spicc spicc-spidev
|
||||||
|
```
|
||||||
|
|
||||||
|
Using Flashrom
|
||||||
|
==============
|
||||||
|
|
||||||
|
Most linux distros will provide flashrom in their default repositories.
|
||||||
|
You can also download flashrom in binary form with [libreboot utils.](https://libreboot.org/download.html#https)
|
||||||
|
Here is an example using raspbian:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install flashrom
|
||||||
|
```
|
||||||
|
|
||||||
|
Reading/writing from SPI works respectively as such:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=32768 -r /path/to/read.bin
|
||||||
|
sudo ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=32768 -w /path/to/libreboot.rom
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that `spispeed` varies based on the board in question.
|
||||||
|
A standard lower limit is *512.*
|
||||||
|
For example, to read on a board with a lower SPI speed, you may try:
|
||||||
|
|
||||||
|
sudo ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -r /path/to/read.bin
|
Loading…
Reference in New Issue