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

Кому не жалко, нужен для образца оверайд файл на флешку spansion (на контролллере epcs)

Спасибо

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


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

либо создать файлы вида nios2-flash-override* в каталоге nios2eds/bin, тогда программер сам эти файлы найдет; либо явно указывать ему ключом: nios2-flash-programmer --base 0x0 -–override=my_override.txt sw.flash

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


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

вот, например:

[EPCS-012017] #S25FL128P0XNFI001
sector_size = 65536
sector_count = 256

А это что такое и откуда его взять для моей флешки 25fl128p0xnfi001?

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


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

А это что такое и откуда его взять для моей флешки 25fl128p0xnfi001?

это я для себя написал, после # - комментарий. просто 128-Мбитные флешки бывают 2 типов, с разными размерами секторов. параметры вашей флешки смотрите в даташите. буквы EPCS-012017 тоже в даташите, но и программер с ключом --debug их вроде выдает

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


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

это я для себя написал, после # - комментарий. просто 128-Мбитные флешки бывают 2 типов, с разными размерами секторов. параметры вашей флешки смотрите в даташите. буквы EPCS-012017 тоже в даташите, но и программер с ключом --debug их вроде выдает

спасибо, буду пробоватьпрошивать..

Кстати,в софте функция чтения из флеши со спэншн перестала работать, с епцс работает без проблем. В драйвере че томенять надо? Если да, то что и где?

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


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

спасибо, буду пробоватьпрошивать..

Кстати,в софте функция чтения из флеши со спэншн перестала работать, с епцс работает без проблем. В драйвере че томенять надо? Если да, то что и где?

это зависит от того, что вы понимаете под драйвером :) я использую сравнительно низкоуровневые функции (epcs_commands.h, кажись). там такой проблемы нет. а с более высокоуровневыми проблема вполне вероятна, т.к. драйвер сам читает геометрию флешки и, если флешки с прочитанными параметрами у него в списке нет, может послать. во всяком случае раньше так было.

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


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

это зависит от того, что вы понимаете под драйвером :) я использую сравнительно низкоуровневые функции (epcs_commands.h, кажись). там такой проблемы нет. а с более высокоуровневыми проблема вполне вероятна, т.к. драйвер сам читает геометрию флешки и, если флешки с прочитанными параметрами у него в списке нет, может послать. во всяком случае раньше так было.

 

Я пользую функцию что-то типа alt_read_flash. Похоже высокоувневая, там только указывается откуда, куда и количество. Так что вроде в ней дело, буду копать..

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


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

Так что вроде в ней дело, буду копать..

я думаю, надо подрихтовать функцию alt_epcs_flash_query в файле altera_avalon_epcs_flash_controller.c, чтобы научить ее понимать другие флешки.

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


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

я думаю, надо подрихтовать функцию alt_epcs_flash_query в файле altera_avalon_epcs_flash_controller.c, чтобы научить ее понимать другие флешки.

 

Я тоже так думал, сегодня проверил. Ситуация такая. alt_flash_open_dev возвращает 0. Пошел дальше, сделал bsp без оптимизации, в режиме дебага посмотрел. alt_find_dev возвращает 0, не находит "/dev/epcs". Вот после этого я ничего не понял :wacko: С epcs все работало... Пробовал поискать лист флешей (alt_flash_dev_list) - так и не нашел где он. Не пропал же контроллер из системы?

 

PS: флешку прошил через оверайд, все грузится - и конфигурация и ниос, а читать из ниоса не хочет.

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


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

а имена устройств проверяли? м.б. после очередной генерации SOPC поменялось что-то?

В том то и дело что ни сопц,ни софт не менялся. Просто новая плата(та же разводка) а там другая флешь не епцс —и все, открытие девайса не работает. Посоветуйте,куда хоть копать то?

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


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

попробуйте использовать функции из epcs_commands.h

понадобятся только эти, если тип памяти менять не будете:

void epcs_sector_erase(alt_u32 base, alt_u32 offset);

alt_32 epcs_read_buffer(alt_u32 base, int offset, alt_u8 *dest_addr, int length);

void epcs_write_enable(alt_u32 base);

alt_32 epcs_write_buffer(alt_u32 base, int offset, const alt_u8 *src_addr, int length);

 

ну м.б. alt_u8 epcs_read_device_id(alt_u32 base) для диагностики. я доберусь до железа, проверю высокоуровневые функции. так трудно гадать

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


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

попробуйте использовать функции из epcs_commands.h

понадобятся только эти, если тип памяти менять не будете:

void epcs_sector_erase(alt_u32 base, alt_u32 offset);

alt_32 epcs_read_buffer(alt_u32 base, int offset, alt_u8 *dest_addr, int length);

void epcs_write_enable(alt_u32 base);

alt_32 epcs_write_buffer(alt_u32 base, int offset, const alt_u8 *src_addr, int length);

 

ну м.б. alt_u8 epcs_read_device_id(alt_u32 base) для диагностики. я доберусь до железа, проверю высокоуровневые функции. так трудно гадать

 

Пробую epcs_read_device_id, в качестве base даю константу EPCS_BASE из system.h. Виснет в функции alt_avalon_spi_command вот здесь:

 

 
IORD_ALTERA_AVALON_SPI_RXDATA(base);
    
  /* Keep clocking until all the data has been processed. */
  for (;; )
  {
    
    do
    {
      status = IORD_ALTERA_AVALON_SPI_STATUS(base);
    }
    while (((status & ALTERA_AVALON_SPI_STATUS_TRDY_MSK) == 0 || credits == 0) &&
            (status & ALTERA_AVALON_SPI_STATUS_RRDY_MSK) == 0);

 

Постоянно крутится do..while. Глубоко пока не копал, может у кого было подобное при переходе с epcs на Numonix (в первом посте ошибся, написал Spansion)?

 

А функция alt_32 epcs_read_buffer(alt_u32 base, int offset, alt_u8 *dest_addr, int length); похоже подходит, софт даже переписывать не придется.

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


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

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

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

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

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

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

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

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

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

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