Как использовать SPI NOR Flash на плате OrangePi Zero2 Как известно, на плате OrangePi Zero2 имеется микросхема MX25L1606E, это энергонезависимая память с синхронным последовательным интерфейсом (SPI NOR Flash) емкостью 2 Mбайт. В поставляемом от производителя устройстве эта память девственно чиста и штатным программным обеспечением (Android или Linux) никак не используется. В текущей версии руководства пользователя OrangePi Zero2 информация по работе со SPI NOR также отсутствует. Примечание. Обозначение памяти расшифровывается так: NOR = 'Not OR', в отличие от NAND = 'Not AND'. NOR - это память с произвольным доступом к любому адресу, т.е. даже к одному байту. В то же время, имеющийся в SoC Allwinner H616 начальный (первичный) загрузчик BROM (см. Загрузочное ПЗУ (BROM) ) позволяет загрузить вторичный загрузчик Boot0 (он же SPL) и U-Boot непосредственно из SPI при отсутствии вставленной SD-карты с такими загрузчиками. Для этого должен быть собран специальный загрузчик u-boot-sunxi-with-spl.bin с включеннной в файле конфигурации (.config) поддержкой SPI. Имя такого бинарного файла u-boot-sunxi-with-spl.bin говорит о том, что это U-Boot c SPL (т.е. Boot0). Хотя, на самом деле, в начале файла лежит Boot0, который занимается загрузкой U-Boot, также присутствующего в этом файле. Кроме того, в нем содержатся переменные окружения (ENV) и дерево устройств FDT (в виде блоба DTB). Ниже будет показаны примеры того, как пользоваться таким загрузчиком из оболочки U-Boot. Хотя нужно учесть, что прямо сейчас это сделано лишь с познавательной (или ознакомительной )целью. Для полноценного практического использования SPI заинтересованным пользователям потребуется дополнительное, более глубокое изучение и экспериментирование. Пока готовых рецептов нет. Но, как известно: "лиха беда начало". Готовый файл загрузчика u-boot-sunxi-with-spl.bin с поддержкой SPI можно загрузить на странице форума 4PDA по ссылке: Загрузчик SPI для OrangePi Zero2 . Кроме того, этот файл имеется в zip-архиве Файлы загрузчика , в котором лежат два файла: spispl.bin и spispl.img. Первый из них - это копия файла u-boot-sunxi-with-spl.bin, а второй - тот же файл, но записанный со смещением 8192 (зачем он нужен - см. ниже). Для демонстрации работы SPI-загрузчика будет использован ПК с Windows, а также плата OrangePi Zero2, которая соединена с этим ПК через UART (отладочный последовательный порт). При этом на ПК запущена терминальная программа MobaXTerm, а также запущен TFTP-сервер (например, HaneWin TFTP Server или любой другой). Этот TFTP-сервер будет использован для записи файла загрузчика в SPI Flash платы, а также для демонстрации работы загрузчика по сети через Ethernet. Файл загрузчика u-boot-sunxi-with-spl.bi можно использовать не только для записи в SPI Flash, но и на SD-карту, и в обоих случаях он будет успешно стартовать, т.к. первичный загрузчик BROM, находящийся в SoC Allwinner H616 последовательно обращается к SD-карте и к SPI для проверки наличия сигнатуры 'eGONBT0' при поиске загрузчика BOOT0. Разница заключается лишь в том, что на SPI вторичный загрузчик должен лежать в самом начале, а на SD-карте - со смещением 8 Kbyte. Поэтому здесь мы будем использовать два файла (spispl.bin и spispl.img). Но после загрузки в память оба должны функционировать одинаково. |