Перейти к содержанию
    

Quote

ZynqMP> bdinfo
arch_number = 0x00000000
boot_params = 0x00000000
DRAM bank   = 0x00000000
-> start    = 0x00000000
-> size     = 0x7FF00000
baudrate    = 115200 bps
TLB addr    = 0x7FEE0000
relocaddr   = 0x7FDF7000
reloc off   = 0x77DF7000
irq_sp      = 0x7DDB6DE0
sp start    = 0x7DDB6DE0
ARM frequency = 50 MHz
DSP frequency = 0 MHz
DDR frequency = 0 MHz
Early malloc usage: bd8 / 8000
fdt_blob = 000000007fe82490
ZynqMP>

ZynqMP> fdt addr 0x7fe82490

ZynqMP> fdt print /amba/sdhci@ff160000
sdhci@ff160000 {
    u-boot,dm-pre-reloc;
    compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
    status = "okay";
    interrupt-parent = <0x00000004>;
    interrupts = <0x00000000 0x00000030 0x00000004>;
    reg = <0x00000000 0xff160000 0x00000000 0x00001000>;
    clock-names = "clk_xin", "clk_ahb";
    xlnx,device_id = <0x00000000>;
    #stream-id-cells = <0x00000001>;
    iommus = <0x00000009 0x00000870>;
    power-domains = <0x0000001c>;
    clocks = <0x00000003 0x00000036 0x00000003 0x0000001f>;
    clock-frequency = " ��";
    xlnx,mio_bank = <0x00000000>;
    max-frequency = " ��";
    bus-width = <0x00000008>;
};
ZynqMP>

ZynqMP> mmcinfo
Device: sdhci@ff160000
Manufacturer ID: 13
OEM: 14e
Name: Q2J55
Tran Speed: 200000000
Rd Block Len: 512
MMC version 5.0
High Capacity: Yes
Capacity: 7.1 GiB
Bus Width: 4-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 7.1 GiB WRREL
Boot Capacity: 16 MiB ENH
RPMB Capacity: 4 MiB ENH
ZynqMP>

Что скажете по это му поводу? Вроде бы u-boot видит опцию  bus-width = <0x00000008>, но читает файл образа всё равно в режиме х4.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, gosha-z said:

Почитал исходники еще раз. Включите MMC_VERBOSE, MMC_HS200_SUPPORT и, возможно, MMC_UHS_SUPPORT 

Не могу найти в меню конфига, что влияет на установку данных опций (ни для ядра ни для u-boot).

Правильно ли понимаю, что в файле config.cfg для u-boot для включения данных опций должно быть прописано следующее:

Quote

CONFIG_MMC_VERBOSE=y

CONFIG_MMC_HS200_SUPPORT=y

CONFIG_MMC_UHS_SUPPORT=y

???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавил эти строки в *.cfg файл для u-boot - результат тот же.

Интересно, что у самих Xilinx память стартует в режиме 4-bit (см .тут).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

1 hour ago, doom13 said:

Не могу найти в меню конфига, что влияет на установку данных опций

Возможно, не конфиг самого убута, а конфиг борды для убута - в наиболее общем случае эти подмножества не обязаны пересекаться

 

3 minutes ago, doom13 said:

Добавил эти строки в *.cfg файл для u-boot - результат тот же.

mmcinfo поменялся?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет не поменялся

Quote

ZynqMP> mmcinfo
Device: sdhci@ff160000
Manufacturer ID: 13
OEM: 14e
Name: Q2J55
Tran Speed: 200000000
Rd Block Len: 512
MMC version 5.0
High Capacity: Yes
Capacity: 7.1 GiB
Bus Width: 4-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 7.1 GiB WRREL
Boot Capacity: 16 MiB ENH
RPMB Capacity: 4 MiB ENH
ZynqMP>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, doom13 сказал:

нет не поменялся

 

у вас, по идее, вот такая функция д.б.:

void sdhci_set_bus_width(struct sdhci_host *host, int width)
{
	u8 ctrl;

	ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
	if (width == MMC_BUS_WIDTH_8) {
		ctrl &= ~SDHCI_CTRL_4BITBUS;
		ctrl |= SDHCI_CTRL_8BITBUS;
	} else {
		if (host->mmc->caps & MMC_CAP_8_BIT_DATA)
			ctrl &= ~SDHCI_CTRL_8BITBUS;
		if (width == MMC_BUS_WIDTH_4)
			ctrl |= SDHCI_CTRL_4BITBUS;
		else
			ctrl &= ~SDHCI_CTRL_4BITBUS;
	}
	sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
}

накидайте отладочных printk с выводом переменных и ветвления, будет более понятно что происходит..

update пардон, это для ядра.. впрочем в юбуте д.б. похожая функция..

Изменено пользователем Jury093

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, gosha-z сказал:

В U-Boot не printk, там свой printf

спасибо, я в курсе..

в юбуте по той же стратегии - в драйвере потрассить фунции, начиная с _probe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для u-boot, собранного из исходников Xilinx, добавил галку mmcdebug, стало выводить в консоль обмен между eMMC чипом и контроллером SD:

Quote

NOTICE:  ATF running on XCZU9EG/silicon v3/RTL5.1 at 0xfffea000
NOTICE:  BL31: Secure code at 0x0
NOTICE:  BL31: Non secure code at 0x8000000
NOTICE:  BL31: v1.4(release):xilinx-v2018.1-4-g93a69a5a
NOTICE:  BL31: Built : 13:47:06, Mar 14 2019
PMUFW:    v1.0
 
 
U-Boot 2019.01-06990-g6fb02bb-dirty (Mar 15 2019 - 12:20:23 +0300)
 
