реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Cyclone V HPS: программирование QSPI, после первой прошивки перестал читаться Silicon ID
serjj
сообщение Feb 3 2015, 09:47
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Всем доброго времени суток.
Продолжение Циклониады V rolleyes.gif В свете последних событий по загрузке baremetal приложения из SD/MMC на радостях решил на отладочной плате отработать загрузку из QSPI флеша. Собрал preloader для этих целей, залил его HPS flash programmer'ом (quartus_hps) как положено в виде 4 копий, такой вот командой (из под soc eds, 4 копии он делает сам, какой молодец):
Код
quartus_hps -c 1 -o P -a 0x0 preloader-mkpimage.bin

Программа сказала, что флеш успешно прошит. Щелкнул питанием на плате, посмотрел, что preloader запускается вплоть до загрузки приложения, SDRAM проинитилось, можно в него подгружать что-нибудь. Следующим шагом хотелось залить на флеш простенькую прогу а-ля helloworld, чтобы preloader ее запустил. Но флеш перестала прошиваться! вот что в консоли пишет по этому поводу:
Прикрепленное изображение

Не читается ID флеша. wtf? 05.gif пробовал переключить BSEL на плате - тогда он не подключается к флешу, типа "BSEL не соответствует ни QSPI ни NAND boot'у". Еще пробовал запустить альтеровский пример Altera-SoCFPGA-HardwareLib-QSPI-CV-GNU, программа выдает ошибку, подключался дебагером, вроде тоже проблема в чтении ID (функция alt_qspi_device_rdid()) на этапе инициализации QSPI интерфейса и флеш контроллера.
Кто-нибудь уже работал с загрузкой из QSPI флешки? В чем может быть проблема и как можно эту беду победить? help.gif
Go to the top of the page
 
+Quote Post
COMA
сообщение Feb 3 2015, 10:23
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Была такая же проблема.
Загрузился c SD карты, в u-boot почистил flash командой sf erase.

После этого flash стала определяться HPS flash programmer'ом.
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 3 2015, 12:01
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



А как запустить именно u-boot? Я попробовал с SD загрузить линух, но в нем такой команды нет. Может есть какие то альтернативы под линухом?
Go to the top of the page
 
+Quote Post
COMA
сообщение Feb 3 2015, 12:10
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Все это делается в загрузчике u-boot.

Загрузиться с SD карты.
В консоль будет выводиться инофрмация о процессе загрузки:
Код
U-Boot SPL 2013.01.01 (Feb 03 2015 - 12:11:52)
BOARD : Altera SOCFPGA Cyclone V Board
SDRAM: Initializing MMR registers
SDRAM: Calibrating PHY
SEQ.C: Preparing to start memory calibration
SEQ.C: CALIBRATION PASSED
SDRAM : Running simple memory test...passed
ALTERA DWMMC: 0


U-Boot 2013.01.01-00114-g9381569 (Feb 02 2015 - 14:21:51)

CPU   : Altera SOCFPGA Platform
BOARD : Altera SOCFPGA Cyclone V Board
I2C:   ready
DRAM:  1 GiB
MMC:   ALTERA DWMMC: 0
In:    serial
Out:   serial
Err:   serial
Skipped ethaddr assignment due to invalid EMAC address in EEPROM
Net:   mii0
Warning: failed to set MAC address

Hit any key to stop autoboot:  0
SOCFPGA_CYCLONE5 #


При появлении строки
Hit any key to stop autoboot
необходимо нажать любую клавишу.

Это прервет дальнейшую загрузку Linux.

Далее вводим команду sf probe

Цитата
SOCFPGA_CYCLONE5 # sf probe
SF: Read data capture delay calibrated to 4 (1 - 7)
SF: Detected N25Q256 with page size 64 KiB, total 32 MiB


Командой sf erase очищаем QSPI flash.
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 3 2015, 13:16
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



COMA, спасибо, запустил u-boot.
Но вот, что пишет:
Прикрепленное изображение

