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

 
 
> Nios II Software, загрузка с Flash
dim99
сообщение Jul 1 2009, 08:10
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Доброго времени суток, товарищи )

Возникла необходимость экономии памяти (on-chip) и требуется перекинуть software с on-chip на Flash, чтобы ядро грузилось с флэшки,встроенной на плате.

Имеется Cyclone III C120 и flash 64 Мб с CFI интерфейсом.
Посмотрел на официальном сайте altera.com, вроде все просто прошился через Flash Programmer и все.

Так вот сам вопрос: по мануалу ug_nios2_flash_programmer.pdf необходимо создать для CFI Avalon-MM Tristate и добавить компонент Flash Memory.
Тогда получается необходимо создать и внешний блок(саму Flash память) и организовать связь между ядром и разработанным блоком?
Чем тогда будет являться Flash память, какой элемент использовать или все дело в дальнейшей распиновке(то есть привяжу к ножкам Flash и оно поймет)?

Простите, если коряво выразился, может подобная тема и есть, но что-то не нашел.
буду благодарен за любые отзывы.
Go to the top of the page
 
+Quote Post
5 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 61)
Postoroniy_V
сообщение Jul 1 2009, 10:49
Сообщение #2


МедвеД Инженер 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
Go to the top of the page
 
+Quote Post
dim99
сообщение Jul 14 2009, 07:34
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 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.
Если то подскажет буду безмерно благодарен.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jul 14 2009, 08:50
Сообщение #4


МедвеД Инженер 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, думаю сообразите как подключить если активный уровень вас не устраивает smile.gif
select_n_.._flash это чип селект , их может быть много , активный в 0 это видимо для chip enable smile.gif (см выше про уровень)
write_n_.._flash и сигнал записи , активный в 0
для ready\busy не надо ничего, если конечно планируете его использовать в системе, то нужно его к какому нибуль GPIO цепануть

з.ы...не любите "книжки" читать..ой не любите biggrin.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
dim99
сообщение Jul 14 2009, 19:10
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 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, думаю сообразите как подключить если активный уровень вас не устраивает smile.gif
select_n_.._flash это чип селект , их может быть много , активный в 0 это видимо для chip enable smile.gif (см выше про уровень)
write_n_.._flash и сигнал записи , активный в 0
для ready\busy не надо ничего, если конечно планируете его использовать в системе, то нужно его к какому нибуль GPIO цепануть

з.ы...не любите "книжки" читать..ой не любите biggrin.gif


Спасибо за ответ.
Вопросы возникли только по поводу read и select, в принципе идеи были сделать как описано, но опыта мало и флэшку гробить не дали бы )
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 29 2009, 16:14
Сообщение #6


Частый гость
**

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



У меня DE1 от альтеры, не получается прошить в EPCS4(или получается но не стартует программа).
Все вроде делал как в ug_nios2_flash_programmer
в Flash Programmer видем вот что:
#!/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/80/qdesigns/DE1_flash/software/flash_v1/Debug

# Creating .flash file for the FPGA configuration
"$SOPC_KIT_NIOS2/bin/sof2flash" --epcs --input="D:/altera/80/qdesigns/DE1_flash/
DE1_flash.sof" --output="DE1_flash.flash"
Info: *******************************************************************
Info: Running Quartus II Convert_programming_file
Info: Command: quartus_cpf --no_banner --convert --device=EPCS128 --option=DE1_f
lash.opt D:/altera/80/qdesigns/DE1_flash/DE1_flash.sof DE1_flash.pof
Info: Quartus II Convert_programming_file was successful. 0 errors, 0 warnings
Info: Peak virtual memory: 68 megabytes
Info: Processing ended: Wed Jul 29 18:01:55 2009
Info: Elapsed time: 00:00:02
Info: Total CPU time (on all processors): 00:00:03
Info: *******************************************************************
Info: Running Quartus II Convert_programming_file
Info: Command: quartus_cpf --no_banner --convert DE1_flash.pof DE1_flash.rpd
Info: Quartus II Convert_programming_file was successful. 0 errors, 0 warnings
Info: Peak virtual memory: 65 megabytes
Info: Processing ended: Wed Jul 29 18:01:59 2009
Info: Elapsed time: 00:00:03
Info: Total CPU time (on all processors): 00:00:03

