Загрузочная SPI-флешка и SSD для Orange Pi Zero.

 

 

В данной статье я опишу процесс альтернативного, довольно простого метода по записи образа загрузчика в память SPI-флешки, расположенной на борту Orange Pi Zero. Думаю, это пригодится многим, кто еще не освоился в “линуксах” и “апельсинах”, и начинает разбираться, так же как и я. 🙂

Также данная статья пригодится тем, кто захочет сделать программатор для копирования/записи SPI-чипов на основе Orange Pi Zero.

Возникла у меня идея загружать ОС (Armbian, Ubuntu и тому подобные) с USB mSATA диска, да так, чтобы SD флешка не использовалась вообще – SD (MMC) слот оставался пустым. По умолчанию апельсин устроен так, что его самый “низкоуровневый” загрузчик обращается к SD (MMC) слоту или к SPI0 (spidev0.0). На плате есть контактные площадки под SPI микросхему в корпусе SOIC-8, например W25Q128FVSG (128 Mbit) подошла бы туда идеально. Новые платы уже поставляются с распаянными SPI маленького объема, например Macronix MX25L1606E (16 Mbit).

  

Итак, нужно записать образ загрузчика U-boot в память этой микросхемы, с настроенными файлами, для того чтобы загрузка начиналась с SPI флешки и далее продолжалась с USB флешки, кард-ридера или USB to SATA адаптера.