Нет доступа к флешу. Пробова для BSEL = 0x101.
Попробовал для BSEL = 0x111, таже петрушка.
Вот в исходниках убута есть такое место:
Код
+/* Return 1 if idle, otherwise return 0 (busy). */
+static unsigned int cadence_qspi_wait_idle(void *reg_base)
+{
+    unsigned int start, count = 0;
+    /* timeout in unit of ms */
+    unsigned int timeout = 5000;
+
+    start = get_timer(0);
+    for (; get_timer(start) < timeout; ) {
+        if (CQSPI_REG_IS_IDLE(reg_base))
+            count++;
+        else
+            count = 0;
+        /*
+         * Ensure the QSPI controller is in true idle state after
+         * reading back the same idle status consecutively
+         */
+        if (count >= CQSPI_POLL_IDLE_RETRY)
+            return 1;
+    }
+
+    /* Timeout, still in busy mode. */
+    printf("QSPI: QSPI is still busy after poll for %d times.\n",
+           CQSPI_REG_RETRY);
+    return 0;
+}

Это пока всё, что может гугл об этом сказать... Такое ощущение, что проблема не во флеше а в контроллере qspi, до флеша не доходит дело, с другой стороны если BSEL = 0x111 preloader грузится, т.к. инитится SDRAM, факт. Дела.. 05.gif

Сообщение отредактировал serjj - Feb 3 2015, 13:18
Go to the top of the page
 
+Quote Post
COMA
сообщение Feb 4 2015, 05:27
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



У меня BSEL = 0x101, флешка доступна.