# Programming flash with the FPGA configuration
"$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=0x00003800 --cable='U
SB-Blaster [USB-0]' --sidp=0x00004030 --id=441228113 --timestamp=1248875622 --in
stance=0 "DE1_flash.flash"
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Resetting and pausing target processor: OK
Reading System ID at address 0x00004030: verified

: Checksumming existing contents

00000000 : Verifying existing contents

00010000 : Verifying existing contents

00020000 : Verifying existing contents

00000000 : Reading existing contents

00010000 : Reading existing contents

00020000 : Reading existing contents

Checksummed/read 17kB in 0.4s

00000000 ( 0%): Erasing

00010000 (33%): Erasing

00020000 (66%): Erasing

Erased 192kB in 1.9s (101.0kB/s)

00000000 ( 0%): Programming

00010000 (33%): Programming

00020000 (66%): Programming

Programmed 176KB +16KB in 4.2s (45.7KB/s)
Did not attempt to verify device contents
Leaving target processor paused

# Creating .flash file for the project
"$SOPC_KIT_NIOS2/bin/elf2flash" --epcs --after="DE1_flash.flash" --input="flash_
v1.elf" --output="epcs_controller.flash"

# Programming flash with the project
"$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=0x00003800 --cable='U
SB-Blaster [USB-0]' --sidp=0x00004030 --id=441228113 --timestamp=1248875622 --in
stance=0 "epcs_controller.flash"
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Resetting and pausing target processor: OK
Reading System ID at address 0x00004030: verified

: Checksumming existing contents

00020000 : Verifying existing contents

00020000 : Reading existing contents

Checksummed/read 63kB in 1.5s

00020000 ( 0%): Erasing

Erased 64kB in 0.6s (106.6kB/s)

00020000 ( 0%): Programming

Programmed 2KB +62KB in 1.5s (42.6KB/s)
Did not attempt to verify device contents
Leaving target processor paused
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 30 2009, 00:51
Сообщение #7


Гуру
******

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



Цитата(Men @ Jul 29 2009, 23:14) *
У меня DE1 от альтеры, не получается прошить в EPCS4(или получается но не стартует программа).


логи чистые - прошивается нормально. sof нормальный? если прогу запустить из среды (или в отладчике) - пашет? вектор сброса на epcs указывает?
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 30 2009, 13:02
Сообщение #8


Частый гость
**

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



Цитата(vadimuzzz @ Jul 30 2009, 04:51) *
логи чистые - прошивается нормально. sof нормальный? если прогу запустить из среды (или в отладчике) - пашет? вектор сброса на epcs указывает?

Мой проект в прикрепленном фаиле.
Сама прошивка заливается великолепно.
Исходники компилируются без ошибок.
Уже все пересобрал всеравно одна и таже Х....!!!
Please help me!!!
Прикрепленные файлы
Прикрепленный файл  Doc1.doc ( 343.5 килобайт ) Кол-во скачиваний: 99
 
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jul 30 2009, 15:54
Сообщение #9


Лентяй
******

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



Цитата(Men @ Jul 30 2009, 17:02) *
Мой проект в прикрепленном фаиле.
Сама прошивка заливается великолепно.
Исходники компилируются без ошибок.
Уже все пересобрал всеравно одна и таже Х....!!!
Please help me!!!

В свойствах библиотеки проекта поменяйте расположение сегмента кода (.text) на onchip_mem и перекомпилируйте проект в эклипсе.
И еще раз проштудируйте доку на FlashProgrammer smile.gif .
В epcs_controller'е имеется небольшое кол-во памяти, в которой живет программа-копировщик.
После того, как плиска сконфигурируется, процессор по вектору сброса перейдет в память epcs_controller'а, и начнет исполнять код копировщика - в Вашем случае он должен копировать исполняемый код приложения из epcs'ки во внутреннее озу плиски. После окончания копирования копировщик передает управление исполняемому коду приложения, вселенному во внутреннее озу (оnchip_mem).
Сегмент кода может располагаться не только во внутреннем озу, но и в любом внешнем (SRAM, SSRAM, SDRAM) - принцип остается тем же.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 30 2009, 16:31
Сообщение #10


Частый гость
**

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



