|
Nios II Software, загрузка с Flash |
|
|
|
 |
Ответов
(1 - 61)
|
Jul 1 2009, 10:49
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
1)после того как в системе появится CFI Avalon-MM Tristate, к нему нужно будет подключить что то типа Flash Memory CFI. и в меню этого самого Flash Memory CFI выбрать нужный тип внешней флешки( в вашем случае скорей всего это будем кастом надстройка - ручками пропишите параметры). 2) подключить в топ левеле вашего проекта пины Flash Memory CFI к вашей флешке вроде всё
Сообщение отредактировал Omen_13 - Jul 4 2009, 18:56
Причина редактирования: Удаление избыточного цитиривания
--------------------
Cogito ergo sum
|
|
|
|
|
Jul 14 2009, 07:34
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(Postoroniy_V @ Jul 1 2009, 14:49)  2) подключить в топ левеле вашего проекта пины Flash Memory CFI к вашей флешке что-то не могу я полноценно разобраться с пинами. Методом научного тыка понял, что распиновку можно провести только после анализа и синтеза(если не так поправьте). Поставил я Tristate Bridge. Подсоединил CFI к нему и в итоге получил следующие пины на nios: nios pins: address_..._flash[24..0] data_to_and_from_..._flash[15..0] read_n_.._flash select_n_.._flash write_n_.._flash Непонятно, какой сигнал присвоить read_n_.._flash и select_n_.._flash. Для них остались только chip enable, output enable, ready\busy. Если то подскажет буду безмерно благодарен.
|
|
|
|
|
Jul 14 2009, 08:50
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(dim99 @ Jul 14 2009, 16:34)  что-то не могу я полноценно разобраться с пинами. Методом научного тыка понял, что распиновку можно провести только после анализа и синтеза(если не так поправьте).
Поставил я Tristate Bridge. Подсоединил CFI к нему и в итоге получил следующие пины на nios: nios pins:
address_..._flash[24..0] data_to_and_from_..._flash[15..0] read_n_.._flash select_n_.._flash write_n_.._flash
Непонятно, какой сигнал присвоить read_n_.._flash и select_n_.._flash. Для них остались только chip enable, output enable, ready\busy. Если то подскажет буду безмерно благодарен. address_..._flash[24..0] - адресная шина флехи data_to_and_from_..._flash[15..0] - шина данных to-from говорит о том что шины bidirection read_n_.._flash это сигнал чтения, активный в 0 это видимо для output enable, думаю сообразите как подключить если активный уровень вас не устраивает  select_n_.._flash это чип селект , их может быть много , активный в 0 это видимо для chip enable  (см выше про уровень) write_n_.._flash и сигнал записи , активный в 0 для ready\busy не надо ничего, если конечно планируете его использовать в системе, то нужно его к какому нибуль GPIO цепануть з.ы...не любите "книжки" читать..ой не любите
--------------------
Cogito ergo sum
|
|
|
|
|
Jul 14 2009, 19:10
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(Postoroniy_V @ Jul 14 2009, 12:50)  address_..._flash[24..0] - адресная шина флехи data_to_and_from_..._flash[15..0] - шина данных to-from говорит о том что шины bidirection read_n_.._flash это сигнал чтения, активный в 0 это видимо для output enable, думаю сообразите как подключить если активный уровень вас не устраивает  select_n_.._flash это чип селект , их может быть много , активный в 0 это видимо для chip enable  (см выше про уровень) write_n_.._flash и сигнал записи , активный в 0 для ready\busy не надо ничего, если конечно планируете его использовать в системе, то нужно его к какому нибуль GPIO цепануть з.ы...не любите "книжки" читать..ой не любите  Спасибо за ответ. Вопросы возникли только по поводу read и select, в принципе идеи были сделать как описано, но опыта мало и флэшку гробить не дали бы )
|
|
|
|
|
Jul 30 2009, 13:02
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
Цитата(vadimuzzz @ Jul 30 2009, 04:51)  логи чистые - прошивается нормально. sof нормальный? если прогу запустить из среды (или в отладчике) - пашет? вектор сброса на epcs указывает? Мой проект в прикрепленном фаиле. Сама прошивка заливается великолепно. Исходники компилируются без ошибок. Уже все пересобрал всеравно одна и таже Х....!!! Please help me!!!
Прикрепленные файлы
Doc1.doc ( 343.5 килобайт )
Кол-во скачиваний: 99
|
|
|
|
|
Jul 30 2009, 15:54
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(Men @ Jul 30 2009, 17:02)  Мой проект в прикрепленном фаиле. Сама прошивка заливается великолепно. Исходники компилируются без ошибок. Уже все пересобрал всеравно одна и таже Х....!!! Please help me!!! В свойствах библиотеки проекта поменяйте расположение сегмента кода (.text) на onchip_mem и перекомпилируйте проект в эклипсе. И еще раз проштудируйте доку на FlashProgrammer  . В epcs_controller'е имеется небольшое кол-во памяти, в которой живет программа-копировщик. После того, как плиска сконфигурируется, процессор по вектору сброса перейдет в память epcs_controller'а, и начнет исполнять код копировщика - в Вашем случае он должен копировать исполняемый код приложения из epcs'ки во внутреннее озу плиски. После окончания копирования копировщик передает управление исполняемому коду приложения, вселенному во внутреннее озу (оnchip_mem). Сегмент кода может располагаться не только во внутреннем озу, но и в любом внешнем (SRAM, SSRAM, SDRAM) - принцип остается тем же.
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Jul 30 2009, 16:31
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
Цитата(Stewart Little @ Jul 30 2009, 19:54)  В свойствах библиотеки проекта поменяйте расположение сегмента кода (.text) на onchip_mem и перекомпилируйте проект в эклипсе. И еще раз проштудируйте доку на FlashProgrammer  . В epcs_controller'е имеется небольшое кол-во памяти, в которой живет программа-копировщик. После того, как плиска сконфигурируется, процессор по вектору сброса перейдет в память epcs_controller'а, и начнет исполнять код копировщика - в Вашем случае он должен копировать исполняемый код приложения из epcs'ки во внутреннее озу плиски. После окончания копирования копировщик передает управление исполняемому коду приложения, вселенному во внутреннее озу (оnchip_mem). Сегмент кода может располагаться не только во внутреннем озу, но и в любом внешнем (SRAM, SSRAM, SDRAM) - принцип остается тем же. После изменения расположения кода на onchip_mem все рабатает!!! Когда обратно возвращаю такая же петрушка: Programmed 2KB +62KB in 1.5s (42.6KB/s) Did not attempt to verify device contents Leaving target processor paused В каком состоянии находится система непонятно?!
|
|
|
|
|
Jul 30 2009, 22:31
|

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

