|
|
  |
Reset Vector и FLASH |
|
|
|
Feb 24 2011, 19:07
|
Группа: Новичок
Сообщений: 6
Регистрация: 19-10-09
Пользователь №: 53 053

|
Имеется собственноручно написанный модуль для Serial Flash, который подключен к Nios. В данной памяти будет хранится программный код для процессора. Поэтому необходимо данный модуль подключить к процессору как Reset Vector. Возможно ли сделать чтобы данный компонент (Serial Flash) определялся как память и была возможность использовать его в качестве reset vector?
|
|
|
|
|
Feb 24 2011, 23:48
|

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

|
Цитата(vilary @ Feb 25 2011, 01:07)  В данной памяти будет хранится программный код для процессора. только храниться или еще и исполняться? если первое, то компонент epcs controller из билдера состоит из 2 модулей: on-chip ram и контроллер spi. когда вектор сброса устанавливается "на epcs controller", то фактически он указывает на начало on-chip ram, где располагается код бутлодера. если второе, то компонент со стороны, подключенной к процессору должен выглядеть как память большого объема. внутри это опять таки контроллер spi, небольшое буферное ОЗУ, откуда фактически исполняется программа, ну и логика, реализующая "подкачку" данных из epcs в ОЗУ. Эта тема уже обсуждалась на форуме, была даже рабочая реализация.
|
|
|
|
|
Feb 25 2011, 07:08
|
Группа: Новичок
Сообщений: 6
Регистрация: 19-10-09
Пользователь №: 53 053

|
Цитата(vilary @ Feb 24 2011, 22:07)  В данной памяти будет хранится программный код для процессора. Здесь подразумевается, что конфигурация плис хранится в epcs, но т.к. с объемом памяти изначально не подрасчитали, то исполняющий код для процессора будет хранится во флэш. Т.е. после того как плис была сконфигурирована данными из epcs (.sof файл), плис должна загрузить софт для Nios из флэш.
|
|
|
|
|
Feb 25 2011, 07:51
|
Группа: Новичок
Сообщений: 6
Регистрация: 19-10-09
Пользователь №: 53 053

|
Цитата(vadimuzzz @ Feb 25 2011, 10:12)  т.е. к FPGA поключены 2 флешки, одна с sof, вторая с программой ниоса? нет проблем, ставьте epcs контроллер и цепляйте его ко второй флешке. А как быть с тем, что epcs и флэш имеют разные командные слова? Т.е. когда система уже сконфигурирована полностью, то значения командных слов можно изменит в самом драйвере. А при начальной загрузке, когда программа для ниоса еще не загружена, как будет происходить обращение к самой флэш? Используются ли там командные слова для чтения с флэш (epcs controller)?
|
|
|
|
|
Feb 25 2011, 08:02
|

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

|
Цитата(vilary @ Feb 25 2011, 13:51)  А как быть с тем, что epcs и флэш имеют разные командные слова? Т.е. когда система уже сконфигурирована полностью, то значения командных слов можно изменит в самом драйвере. А при начальной загрузке, когда программа для ниоса еще не загружена, как будет происходить обращение к самой флэш? Используются ли там командные слова для чтения с флэш (epcs controller)? вы так интересно пишете - один момент прояснится, другой затуманится  давайте ближе к телу, что за ПЛИС, какие флешки? касаемо загрузки: sof грузится не epcs-контроллером, его тянет сама ПЛИС, если настроена на AS-mode. Загрузка программы ниоса происходит в юзерспейсе, когда кристалл уже сконфигурирован, конфликта не будет.
|
|
|
|
|
Feb 25 2011, 08:17
|
Группа: Новичок
Сообщений: 6
Регистрация: 19-10-09
Пользователь №: 53 053

|
Цитата(vadimuzzz @ Feb 25 2011, 11:02)  вы так интересно пишете - один момент прояснится, другой затуманится  давайте ближе к телу, что за ПЛИС, какие флешки? касаемо загрузки: sof грузится не epcs-контроллером, его тянет сама ПЛИС, если настроена на AS-mode. Загрузка программы ниоса происходит в юзерспейсе, когда кристалл уже сконфигурирован, конфликта не будет. Плис - Cyclone, epcs2, flash - at45. Сама флэш аналогична epcs4, но командные слова для работы с данной флэш отличаются от командных слов epcs (это если смотреть драйвер на epcs controller). Во флэшке хранятся код для ниоса и некоторые данные, которые потом будут использоваться в процессе работы устройства. В случае, когда epcs установлен в качестве reset vector, как происходит чтение данных с нее? Учитываются ли там командные слова для epcs?
|
|
|
|
|
Feb 25 2011, 08:25
|

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

|
Цитата(vilary @ Feb 25 2011, 14:17)  В случае, когда epcs установлен в качестве reset vector, как происходит чтение данных с нее? Учитываются ли там командные слова для epcs? читается в буфер, потом из буфера в заданное ОЗУ переносится. когда все программы скопирована, управление передается на ОЗУ. можете посмотреть код загрузчика, вам надо соорудить нечто подобное с учетом специфики флешки: ip/altera/nios2_ip/altera_nios2/boot_loader_sources и да, использовать готовый компонент epcs-контроллера не получится, первый циклон не позволяет назначить его ноги в произвольное место. придется делать свой компонент.
|
|
|
|
|
Feb 25 2011, 23:38
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(vilary @ Feb 25 2011, 19:17)  Плис - Cyclone, epcs2, flash - at45. Сама флэш аналогична epcs4, но командные слова для работы с данной флэш отличаются от командных слов epcs Добавлю к уже сказанному. Прежде всего почитайте альтеровский "an458 alternative nios boot". У меня немного другая была проблема. Опишу мои действия, может помогут. Копировал папку с родным бутлоадером (только у меня в 9,0 путь другой altera\90\nios2eds\components\altera_nios2\boot_loader_sources) Там в папке уже имеется makefile. Редактировал родной бут под свои нужды. Запустил commandshell и выполнял команду make в папке с редактируемым исходнимом. Далее полученый бутлоадер с расширением srec нужно перевести в HEX формат командой nios-elf-objcopy –O ihex –I srec <мой_бутлоадер>.srec <мой_бутлоадер>.hex .Либо спрятать это в сам makefile Код %.hex : $(OBJ)/%.elf $(OBJ) $(E) Creating MY HEX file $@ $(S) elf2hex --base=0x000 --end=0x7ff --width=32 --input=$< --output-target=$@ $(S) cp $@ <мой_бутлоадер>.hex При этом нужно в этом же makefile добавить свой hex-файл в качестве таргета: Код SRECS = \...(старые таргеты)….. \<мой_бутлоадер>.hex
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|