Цитата(Stewart Little @ Jul 30 2009, 19:54) *
В свойствах библиотеки проекта поменяйте расположение сегмента кода (.text) на onchip_mem и перекомпилируйте проект в эклипсе.
И еще раз проштудируйте доку на FlashProgrammer smile.gif .
В 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

В каком состоянии находится система непонятно?!
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 30 2009, 22:31
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 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 и передает ей управление.
Go to the top of the page
 
+Quote Post
Men
сообщение Jul 31 2009, 05:43
Сообщение #12


Частый гость
**

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



А слона то я и незаметил!!! laughing.gif
Все заработало!!!!!!!
Спасибо огромное за содействие!!!
Go to the top of the page
 
+Quote Post
inco
сообщение Jul 31 2009, 09:57
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Цитата(Men @ Jul 31 2009, 08:43) *
А слона то я и незаметил!!! laughing.gif
Все заработало!!!!!!!
Спасибо огромное за содействие!!!


А какого слона уточните?!

Меня тоже интересует этот вопрос и я уже спрашивал на форуме, но так и не понял из ответов, всё таки можно или нет исполнять код НАПРЯМУЮ из епцс, пусть очень медленно но напрямую? С загрузчиками всё понятно!
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 31 2009, 14:10
Сообщение #14


Гуру
******

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



Цитата(inco @ Jul 31 2009, 16:57) *
А какого слона уточните?!

Меня тоже интересует этот вопрос и я уже спрашивал на форуме, но так и не понял из ответов, всё таки можно или нет исполнять код НАПРЯМУЮ из епцс, пусть очень медленно но напрямую? С загрузчиками всё понятно!

нужно создать компонент, который будет иметь avalon-MM интерфейс как у памяти, а наружу - интерфейс SPI. собственно его уже давно сделали http://www.niosforum.com/pages/project_det...fb148c132365f74
но ссылка сейчас дохлая. обсуждалось тут http://electronix.ru/forum/index.php?showtopic=19716 - можно попробовать написать авторам.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Aug 2 2009, 08:02
Сообщение #15


Лентяй
******

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



Цитата(vadimuzzz @ Jul 31 2009, 18:10) *
можно попробовать написать авторам.

Увы, боюсь это будет запрос "на деревню дедушке". Марко Гроенфельд сейчас работает в Microtronix, разрабатывает для них платы ViClaro XXX, и все для них.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Aug 2 2009, 09:32
Сообщение #16


Гуру
******

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



Цитата(Stewart Little @ Aug 2 2009, 15:02) *
Увы, боюсь это будет запрос "на деревню дедушке". Марко Гроенфельд сейчас работает в Microtronix, разрабатывает для них платы ViClaro XXX, и все для них.

я имел в виду авторов постов smile.gif кто-то в той теме обмолвился, что исходники слил. впрочем, написать компонент не проблема, вот смысла в этом не вижу
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 6 2009, 15:20
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 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 Или есть какие-то соображения, отпишитесь пожалуйста.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Oct 7 2009, 02:14
Сообщение #18


МедвеД Инженер I
****

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



Цитата(dim99 @ Oct 7 2009, 00:20) *
После некоторого перерыва добрался до платы (Cyclone III 3c120 dev kit), чтобы попробовать запустить проект с Flash.
с 1-ого раза не завелась и с 2-ого тоже.

...............
Кто сталкивался с проблемами Flash в Nios II Или есть какие-то соображения, отпишитесь пожалуйста.

- можно и без sysid, но лучше использовать smile.gif
- я бы пробовал без "small C library" в ней много чего обрублено,что именно нужно даташит читать
- флеш 512 Мегабита Х 16 бит, тоесть шина будет 25 бит, все верно, если бы флеш было 8 битной ширины то шина адресса будет 26 бит
Причина редактирования: Удаление черезмерного цитирования


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 7 2009, 23:07
Сообщение #19


Гуру
******

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



Цитата(dim99 @ Oct 6 2009, 22:20) *
Мои догадки, почему не работает:
1. неправильная конфигурация в sopc builder(может нужен sysid или неправильно выставлен объем Flash)
2. ошибка при распиновке в Quartus (проверю еще раз)
3. неправильное имя при обращении /dev/cfi_flash (беру из system.h после генерации)
4. мертвая flash(маловероятно) или как-то причастен Max II