Board: Xilinx ZynqMP
DRAM:  2 GiB
EL Level:    EL2
Chip ID:    zu9eg
MMC:   sdhci@ff160000: 0
Loading Environment from SPI Flash... SF: Detected n25q1024a with page size 512 Bytes, erase size 128 KiB, total 256 MiB
*** Warning - bad CRC, using default environment
 
In:    serial@ff000000
Out:   serial@ff000000
Err:   serial@ff000000
Bootmode: EMMC_MODE
Reset reason:    EXTERNAL  
Net:   ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
 
Warning: ethernet@ff0e0000 (eth0) using random MAC address - 96:82:07:2f:7f:b0
eth0: ethernet@ff0e0000
Hit any key to stop autoboot:  1 0  
!!!
!!! Booting cmd is deprecated (will be removed in 2020).
!!! Please move to distro bootcmd.
!!!
CMD_SEND:0
        ARG             0x00000000
        MMC_RSP_NONE
CMD_SEND:8
        ARG             0x000001AA
        RET             -110
CMD_SEND:55
        ARG             0x00000000
        RET             -110
CMD_SEND:0
        ARG             0x00000000
        MMC_RSP_NONE
CMD_SEND:8
        ARG             0x000001AA
        RET             -110
CMD_SEND:55
        ARG             0x00000000
        RET             -110
CMD_SEND:0
        ARG             0x00000000
        MMC_RSP_NONE
CMD_SEND:1
        ARG             0x00000000
        MMC_RSP_R3,4         0x00FF8080  
CMD_SEND:1
        ARG             0x40300080
        MMC_RSP_R3,4         0xC0FF8080     If the argument is 0x80FF8000 the Device is only High Voltage, if the
                            argument is 0x80FF8080 the Device is Dual Voltage
CMD_SEND:2
        ARG             0x00000000
        MMC_RSP_R2         0x13014E51  
                           0x324A3535  
                           0x4C100D26  
                           0xA3B9A500  
 
                    DUMPING DATA
                    000 - 13 01 4E 51  
                    004 - 32 4A 35 35  
                    008 - 4C 10 0D 26  
                    012 - A3 B9 A5 00  
CMD_SEND:3
        ARG             0x00010000
        MMC_RSP_R1,5,6,7      0x00000500  
CMD_SEND:9
        ARG             0x00010000
        MMC_RSP_R2         0xD02F0132  
                           0x0F5913FF  
                           0xFFFFFFEF  
                           0x8E400000  
 
                    DUMPING DATA
                    000 - D0 2F 01 32  
                    004 - 0F 59 13 FF  
                    008 - FF FF FF EF  
                    012 - 8E 40 00 00  
CMD_SEND:7
        ARG             0x00010000
        MMC_RSP_R1,5,6,7      0x00000700
-------------------------------------------------------------------------------------------------------  
CMD_SEND:8
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:6
        ARG             0x03B70100
        MMC_RSP_R1b         0x00000800  
CMD_SEND:13
        ARG             0x00010000
        MMC_RSP_R1,5,6,7      0x00000900  
CURR STATE:4
CMD_SEND:6
        ARG             0x03B90200
        MMC_RSP_R1b         0x00000800  
CMD_SEND:13
        ARG             0x00010000
        MMC_RSP_R1,5,6,7      0x00000900  
CURR STATE:4
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000100  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:21
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:8
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:16
        ARG             0x00000200
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:17
        ARG             0x00000000
        MMC_RSP_R1,5,6,7      0x00000900  
switch to partitions #0, OK
mmc0(part 0) is current device
Device: sdhci@ff160000
Manufacturer ID: 13
OEM: 14e
Name: Q2J55  
Bus Speed: 200000000
Mode : HS200 (200MHz)
Rd Block Len: 512
MMC version 5.0
High Capacity: Yes
Capacity: 7.1 GiB
Bus Width: 4-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 7.1 GiB WRREL
Boot Capacity: 16 MiB ENH
RPMB Capacity: 4 MiB ENH
CMD_SEND:16
        ARG             0x00000200
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:17
        ARG             0x00000800
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:16
        ARG             0x00000200
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:17
        ARG             0x000017C8
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:16
        ARG             0x00000200
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:18
        ARG             0x00000806
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:12
        ARG             0x00000000
        MMC_RSP_R1b         0x00000B00  
CMD_SEND:16
        ARG             0x00000200
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:18
        ARG             0x00000806
        MMC_RSP_R1,5,6,7      0x00000900  
CMD_SEND:12
        ARG             0x00000000
        MMC_RSP_R1b         0x00000B00  
** Unable to read file system.dtb **
Unknown command 'distro_bootcmd' - try 'help'
u-boot>

 

Смущают значения аргумента для CMD6 (выделил жирным), когда-то давно инициализацию eMMC v4.51 выполнял немного по другому:

1. В начале было переключение в HS mode - CMD6 и arg = 0x03B90100

2. Далее переключение BUS_WIDTH - CMD6 и arg = 0x03B70200

Может косяк в этом, u-boot неправильно гонит инициализацию памяти?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/15/2019 at 6:45 PM, gosha-z said:

Для начала - перегенерите PMUFW и FSBL из SDK,о чем я давно прошу.

Это я сделал. Стандартные примеры в SDK для PMU и FSBL добавляются в BOOT.BIN.

Пытаюсь разобраться в работе функции static int mmc_select_mode_and_width(struct mmc *mmc, uint card_caps) из исходников u-boot-xlnx (/../u-boot-xlnx /drivers/mmc/mmc.c), предположительно именно здесь происходит переключение шины eMMC.

mmc.c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...