|
Цитата(Men @ Jul 30 2009, 23:31)  В каком состоянии находится система непонятно?! ниос не может напрямую исполнять код с epcs (не в курсе, правда, насчет последних версий). сделать это можно через хитро изогнутый костыль, но это будет очень медленно. поэтому код исполняется с on-chip ram(варианты - off chip ram, cfi flash, если загрузить ядро какой-нибудь ОС, то и с , например, c SD (при наличии периферии, естественно)). чтобы программа рестартовала при выкл/вкл питания служит бутлоадер(копировщик, о котором писали выше). его код намертво вшит в epcs-контроллер (который есть on-chip memory + spi controller). при подаче питания циклон считывает sof с ниосом и всеми его потрохами, включая epcs-контроллер. вектор сброса указывает на него => начинает исполняться код загручика. загрузчик сливает код программы с флешки в on-chip ram и передает ей управление.
|
|
|
|
|
Jul 31 2009, 05:43
|

Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 6-10-06
Из: Санкт-Петербург
Пользователь №: 21 039

|
А слона то я и незаметил!!! Все заработало!!!!!!! Спасибо огромное за содействие!!!
|
|
|
|
|
Jul 31 2009, 09:57
|
Частый гость
 
Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984

|
Цитата(Men @ Jul 31 2009, 08:43)  А слона то я и незаметил!!! Все заработало!!!!!!! Спасибо огромное за содействие!!! А какого слона уточните?! Меня тоже интересует этот вопрос и я уже спрашивал на форуме, но так и не понял из ответов, всё таки можно или нет исполнять код НАПРЯМУЮ из епцс, пусть очень медленно но напрямую? С загрузчиками всё понятно!
|
|
|
|
|
Oct 6 2009, 15:20
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
После некоторого перерыва добрался до платы (Cyclone III 3c120 dev kit), чтобы попробовать запустить проект с Flash. с 1-ого раза не завелась и с 2-ого тоже. Имеется CIII dev kit на борту Flash - Spansion (S29GL512N11FFIV1), - 64 Мбх16 - CFI flash command support (поддержка CFI) Sopc Builder: cpu on-chip memory ... tristate_bridge + cfi_flash sysid не ставил или необходимо? Nios IDE пример из handbook: ставлю галочки в свойствах библиотеки - program never exits support C++ ligthweight device driver API clean exit reduce device driver small C library #include "sys/alt_flash.h" #include <stdio.h> #include <string.h> ... alt_flash_fd* fd; fd = alt_flash_open_dev("/dev/cfi_flash");fd возвращается нулевой - ничего не открылось естественно. В Quartus распиновку проверил вроде правильно, но... в Sopc Builder компонент CFI - ставлю Custom, address width - 25 bit и data width - 16 объем Flash - 64 Мб смотрим в manual распиновка address bit 24 - 0 FSM_A(24:0) Address bus (word aligned)то есть адресация 32 Мб используя 25 бит. сама Flash 64 Мб - 26 бит. (поправьте если я здесь чего-то не понимаю) В Quartus это выглядит так:
Как с этим быть? При прошивке проекта в CIII загорается Led Flash active, за который отвечает Max II (вырезка из manual к CIII - Illuminates when flash memory is being accessed with a read or write transaction. Driven by the MAX II CPLD). При запуске в Nios IDE Debug никакого моргания или признаков активности Led нет. Мои догадки, почему не работает: 1. неправильная конфигурация в sopc builder(может нужен sysid или неправильно выставлен объем Flash) 2. ошибка при распиновке в Quartus (проверю еще раз) 3. неправильное имя при обращении /dev/cfi_flash (беру из system.h после генерации) 4. мертвая flash(маловероятно) или как-то причастен Max II Кто сталкивался с проблемами Flash в Nios II Или есть какие-то соображения, отпишитесь пожалуйста.
|
|
|
|
|
Oct 7 2009, 02:14
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(dim99 @ Oct 7 2009, 00:20)  После некоторого перерыва добрался до платы (Cyclone III 3c120 dev kit), чтобы попробовать запустить проект с Flash. с 1-ого раза не завелась и с 2-ого тоже.
............... Кто сталкивался с проблемами Flash в Nios II Или есть какие-то соображения, отпишитесь пожалуйста. - можно и без sysid, но лучше использовать  - я бы пробовал без "small C library" в ней много чего обрублено,что именно нужно даташит читать - флеш 512 Мегабита Х 16 бит, тоесть шина будет 25 бит, все верно, если бы флеш было 8 битной ширины то шина адресса будет 26 бит
Причина редактирования: Удаление черезмерного цитирования
--------------------
Cogito ergo sum
|
|
|
|
|
Oct 8 2009, 13:17
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(dim99 @ Oct 7 2009, 02:20)  Nios IDE пример из handbook: ставлю галочки в свойствах библиотеки - program never exits support C++ ligthweight device driver API clean exit reduce device driver small C library Я ставил галочки program never exits ligthweight device driver API reduce device driver small C library Но в таком случае, как Вам уже выше описали, многие библиотеки сильно кастрируются. Можете выставить или полные библиотеки или, если не хотите сильно раздувать код (а раздуться он может значительно) то : Код #include<sys/alt_flash.h> #ifndef ALT_USE_CFI_FLASH #define ALT_USE_CFI_FLASH #endif #include <altera_avalon_cfi_flash.h> добавить глобальную структуру:
static alt_flash_cfi_dev cfi_flash = \ { \ { \ ALT_LLIST_ENTRY, \ CFI_FLASH_NAME, \ NULL, \ NULL, \ ALT_CFI_DEV_IN_USE(CFI_FLASH_BASE) ? NULL : alt_flash_cfi_write, \ ALT_CFI_DEV_IN_USE(CFI_FLASH_BASE) ? NULL : alt_flash_cfi_read, \ ALT_CFI_DEV_IN_USE(CFI_FLASH_BASE) ? NULL : alt_flash_cfi_get_info, \ NULL, \ NULL, \ ((void*)( CFI_FLASH_BASE)), \ CFI_FLASH_SIZE \ } \ }; в main () { ... alt_flash_cfi_init (&cfi_flash); ...
в проект явно добавил файл altera_avalon_cfi_flash.с После этого можно писать-читать-стирать стандартными функциями, а также считать конфигурацию CFI c помощью alt_get_flash_info(...). Почему-то пришлось добавлять структуру явно и явно добавлять файл. Нужно было сделать быстро. Искал по их библиотекам, рылся-рылся, но так и не понял какими define-ми сделать это более красиво. Может у Вас больше терпения, желания и времени хватит раскопать  .
|
|
|
|
|
Oct 9 2009, 01:31
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(dim99 @ Oct 9 2009, 04:39)  В общем решил одну из проблем - правильно распиновал.
теперь после прошивки проекта в плату, открываю Nios Command Shell, набираю nios2-flash-programmer --cable="usb-blaster [USB-0]" --base=0x04000000 --debug и выдается CFI Table - получается видит flash.
Временыне характеристики Flash: Max. Access Time (ns) 100 110 110 Max. CE# Access Time (ns) 100 110 110 Max. Page access time (ns) 25 25 30 Max. OE# Access Time (ns) 25 35 35
пока все выставил на 110 ns.
Кто сталкивался с расчетом параметров для CFI? Время Вы выбрали с запасом, можно даже уменьшить Setup и Hold. Но это позже. Первоначально нужно хотя бы запустить  . Если считывается таблица CFI попробуйте тем же nios2-flash-programmer записать какой-нибудь файл, а затем считать, подготовив предварительно его утилитой bin2flash (кажется). Потом можно идти дальше. ЗЫ. Файл можно записать и из IDE с помощью FlashProgrammer, а вот считывать уже nios2-flash-programmer. В этом случае, насколько я помню, файл автоматически подготовится к записи и прошьется. Заодно сразу посмотрите лог в консоли, по идее он должен показать результат записи и верификации. Если верификация пройдет, значит можно и не считывать вручную.
|
|
|
|
|
Oct 9 2009, 12:43
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(barabek @ Oct 9 2009, 05:31)  Время Вы выбрали с запасом, можно даже уменьшить Setup и Hold. Но это позже. Первоначально нужно хотя бы запустить  . Если считывается таблица CFI попробуйте тем же nios2-flash-programmer записать какой-нибудь файл, а затем считать, подготовив предварительно его утилитой bin2flash (кажется). Потом можно идти дальше. ЗЫ. Файл можно записать и из IDE с помощью FlashProgrammer, а вот считывать уже nios2-flash-programmer. В этом случае, насколько я помню, файл автоматически подготовится к записи и прошьется. Заодно сразу посмотрите лог в консоли, по идее он должен показать результат записи и верификации. Если верификация пройдет, значит можно и не считывать вручную. Попробовал сегодня записать файл и считать его. делал через nios2-flash-programmer - все получилось. CFI table исправно показывает. bin2flash сделал flash файл, который записал в пользовательское адресное пространство, затем считал, вроде бы совпадает. Как только пытаюсь обратиться через Nios IDE ничего не выходит: alt_flash_open_dev(CFI_FLASH_NAME); опять возвращает нулевое значение. вставил static alt_flash_cfi_dev cfi_flash как писал barabek, но там опять же не считывает ничего из Flash. перепробовал все варианты с system library, убрал уже все галочки и увеличил размер on-chip, чтобы влезло - не хочет. Уже не знаю, куда смотреть и что делать... Хотелось бы узнать как можно посмотреть, какие сигналы генерит Nios процессор и выдает ли он вообще какие-нибудь Oen или Cen на входы Flash? и еще что такое signal tap и с чем его едят?
|
|
|
|
|
Oct 9 2009, 13:15
|

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

|
Цитата(dim99 @ Oct 9 2009, 19:43)  alt_flash_open_dev(CFI_FLASH_NAME); опять возвращает нулевое значение. вставил static alt_flash_cfi_dev cfi_flash как писал barabek, но там опять же не считывает ничего из Flash. alt_flash_cfi_init (&cfi_flash) - структуру заполняет? если нет, то alt_flash_open_dev точно не сработает, ошибка где-то раньше. Цитата Хотелось бы узнать как можно посмотреть, какие сигналы генерит Nios процессор и выдает ли он вообще какие-нибудь Oen или Cen на входы Flash? и еще что такое signal tap и с чем его едят? signaltap - логический анализатор, им как раз можно и посмотреть OEn/CEn, если осциллографа нет под рукой Цитата перепробовал все варианты с system library, убрал уже все галочки и увеличил размер on-chip, чтобы влезло - не хочет. выложите проект, если секретного нету
|
|
|
|
|
Oct 9 2009, 14:34
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(vadimuzzz @ Oct 9 2009, 17:15)  alt_flash_cfi_init (&cfi_flash) - структуру заполняет? если нет, то alt_flash_open_dev точно не сработает, ошибка где-то раньше.
signaltap - логический анализатор, им как раз можно и посмотреть OEn/CEn, если осциллографа нет под рукой
выложите проект, если секретного нету Как я понял из кода, alt_flash_cfi_init (&cfi_flash) определяет параметры Flash то есть как настроена - на 8 битную или 16-битную адресацию и прочее. К сожалению, не заполняет, он пытается записать значение и сравнить с прочитанным результатом - естественно читает абы что. боюсь, весь проект выложить не могу, там моя небольшая часть. Хочу завтра создать чистый Hello_world в nios ide и в нем попробовать обратиться к Flash. может проблемы из-за исходного программного проекта.
|
|
|
|
|
Oct 10 2009, 10:21
|

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

|
собрал ниос с флешем на стартер-ките. все работает. код программы Код #include "sys/alt_flash.h" #include "system.h"
int main() { alt_flash_fd *fd; fd=alt_flash_open_dev(CFI_FLASH_NAME); /* Event loop never exits. */ while (1);
return 0; } fd=0, когда стоит галочка "Reduced device drivers". об этом в мануале на HAL говорится. если галочку снять, то размер бинарника вырастет с ~800 байт до ~8кбайт и alt_flash_open_dev будет заполнять структуру fd. если переделывать проект под другую плату, надо изменить размер флеш (у меня 32 Мб) и перекинуть пины. проект в аттаче. да, чуть не забыл. flash_reset действительно не нужен, я его вообще не подключал.
|
|
|
|
|
Oct 12 2009, 09:34
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Сегодня переделал проект в nios ide как в примере прикрепленном: результаты из-под nios ide command shell:
CFI Table:
[NiosII EDS]$ nios2-flash-programmer --base=0x04000000 --cable="Usb-blaster [US B-0]" --debug Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK Found CFI table in 16 bit mode Raw CFI query table read from device: 0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 20: 51 00 52 00 59 00 02 00 00 00 40 00 00 00 00 00 Q.R.Y.....@..... 30: 00 00 00 00 00 00 27 00 36 00 00 00 00 00 07 00 ......'.6....... 40: 07 00 0A 00 00 00 03 00 05 00 04 00 00 00 1A 00 ................ CFI query table read from device: 10: 51 52 59 02 00 40 00 00 00 00 00 27 36 00 00 07 QRY..@.....'6... 20: 07 0A 00 03 05 04 00 1A 02 00 05 00 01 FF 01 00 ................ 30: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ CFI extended table read from device: 0: 50 52 49 31 33 10 02 01 00 08 00 00 02 B5 C5 05 PRI13........... 10: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Read autoselect code 0001-227E (in 16 bit mode) No CFI override data for [FLASH-0001-227E] Device size is 64MByte Erase regions are: offset 0: 512 x 128K Device supports AMD style programming algorithm Multi-byte programming with 32 byte buffer Sector erase timeout is 16s Word program timeout is 1ms Buffer program timeout is 4ms Leaving target processor paused
Интересно, что означает No CFI override data for?
Конвертим в Flash, чтобы записать: [NiosII EDS]$ bin2flash --location=0x02100000 --input=ex.bin --output=data.flash
входной файл ex.bin=555555
выходной файл: data.flash=S00D0000646174612E666C6173681C S30B02100000353535353535A4
записываем во Flash: [NiosII EDS]$ nios2-flash-programmer --base=0x04000000 --cable="Usb-blaster [US B-0]" --program data.flash Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK Checksums took 0.0s Erase not required Programmed 1KB in 0.0s Device contents checksummed OK Leaving target processor paused
считываем: [NiosII EDS]$ nios2-flash-programmer --base=0x04000000 --cable="Usb-blaster [US B-0]" --read=current.srec --read-bytes=0x02100000,0x5 Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK Writing FLASH contents to current.srec Leaving target processor paused
current.srec=S30A021000003535353535DA S5030001FB Вроде бы что-то совпадает: исходные данные в flash формате: S30B02100000353535353535A4 считанные из Flash формат srec: S30A021000003535353535DA
затем пытаюсь проверить: [NiosII EDS]$ nios2-flash-programmer --base=0x04000000 --cable="Usb-blaster [US B-0]" --verify data.flash Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK Verifying 02100000 ( 0%)assertion "(size & 3) == 0" failed: file "nios2flash.cpp ", line 266 1 [sig] nios2-flash-programmer 4048 c:\altera\80\nios2eds\bin\nios2-flash- programmer.exe: *** fatal error - called with threadlist_ix -1 Hangup
В итоге верификация не удалась.
В nios ide пытаюсь что-нибудь ссделать:
после выполнения fd=alt_flash_open_dev(CFI_FLASH_NAME); возвращается ненулевой указатель, раньше был строго 0 но после завершения вызова выпадает меню: Source not found дальше ничего не хочет идти.
Ф-ция int alt_set_flash_width_func( alt_flash_cfi_dev* flash)
пошаговая отладка показала что flash не определяется никак по параметрам ширины данных и адреса и в итоге возращает ret_code -13.
вот такие дела =(
|
|
|
|
|
Oct 12 2009, 14:35
|

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

|
Цитата(dim99 @ Oct 12 2009, 16:34)  Сегодня переделал проект в nios ide как в примере прикрепленном: результаты из-под nios ide command shell: ... Интересно, что означает No CFI override data for? это значит, что все нормально, используются дефолтные настройки. Цитата Конвертим в Flash, чтобы записать: [NiosII EDS]$ bin2flash --location=0x02100000 --input=ex.bin --output=data.flash
входной файл ex.bin=555555
выходной файл: data.flash=S00D0000646174612E666C6173681C S30B02100000353535353535A4
записываем во Flash: [NiosII EDS]$ nios2-flash-programmer --base=0x04000000 --cable="Usb-blaster [US B-0]" --program data.flash Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK Checksums took 0.0s Erase not required Programmed 1KB in 0.0s Device contents checksummed OK Leaving target processor paused
считываем: [NiosII EDS]$ nios2-flash-programmer --base=0x04000000 --cable="Usb-blaster [US B-0]" --read=current.srec --read-bytes=0x02100000,0x5 Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK Writing FLASH contents to current.srec Leaving target processor paused
current.srec=S30A021000003535353535DA S5030001FB Вроде бы что-то совпадает: исходные данные в flash формате: S30B02100000353535353535A4 считанные из Flash формат srec: S30A021000003535353535DA совпадает все. просто вы записали 6 байт, а считали 5 Цитата В nios ide пытаюсь что-нибудь ссделать:
после выполнения fd=alt_flash_open_dev(CFI_FLASH_NAME); возвращается ненулевой указатель, раньше был строго 0 но после завершения вызова выпадает меню: Source not found дальше ничего не хочет идти. видимо из-за того, что в настройках линкера для System Library выбрана конфигурация Release и оптимизатор все порезал. поставьте Debug (если памяти хватает) и сможете покопаться поглубже. Цитата Ф-ция int alt_set_flash_width_func( alt_flash_cfi_dev* flash) пошаговая отладка показала что flash не определяется никак по параметрам ширины данных и адреса и в итоге возращает ret_code -13. вот такие дела =( че-то я не понял, а накой икс вам эта функция? alt_flash_open_dev - отработала => вызываем alt_flash_read или alt_flash_write. в конце не забываем alt_flash_close_dev вызвать. а использование alt_set_flash_width_func - это грязный хак. к тому же я подозреваю, что буквы set в названии означают, что она пишет что-то в (alt_flash_cfi_dev*) а не читает. Цитата(dim99 @ Oct 12 2009, 21:24)  Покапался в datasheet к своей Flash и выяснил интересные вещи:
Addresses are AMax:A0 in word mode; AMax:A-1 in byte mode
то есть для 16-битной адресации нужен младший бит. Может тогда надо заводить на распиновку не [25..1] как у меня, а [24..0]?
И еще для включения механизма 16-битной адресации BYTE#=1, у меня же он вообще не распинован а в мануале к dev kit ссылка на распиновку MAX II. MAX II Device Pin-Out L15 1.8 V Output FLASH_BYTEn
просто если его не трогать непонятно, какой тип адресации выставлен 16-бит или 8. Могу ли я его явно распиновать на 1 в квартусе, чтобы точно знать, что у меня адресация 16-битная или ножки к MAX II лучше не трогать? все у вас нормально и flash_programmer это подтверждает. посмотрите внимательно логи.
|
|
|
|
|
Oct 12 2009, 15:10
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(vadimuzzz @ Oct 12 2009, 18:35)  видимо из-за того, что в настройках линкера для System Library выбрана конфигурация Release и оптимизатор все порезал. поставьте Debug (если памяти хватает) и сможете покопаться поглубже.
че-то я не понял, а накой икс вам эта функция? alt_flash_open_dev - отработала => вызываем alt_flash_read или alt_flash_write. в конце не забываем alt_flash_close_dev вызвать. Еще раз проверю, но вроде бы выставлен debug. Спасибо за ответы, буду завтра еще мучить flash, если не выйдет тогда подключу через avalon slave как новый компонент без всяких cfi.
|
|
|
|
|
Oct 14 2009, 14:38
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Цитата(vadimuzzz @ Oct 14 2009, 18:32)  это не баг, это фича  одна из фишек cyclone3 - remote upgrade, можно на флешке хранить несколько sof`ов и переключаться между ними. так что возможность переписать прошивку отнюдь не бесполезна. Да, читал что можно до 7 fpga design хранить для cIII + software + data binary. теперь хочу хранить soft на flash, только не пойму адрес хранения в flash задается в настройках nios processor и потом генерится в nios ide?
|
|
|
|
|
Jan 13 2010, 07:52
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
А возможно ли cfi-flash сделать памятью программ ниоса и в ходе выполнения программы писать туда данные, в конец адресного пространства напримар. ?
|
|
|
|
|
Jan 13 2010, 12:41
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
Цитата(vadimuzzz @ Jan 13 2010, 11:09)  нет, не получится. нужно с флешки загрузить код в ОЗУ, передать ему управление, тогда будет доступ на запись во флеш. Спасибо! т.е. надо Reset Vector на флешку указать, а Exception Vector на sram и задать смещение, я правильно понимаю? ))
|
|
|
|
|
May 19 2010, 12:04
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
Цитата(vadimuzzz @ Jan 13 2010, 16:47)  еще в NIOS-IDE в настройках System Library все в ОЗУ запихать Запихал все в ОЗУ и .text и .rodata и .rwdata и пр )) прога не стартует ((( в SOPC Builde'e: Falsh base: 0x02000000 Sram base: 0x02400000 Reset Vector: Memory: cfi_flash_0 offset: 0x0 Exception Vector: Memory: sram_0 offset: 0x20 что делать? ))) как заставить прогу стартануть, где что подправить?  подскажите пожалуйста. (с флехи все прекрасно стартует и работает.)
|
|
|
|
|
May 19 2010, 17:53
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
Да, через него
|
|
|
|
|
May 20 2010, 05:06
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
если это то: Код #!/bin/sh # # This file was automatically generated by the Nios II IDE Flash Programmer. # # It will be overwritten when the flash programmer options change. #
cd D:/altera/BVK/software/bvk222/Debug
# Creating .flash file for the project "$SOPC_KIT_NIOS2/bin/elf2flash" --base=0x02000000 --end=0x23fffff --reset=0x2000 000 --input="bvk222.elf" --output="cfi_flash_0.flash" --boot="D:/altera/90/ip/al tera/nios2_ip/altera_nios2/boot_loader_cfi.srec"
# Programming flash with the project "$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --base=0x02000000 --cable='USB-Blas ter [USB-0]' "cfi_flash_0.flash" Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Resetting and pausing target processor: OK
: Checksumming existing contents
00000000 : Reading existing contents
00002000 : Reading existing contents
00004000 : Reading existing contents
00006000 : Reading existing contents
00008000 : Reading existing contents
0000A000 : Reading existing contents
Checksummed/read 11kB in 0.3s
00000000 ( 0%): Erasing
00002000 (16%): Erasing
00004000 (33%): Erasing
00006000 (50%): Erasing
00008000 (66%): Erasing
0000A000 (83%): Erasing
Erased 48kB in 1.6s (30.0kB/s)
00000000 ( 0%): Programming
00002000 (16%): Programming
00004000 (33%): Programming
00006000 (50%): Programming
00008000 (66%): Programming
0000A000 (83%): Programming
Programmed 38KB +10KB in 1.1s (43.6KB/s) Device contents checksummed OK Leaving target processor paused Quartus II Version 9.0 Build 132 02/25/2009 SJ Full Version естественно крякнутый.
|
|
|
|
|
May 20 2010, 09:01
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
.jic фалом через jtag
EP2C20 + EPCS4
|
|
|
|
|
May 20 2010, 12:43
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
)))) она отключена вообще
|
|
|
|
|
May 20 2010, 13:12
|
Группа: Участник
Сообщений: 13
Регистрация: 13-01-07
Пользователь №: 24 398

|
|
|
|
|
|
Oct 25 2011, 11:57
|
Группа: Новичок
Сообщений: 7
Регистрация: 22-10-06
Пользователь №: 21 554

|
помогите решить проблему(ы). ковыряюсь с платой EP3C120, хочу всё во флеш запихать, но "не играет она", точнее играет но не так как хочется. Пытаюсь реализовать чтобы при каждом положении регулятора pgm_config_select, ответственного за загрузку прошивки из флеш, грузился свой проц со своим софтом. беру проц, генерю с вектором ресета указывающим на флеш память с нулевым смещением. делаю прошивку: sof2flash --optionbit=0x3fe0000 --pfl --offset=0 --input=DSP_USB1.sof --output=dsp_usb1_cfi.flash --programmingmode=PS шью: nios2-flash-programmer --base=0 --program dsp_usb1_cfi.flash dsp_usb1_cfi.map.flash вижу что железо прошилось.
пишу прогу, делаю прошивку: elf2flash --base=0 --end=0x4000000 --reset=0x0 --boot=boot_loader_cfi.srec --input=USB_test1.elf --output=myapp.flash шью: nios2-flash-programmer --base=0 --program myapp.flash
вижу что железо затерлось, не грузится, ладно мучаюсь дальше меняю оффсет для железа: sof2flash --optionbit=0x3fe0000 --pfl --offset=0х380000 --input=DSP_USB1.sof --output=dsp_usb1_cfi.flash --programmingmode=PS шью: nios2-flash-programmer --base=0 --program dsp_usb1_cfi.flash dsp_usb1_cfi.map.flash вижу что всё работает!
да, флешка по даташиту расмэпина так: FPGA Design0: 0x0-0x36ebe1 FPGA Design1: 0x380000-0x6eebe1 ... FPGA Design7: 0x1880000-0x1beebe1
вопрос1: как мне в ячейку 0х0 - 0х380000 запихать и железо и софт? вопрос2: почему приходится перешивать заводскую standard_cfi.map.flash на dsp_usb1_cfi.map.flash чтобы железо загражалось с адреса 0x380000 при положении переключателя прошивок в 0? как сделать чтобы переключатель именно переключал т.е. при положении 0 грузился с 0х0 при 1 - с 0х380000 и т.д.? вопрос3: нужно задавать для прошивки в каждом сегменте памяти FPGA DesignХ своё смещение ресета в железе, и как следствие свои параметры для elf2flash?
чую проблема с правильными адресами и т.д. но как решить допереть не могу.
|
|
|
|
|
Oct 27 2011, 04:39
|
Группа: Новичок
Сообщений: 7
Регистрация: 22-10-06
Пользователь №: 21 554

|
ладно, сам и отвечаю(может кому и понадобится): 1. поставил все векторы (reset, exceptions) на on-chip память и сделал инициализию on-chip памяти my.hex 2. сгенерил проц 3. пересобрал bsp 4. сгенерил elf 5. в Nios II Command Shell сделал из elf my.hex с помощью команды elf2hex с параметрами --width=32 --base=0x0c010000(начальный адресс on-chip памяти) 6. скомпилировал sof 7. преобразовал sof в my.pof с параметрами конф. биты по адресу 0x3FE0000 page0 = factory.sof, start 0x0 (пришлось указать чтобы правильно сгенерились конф. биты) page1 = my.sof, start 0x380000 8. прошил с помощью cycloneIII_3c120_dev_pfl.sof+cfi512+my.pof: page1 + конф. биты., т.к. биты скомпилированны для двух страниц 0 и 1 переключатель pgm_config_select только их и переключает
|
|
|
|
|
Oct 27 2011, 06:44
|
Группа: Новичок
Сообщений: 7
Регистрация: 22-10-06
Пользователь №: 21 554

|
7. ... преобразовывал с помощью quartus -> convert programming files подробнее см http://www.altera.com/literature/ug/ug_ciii_devkit.pdf Appendix A 8. ... шил quartus programmer'ом page1 со смещением 0x380000
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|