f7c2c9f5bdc06c90f6611a0d292138c25a738a49
[oweals/u-boot.git] / doc / board / sifive / fu540.rst
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 HiFive Unleashed
4 ================
5
6 FU540-C000 RISC-V SoC
7 ---------------------
8 The FU540-C000 is the world’s first 4+1 64-bit RISC-V SoC from SiFive.
9
10 The HiFive Unleashed development platform is based on FU540-C000 and capable
11 of running Linux.
12
13 Mainline support
14 ----------------
15 The support for following drivers are already enabled:
16
17 1. SiFive UART Driver.
18 2. SiFive PRCI Driver for clock.
19 3. Cadence MACB ethernet driver for networking support.
20 4. SiFive SPI Driver.
21 5. MMC SPI Driver for MMC/SD support.
22
23 Booting from MMC using FSBL
24 ---------------------------
25
26 Building
27 --------
28
29 1. Add the RISC-V toolchain to your PATH.
30 2. Setup ARCH & cross compilation enviornment variable:
31
32 .. code-block:: none
33
34    export CROSS_COMPILE=<riscv64 toolchain prefix>
35
36 3. make sifive_fu540_defconfig
37 4. make
38
39 Flashing
40 --------
41
42 The current U-Boot port is supported in S-mode only and loaded from DRAM.
43
44 A prior stage M-mode firmware/bootloader (e.g OpenSBI) is required to
45 boot the u-boot.bin in S-mode and provide M-mode runtime services.
46
47 Currently, the u-boot.bin is used as a payload of the OpenSBI FW_PAYLOAD
48 firmware. We need to compile OpenSBI with below command:
49
50 .. code-block:: none
51
52         make PLATFORM=generic FW_PAYLOAD_PATH=<path to u-boot-dtb.bin>
53
54 More detailed description of steps required to build FW_PAYLOAD firmware
55 is beyond the scope of this document. Please refer OpenSBI documenation.
56 (Note: OpenSBI git repo is at https://github.com/riscv/opensbi.git)
57
58 Once the prior stage firmware/bootloader binary is generated, it should be
59 copied to the first partition of the sdcard.
60
61 .. code-block:: none
62
63     sudo dd if=<prior_stage_firmware_binary> of=/dev/disk2s1 bs=1024
64
65 Booting
66 -------
67 Once you plugin the sdcard and power up, you should see the U-Boot prompt.
68
69 Sample boot log from HiFive Unleashed board
70 -------------------------------------------
71
72 .. code-block:: none
73
74    U-Boot 2019.07-00024-g350ff02f5b (Jul 22 2019 - 11:45:02 +0530)
75
76    CPU:   rv64imafdc
77    Model: SiFive HiFive Unleashed A00
78    DRAM:  8 GiB
79    MMC:   spi@10050000:mmc@0: 0
80    In:    serial@10010000
81    Out:   serial@10010000
82    Err:   serial@10010000
83    Net:   eth0: ethernet@10090000
84    Hit any key to stop autoboot:  0
85    => version
86    U-Boot 2019.07-00024-g350ff02f5b (Jul 22 2019 - 11:45:02 +0530)
87
88    riscv64-linux-gcc.br_real (Buildroot 2018.11-rc2-00003-ga0787e9) 8.2.0
89    GNU ld (GNU Binutils) 2.31.1
90    => mmc info
91    Device: spi@10050000:mmc@0
92    Manufacturer ID: 3
93    OEM: 5344
94    Name: SU08G
95    Bus Speed: 20000000
96    Mode: SD Legacy
97    Rd Block Len: 512
98    SD version 2.0
99    High Capacity: Yes
100    Capacity: 7.4 GiB
101    Bus Width: 1-bit
102    Erase Group Size: 512 Bytes
103    => mmc part
104
105    Partition Map for MMC device 0  --   Partition Type: EFI
106
107    Part    Start LBA       End LBA         Name
108            Attributes
109            Type GUID
110            Partition GUID
111      1     0x00000800      0x000107ff      "bootloader"
112            attrs:  0x0000000000000000
113            type:   2e54b353-1271-4842-806f-e436d6af6985
114            guid:   393bbd36-7111-491c-9869-ce24008f6403
115      2     0x00040800      0x00ecdfde      ""
116            attrs:  0x0000000000000000
117            type:   0fc63daf-8483-4772-8e79-3d69d8477de4
118            guid:   7fc9a949-5480-48c7-b623-04923080757f
119
120 Now you can configure your networking, tftp server and use tftp boot method to
121 load uImage.
122
123 .. code-block:: none
124
125    => setenv ipaddr 10.206.7.133
126    => setenv netmask 255.255.252.0
127    => setenv serverip 10.206.4.143
128    => setenv gateway 10.206.4.1
129
130 If you want to use a flat kernel image such as Image file
131
132 .. code-block:: none
133
134    => tftpboot ${kernel_addr_r} /sifive/fu540/Image
135    ethernet@10090000: PHY present at 0
136    ethernet@10090000: Starting autonegotiation...
137    ethernet@10090000: Autonegotiation complete
138    ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x3c00)
139    Using ethernet@10090000 device
140    TFTP from server 10.206.4.143; our IP address is 10.206.7.133
141    Filename '/sifive/fu540/Image'.
142    Load address: 0x84000000
143    Loading: #################################################################
144             #################################################################
145             #################################################################
146             #################################################################
147             #################################################################
148             #################################################################
149             #################################################################
150             #################################################################
151             #################################################################
152             #################################################################
153             #################################################################
154             #################################################################
155             #################################################################
156             #################################################################
157             #################################################################
158             #################################################################
159             #################################################################
160             #################################################################
161             #################################################################
162             #################################################################
163             #################################################################
164             #################################################################
165             #################################################################
166             #################################################################
167             #################################################################
168             #################################################################
169             ##########################################
170             1.2 MiB/s
171    done
172    Bytes transferred = 8867100 (874d1c hex)
173
174 Or if you want to use a compressed kernel image file such as Image.gz
175
176 .. code-block:: none
177
178    => tftpboot ${kernel_addr_r} /sifive/fu540/Image.gz
179    ethernet@10090000: PHY present at 0
180    ethernet@10090000: Starting autonegotiation...
181    ethernet@10090000: Autonegotiation complete
182    ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x3c00)
183    Using ethernet@10090000 device
184    TFTP from server 10.206.4.143; our IP address is 10.206.7.133
185    Filename '/sifive/fu540/Image.gz'.
186    Load address: 0x84000000
187    Loading: #################################################################
188             #################################################################
189             #################################################################
190             #################################################################
191             #################################################################
192             #################################################################
193             #################################################################
194             #################################################################
195             #################################################################
196             #################################################################
197             #################################################################
198             #################################################################
199             #################################################################
200             #################################################################
201             #################################################################
202             #################################################################
203             #################################################################
204             #################################################################
205             #################################################################
206             #################################################################
207             #################################################################
208             #################################################################
209             #################################################################
210             #################################################################
211             #################################################################
212             #################################################################
213             ##########################################
214             1.2 MiB/s
215    done
216    Bytes transferred = 4809458 (4962f2 hex)
217    =>setenv kernel_comp_addr_r 0x90000000
218    =>setenv kernel_comp_size 0x500000
219
220 By this time, correct kernel image is loaded and required enviornment variables
221 are set. You can proceed to load the ramdisk and device tree from the tftp server
222 as well.
223
224 .. code-block:: none
225
226    => tftpboot ${ramdisk_addr_r} /sifive/fu540/uRamdisk
227    ethernet@10090000: PHY present at 0
228    ethernet@10090000: Starting autonegotiation...
229    ethernet@10090000: Autonegotiation complete
230    ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x3c00)
231    Using ethernet@10090000 device
232    TFTP from server 10.206.4.143; our IP address is 10.206.7.133
233    Filename '/sifive/fu540/uRamdisk'.
234    Load address: 0x88300000
235    Loading: #################################################################
236             #################################################################
237             #################################################################
238             #################################################################
239             #################################################################
240             #################################################################
241             #################################################################
242             ##############
243             418.9 KiB/s
244    done
245    Bytes transferred = 2398272 (249840 hex)
246    => tftpboot ${fdt_addr_r} /sifive/fu540/hifive-unleashed-a00.dtb
247    ethernet@10090000: PHY present at 0
248    ethernet@10090000: Starting autonegotiation...
249    ethernet@10090000: Autonegotiation complete
250    ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x7c00)
251    Using ethernet@10090000 device
252    TFTP from server 10.206.4.143; our IP address is 10.206.7.133
253    Filename '/sifive/fu540/hifive-unleashed-a00.dtb'.
254    Load address: 0x88000000
255    Loading: ##
256             1000 Bytes/s
257    done
258    Bytes transferred = 5614 (15ee hex)
259    => setenv bootargs "root=/dev/ram rw console=ttySIF0 ip=dhcp earlycon=sbi"
260    => booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
261    ## Loading init Ramdisk from Legacy Image at 88300000 ...
262       Image Name:   Linux RootFS
263       Image Type:   RISC-V Linux RAMDisk Image (uncompressed)
264       Data Size:    2398208 Bytes = 2.3 MiB
265       Load Address: 00000000
266       Entry Point:  00000000
267       Verifying Checksum ... OK
268    ## Flattened Device Tree blob at 88000000
269       Booting using the fdt blob at 0x88000000
270       Using Device Tree in place at 0000000088000000, end 00000000880045ed
271
272    Starting kernel ...
273
274    [    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
275    [    0.000000] Linux version 5.3.0-rc1-00003-g460ac558152f (anup@anup-lab-machine) (gcc version 8.2.0 (Buildroot 2018.11-rc2-00003-ga0787e9)) #6 SMP Mon Jul 22 10:01:01 IST 2019
276    [    0.000000] earlycon: sbi0 at I/O port 0x0 (options '')
277    [    0.000000] printk: bootconsole [sbi0] enabled
278    [    0.000000] Initial ramdisk at: 0x(____ptrval____) (2398208 bytes)
279    [    0.000000] Zone ranges:
280    [    0.000000]   DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
281    [    0.000000]   Normal   [mem 0x0000000100000000-0x000000027fffffff]
282    [    0.000000] Movable zone start for each node
283    [    0.000000] Early memory node ranges
284    [    0.000000]   node   0: [mem 0x0000000080200000-0x000000027fffffff]
285    [    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000027fffffff]
286    [    0.000000] software IO TLB: mapped [mem 0xfbfff000-0xfffff000] (64MB)
287    [    0.000000] CPU with hartid=0 is not available
288    [    0.000000] CPU with hartid=0 is not available
289    [    0.000000] elf_hwcap is 0x112d
290    [    0.000000] percpu: Embedded 18 pages/cpu s34584 r8192 d30952 u73728
291    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 2067975
292    [    0.000000] Kernel command line: root=/dev/ram rw console=ttySIF0 ip=dhcp earlycon=sbi
293    [    0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
294    [    0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
295    [    0.000000] Sorting __ex_table...
296    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
297    [    0.000000] Memory: 8182308K/8386560K available (5916K kernel code, 368K rwdata, 1840K rodata, 213K init, 304K bss, 204252K reserved, 0K cma-reserved)
298    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
299    [    0.000000] rcu: Hierarchical RCU implementation.
300    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
301    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
302    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
303    [    0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
304    [    0.000000] plic: mapped 53 interrupts with 4 handlers for 9 contexts.
305    [    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
306    [    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
307    [    0.000006] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
308    [    0.008559] Console: colour dummy device 80x25
309    [    0.012989] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)
310    [    0.023104] pid_max: default: 32768 minimum: 301
311    [    0.028273] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
312    [    0.035765] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
313    [    0.045307] rcu: Hierarchical SRCU implementation.
314    [    0.049875] smp: Bringing up secondary CPUs ...
315    [    0.055729] smp: Brought up 1 node, 4 CPUs
316    [    0.060599] devtmpfs: initialized
317    [    0.064819] random: get_random_u32 called from bucket_table_alloc.isra.10+0x4e/0x160 with crng_init=0
318    [    0.073720] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
319    [    0.083176] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
320    [    0.090721] NET: Registered protocol family 16
321    [    0.106319] vgaarb: loaded
322    [    0.108670] SCSI subsystem initialized
323    [    0.112515] usbcore: registered new interface driver usbfs
324    [    0.117758] usbcore: registered new interface driver hub
325    [    0.123167] usbcore: registered new device driver usb
326    [    0.128905] clocksource: Switched to clocksource riscv_clocksource
327    [    0.141239] NET: Registered protocol family 2
328    [    0.145506] tcp_listen_portaddr_hash hash table entries: 4096 (order: 4, 65536 bytes, linear)
329    [    0.153754] TCP established hash table entries: 65536 (order: 7, 524288 bytes, linear)
330    [    0.163466] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes, linear)
331    [    0.173468] TCP: Hash tables configured (established 65536 bind 65536)
332    [    0.179739] UDP hash table entries: 4096 (order: 5, 131072 bytes, linear)
333    [    0.186627] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes, linear)
334    [    0.194117] NET: Registered protocol family 1
335    [    0.198417] RPC: Registered named UNIX socket transport module.
336    [    0.203887] RPC: Registered udp transport module.
337    [    0.208664] RPC: Registered tcp transport module.
338    [    0.213429] RPC: Registered tcp NFSv4.1 backchannel transport module.
339    [    0.219944] PCI: CLS 0 bytes, default 64
340    [    0.224170] Unpacking initramfs...
341    [    0.262347] Freeing initrd memory: 2336K
342    [    0.266531] workingset: timestamp_bits=62 max_order=21 bucket_order=0
343    [    0.280406] NFS: Registering the id_resolver key type
344    [    0.284798] Key type id_resolver registered
345    [    0.289048] Key type id_legacy registered
346    [    0.293114] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
347    [    0.300262] NET: Registered protocol family 38
348    [    0.304432] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
349    [    0.311862] io scheduler mq-deadline registered
350    [    0.316461] io scheduler kyber registered
351    [    0.356421] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
352    [    0.363004] 10010000.serial: ttySIF0 at MMIO 0x10010000 (irq = 4, base_baud = 0) is a SiFive UART v0
353    [    0.371468] printk: console [ttySIF0] enabled
354    [    0.371468] printk: console [ttySIF0] enabled
355    [    0.380223] printk: bootconsole [sbi0] disabled
356    [    0.380223] printk: bootconsole [sbi0] disabled
357    [    0.389589] 10011000.serial: ttySIF1 at MMIO 0x10011000 (irq = 1, base_baud = 0) is a SiFive UART v0
358    [    0.398680] [drm] radeon kernel modesetting enabled.
359    [    0.412395] loop: module loaded
360    [    0.415214] sifive_spi 10040000.spi: mapped; irq=3, cs=1
361    [    0.420628] sifive_spi 10050000.spi: mapped; irq=5, cs=1
362    [    0.425897] libphy: Fixed MDIO Bus: probed
363    [    0.429964] macb 10090000.ethernet: Registered clk switch 'sifive-gemgxl-mgmt'
364    [    0.436743] macb: GEM doesn't support hardware ptp.
365    [    0.441621] libphy: MACB_mii_bus: probed
366    [    0.601316] Microsemi VSC8541 SyncE 10090000.ethernet-ffffffff:00: attached PHY driver [Microsemi VSC8541 SyncE] (mii_bus:phy_addr=10090000.ethernet-ffffffff:00, irq=POLL)
367    [    0.615857] macb 10090000.ethernet eth0: Cadence GEM rev 0x10070109 at 0x10090000 irq 6 (70:b3:d5:92:f2:f3)
368    [    0.625634] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
369    [    0.631381] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
370    [    0.637382] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
371    [    0.643799] ehci-pci: EHCI PCI platform driver
372    [    0.648261] ehci-platform: EHCI generic platform driver
373    [    0.653497] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
374    [    0.659599] ohci-pci: OHCI PCI platform driver
375    [    0.664055] ohci-platform: OHCI generic platform driver
376    [    0.669448] usbcore: registered new interface driver uas
377    [    0.674575] usbcore: registered new interface driver usb-storage
378    [    0.680642] mousedev: PS/2 mouse device common for all mice
379    [    0.709493] mmc_spi spi1.0: SD/MMC host mmc0, no DMA, no WP, no poweroff, cd polling
380    [    0.716615] usbcore: registered new interface driver usbhid
381    [    0.722023] usbhid: USB HID core driver
382    [    0.726738] NET: Registered protocol family 10
383    [    0.731359] Segment Routing with IPv6
384    [    0.734332] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
385    [    0.740687] NET: Registered protocol family 17
386    [    0.744660] Key type dns_resolver registered
387    [    0.806775] mmc0: host does not support reading read-only switch, assuming write-enable
388    [    0.814020] mmc0: new SDHC card on SPI
389    [    0.820137] mmcblk0: mmc0:0000 SU08G 7.40 GiB
390    [    0.850220]  mmcblk0: p1 p2
391    [    3.821524] macb 10090000.ethernet eth0: link up (1000/Full)
392    [    3.828938] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
393    [    3.848919] Sending DHCP requests .., OK
394    [    6.252076] IP-Config: Got DHCP answer from 10.206.4.1, my address is 10.206.7.133
395    [    6.259624] IP-Config: Complete:
396    [    6.262831]      device=eth0, hwaddr=70:b3:d5:92:f2:f3, ipaddr=10.206.7.133, mask=255.255.252.0, gw=10.206.4.1
397    [    6.272809]      host=dhcp-10-206-7-133, domain=sdcorp.global.sandisk.com, nis-domain=(none)
398    [    6.281228]      bootserver=10.206.126.11, rootserver=10.206.126.11, rootpath=
399    [    6.281232]      nameserver0=10.86.1.1, nameserver1=10.86.2.1
400    [    6.294179]      ntpserver0=10.86.1.1, ntpserver1=10.86.2.1
401    [    6.301026] Freeing unused kernel memory: 212K
402    [    6.304683] This architecture does not have kernel memory protection.
403    [    6.311121] Run /init as init process
404               _  _
405              | ||_|
406              | | _ ____  _   _  _  _
407              | || |  _ \| | | |\ \/ /
408              | || | | | | |_| |/    \
409              |_||_|_| |_|\____|\_/\_/
410
411                   Busybox Rootfs
412
413    Please press Enter to activate this console.
414    / #
415
416 Booting from MMC using U-Boot SPL
417 ---------------------------------
418
419 Building
420 --------
421
422 Before building U-Boot SPL, OpenSBI must be built first. OpenSBI can be
423 cloned and built for FU540 as below:
424
425 .. code-block:: console
426
427         git clone https://github.com/riscv/opensbi.git
428         cd opensbi
429         make PLATFORM=generic
430         export OPENSBI=<path to opensbi/build/platform/generic/firmware/fw_dynamic.bin>
431
432 Now build the U-Boot SPL and U-Boot proper
433
434 .. code-block:: console
435
436         cd <U-Boot-dir>
437         make sifive_fu540_defconfig
438         make
439
440 This will generate spl/u-boot-spl.bin and FIT image (u-boot.itb)
441
442
443 Flashing
444 --------
445
446 ZSBL loads the U-Boot SPL (u-boot-spl.bin) from a partition with GUID type
447 5B193300-FC78-40CD-8002-E86C45580B47
448
449 U-Boot SPL expects a U-Boot FIT image (u-boot.itb) from a partition with GUID
450 type 2E54B353-1271-4842-806F-E436D6AF6985
451
452 FIT image (u-boot.itb) is a combination of fw_dynamic.bin, u-boot-nodtb.bin and
453 device tree blob (hifive-unleashed-a00.dtb)
454
455 Format the SD card (make sure the disk has GPT, otherwise use gdisk to switch)
456
457 .. code-block:: none
458
459         # sudo sgdisk --clear \
460         > --set-alignment=2 \
461         > --new=1:34:2081 --change-name=1:loader1 --typecode=1:5B193300-FC78-40CD-8002-E86C45580B47 \
462         > --new=2:2082:10273 --change-name=2:loader2 --typecode=2:2E54B353-1271-4842-806F-E436D6AF6985 \
463         > --new=3:10274: --change-name=3:rootfs --typecode=3:0FC63DAF-8483-4772-8E79-3D69D8477DE4 \
464         > /dev/sda
465
466 Program the SD card
467
468 .. code-block:: none
469
470         sudo dd if=spl/u-boot-spl.bin of=/dev/sda seek=34
471         sudo dd if=u-boot.itb of=/dev/sda seek=2082
472
473 Booting
474 -------
475 Once you plugin the sdcard and power up, you should see the U-Boot prompt.
476
477 Sample boot log from HiFive Unleashed board
478 -------------------------------------------
479
480 .. code-block:: none
481
482         U-Boot SPL 2020.04-rc2-00109-g63efc7e07e-dirty (Apr 30 2020 - 13:52:36 +0530)
483         Trying to boot from MMC1
484
485
486         U-Boot 2020.04-rc2-00109-g63efc7e07e-dirty (Apr 30 2020 - 13:52:36 +0530)
487
488         CPU:   rv64imafdc
489         Model: SiFive HiFive Unleashed A00
490         DRAM:  8 GiB
491         MMC:   spi@10050000:mmc@0: 0
492         In:    serial@10010000
493         Out:   serial@10010000
494         Err:   serial@10010000
495         Net:   eth0: ethernet@10090000
496         Hit any key to stop autoboot:  0
497         => version
498         U-Boot 2020.04-rc2-00109-g63efc7e07e-dirty (Apr 30 2020 - 13:52:36 +0530)
499
500         riscv64-unknown-linux-gnu-gcc (crosstool-NG 1.24.0.37-3f461da) 9.2.0
501         GNU ld (crosstool-NG 1.24.0.37-3f461da) 2.32
502         => mmc info
503         Device: spi@10050000:mmc@0
504         Manufacturer ID: 3
505         OEM: 5344
506         Name: SC16G
507         Bus Speed: 20000000
508         Mode: SD Legacy
509         Rd Block Len: 512
510         SD version 2.0
511         High Capacity: Yes
512         Capacity: 14.8 GiB
513         Bus Width: 1-bit
514         Erase Group Size: 512 Bytes
515         => mmc part
516
517         Partition Map for MMC device 0  --   Partition Type: EFI
518
519         Part    Start LBA       End LBA         Name
520         Attributes
521         Type GUID
522         Partition GUID
523         1     0x00000022      0x00000821      "loader1"
524         attrs:  0x0000000000000000
525         type:   5b193300-fc78-40cd-8002-e86c45580b47
526         guid:   66e2b5d2-74db-4df8-ad6f-694b3617f87f
527         2     0x00000822      0x00002821      "loader2"
528         attrs:  0x0000000000000000
529         type:   2e54b353-1271-4842-806f-e436d6af6985
530         guid:   8befaeaf-bca0-435d-b002-e201f37c0a2f
531         3     0x00002822      0x01dacbde      "rootfs"
532         attrs:  0x0000000000000000
533         type:   0fc63daf-8483-4772-8e79-3d69d8477de4
534         type:   linux
535         guid:   9faa81b6-39b1-4418-af5e-89c48f29c20d