|
Cyclone V HPS: программирование QSPI, после первой прошивки перестал читаться Silicon ID |
|
|
|
Feb 3 2015, 09:47
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Всем доброго времени суток. Продолжение Циклониады V  В свете последних событий по загрузке 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?  пробовал переключить BSEL на плате - тогда он не подключается к флешу, типа "BSEL не соответствует ни QSPI ни NAND boot'у". Еще пробовал запустить альтеровский пример Altera-SoCFPGA-HardwareLib-QSPI-CV-GNU, программа выдает ошибку, подключался дебагером, вроде тоже проблема в чтении ID (функция alt_qspi_device_rdid()) на этапе инициализации QSPI интерфейса и флеш контроллера. Кто-нибудь уже работал с загрузкой из QSPI флешки? В чем может быть проблема и как можно эту беду победить?
|
|
|
|
|
Feb 3 2015, 12:10
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Feb 3 2015, 13:16
|
Знающий
   
Группа: Участник
Сообщений: 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, факт. Дела..
Сообщение отредактировал serjj - Feb 3 2015, 13:18
|
|
|
|
|
Feb 4 2015, 07:16
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Пишет: Код SOCFPGA_CYCLONE5 # sf erase No SPI flash selected. Please run `sf probe'
|
|
|
|
|
Feb 5 2015, 08:53
|
Местный
  
Группа: Свой
Сообщений: 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 нету всех от Первого Включения ?  Одна работа по стандартному интерфейсу не должна испортить железо при нормальной организации, вряд ли в протоколе есть команда kill. ...Ну или под микроскопом глянуть на плату -- вдруг на неё падало что-то в последнее время. У вас же есть вторая самодельная плата -- на ней те же грабли ? Частоты у QSPI точно где-то можно крутить, PLL такая была.
|
|
|
|
|
Feb 5 2015, 09:22
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Жесть... Думал уж на отладках то должно быть все дуракоустойчиво. Буду со своей платкой осторожнее.... AlteraHazard! Цитата Можно попробывать отключить QSPI в QSYS и настроить выводы как PIO, затем программно дрыгая ножками попробывать считать ID или стереть. Можно попробывать ножки перенаправить в FPGA и от туда добираться до флешки например Ниосом. К примеру Ethernet и RS232 у меня перенаправлены в FPGA. Так можно перенаправить некоторые интерфейсы с ножек HPS на ножки FPGA, но если микросхема припаяна уже к ножкам HPS, то если я перенаправлю на другие ножки, то с ней просто не будет контакта. Тут нужно наоборот залезть из FPGA на ножки HPS, а это страшное табу (ну или я просто еще до этого не дорос  ) А про то, что вы говорите, я так на нашей борде юарт перенаправил на ножки 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. За ссылку спасибо, гляну.
|
|
|
|
|
Feb 5 2015, 14:13
|
Знающий
   
Группа: Свой
Сообщений: 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 Хотя я еще не прикасался к процессорной флешки
|
|
|
|
|
Feb 5 2015, 14:37
|
Знающий
   
Группа: Участник
Сообщений: 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, то клоков тоже нет.
|
|
|
|
|
Feb 5 2015, 16:15
|
Местный
  
Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701

|
Всё-таки надо все факты заново собрать и изложить рядом. Скентоваться с обладателем такого же кита, проводить синхронные мероприятия... Не только же в quartus_hps она не работает, а вообще напрочь в данный момент ? Противоречиво всё выше. Или где-то можно прочитать-записать хотя бы, закомментив чтение ID ? Меня интересует восстановление первых 256 К, которые пострадали, от неконтролируемого исполнения Прелоадера, из которого портится всё остальное. Можно как-то испортить первые байты каждого из 4х кусков, выпросить у народа более нормальное содержимое (мусор тоже должен сгодиться -- он не исполнится), вдруг и Arrow его даёт вместе с инструкциями... Или это некритичное и нестолбовое направление, мы там как ёжики в тумане ? Бывают же случаи, когда Прелоадер стартует классический, не самодельный, где раньше определялось ? Там в первой строке его дата компиляции есть как минимум. Или вдруг самодельный копируется из выходного каталога в любой компилируемый проект, да всё поганит каждый раз ? И надо как вируса его выгресть  Вообще, чтение ID -- это базовая операция всего стандарта, просто так она отпасть не должна. В Альтерных примерах есть ещё что-то про связь двух SPI, но это я не пробовал.
|
|
|
|
|
Feb 6 2015, 10:17
|
Знающий
   