Для этого потребовалось:

  1. Только сам “Апельсин” (на нем производились все операции).
  2. SPI-флешка 25q64fva1g. (Winbond W25Q64.V (8192 kB, SPI)), объем памяти – 8 MB (64 Mbit).
  3. Запущенный на Orange Pi Zero с SD флешки Armbian_5.25 (оказалось, что проще использовать Armbian для Orange Pi One, об этом в статье описания).
  4. Утилита flashrom.
  5. Образ с U-boot`ом для spi-памяти (скачать архив файла образа U-Boot_8 MB).
  6. SSD диск в USB-mSATA адаптере.

Почти не имея опыта по работе с линуксом и малино-подобными компьютерами, я долго пытался выяснить, как же это сделать, устал читать “непереводимые” мануалы, написанные опытными специалистами по линуксу. Но в итоге, сообразив на двоих с товарищем, мы нашли решение!

 

По порядку:

Питание

Важно учесть, что для подключения SSD диска к апельсину необходимо обеспечить ему хорошее питание, иначе он просто не сможет стартануть с SSD диском в USB порте. Я питал Orange Pi Zero через OTG (micro USB) от USB 3.0 порта ноутбука, хорошим кабелем, и учитывая “качественное” напряжение ноутбука на шине USB у меня всё работает стабильно. Но в дальнейшем я планирую собрать отдельный БП для OPIZ и снабдить конструкцию дополнительной шиной питания.

 

SPI-флешка

Заказывать или где то покупать spi-микросхему не стал, вспомнил, что дома валяется нерабочая материнская плата, и на ней есть заветный чип 25q64fva1g памяти на 8 MB (64 Mbit), для хранения bios. Он создан в корпусе DIP-8, и на МП не распаян, а сидит в кроватке, что очень удобно, так что и я тоже решил сделать слот-кроватку для апельсина, тем более, что все равно возникала необходимость в переходнике DIP-8 to SOIC-8.

Сначала я хотел просто подогнуть ноги Socket-a и распаять его прямо на контактные площадки – выводы удачно могли расположиться на места пайки. Но это оказалось очень плохой идеей, и в процессе пайки я сорвал одну из площадок, прямо до дорожки, так что будьте аккуратны, видимо медные проводники на плате очень слабые, впрочем, они же очень тонкие!

Пришлось распайку произвести с помощью короткого шлейфа, и с его же помощью восстановить оборванный контакт. Выводы кроватки разогнул по сторонам, чтобы они были подальше от платы, так и паять удобнее. Ключ микросхемы совместить просто и понятно, для разных корпусов он совпадает.

Возможно, в дальнейшем я немного изменю конструкцию.

 

Flashrom

Память распаяна и уже поддерживается Armbian-ом. Но чтобы залить образ в память, понадобится утилита под названием Flashrom.

О том как ее установить и использовать, думаю можно найти достаточно информации. Но о том, что понадобилось мне, далее:

Armbian на “апельсине” должен быть запущен с SD карты с бортового SD/MMC слота. Устанавливаем утилиту (я, залогинившись под root пользователем, в терминале ввел):

apt-get install flashrom

Далее даем утилите команду и проверяем флешку:

flashrom -p linux_spi:dev=/dev/spidev0.0

Ответ:

flashrom v0.9.9-rc1-r1942 on Linux 3.4.113-sun8i (armv7l)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop… OK.
Found Winbond flash chip “W25Q64.V” (8192 kB, SPI) on linux_spi.
No operations were specified.

Видим нашу флешку – Winbond W25Q64.V (8192 kB, SPI)

Перед записью очищаем память чипа:

flashrom -E -p linux_spi:dev=/dev/spidev0.0

-E означает Erase  (очистка памяти), есть и другие команды, о них можно узнать из руководства к использованию flashrom.

Ответ утилиты:

flashrom v0.9.9-rc1-r1942 on Linux 3.4.113-sun8i (armv7l)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop… OK.
Found Winbond flash chip “W25Q64.V” (8192 kB, SPI) on linux_spi.
Erasing and writing flash chip… Erase/write done.

Записываем в память образ:

flashrom -w /home/u-boot_8.bin -p linux_spi:dev=/dev/spidev0.0

Я положил файл в папку home, в директории armbiana, если вы положите его в другую папку, то измените путь. Не забудьте распаковать его из архива 🙂

-w означает запись образа.

Подсказка новичкам: мне было проще оперировать (копировать, перемещать) файлами через десктоп, доступ к которому я получил через vncserver. О том, как просто можно получить десктопную версию Armbian, читайте в описании Orange Pi Zero.

Получаем ответ:

flashrom v0.9.9-rc1-r1942 on Linux 3.4.113-sun8i (armv7l)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop… OK.
Found Winbond flash chip “W25Q64.V” (8192 kB, SPI) on linux_spi.
Reading old flash chip contents… done.
Erasing and writing flash chip… Erase/write done.
Verifying flash… VERIFIED.

 

Образ U-Boot.

U-Boot_8Mb – вес архива 215 КБ

Образ с U-Boot-ом, я нашел на форуме 4pda, в теме про “апельсин”, его туда выложил человек с ником hyphop. Но утилита так просто его не принимает, ругается:

Error: Image size (448413 B) doesn’t match the flash chip’s size (8388608 B)

Видимо ей нужен точный размер образа, соответствующий снятому с данной флешки. Поэтому мы рискнули добить его “нолями” в HEX редакторе, и к нашему великому удивлению – это заработало!

Этот образ имеет размер 8388608 байт, что соответствует объему моей флешки Winbond W25Q64, нужно иметь это ввиду, если программа будет выдавать подобную ошибку.

 

Перезагрузка, загрузка с USB и SSD.

Чтобы осуществить все операции, Armbian_5.25 (для Orange Pi One) был загружен c SD флешки из SD слота.  И вот теперь можно освободить этот слот, установить эту же самую SD флешку в USB картридер и загрузиться с USB порта – всё должно работать!

Теперь можно записать свежую чистую прошивку Armbian или Ubuntu или Debian (На данный момент я проверял родной Armbian_5.24 для Zero, но кажется у него какие то проблемы с поддержкой USB носителей, поэтому он не загрузился) на USB флешку или SSD диск, установленный в USB-mSATA адаптер и загрузиться с них, ради чего я всё и делал!

 

SSD диски.

На данный момент проверены в работе два накопителя, установленные в USB 3.0 адаптер:

OCZ NOCti 30G

SSD Netac N5M 120 Gb mSATA

 

 

27 февраля 2017

GTXpert

 

 

 

 

Покупки с ALME.RU – Это простой способ получить дополнительную скидку (кэшбек) на Aliexprеss и в других магазинах.

.