doom13 0 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба С платой всё норм, осталось только eMMC стартануть. Накой тут выдача FSBL, если всё залито по JTAG. Тестовый проект содержит три строки - попытку инициализации eMMC #include <stdio.h> #include "platform.h" #include "xil_printf.h" #include "xparameters.h" #include "xsdps.h" XSdPs emmc; XSdPs *p_emmc = &emmc; int main() { XSdPs_Config * emmc_config; int status; emmc_config = XSdPs_LookupConfig(XPAR_XSDPS_0_DEVICE_ID); status = XSdPs_CfgInitialize(p_emmc, emmc_config, emmc_config->BaseAddress); status = XSdPs_CardInitialize(p_emmc); // status = XSdPs_SdCardInitialize(p_emmc); return 0; } и дохнет внутри XSdPs_CardInitialize /* CMD0 no response expected */ Status = XSdPs_CmdTransfer(InstancePtr, CMD0, 0U, 0U); if (Status != XST_SUCCESS) { Status = XST_FAILURE; goto RETURN_PATH; } RespOCR = 0U; /* Send CMD1 while card is still busy with power up */ while ((RespOCR & XSDPS_RESPOCR_READY) == 0U) { /* Host High Capacity support & High volage window */ // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, XSDPS_ACMD41_HCS | XSDPS_CMD1_DUAL_VOL/*XSDPS_CMD1_HIGH_VOL*/, 0U); // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0x80000080, 0U); // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0xC0000080, 0U); // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0x40FF8080, 0U); // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0xC0FF8080, 0U); // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0x00FF8080, 0U); Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0xC0FF8080, 0U); // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0, 0U); // Status = XSdPs_CmdTransfer(InstancePtr, CMD1, 0xC0000080, 0U); if (Status != XST_SUCCESS) { Status = XST_FAILURE; goto RETURN_PATH; } /* Response with card capacity */ RespOCR = XSdPs_ReadReg(InstancePtr->Config.BaseAddress, XSDPS_RESP0_OFFSET); // XSdPs_ReadReg(InstancePtr->Config.BaseAddress, // XSDPS_RESP3_OFFSET); } Сам FSBL использует функции этой же либы, т.е. порядок инициализации памяти тот же. Тут больше вопрос в совместимости спецификаций eMMC v4.51 и v5.0 и что за ответ такой 0x00ee0001. Пока думаем поменять eMMC на другую, в соответствии с AR# 65463. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба 51 минуту назад, doom13 сказал: С платой всё норм, осталось только eMMC стартануть. Накой тут выдача FSBL, если всё залито по JTAG. Тестовый проект содержит три строки - попытку инициализации eMMC и дохнет внутри XSdPs_CardInitialize Сам FSBL использует функции этой же либы, т.е. порядок инициализации памяти тот же. Тут больше вопрос в совместимости спецификаций eMMC v4.51 и v5.0 и что за ответ такой 0x00ee0001. Пока думаем поменять eMMC на другую, в соответствии с AR# 65463. не великий знаток eMMC, а как у вас чип запитан? оба питания 1.8 или как? в доке Vddf = 3.3, может тут корень проблем как я понимаю, до CID дело не доходит, т.к. карта не выходит на готовность, может начальные действия ошибочны.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба 1.8 питание шины, Vddf как и должно быть 3.3 В. До CMD2 Card ID не доходит. Так вроде из начальных действий только CMD0, CMD1, ну ещё потерпело немного, пока клоки устаканились, вот и все действия Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба 5 hours ago, doom13 said: порядок инициализации памяти тот же. Ой ли? А покажите мне кусок кода, который переключает SDHCI в режим MMC? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба s32 XSdPs_CardInitialize(XSdPs *InstancePtr) { ... if ((InstancePtr->HC_Version == XSDPS_HC_SPEC_V3) && ((InstancePtr->Host_Caps & XSDPS_CAPS_SLOT_TYPE_MASK) == XSDPS_CAPS_EMB_SLOT)) { InstancePtr->CardType = XSDPS_CHIP_EMMC; } ... if (InstancePtr->CardType == XSDPS_CARD_SD) { ... } else if ((InstancePtr->CardType == XSDPS_CARD_MMC) || (InstancePtr->CardType == XSDPS_CHIP_EMMC)) { Status = XSdPs_MmcCardInitialize(InstancePtr); if (Status != XST_SUCCESS) { Status = XST_FAILURE; goto RETURN_PATH; } /* Change clock to default clock 26MHz */ InstancePtr->BusSpeed = SD_CLK_26_MHZ; Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed); if (Status != XST_SUCCESS) { Status = XST_FAILURE; goto RETURN_PATH; } } else { Status = XST_FAILURE; goto RETURN_PATH; } ... } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 20 января, 2019 Опубликовано 20 января, 2019 · Жалоба Расскажите хоть, чем дело кончилось, чем сердце успокоилось? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 21 января, 2019 Опубликовано 21 января, 2019 · Жалоба Пока не закончилось, заказали микросхему из списка Xilinx, попробуем поменять. На такую же менять пока не рискнули, чтоб плату не мучить, если и она не стартанёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба Приветствую. Может кто подскажет, как заставить SD контроллер работать с eMMC памятью в режиме шины 8 бит? Пока используется режим загрузки QSPI, FSBL стартует с QSPI, запускает u-boot, а уже u-boot забирает image.ub с памяти eMMC. В консоль плюёт такие сообщения: Quote U-Boot 2018.01 (Feb 26 2019 - 19:03:35 +0300) Xilinx ZynqMP ZCU102 rev1.0 I2C: ready DRAM: 2 GiB EL Level: EL2 Chip ID: zu9eg MMC: sdhci@ff160000: 0 (eMMC) 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 Board: Xilinx ZynqMP Bootmode: QSPI_MODE Net: ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id eth0: ethernet@ff0e0000 U-BOOT for zynqmp Hit any key to stop autoboot: 1 0 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 reading image.ub 6800848 bytes read in 485 ms (13.4 MiB/s) Почему не произошло переключение шины в х8? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба После изменений в PS перегенерили и перезаписали PMUFW и FSBL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба Да вроде всё перегенерил. Не могу понять, должна ли быть какая настройка для eMMC x8? Как мне казалось, должно само выбрать поддерживаемый памятью режим. На форуме Xilinx находил примеры лога для шины х8, но там система изначально стартовала с eMMC, у меня же QSPI->eMMC. Может FSBL должен был перенастроить шину? Или всё же u-boot? Нашёл какого-то патча, думал поможет, но не получается с ним отбилдить проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба Применить его пытался по инструкции Patching the Linux Kernel of a PetaLinux Project Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба Да выкиньте вы этот Petalinux... Возьмите свежий u-boot-xlnx, напишите сами конфиг и DT для убута, в котором не забудьте поставить bus-width, и на пробу грузите ручками в JTAG mode. Из Petalinux возьмите только cross toolchains - они там вполне вменяемые Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба Это пока сложнее. Подробнее порядок действий не расскажете? Не может ли быть проблема в FSBL, в моём режиме запуска QSPI он-то не трогает SD-контроллер? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба Вопрос, скорее, не в FSBL, а в PMUFW - он может не открыть контроллер в "нужной позе". U-Boot, вообще, видит PMUFW? Фраза "PMUFW V1.1" между ATF и U-Boot появляется? .bif можете показать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 27 февраля, 2019 Опубликовано 27 февраля, 2019 · Жалоба Quote NOTICE: ATF running on XCZU9EG/silicon v3/RTL5.1 at 0xfffea000 NOTICE: BL31: Secure code at 0x0 NOTICE: BL31: Non secure code at 0x10000 NOTICE: BL31: v1.4(release):xilinx-v2018.1-4-g93a69a5a NOTICE: BL31: Built : 17:48:42, Feb 26 2019 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 : 17:48:42, Feb 26 2019 PMUFW: v1.0 U-Boot 2018.01 (Feb 27 2019 - 16:18:25 +0300) Xilinx ZynqMP ZCU102 rev1.0 I2C: ready DRAM: 2 GiB EL Level: EL2 Chip ID: zu9eg MMC: sdhci@ff160000: 0 (eMMC) 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 Board: Xilinx ZynqMP Bootmode: QSPI_MODE Net: ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id eth0: ethernet@ff0e0000 U-BOOT for zynqmp Hit any key to stop autoboot: 1 0 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 GiBBus 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 reading image.ub 6800848 bytes read in 489 ms (13.3 MiB/s) *.bif показать не могу, я BOOT.BIN из PetaLinux формирую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться