93 lines
2.5 KiB
ReStructuredText
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
|