Кто сталкивался с проблемами Flash в Nios II Или есть какие-то соображения, отпишитесь пожалуйста.

скорее всего распиновка (флеш 16 бит, младший адресный разряд подключать не надо). саму флешку, а равно и MAX II проверить легко - сгенерить pof или просто любой hex и зашить его quartus-programmerom. посмотрите пример на nioswiki.
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 8 2009, 13:17
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 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-ми сделать это более красиво. Может у Вас больше терпения, желания и времени хватит раскопать smile.gif.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 8 2009, 18:39
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



В общем решил одну из проблем - правильно распиновал.

теперь после прошивки проекта в плату, открываю Nios Command Shell, набираю nios2-flash-programmer --cable="usb-blaster [USB-0]" --base=0x04000000 --debug
и выдается CFI Table - получается видит flash.

но пока в Nios IDE никак не могу получить ненулевой результат от alt_flash_open_dev(CFI_FLASH_NAME);

думаю, что неправильно выставлены тайминги:
flash S29GL512N по даташиту - 110 ns время доступа.

Вопрос: как рассчитать

Setup —After asserting chipselect, the time required before asserting the read or write signals.
Wait—The time required for the read or write signals to be asserted for each transfer.
Hold—After deasserting the write signal, the time required before deasserting the chipselect signal.

Временыне характеристики 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?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 8 2009, 22:55
Сообщение #22


Гуру
******

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



Цитата(dim99 @ Oct 9 2009, 01:39) *
В общем решил одну из проблем - правильно распиновал.

теперь после прошивки проекта в плату, открываю Nios Command Shell, набираю nios2-flash-programmer --cable="usb-blaster [USB-0]" --base=0x04000000 --debug
и выдается CFI Table - получается видит flash.

но пока в Nios IDE никак не могу получить ненулевой результат от alt_flash_open_dev(CFI_FLASH_NAME);

думаю, что неправильно выставлены тайминги:

скорее в настройках System Library галочки не те стоят
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 9 2009, 01:31
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 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. Но это позже. Первоначально нужно хотя бы запустить smile.gif. Если считывается таблица CFI попробуйте тем же nios2-flash-programmer записать какой-нибудь файл, а затем считать, подготовив предварительно его утилитой bin2flash (кажется). Потом можно идти дальше.
ЗЫ. Файл можно записать и из IDE с помощью FlashProgrammer, а вот считывать уже nios2-flash-programmer. В этом случае, насколько я помню, файл автоматически подготовится к записи и прошьется. Заодно сразу посмотрите лог в консоли, по идее он должен показать результат записи и верификации. Если верификация пройдет, значит можно и не считывать вручную.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 9 2009, 12:43
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Цитата(barabek @ Oct 9 2009, 05:31) *
Время Вы выбрали с запасом, можно даже уменьшить Setup и Hold. Но это позже. Первоначально нужно хотя бы запустить smile.gif. Если считывается таблица 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 и с чем его едят?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 9 2009, 13:15
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 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, чтобы влезло - не хочет.


выложите проект, если секретного нету
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 9 2009, 14:01
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(vadimuzzz @ Oct 9 2009, 23:15) *
alt_flash_cfi_init (&cfi_flash) - структуру заполняет? если нет, то . . .

Поддерживаю, врядли дело в железе, если flashprogrammer работает. Дело однозначно в программе. Я ещё раз посмотрю в свой проект, может что упустил. Но это не раньше понедельника. Попробуйте пошаговую отладку . Может сами раньше найдете затык.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 9 2009, 14:34
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 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. может проблемы из-за исходного программного проекта.
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 9 2009, 14:36
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Да, кстати. Я скопировал упомянутый altera_avalon_cfi_flash.c в папку своего проекта и добавил эту копию в проект, естествено, чтобы этот файл тоже билдился ( по умолчанию).

Просите, предыдущее сообщение с телефона не получилось отредактировать.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 9 2009, 15:25
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



У меня вопрос появился, нет ли каких-нибудь ошибок в распиновке? (правил в paint)

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 9 2009, 15:56
Сообщение #30


Гуру
******

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



Цитата(dim99 @ Oct 9 2009, 22:25) *
У меня вопрос появился, нет ли каких-нибудь ошибок в распиновке? (правил в paint)

