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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> 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
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

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

 


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


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