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

 
 
> 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
 
Start new topic
Ответов
serjj
сообщение Feb 6 2015, 10:17
Сообщение #2


Знающий
****

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



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

alexPec, можете записывать на флешку любой хлам, нашёл решение проблемы.

Проблема как обычно в голове preloader'e. Необходимо было его пересобрать с нуля после добавления в Qsys проекте QSPI контроллера (добавление его в периферии HPS компонента). Preloader'ы, которые я зашивал до этого не имели никакой информации о том, что у меня будет QSPI контроллер использоваться, все попытки программно к нему обратиться из системы, запущенной таким preloader'ом не давали результата. Отсюда недоступность QSPI контроллера, про которую я тут писал. Простая проверка: если взять невалидный preloader и попробовать прочитать регистр по адресу 0xff705000 (регистр конфигурации QSPI), то он вернёт 0x00000000, т.к. модуль не доступен. Если использовать preloader с поддержкой QSPI, то при чтении этого адреса возвращается значение 0x80780000 или 0x00780000 (старший бит = флаг idle).

Лечение. Пересобрал preloader с нуля после добавления QSPI в Qsys. Подгрузил его через JTAG. Запустил пример от альтеры Altera-SoCFPGA-HardwareLib-QSPI-CV-GNU. В нем нужна инициализация (DMA можно закоментировать) и функция стирания. Запускаю, вот что в дебаг консоли выходит:
Код
Configuration register = 80780000
INFO: System Initialization.
INFO: Setting up Global Timer.
INFO: Setting up interrupt system.
INFO: Populating page table and enabling MMU.
INFO: Enabling caches.
INFO: Configuring DMA.
INFO: Allocating DMA channel.
INFO: Initializing QSPI.
INFO: Enabling QSPI.
INFO: Checking QSPI is idle.
INFO: Querying device characteristics.
INFO: Checking supported manufacturer.
INFO: Device is 1 Gib or 128 MiB.
INFO: Using random seed = 0x10d6852b.

INFO: Erasing 524288 bytes at address 0x00000000.
INFO: Erasing 64KB sector at address 0x00000000.
INFO: Erasing 64KB sector at address 0x00010000.
INFO: Erasing 64KB sector at address 0x00020000.
INFO: Erasing 64KB sector at address 0x00030000.
INFO: Erasing 64KB sector at address 0x00040000.
INFO: Erasing 64KB sector at address 0x00050000.
INFO: Erasing 64KB sector at address 0x00060000.
INFO: Erasing 64KB sector at address 0x00070000.
INFO: Erasing completed successfully.

Скорее всего если пересобрать также uboot, то можно сделать стирание в нём с помощью sf erase команды. Я, т.к. нацелен на baremetal, делаю всё сразу на низком уровне.

После этого выключил плату, выставил BSEL = 0x111 и теперь, читая Silicon ID, получаю правильный отклик от флешки:
Прикрепленное изображение


Теперь с ней можно возиться дальше rolleyes.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- serjj   Cyclone V HPS: программирование QSPI   Feb 3 2015, 09:47
- - COMA   Была такая же проблема. Загрузился c SD карты, в u...   Feb 3 2015, 10:23
- - serjj   А как запустить именно u-boot? Я попробовал с SD з...   Feb 3 2015, 12:01
- - COMA   Все это делается в загрузчике u-boot. Загрузиться...   Feb 3 2015, 12:10
- - serjj   COMA, спасибо, запустил u-boot. Но вот, что пишет:...   Feb 3 2015, 13:16
- - COMA   У меня BSEL = 0x101, флешка доступна. Попробуй за...   Feb 4 2015, 05:27
- - serjj   Пишет: КодSOCFPGA_CYCLONE5 # sf erase No SPI flash...   Feb 4 2015, 07:16
- - COMA   Остаётся выпаять и заменить.   Feb 4 2015, 11:37
- - serjj   R.I.P... Надо понять в чём была фатальная ошибка, ...   Feb 4 2015, 12:17
|- - alexPec   Цитата(serjj @ Feb 4 2015, 16:17) R.I.P.....   Feb 4 2015, 23:19
- - tvcam   serjj Можно попробывать отключить QSPI в QSYS и на...   Feb 4 2015, 16:24
- - WitFed   А как вообще работоспособность контролера QSPI мож...   Feb 5 2015, 08:53
- - serjj   ЦитатаЖесть... Думал уж на отладках то должно быть...   Feb 5 2015, 09:22
- - gosu-art   У меня пишет КодNo SPI flash selected. Please run ...   Feb 5 2015, 14:13
- - serjj   Ну это нормальный октлик на команду, флеш читается...   Feb 5 2015, 14:37
- - WitFed   Всё-таки надо все факты заново собрать и изложить ...   Feb 5 2015, 16:15
|- - alexPec   Спасибо за информацию!   Feb 9 2015, 17:21
- - serjj   Не хочу плодить темы, пишу тут, сейчас осваиваю вз...   Feb 10 2015, 07:55
- - serjj   Немного шаманства и мракобесия.. Ковыряю пробл...   Feb 10 2015, 13:18
|- - Stewart Little   Цитата(serjj @ Feb 10 2015, 16:18) Так во...   Feb 10 2015, 15:16
- - serjj   Холодный сброс генерируется как задержанный сигнал...   Feb 10 2015, 15:28
- - serjj   Нашёл решение своей проблемы! Причина: ножка ...   Feb 12 2015, 12:03
- - COMA   Ура!   Feb 12 2015, 12:26
- - shurikman   Добрый день. У меня стоит задача реализовать автон...   Aug 18 2016, 14:59
- - sonycman   Я u-boot не использую, юзаю MPL (mlnimal preloader...   Aug 19 2016, 03:42
- - shurikman   sonycman, спасибо. Скачал 16 версию,там есть приме...   Aug 19 2016, 13:49
|- - sonycman   Цитата(shurikman @ Aug 19 2016, 17:49) ER...   Aug 19 2016, 14:19
- - shurikman   По поводу автономной загрузки приложения из QSPI в...   Apr 28 2017, 12:03
|- - Jury093   Цитата(shurikman @ Apr 28 2017, 15:03) По...   Apr 28 2017, 12:21
|- - shurikman   Цитата(Jury093 @ Apr 28 2017, 15:21) я из...   May 16 2017, 14:56
- - shurikman   Вот мой алгоритм: 1. В версии для Jtag инициализир...   Apr 28 2017, 12:40
- - Sulley   День добрый! У меня несколько более странная ...   Jun 3 2017, 11:52
- - Sulley   Вопрос по-прежнему актуален.   Jun 16 2017, 05:34


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 01:53
Рейтинг@Mail.ru


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