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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Flash override, Поделитесь примером на spansion
alexPec
сообщение Jul 20 2011, 21:26
Сообщение #1


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

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



Кому не жалко, нужен для образца оверайд файл на флешку spansion (на контролллере epcs)
Спасибо
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 21 2011, 00:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



вот, например:
Код
[EPCS-012017] #S25FL128P0XNFI001
sector_size = 65536
sector_count = 256

Go to the top of the page
 
+Quote Post
gosu-art
сообщение Jul 21 2011, 03:53
Сообщение #3


Знающий
****

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



А это нужно новый файл создавать или править где то?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 21 2011, 08:22
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



либо создать файлы вида nios2-flash-override* в каталоге nios2eds/bin, тогда программер сам эти файлы найдет; либо явно указывать ему ключом: nios2-flash-programmer --base 0x0 -–override=my_override.txt sw.flash
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 21 2011, 09:47
Сообщение #5


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

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



Цитата(vadimuzzz @ Jul 21 2011, 04:02) *
вот, например:
Код
[EPCS-012017] #S25FL128P0XNFI001
sector_size = 65536
sector_count = 256

А это что такое и откуда его взять для моей флешки 25fl128p0xnfi001?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 21 2011, 10:47
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(alexPec @ Jul 21 2011, 16:47) *
А это что такое и откуда его взять для моей флешки 25fl128p0xnfi001?

это я для себя написал, после # - комментарий. просто 128-Мбитные флешки бывают 2 типов, с разными размерами секторов. параметры вашей флешки смотрите в даташите. буквы EPCS-012017 тоже в даташите, но и программер с ключом --debug их вроде выдает
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 21 2011, 11:16
Сообщение #7


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

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



Цитата(vadimuzzz @ Jul 21 2011, 14:47) *
это я для себя написал, после # - комментарий. просто 128-Мбитные флешки бывают 2 типов, с разными размерами секторов. параметры вашей флешки смотрите в даташите. буквы EPCS-012017 тоже в даташите, но и программер с ключом --debug их вроде выдает

спасибо, буду пробоватьпрошивать..
Кстати,в софте функция чтения из флеши со спэншн перестала работать, с епцс работает без проблем. В драйвере че томенять надо? Если да, то что и где?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 21 2011, 11:38
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(alexPec @ Jul 21 2011, 18:16) *
спасибо, буду пробоватьпрошивать..
Кстати,в софте функция чтения из флеши со спэншн перестала работать, с епцс работает без проблем. В драйвере че томенять надо? Если да, то что и где?

это зависит от того, что вы понимаете под драйвером sm.gif я использую сравнительно низкоуровневые функции (epcs_commands.h, кажись). там такой проблемы нет. а с более высокоуровневыми проблема вполне вероятна, т.к. драйвер сам читает геометрию флешки и, если флешки с прочитанными параметрами у него в списке нет, может послать. во всяком случае раньше так было.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 21 2011, 12:48
Сообщение #9


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

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



Цитата(vadimuzzz @ Jul 21 2011, 15:38) *
это зависит от того, что вы понимаете под драйвером sm.gif я использую сравнительно низкоуровневые функции (epcs_commands.h, кажись). там такой проблемы нет. а с более высокоуровневыми проблема вполне вероятна, т.к. драйвер сам читает геометрию флешки и, если флешки с прочитанными параметрами у него в списке нет, может послать. во всяком случае раньше так было.


Я пользую функцию что-то типа alt_read_flash. Похоже высокоувневая, там только указывается откуда, куда и количество. Так что вроде в ней дело, буду копать..
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 21 2011, 14:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(alexPec @ Jul 21 2011, 19:48) *
Так что вроде в ней дело, буду копать..

я думаю, надо подрихтовать функцию alt_epcs_flash_query в файле altera_avalon_epcs_flash_controller.c, чтобы научить ее понимать другие флешки.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 22 2011, 10:22
Сообщение #11


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

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



Цитата(vadimuzzz @ Jul 21 2011, 18:08) *
я думаю, надо подрихтовать функцию alt_epcs_flash_query в файле altera_avalon_epcs_flash_controller.c, чтобы научить ее понимать другие флешки.


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

PS: флешку прошил через оверайд, все грузится - и конфигурация и ниос, а читать из ниоса не хочет.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 22 2011, 12:29
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



а имена устройств проверяли? м.б. после очередной генерации SOPC поменялось что-то?
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 22 2011, 13:37
Сообщение #13


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

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



Цитата(vadimuzzz @ Jul 22 2011, 16:29) *
а имена устройств проверяли? м.б. после очередной генерации SOPC поменялось что-то?

В том то и дело что ни сопц,ни софт не менялся. Просто новая плата(та же разводка) а там другая флешь не епцс —и все, открытие девайса не работает. Посоветуйте,куда хоть копать то?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 22 2011, 14:32
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



попробуйте использовать функции из 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) для диагностики. я доберусь до железа, проверю высокоуровневые функции. так трудно гадать
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 22 2011, 16:21
Сообщение #15


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

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



Цитата(vadimuzzz @ Jul 22 2011, 18:32) *
попробуйте использовать функции из 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); похоже подходит, софт даже переписывать не придется.
Go to the top of the page
 
+Quote Post

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

 


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


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