Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

External SD Card using SPI on Orange Pi Zero 2W

Featured Replies

Hello,

 

I have connected a microSD module to the SPI1 CS0 pins
kp.png.fc6205a37a683fc2d398aef5b79eb5ca.png

Is there a way to mount an SPI device? I tried, but I got this error: mount: /mnt/sdcard: /dev/spidev1.0 is not a block device.
What is the best way to easily manage files on this secondary SD card?

12 минут назад, kreestyahn сказал:

I have connected a microSD module to the SPI1 CS0 pins

Can you publish the connection diagram of this device. What's in the brief?

 

15 минут назад, kreestyahn сказал:

Is there a way to mount an SPI device?

First, you need to write an overlay for the DTS.

Compile it and add it to /boot/dtb*/overlay, and a line to load into armbianEnv.txt the file.

After that, the SD card will be automatically mounted as /dev/mmcblkXp1

  • Author

I have created an sun50i-h616-spi-sd.dts:
 

/dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun50i-h616";

    fragment@0 {
        target = <&spi1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";

            mmc@0 {
                reg = <0>;
                compatible = "mmc-spi-slot";
                voltage-ranges = <3300 3300>;
                spi-max-frequency = <50000000>;
                status = "okay";
            };
        };
    };
};

compiled it and added into /boot/dtb/allwinner/overlay

orangepiEnv.txt:

verbosity=1
bootlogo=false
console=both
disp_mode=1920x1080p60
overlay_prefix=sun50i-h616
rootdev=UUID=6cd6cb54-48bc-4b6a-a615-2abfb7d74fe0
rootfstype=ext4
overlays=pi-i2c1 spi-sd
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u


only the main SD is detected:

root@orangepizero2w:/ # ls /dev/mmc*
/dev/mmcblk1  /dev/mmcblk1p1


 

root@orangepizero2w:/ # dmesg | grep -i spi
dmesg | grep -i mmc

[    1.415702] spi-nor spi0.0: ZB25VQ128A (16384 Kbytes)
[    1.451348] mmc_spi spi1.0: SD/MMC host mmc0, no WP, no poweroff, cd polling
[    1.451348] mmc_spi spi1.0: SD/MMC host mmc0, no WP, no poweroff, cd polling
[    1.482498] sunxi-mmc 4021000.mmc: allocated mmc-pwrseq
[    1.482663] sunxi-mmc 4020000.mmc: Got CD GPIO
[    1.508525] sunxi-mmc 4020000.mmc: initialized, max. request size: 16384 KB, uses new timings mode
[    1.546705] mmc1: host does not support reading read-only switch, assuming write-enable
[    1.548649] mmc1: new high speed SDHC card at address 0001
[    1.549859] mmcblk1: mmc1:0001 EITSD 7.50 GiB
[    1.552553]  mmcblk1: p1
[    1.712888] sunxi-mmc 4021000.mmc: initialized, max. request size: 16384 KB, uses new timings mode
[    1.731008] mmc2: new high speed SDIO card at address 8800
[    3.149516] EXT4-fs (mmcblk1p1): mounted filesystem with writeback data mode. Quota mode: none.
[    6.629778] EXT4-fs (mmcblk1p1): re-mounted. Quota mode: none.



 

Quote

Can you publish the connection diagram of this device. What's in the brief?

I can't show you the physical connections because the orange pi is built into a custom board that I don't have access to right now, but the microSD module it connected to the SPI1-MOSI, -MISO, -CLK, -CS0 pins.

46 минут назад, kreestyahn сказал:
mmc@0 {
                reg = <0>;

Pins are recorded for the mmc0 node

dts/allwinner/sun50i-h616.dtsi#L275

bat

mmc0_pins:

 

Add fragment0: aliases

By analogy with this aliases

 

/omit-if-no-ref/ - This line says that they are missing from your dtb

Add fragment1:

spi1_pins:

			spi1_pins: spi1-pins {
				pins = "PH6", "PH7", "PH8";
				function = "spi1";
			};

			spi1_cs0_pin: spi1-cs0-pin {
				pins = "PH5";
				function = "spi1";
			};

 

Your fragment has now become the third. Add a description of the pins to it by analogy with this:

pinctrl-names

  • Author

Like this?

 

/dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun50i-h616";

    fragment@0 {
        target-path = "/aliases";
        __overlay__ {
            spi0 = "/soc/spi@5010000";
            spi1 = "/soc/spi@5011000";
        };
    };

    fragment@1 {
        target = <&spi1>;
        __overlay__ {
            spi1_pins: spi1-pins {
                pins = "PH6", "PH7", "PH8";
                function = "spi1";
            };

            spi1_cs0_pin: spi1-cs0-pin {
                pins = "PH5";
                function = "spi1";
            };
        };
    };

    fragment@2 {
        target = <&spi1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            pinctrl-0 = <&spi1_pins>;
            pinctrl-names = "default", "default";
            status = "okay";

            mmc@0 {
                reg = <0>;
                compatible = "mmc-spi-slot";
                voltage-ranges = <3300 3300>;
                spi-max-frequency = <50000000>;
                status = "okay";
            };
        };
    };
};

 

6 часов назад, kreestyahn сказал:
fragment@2 {
        target = <&spi1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            pinctrl-0 = <&spi1_pins>;
            pinctrl-names = "default", "default";
            status = "okay";
    fragment@2 {
        target = <&spi1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            pinctrl-names = "default", "default";
            pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>;
            status = "okay";

And try to experience

  • Author

  

now it looks like this:I replaced the target = <&spi1>;  to target-path = </soc/spi@5011000>; because i got errors (Reference to non-existent node or label "spi1").

 

/dts-v1/;

/ {
        compatible = "allwinner,sun50i-h616";

        fragment@0 {
                target-path = "/aliases";

                __overlay__ {
                        spi0 = "/soc/spi@5010000";
                        spi1 = "/soc/spi@5011000";
                };
        };

        fragment@1 {
                target-path = "/soc/spi@5011000";

                __overlay__ {
                        spi1_pins: spi1-pins {
                                pins = "PH6\0PH7\0PH8";
                                function = "spi1";

                        };

                        spi1_cs0_pin: spi1-cs0-pin {
                                pins = "PH5";
                                function = "spi1";

                        };
                };
        };

        fragment@2 {
                target-path = "/soc/spi@5011000";

                __overlay__ {
                        #address-cells = <0x01>;
                        #size-cells = <0x00>;
                        pinctrl-names = "default\0default";
                        pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>;
                        status = "okay";

                        mmc@0 {
                                reg = <0x00>;
                                compatible = "mmc-spi-slot";
                                voltage-ranges = <0xce4 0xce4>;
                                spi-max-frequency = <0x2faf080>;
                                status = "okay";
                        };
                };
        };

};

Now I could compile it without any error, but in /dev there is still only one mmcblk.
 

root@orangepizero2w:allwinner/overlay # dmesg | grep -i 'spi'
[    1.415511] spi-nor spi0.0: ZB25VQ128A (16384 Kbytes)
[   24.548702] platform 5011000.spi: deferred probe pending

 

  • Author
Quote

[ 24.548702] platform 5011000.spi: deferred probe pending

kp.png.6cf1b4aac990fc2ca35b4c76af105b4a.png

 

The error disappears and the SPI1 pins' mode set back to ALT4 when only "spi1-cs0-spidev" overlay is enabled.


But if only "spi-sd" or both is enabled it set them back to "OFF" and the error appears.
kp.png.0f9be7fd56b18886db74957bcd6f1033.png

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.