alexPec 3 20 июля, 2011 Опубликовано 20 июля, 2011 · Жалоба Кому не жалко, нужен для образца оверайд файл на флешку spansion (на контролллере epcs) Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба вот, например: [EPCS-012017] #S25FL128P0XNFI001 sector_size = 65536 sector_count = 256 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosu-art 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба А это нужно новый файл создавать или править где то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба либо создать файлы вида nios2-flash-override* в каталоге nios2eds/bin, тогда программер сам эти файлы найдет; либо явно указывать ему ключом: nios2-flash-programmer --base 0x0 -–override=my_override.txt sw.flash Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба вот, например: [EPCS-012017] #S25FL128P0XNFI001 sector_size = 65536 sector_count = 256 А это что такое и откуда его взять для моей флешки 25fl128p0xnfi001? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба А это что такое и откуда его взять для моей флешки 25fl128p0xnfi001? это я для себя написал, после # - комментарий. просто 128-Мбитные флешки бывают 2 типов, с разными размерами секторов. параметры вашей флешки смотрите в даташите. буквы EPCS-012017 тоже в даташите, но и программер с ключом --debug их вроде выдает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба это я для себя написал, после # - комментарий. просто 128-Мбитные флешки бывают 2 типов, с разными размерами секторов. параметры вашей флешки смотрите в даташите. буквы EPCS-012017 тоже в даташите, но и программер с ключом --debug их вроде выдает спасибо, буду пробоватьпрошивать.. Кстати,в софте функция чтения из флеши со спэншн перестала работать, с епцс работает без проблем. В драйвере че томенять надо? Если да, то что и где? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба спасибо, буду пробоватьпрошивать.. Кстати,в софте функция чтения из флеши со спэншн перестала работать, с епцс работает без проблем. В драйвере че томенять надо? Если да, то что и где? это зависит от того, что вы понимаете под драйвером :) я использую сравнительно низкоуровневые функции (epcs_commands.h, кажись). там такой проблемы нет. а с более высокоуровневыми проблема вполне вероятна, т.к. драйвер сам читает геометрию флешки и, если флешки с прочитанными параметрами у него в списке нет, может послать. во всяком случае раньше так было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба это зависит от того, что вы понимаете под драйвером :) я использую сравнительно низкоуровневые функции (epcs_commands.h, кажись). там такой проблемы нет. а с более высокоуровневыми проблема вполне вероятна, т.к. драйвер сам читает геометрию флешки и, если флешки с прочитанными параметрами у него в списке нет, может послать. во всяком случае раньше так было. Я пользую функцию что-то типа alt_read_flash. Похоже высокоувневая, там только указывается откуда, куда и количество. Так что вроде в ней дело, буду копать.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 21 июля, 2011 Опубликовано 21 июля, 2011 · Жалоба Так что вроде в ней дело, буду копать.. я думаю, надо подрихтовать функцию alt_epcs_flash_query в файле altera_avalon_epcs_flash_controller.c, чтобы научить ее понимать другие флешки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба я думаю, надо подрихтовать функцию alt_epcs_flash_query в файле altera_avalon_epcs_flash_controller.c, чтобы научить ее понимать другие флешки. Я тоже так думал, сегодня проверил. Ситуация такая. alt_flash_open_dev возвращает 0. Пошел дальше, сделал bsp без оптимизации, в режиме дебага посмотрел. alt_find_dev возвращает 0, не находит "/dev/epcs". Вот после этого я ничего не понял С epcs все работало... Пробовал поискать лист флешей (alt_flash_dev_list) - так и не нашел где он. Не пропал же контроллер из системы? PS: флешку прошил через оверайд, все грузится - и конфигурация и ниос, а читать из ниоса не хочет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба а имена устройств проверяли? м.б. после очередной генерации SOPC поменялось что-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба а имена устройств проверяли? м.б. после очередной генерации SOPC поменялось что-то? В том то и дело что ни сопц,ни софт не менялся. Просто новая плата(та же разводка) а там другая флешь не епцс —и все, открытие девайса не работает. Посоветуйте,куда хоть копать то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба попробуйте использовать функции из 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) для диагностики. я доберусь до железа, проверю высокоуровневые функции. так трудно гадать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 22 июля, 2011 Опубликовано 22 июля, 2011 · Жалоба попробуйте использовать функции из 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); похоже подходит, софт даже переписывать не придется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться