From 52dffc4d8404b2c44b9de81c3ad2097b77dfe177 Mon Sep 17 00:00:00 2001 From: shmalebx9 Date: Sat, 29 Apr 2023 14:13:44 -0600 Subject: [PATCH] added generic SPI docs --- site/docs/install/spi.md | 9 +++ site/docs/install/spi_generic.md | 103 +++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 site/docs/install/spi_generic.md diff --git a/site/docs/install/spi.md b/site/docs/install/spi.md index 106e657..ba54c98 100644 --- a/site/docs/install/spi.md +++ b/site/docs/install/spi.md @@ -18,6 +18,7 @@ libreboot currently documents how to use these SPI programmers: * Raspberry Pi (RPi) * BeagleBone Black (BBB) +* Libre Computer 'Le Potato' 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 @@ -153,6 +154,14 @@ directly. 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) ---------------------- diff --git a/site/docs/install/spi_generic.md b/site/docs/install/spi_generic.md new file mode 100644 index 0000000..bc6525c --- /dev/null +++ b/site/docs/install/spi_generic.md @@ -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