вроде нет. разве что ресет на флеш. посмотрите как сделано в примерах к киту, да и схематик глянуть не помешает. я завтра накидаю "hello world" с флешем.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 9 2009, 16:37
Сообщение #31


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



А что с reset?
разве нельзя его завести на питание, чтобы он не "мешал" и не влиял ни на что?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 10 2009, 10:21
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 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 действительно не нужен, я его вообще не подключал.
Прикрепленные файлы
Прикрепленный файл  NIOS_FLASH.zip ( 878.67 килобайт ) Кол-во скачиваний: 76
 
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 10 2009, 14:45
Сообщение #33


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Спасибо за проект и замечания.
До платы доберусь только в понедельник, смотрю вы на 7.2 SP3 работаете, у меня же стоит 8.0 SP1 может от версии тоже много чего зависит.
Думаю, если не пойдет перекомпилю на 8.1.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 12 2009, 09:34
Сообщение #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.

вот такие дела =(
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 12 2009, 14:24
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Покапался в 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 лучше не трогать?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 12 2009, 14:35
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 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 biggrin.gif
Цитата
В 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 это подтверждает. посмотрите внимательно логи.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 12 2009, 15:10
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 14 2009, 14:11
Сообщение #38


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Заработало )

Наконец-то после "недолгих" мучений CFI Flash работает.
Собрав маленький проект Hello world small смог протестить flash.

Хотя без приключений не обошлось.
Взял пример из nios software handbook, а именно вот эта строка корень зла:

ret_code = alt_write_flash(fd, 0, source, BUF_SIZE);

нулевое смещение flash (по крайней мере для cyclone III думаю и для других плат) содержит factory design.
то есть когда включается плата загружается конфигурация с этого адреса.
Перезаписав эту область памяти из примера, включаю плату занова и загорается error led - нет factory design.
Пришлось заливать во flash этот design, чтобы плата корректно запускалась.

В общем, больше не буду так доверять примерам из handbook'a.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 14 2009, 14:32
Сообщение #39


Гуру
******

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



Цитата(dim99 @ Oct 14 2009, 21:11) *
В общем, больше не буду так доверять примерам из handbook'a.

это не баг, это фича wink.gif
одна из фишек cyclone3 - remote upgrade, можно на флешке хранить несколько sof`ов и переключаться между ними. так что возможность переписать прошивку отнюдь не бесполезна.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 14 2009, 14:38
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Цитата(vadimuzzz @ Oct 14 2009, 18:32) *
это не баг, это фича wink.gif
одна из фишек cyclone3 - remote upgrade, можно на флешке хранить несколько sof`ов и переключаться между ними. так что возможность переписать прошивку отнюдь не бесполезна.


Да, читал что можно до 7 fpga design хранить для cIII + software + data binary.
теперь хочу хранить soft на flash, только не пойму адрес хранения в flash задается в настройках nios processor и потом генерится в nios ide?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 14 2009, 22:57
Сообщение #41


Гуру
******

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



Цитата(dim99 @ Oct 14 2009, 21:38) *
Да, читал что можно до 7 fpga design хранить для cIII + software + data binary.
теперь хочу хранить soft на flash, только не пойму адрес хранения в flash задается в настройках nios processor и потом генерится в nios ide?

да, нужно нацелить вектор сброса на флеш-память. в настройках линкера проекта для сегментов программы указать on-chip или off-chip ОЗУ. тогда при старте ниос будет считывать код программы в ОЗУ и исполнять его оттуда. можно и напрямую с флешки код исполнять, но это будет медленнее, а переменные все равно придется в ОЗУ хранить.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 15 2009, 13:01
Сообщение #42


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Сегодня удачно загрузил soft в Flash и теперь с нее загружаюсь, правда скорость оставляет желать лучшего.
Go to the top of the page
 
+Quote Post
KriGLer
сообщение Jan 13 2010, 07:52
Сообщение #43





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



А возможно ли cfi-flash сделать памятью программ ниоса и в ходе выполнения программы писать туда данные, в конец адресного пространства напримар. ?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 13 2010, 08:09
Сообщение #44


Гуру
******

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



Цитата(KriGLer @ Jan 13 2010, 13:52) *
А возможно ли cfi-flash сделать памятью программ ниоса и в ходе выполнения программы писать туда данные, в конец адресного пространства напримар. ?

