zephyr/doc/services/storage/disk/access.rst

93 lines
2.5 KiB
ReStructuredText

.. _disk_access_api:
Disk Access
###########
Overview
********
The disk access API provides access to storage devices.
SD Card support
***************
Zephyr has support for some SD card controllers and support for interfacing
SD cards via SPI. These drivers use disk driver interface and a file system
can access the SD cards via disk access API.
Both standard and high-capacity SD cards are supported.
.. note:: The system does not support inserting or removing cards while the
system is running. The cards must be present at boot and must not be
removed. This may be fixed in future releases.
FAT filesystems are not power safe so the filesystem may become
corrupted if power is lost or if the card is removed.
SD Memory Card subsystem
========================
Zephyr supports SD memory cards via the disk driver API, or via the SDMMC
subsystem. This subsystem can be used transparently via the disk driver API,
but also supports direct block level access to cards. The SDMMC subsystem
interacts with the :ref:`sd host controller api <sdhc_api>` to communicate
with attached SD cards.
SD Card support via SPI
=======================
Example devicetree fragment below shows how to add SD card node to ``spi1``
interface. Example uses pin ``PA27`` for chip select, and runs the SPI bus
at 24 MHz once the SD card has been initialized:
.. code-block:: devicetree
&spi1 {
status = "okay";
cs-gpios = <&porta 27 GPIO_ACTIVE_LOW>;
sdhc0: sdhc@0 {
compatible = "zephyr,sdhc-spi-slot";
reg = <0>;
status = "okay";
label = "SDHC_0";
mmc {
compatible = "zephyr,sdmmc-disk";
status = "okay";
label = "SDMMC_0";
};
spi-max-frequency = <24000000>;
};
};
The SD card will be automatically detected and initialized by the
filesystem driver when the board boots.
To read and write files and directories, see the :ref:`file_system_api` in
:zephyr_file:`include/zephyr/fs/fs.h` such as :c:func:`fs_open()`,
:c:func:`fs_read()`, and :c:func:`fs_write()`.
Disk Access API Configuration Options
*************************************
Related configuration options:
* :kconfig:option:`CONFIG_DISK_ACCESS`
API Reference
*************
.. doxygengroup:: disk_access_interface
Disk Driver Configuration Options
*********************************
Related driver configuration options:
* :kconfig:option:`CONFIG_DISK_DRIVERS`
Disk Driver Interface
*********************
.. doxygengroup:: disk_driver_interface