Breadboard SPI NOR Flash
Большинство современных CPU позволяют производить начальную загрузку с разных источников (media booting), одним из которых может быть SPI NOR Flash. Микросхемы энергонезависимой памяти NOR Flash с последовательным интерфейсом SPI используются на материнских платах для хранения образов BIOS, BMC, а так же данных различного назначения. Если же речь идет о популярных платах, постороенных на различных SoCs, таких как Raspberry Pi, Orange Pi и так далее, то на них SPI-интерфейс может быть выведен на контактные площадки для того, чтобы пользователь мог самостоятельно подключить ту или иную микросхему в качестве внешнего носителя.
tags
Для разработки и отладки, как самих устройств, так и програмного обеспечения, возникает необходимость макетирования, то есть создания макетной платы, на которой распаяна микросхема SPI NOR Flash, служащая для подключения к основной плате устройства.
Требования к качеству такой макетной платы не велики и ее можно создать используя, так называемые, слепыши и платы для непосредственной распайки микросхемы, например, такой как Winbond W25Q256JV.
На рис.1 показан пример подобной макетной платы.
Здесь распаяно два разъема: один для подключения программатора, например, CH341A, другой для подключения к основному устройству.
Разумеется такая плата весьма неудобна и ненадежна, особенно, если речь идет о многократных подключениях и перепрошивке памяти. Кроме того, если работа ведется коллективом разработчиков, то ручное макетирование может отнимать много времени.
Наилучшим решением в таких случаях является создание макетной платы, на которой уже распаяны все пассивные элементы и имеется контактная площадка для напайки NOR Flash в различных исполнениях (SOP-16, SOP-8, 8-pad WSON 8x6-mm, 16-pin SOIC 300-mil).
Если распаять все пассивные элементы и разъемы, то пользователю останется только монтажная площадка для выбранной им микросхемы, монтаж которой будет удобен даже без использования дорогостоящей паяльной станции. Такая макетная плата представлена на рис.2.
Схема макетной платы показана на следующем рисунке.
Плата расчитана на NOR Flash c питающим напряжением 3.3V и пригодна для работы с таким микросхемами, как Winbond W25Q256JV, Infineon S25FL512S и т.д.
Разъем J1 предназначен для подключения программатора. В случае использования программатора CH341A, достаточно использовать обычный шлейф (Flat Ribbon Cable) 1.27mm и два разъема IDC (2X4 8 Pins 2.54mm Dual Row Socket), как показано на следующем рисунке.
Разъем J2 предназначен для подключения к устройству, в качестве которого может выступать одноплатный компьютер.
В качестве примера, рассмотрим подключение микросхемы Winbond W25Q256JVFIQ к одноплатной машине Lenovo Leez P710. На плате имеется 40-контактный блок (рис.5), где SPI-интерфейс выведен на контакты 19, 21, 23, 24.
Следующая таблица показывает схему подключения контактов разъема J2 макетной платы к контактам Leez P710.
W25Q256JV | Pin | Pin | Leez P710 |
---|---|---|---|
CS | 1 | 24 | SPI1_CSn0 |
VCC 3.3V | 2 | 17 | Vcc 3.3V |
MISO | 3 | 21 | SPI1_RXD |
HOLD | 4 | – | – |
WP | 5 | – | – |
CLK | 6 | 23 | SPI1_CLK |
GND | 7 | 20 | GND |
MOSI | 8 | 19 | SPI1_TXD |
Для того, чтобы ядро Linux могло определить подключеную таким образом микросхему, необходимо добавить в описание dts (arch/arm64/boot/dts/rockchip/rk3399-leez-p710.dts) следующие строки.
&spi1 { status = "okay"; spiflash: flash@0 { compatible = "winbond,w25q256", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <1000000>; // 1MHz partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; spi-flash@0 { reg = <0x0 0x2000000>; // 32MiB (Full flash) label = "spi-flash"; }; }; }; };
Здесь определен только один раздел, занимающий весь объем памяти, которому будет соответствовать устройство /dev/mtd0. Разумеется, в разделе partitions можно определить и другие разделы. Следует только помнить, что выравнивания и размеры разделов NOR Flash должны быть кратны размеру Erase Block.