Группа: Участник
Сообщений: 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, получаю правильный отклик от флешки:
Теперь с ней можно возиться дальше
|
|
|
|
|
Feb 10 2015, 07:55
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Не хочу плодить темы, пишу тут, сейчас осваиваю взаимодействие с NAND флешом на кастомной борде. Использую hwlib библиотека alt_nand_flash. Получилось сделать инициализацию (не без бубнов), стирание, запись, чтение. Больших тестов пока не делал. Собственно интересная особенность. Все это работает, если я после подачи питания заливаю preloader и сразу запускаю приложение. Если я сначала залью sof файл, в котором есть hps компонент, установленный в qsys, то контроллер NAND оказывается недоступен (чтение возвращает 0xff, нет сигнала чтения от проца, если смотреть осцилографом). В peripheral pins в Mux Table пробовал задавать явно использование соответсвующих ног под NAND, не работает. Если наоборот отключить эти ноги, то не работает все равно. При этом если загружать sof без hps, то все работает. Рассматривал hps компонент, единственный пункт, который явно относится к NAND, это NAND clock frequency в HPS Clocks/Output Clocks. Но он не доступен для редактирования. Есть идеи, что это может быть? Кто-нибудь уже ковырялся с NAND из под HPS? Особенно интересует применения hwlib для baremetal.
|
|
|
|
|
Feb 10 2015, 13:18
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Немного шаманства и мракобесия.. Ковыряю проблему и вот к чему пришёл. На нашей плате сделана такая вот схема для BSEL ножек проца:
т.е. значение BSEL задается в FPGA части, ножки FPGA соединены с соответствующими BSEL. Для CSEL тоже самое. Так было сделано, потому что изначально планировалось сперва загружать FPGA, а потом, выставляя там нужные BSEL грузить HPS. Так вот, если я эти ножки из проекта выкидываю, оставляя их в tri-state, NAND контроллер нормально видится софтом и читается/пишется. Если я их подключаю, он отваливается. Проверял на совершенно пустом проекте, в котором буквально есть только клок и означенные ножки. Так вот, может быть тут какой-то очевидный схемотехнический косяк и так делать нельзя? Или это пасхалка от Altera? Если кто-нибудь является обладателем отладочной борды с NAND, отпишитесь плз, можно сделать пару быстрых тестов.
Сообщение отредактировал serjj - Feb 10 2015, 13:19
|
|
|
|
|
Feb 12 2015, 12:03
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Нашёл решение своей проблемы! Причина: ножка BSEL2 и NAND_WE физически находятся на одном пине процессора. Когда я с FPGA жёстко задаю значение BSEL2 как 0 или 1, контроллер не может управлять NAND. Когда я убираю из FPGA проекта ножки управления BSEL2, на линии по умолчанию tri-state, контроллер может выставить 0 или 1, NAND управляется. Решение: на отладочной борде сделано так  Как видно из схемы установленные резисторы не дают конфигурационному уровню заблокировать доступ контроллера NAND к линии. На нашей плате ножка проца и ножка FPGA закорочены. Что бы освободить линию для NAND контроллера сделал следующую конструкцию: Код logic confsel; logic [31:0] cnt; always_ff@(posedge clock) begin if (pll_locked) begin if (~&cnt) cnt <= cnt + 1'b1; end if (cnt==CONFSTART) begin confsel <= 1'b1; end else if (cnt==CONFEND) begin confsel <= 1'b0; end end assign BOOTSEL2 = confsel ? 1'b0/*1'b1*/ : 1'bz; где CONFSTART и CONFEND выбираются таким образом, что бы сигнал confsel выставлялся в 1 перед подачей сброса на HPS и падал в 0 после снятия сброса с некоторой задержкой (у меня более 10000 тактов), т.к. инитный код процессора читает состояние BSEL в некоторый момент времени после снятия сброса. После такой модификации проекта утилита quartus_hps определила NAND на плате, я смог зашить в неё образы preloader'a и простейшего baremetal приложения
Когда я перешиваю sof, происходит сброс HPS и в терминале выводится статусная информация preloader'a и собственно вывод программы
Есть автономный запуск простейшего baremetal приложения на кастомной борде!
Сообщение отредактировал serjj - Feb 12 2015, 12:28
|
|
|
|
|
Aug 18 2016, 14:59
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808