Попробуй запустить команду sf erase.
Может прокатит.
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 4 2015, 07:16
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Пишет:
Код
SOCFPGA_CYCLONE5 # sf erase
No SPI flash selected. Please run `sf probe'

Go to the top of the page
 
+Quote Post
COMA
сообщение Feb 4 2015, 11:37
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Остаётся выпаять и заменить.
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 4 2015, 12:17
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



R.I.P...
Надо понять в чём была фатальная ошибка, сделал одно прошивание, которое в eds консоли прошло как успешное. Губить флешки в один клик мышки/клавиатуры это уже слишком sad.gif
Go to the top of the page
 
+Quote Post
tvcam
сообщение Feb 4 2015, 16:24
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 10-12-04
Из: spb
Пользователь №: 1 435



serjj
Можно попробывать отключить QSPI в QSYS и настроить выводы как PIO, затем программно дрыгая ножками попробывать считать ID или стереть. Можно попробывать ножки перенаправить в FPGA и от туда добираться до флешки например Ниосом. К примеру Ethernet и RS232 у меня перенаправлены в FPGA.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Feb 4 2015, 23:19
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(serjj @ Feb 4 2015, 16:17) *
R.I.P...
Надо понять в чём была фатальная ошибка, сделал одно прошивание, которое в eds консоли прошло как успешное. Губить флешки в один клик мышки/клавиатуры это уже слишком sad.gif


Жесть... Думал уж на отладках то должно быть все дуракоустойчиво. Буду со своей платкой осторожнее....
Go to the top of the page
 
+Quote Post
WitFed
сообщение Feb 5 2015, 08:53
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



А как вообще работоспособность контролера QSPI может зависеть от положения пинов BSEL ?
Они лишь указывают Прелестям Альтерным, откуда нужно грузить следующую фазу кодов. Даже если стоит установка на SD, читать-писать девайс QSPI должно быть возможно.
Сам девайс энергонезависимой памяти никоим образом не знает про остальную систему и раскоряки там.
Только если предыдущие стадии ПО что-то где-то перемудрили, как у Альтеры часто бывает... Но по ошибке они должны были всё вернуть в нормальное состояние, если мудрости хотят.

...serjj, у тебя получилось стартовать отладку HPS из DS-5 под нажатым резетом и остановиться на самой первой команде BootROM ? Чтобы никакое влияние BOOTSEL ещё не успело произойти после подачи питания ?
На странице http://www.altera.com/support/examples/soc/soc.html есть ещё один QSPI-проект "Quad SPI Porting", там обещают "support more quad SPI flash devices". Возможно, в Arrow-ките стоит какая-то не такая микросхема, а ошибка вылазит чисто из-за несоответствия ID требуемому. А успешные зашивания 4х64К просто приснились... Логов-то небось для quartus_hps нету всех от Первого Включения ? wink.gif
Одна работа по стандартному интерфейсу не должна испортить железо при нормальной организации, вряд ли в протоколе есть команда kill.
...Ну или под микроскопом глянуть на плату -- вдруг на неё падало что-то в последнее время.
У вас же есть вторая самодельная плата -- на ней те же грабли ?
Частоты у QSPI точно где-то можно крутить, PLL такая была.
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 5 2015, 09:22
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Жесть... Думал уж на отладках то должно быть все дуракоустойчиво. Буду со своей платкой осторожнее....

AlteraHazard! wacko.gif
Цитата
Можно попробывать отключить QSPI в QSYS и настроить выводы как PIO, затем программно дрыгая ножками попробывать считать ID или стереть. Можно попробывать ножки перенаправить в FPGA и от туда добираться до флешки например Ниосом. К примеру Ethernet и RS232 у меня перенаправлены в FPGA.

Так можно перенаправить некоторые интерфейсы с ножек HPS на ножки FPGA, но если микросхема припаяна уже к ножкам HPS, то если я перенаправлю на другие ножки, то с ней просто не будет контакта. Тут нужно наоборот залезть из FPGA на ножки HPS, а это страшное табу (ну или я просто еще до этого не дорос laughing.gif ) А про то, что вы говорите, я так на нашей борде юарт перенаправил на ножки FPGA, но это не то. Или я что то не понял?
Цитата
А как вообще работоспособность контролера QSPI может зависеть от положения пинов BSEL ?

Это нужно только для утилиты quartus_hps, работать с QSPI можно при любом BSEL, эта конфигурация действительно не влияет на контроллер (что логично)
Цитата
...serjj, у тебя получилось стартовать отладку HPS из DS-5 под нажатым резетом и остановиться на самой первой команде BootROM ? Чтобы никакое влияние BOOTSEL ещё не успело произойти после подачи питания ?

Есть альтеровский пример работы с QSPI флешой, я пробовал его под всякими BSEL, не работает, таймаут на этапе чтения ID, на этапе инициализации QSPI контроллера в функции alt_qspi_enable()->alt_qspi_device_rdid()->alt_qspi_stig_rd_cmd()->alt_qspi_stig_cmd_helper(), в последней висит до таймаута:
Код
    do
    {
        reg_value = alt_read_word(ALT_QSPI_FLSHCMD_ADDR);
        if (!(reg_value & ALT_QSPI_FLSHCMD_CMDEXECSTAT_SET_MSK))
        {
            break;
        }

    } while (timeout-- || infinite);

    if (timeout == (uint32_t)-1 && !infinite)
    {
        status = ALT_E_TMO;
    }

Это похоже на ошибку чтения по QSPI. Перекликается с тем, что u-boot тоже жаловался на недоступность именно QSPI.
Цитата
У вас же есть вторая самодельная плата -- на ней те же грабли ?

А на кастомной пока нет qspi, поэтому отлаживаю такую загрузку на arrow.
За ссылку спасибо, гляну. rolleyes.gif
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Feb 5 2015, 14:13
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



У меня пишет
Код
No SPI flash selected. Please run `sf probe'
SOCFPGA_CYCLONE5 # sf probe
SF: Detected N25Q00 with page size 64 KiB, total 128 MiB

Хотя я еще не прикасался к процессорной флешки
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 5 2015, 14:37
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Ну это нормальный октлик на команду, флеш читается.
Смотрю сейчас осцилом на qspi-й клок, который идет на флеш, при BSEL = 0x111, когда перезаливаю .sof файл вижу, что клок идет и в терминале грузится preloader с флеша. Через некоторое время (2-3 сек) в терминале вылазит вот что:
Код
QSPI: QSPI is still busy after poll for 10000 times.
SF: Calibration failed (read)
SPI probe failed.
### ERROR ### Please RESET the board ###

После чего любые попытки обратиться к QSPI проваливаются. Если BSEL не 0х111, то клоков тоже нет.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01863 секунд с 7
ELECTRONIX ©2004-2016