нет, не получится. нужно с флешки загрузить код в ОЗУ, передать ему управление, тогда будет доступ на запись во флеш.
Go to the top of the page
 
+Quote Post
KriGLer
сообщение Jan 13 2010, 12:41
Сообщение #45





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



Цитата(vadimuzzz @ Jan 13 2010, 11:09) *
нет, не получится. нужно с флешки загрузить код в ОЗУ, передать ему управление, тогда будет доступ на запись во флеш.

Спасибо!
т.е. надо Reset Vector на флешку указать, а Exception Vector на sram и задать смещение, я правильно понимаю? ))
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 13 2010, 12:47
Сообщение #46


Гуру
******

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



Цитата(KriGLer @ Jan 13 2010, 18:41) *
т.е. надо Reset Vector на флешку указать, а Exception Vector на sram и задать смещение, я правильно понимаю? ))

еще в NIOS-IDE в настройках System Library все в ОЗУ запихать
Go to the top of the page
 
+Quote Post
KriGLer
сообщение May 19 2010, 12:04
Сообщение #47





Группа: Участник
Сообщений: 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

что делать? ))) как заставить прогу стартануть, где что подправить? sad.gif подскажите пожалуйста.

(с флехи все прекрасно стартует и работает.)
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 19 2010, 13:28
Сообщение #48


Гуру
******

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



а как прогу шьете? через flash-programmer?
Go to the top of the page
 
+Quote Post
KriGLer
сообщение May 19 2010, 17:53
Сообщение #49





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



Да, через него
Go to the top of the page
 
+Quote Post
barabek
сообщение May 19 2010, 21:15
Сообщение #50


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(KriGLer @ May 20 2010, 04:53) *
Да, через него


А что пишет после загрузки? И дебагерром до куда доходит? Там в настройках можно разные точки останова после ресета выставить и пошагово идти либо начиная с бутлоадера, либо с main / alt_main
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 19 2010, 23:00
Сообщение #51


Гуру
******

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



Цитата(KriGLer @ May 20 2010, 00:53) *
Да, через него

тогда давайте логи программера. какой версии квартус?
Go to the top of the page
 
+Quote Post
KriGLer
сообщение May 20 2010, 05:06
Сообщение #52





Группа: Участник
Сообщений: 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
естественно крякнутый.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 20 2010, 07:55
Сообщение #53


Гуру
******

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



а ПЛИС как конфигурируется?
Go to the top of the page
 
+Quote Post
KriGLer
сообщение May 20 2010, 09:01
Сообщение #54





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



.jic фалом через jtag

EP2C20 + EPCS4
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 20 2010, 12:02
Сообщение #55


Гуру
******

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



а сколько у вас памяти (on-chip)?
Go to the top of the page
 
+Quote Post
KriGLer
сообщение May 20 2010, 12:43
Сообщение #56





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



)))) она отключена вообще blush.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 20 2010, 12:56
Сообщение #57


Гуру
******

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



Цитата(KriGLer @ May 20 2010, 19:43) *
)))) она отключена вообще blush.gif

пардон, я видимо проглядел. покажите картинку из SOPC )
Go to the top of the page
 
+Quote Post
KriGLer
сообщение May 20 2010, 13:12
Сообщение #58





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



Прикрепленное изображение
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение May 20 2010, 13:56
Сообщение #59


Гуру
******

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



так, ошибок нигде не видно. тогда идем по порядку.
1. стереть CFI, проинициализировать EPCS. после подачи питания из ниос-иде жмем run as hardware. убеждаемся, что работает.
2. зашить флеш-программером CFI. сделать дамп флешки и сличить с исходным файлом.
Go to the top of the page
 
+Quote Post
AntiL
сообщение Oct 25 2011, 11:57
Сообщение #60





Группа: Новичок
Сообщений: 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?

чую проблема с правильными адресами и т.д. но как решить допереть не могу.
Go to the top of the page
 
+Quote Post
AntiL
сообщение Oct 27 2011, 04:39
Сообщение #61





Группа: Новичок
Сообщений: 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 только их и переключает

Go to the top of the page
 
+Quote Post
AntiL
сообщение Oct 27 2011, 06:44
Сообщение #62





Группа: Новичок
Сообщений: 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
Go to the top of the page
 
+Quote Post

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

 


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


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