|
Добрый день. У меня стоит задача реализовать автономный запуск FPGA и HPS(baremetall) частей при подаче питания на плате. Грубо говоря есть .sof и .axf. Необходимо залить это на плату для боевого режима. Как я понял необходимо использовать QSPI. Для начала сформировал файлы preloader-mkpimage.bin, u-boot-spl.bin и soc_system.rbf в соответствии с описанием. Файл soc_system.rbf получил командой quartus_cpf -c -o soc_system.sof soc_system.rbf. Саму QSPI прошивал утилитой quartus_hps. Адреса для прошивки брал всё из того же описания (табличка в пункте 6). Для примера со стороны FPGA был сделан простой индикатор мигания светодиодом, по Jtag'у он работает. После прошивки в QSPI ничего не завелось. Вот лог консоли: U-Boot SPL 2013.01.01 (Aug 18 2016 - 16:22:01) BOARD : Altera SOCFPGA Cyclone V Board CLOCK: EOSC1 clock 25000 KHz CLOCK: EOSC2 clock 25000 KHz CLOCK: F2S_SDR_REF clock 0 KHz CLOCK: F2S_PER_REF clock 0 KHz CLOCK: MPU clock 925 MHz CLOCK: DDR clock 400 MHz CLOCK: UART clock 100000 KHz CLOCK: MMC clock 50000 KHz CLOCK: QSPI clock 370000 KHz RESET: WARM INFO : Watchdog enabled SDRAM: Initializing MMR registers SDRAM: Calibrating PHY SEQ.C: Preparing to start memory calibration SEQ.C: CALIBRATION PASSED SDRAM: 1024 MiB SDRAM: Initializing SDRAM ECC SDRAM: ECC initialized successfully with 1589 ms SDRAM: ECC Enabled FPGA : Programming FPGA SF: Read data capture delay calibrated to 3 (0 - 7) SF: Detected N25Q512 with page size 65536, total: 67108864 Почему то три раза одно и тоже(этот лог три раза подряд вываливается при подаче питания). Куда заливать HPS часть пока не знаю, но могу предположить, что вместо линукса из этого описания. Может кто прошёл этот путь поделитесь опытом, заранее благодарен. Интересует именно связка FPGA+HSP(baremetall). Могу составить потом подробную инструкцию как и что делать для этого по пунктам. Дебаг дебагом, но в результате то приложение должно автономно запускаться. Год назад прошивал QSPI для запуска HPS, теперь даже этого повторить не могу. Заранее благодарен.
|
|
|
|
|
Aug 19 2016, 13:49
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808

