Это полный технический материал на основе исходника, справочник по платформе для ArmSoM. Область исходника: SoC с FLEXBUS согласно исходнику; поддержка конкретной платы требует проверки, Linux kernel 6.1. Перед применением проверьте плату, SoC, ветку SDK/BSP, выводы и периферию. Аппаратная проверка не проводилась; поддержка всеми платами ArmSoM не подразумевается. Вывод и числовые результаты — примеры исходника, а не испытания ArmSoM.
Китайская статья следует китайскому исходнику, английская — английскому; русская полностью переводит английский технический текст. Код, комментарии и вывод команд сохраняют язык источника. В технической части исходника нет отдельных технических рисунков или таблиц; вымышленные иллюстрации не добавлялись.
Оба исходника имеют версию V1.0.0.
Осторожно: резервирование памяти, DMA, мультиплексирование выводов и запись в устройства влияют на оборудование. Команды приведены для изучения; аппаратные операции не выполнялись. Проверьте схему, питание, тайминги и устройство. xxx и многоточия в DTS — заполнители исходника, а не готовая конфигурация.
Источники и исправления: EDITORIAL-NOTES。Официальные материалы: ArmSoM, Rockchip Linux.
Таблица версий продукта из исходника (PDF p.2; область исходника, не результат проверки платы):
| SoC | Версия ядра |
|---|---|
| Все SoC с поддержкой FLEXBUS | 6.1 |
1. Режим FLEXBUS FSPI
1.1 Обзор
Режим FLEXBUS FSPI реализует соответствующие функции путём эмуляции RK FSPI (Flexible Serial Peripheral Interface) средствами FLEXBUS, например:
Передача по одной линии и приём по четырём линиям — типичная конфигурация драйвера Linux MTD Quad SPI Flash.
Основная характеристика:
Тактовая частота до 100MHz
1.2 Настройка
1.2.1 Настройка ядра
Режим FLEXBUS FSPI реализован драйвером стандартной подсистемы SPI, но предоставляет только структуру spi-mem. Поддерживаются внешняя SPI Flash и периферийные устройства, использующие протокол spi-mem:
CONFIG_SPI=y
CONFIG_SPI_ROCKCHIP_FLEXBUS_FSPI=y
1.2.2 Настройка DTS
Пример с внешним дочерним устройством SPI NOR Flash:
&flexbus {
rockchip,flexbus0-opmode = <ROCKCHIP_FLEXBUS0_OPMODE_SPI>;
rockchip,flexbus1-opmode = <ROCKCHIP_FLEXBUS1_OPMODE_NULL>;
status = "okay";
};
&flexbus_fspi {
pinctrl-names = "default";
pinctrl-0 = <&flexbus0m1_pins &flexbus0_clk_pins
&flexbus0_d0_pins &flexbus0_d1_pins
&flexbus0_d2_pins &flexbus0_d3_pins>;
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <100000000>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <1>;
};
};
Пояснение:
mode_bits имеет значение SPI_RX_QUAD:
Допускается spi-rx-bus-width = 4.
По умолчанию используются SPI mode 0 и MSB mode. Соответствующие параметры нельзя изменить в DTS; для дальнейшей доработки обратитесь к руководству контроллера.
1.2.3 Файл драйвера
Файл драйвера — drivers/spi/spi-rockchip-flexbus-fspi.c.