|
sonycman, спасибо. Скачал 16 версию,там есть пример Altera-SoCFPGA-HardwareLib-MPL, как раз то о чём Вы говорите. Но опять же сделал упор на прошивку QSPI из README.txt. В итоге после всех телодвижений и прошивки QSPI в консоль вывалилось следующее: INIT: MPL build: Aug 19 2016 14:22:49 INIT: Initializing board. INIT: MPU clock = 925 MHz INIT: DDR clock = 400 MHz INIT: Initializing successful. MPL: SDRAM Size is 1048576KB. MPL: Booting from QSPI. QSPI: Initializing QSPI. QSPI: Start loading image. QSPI: Image loaded successfully. MPL: SDRAM ECC Clearing is enabled. MPL: SDRAM Boot Region: 0x01000000 to 0x02000000. ERROR: Boot Image at 0x00200000+0x3d0 is outside of Boot Region. ERROR: Adjust BSP settings or re-link Application. ERROR: Error in boot process. Halting. Надо разбираться с mpl.c, т.к. эти ошибки из этого исходника (функция prepare_launch()). У Альтеры есть ещё видео на тему MPL. Вариант с SD картой пока не попробовал, но если заведется, может и останемся на нём, хотя SD карта в автономном приборе не очень хорошее решение.
|
|
|
|
|
Aug 19 2016, 14:19
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(shurikman @ Aug 19 2016, 17:49)  ERROR: Boot Image at 0x00200000+0x3d0 is outside of Boot Region. ERROR: Adjust BSP settings or re-link Application. ERROR: Error in boot process. Halting. Не надо трогать исходники MPL! Ведь написано, что у Вас загружаемое приложение размещается по адресу 0x00200000, а в настройках прелоадера SDRAM Boot Region определён как 0x01000000 to 0x02000000. Просто исправьте в bsp-editor адрес начала boot region на 0x00200000, или исправьте линкер скрипт приложения так, чтобы код был размещён начиная с адреса 0x01000000. ЗЫ: я вообще отключил опции SDRAM SCRUBBING, так как у меня на плате нет ECC. Тогда даже адреса править не надо...
|
|
|
|
|
Apr 28 2017, 12:03
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808

|
По поводу автономной загрузки приложения из QSPI вопрос решился, с адресами разобрался. Но появилась потребность, помимо загрузки из QSPI, выделить, например в конце этой памяти, некую небольшую область для хранения параметров. По Jtag всё пишется и читается и данные валидные. Если по Jtag заполнить эту область тестовыми данными и в QSPI зашить программу(для автономного пуска из QSPI), которая эти данные читает, то данные получаются не валидными. Т.е. то что было записано в конец QSPI не соответсвует тому что считывается при автономном старте из QSPI. Может у кого было такое.
|
|
|
|
|
Apr 28 2017, 12:21
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(shurikman @ Apr 28 2017, 15:03)  По Jtag всё пишется и читается и данные валидные. Если по Jtag заполнить эту область тестовыми данными и в QSPI зашить программу(для автономного пуска из QSPI), которая эти данные читает, то данные получаются не валидными. у вас противоречие между первой фразой и второй.. если все же что-то портится, то либо смотрите настройки для jtag, либо в том что "в QSPI зашить программу" я из юбута писал в QSPI вдоль и поперек - все было валидно..
|
|
|
|
|
Apr 28 2017, 12:40
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808

|
Вот мой алгоритм: 1. В версии для Jtag инициализирую небольшой кусок с конца QSPI записью известной последовательности чисел. 2. Делаю версию проги, которая зашивается в QSPI для автономного запуска. Её назначение считать и проверить эти данные. При этом запись утилитой quartus_hps вроде как всю QSPI не стирает. 3. Включаю питание, загрузчик грузится, прога стартует, данные не валидны.
|
|
|
|
|
May 16 2017, 14:56
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 29-09-10
Пользователь №: 59 808

|
Цитата(Jury093 @ Apr 28 2017, 15:21)  я из юбута писал в QSPI вдоль и поперек - все было валидно.. Можете кусок кода чтения/записи из убута выложить. Больше запись интересует. В автономном режиме зависает в процессе операции записи. Спасибо.
|
|
|
|
|
Jun 3 2017, 11:52
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 11-03-08
Пользователь №: 35 796

|
День добрый! У меня несколько более странная проблема с NANDом: читаются верные идентификаторы, верный boot info, всё сходится с реальными данными микросхемы... Но при этом утилита (programmer) сваливается с ошибкой, вернее с нулём ошибок (0 errors, 0 warnings). Забавно - ошибка есть, но её ноль. Мне пока не удалось найти такой наполовину хорошей, наполовину плохой ситуации. Если бы аппаратные проблемы были, тогда не читались бы индентификаторы. А тут... На всякий случай: BSEL=011 (NAND 3V), CSEL=11 (Fosc * 5/25). Какие будут соображения?  Вот ещё вдогонку одна картинка; снято на другой машине. Тут информации чуть больше. В частности пишут про 'Invalid flash parameter'
|
|
|
|
|
Jun 16 2017, 05:34
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 11-03-08
Пользователь №: 35 796

|
Вопрос по-прежнему актуален.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|