Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программа для Nios в On-Chip Memory
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
torik
Скомпилировал программу для ниос, загружать ее (всего пару сотен байт) хочу в On-Chip Memory, которой необходимо указать .hex для инициализации... Как его сделать или где взять?
Methane
Цитата(torik @ Feb 3 2009, 13:25) *
Скомпилировал программу для ниос, загружать ее (всего пару сотен байт) хочу в On-Chip Memory, которой необходимо указать .hex для инициализации... Как его сделать или где взять?

Компилятор должен сделать. Если там gcc, то из elf objdump может сделать.
torik
А поподробнее, как конвертировать из elf в hex?
Methane
Цитата(torik @ Feb 3 2009, 14:13) *
А поподробнее, как конвертировать из elf в hex?

Извиняюсь.

Цитата
objcopy
Usage: objcopy [option(s)] in-file [out-file]
Copies a binary file, possibly transforming it in the process
The options are:
-I --input-target <bfdname> Assume input file is in format <bfdname>
-O --output-target <bfdname> Create an output file in format <bfdname>

objcopy: supported targets: elf64-x86-64 elf32-i386 a.out-i386-linux efi-app-ia32 efi-app-x86_64 elf64-little elf64-big elf32-little elf32-big srec symbolsrec tekhex binary ihex


У вас должно быть что-то вроде nios-objcopy итд.
torik
простите, может я туплю, но ничего не понял - где чего прописать-то, где чё должно быть?

Ну так что, кто-нибудь подскажет, как создавать в ниосе hex из (или вместо) elf? Как-то делал раньше, но давно это было, я уж и забыл
Tarantul
Компилятор делает hex сам в папке с системой, квартус при компиляции пихает его в pof/sof. Все автоматом, нечего делать не надо.
torik
На самом деле туплю, спасибо. Я хотел сперва скомпилировать программу, а потом систему собрать...
EvgenyNik
В папке проекта onchip_mem.hex (или имя_внутренней_памяти.hex) создается при компиляции в NIOS_IDE. Но, разумеется, прежде проект должен быть создан, определено семейство ПЛИС, тип ядра, набор периферии, тип и размер памяти.
torik
Да, спасибо. Я уже вспомнил (давно последний раз в он-чип память программу пихал)...
DIMEbag
И тут я бы хотел вставить свои 5 копеек и спросить в продолжение темы:
вот у меня есть плата, на ней Cyclone первый, конфигурируется через active serial интерфейс(JTAG не распаян - когда плата проектировалась собирались всё делать на логике, но оказалось, что сейчас удобнее воспользоваться процессором, поэтому есть нужда в его использовании без JTAG), так вот для active serial надо создать файл pof через встроенный конвертор, я туда забиваю конфигурацию проца и логику(файл sof), а вот при попытке добавить файлик hex с прошивкой выдаётся сообщение об ошибке:

"data in HEX File overlaps between data blocks at address8 and address0"

Что я делаю не так?
Возможно ли вообще создать работоспособную систему с софт-процессором без использования JTAG?

версия Quartus'а - девятая
torik
А как Вы прошиваете ПЛИС без JTAG?
Kuzmi4
2 torik - через AS.
http://www.altera.com/literature/hb/cyc/cyc_c51013.pdf
Figure 13–9. In-System Programming of Serial Configuration Devices
Нажмите для просмотра прикрепленного файла

2 DIMEbag
Цитата
Возможно ли вообще создать работоспособную систему с софт-процессором без использования JTAG?

Можно, только отлаживаться скорей всего будете на модельсиме, а не в реальной системе, что в принципе не есть гут...
Зря вы житаг не заложили....
DIMEbag
Цитата(Kuzmi4 @ Sep 21 2009, 11:18) *
2 DIMEbag
Можно, только отлаживаться скорей всего будете на модельсиме, а не в реальной системе, что в принципе не есть гут...
Зря вы житаг не заложили....

Да, полностью согласен - зря.
Но с другой стороны, часть, возложенная на процессор достаточно простая, так что наверное справимся.

И всё-таки, что это за глюк/ошибка с конвертированием HEX в POF?
Kuzmi4
2 DIMEbag - на сколько я знаю траблов там не должно быть, квартус всё сам собирать должен - у меня в SOF-е, что я через житаг заливал, всё это было (когда свой загрузчик написать нужно было - он в он-чип-роме хранился).

Выложите последовательность действий и прожект если не большой - посмотрим-с..
DIMEbag
Цитата(Kuzmi4 @ Sep 21 2009, 13:21) *
2 DIMEbag - на сколько я знаю траблов там не должно быть, квартус всё сам собирать должен - у меня в SOF-е, что я через житаг заливал, всё это было (когда свой загрузчик написать нужно было - он в он-чип-роме хранился).

Выложите последовательность действий и прожект если не большой - посмотрим-с..

Проект большой, 20мБ (там логики уже много), поэтому выкладывать не буду.

А последовательность действий такая:
1. в SoPC сгенерил ядро
2. добавил его в проект и скомпилировал проект
3. Запустил NIOS EDA(ну или как там его, в общем среду разработки софта)
4. Создал на основе моего ядра мелкий проект(hello_world), скомпилировал(ошибок в логе нет)
5. взял HEX файл, сгенерированный при компиляции и попытался конвертировать через quartus, появилась та самая ошибка.

При этом когда конвертирую sof - файл с логикой, то всё в порядке.
Kuzmi4
2 DIMEbag - если брать во внимание, что вы используете он-чип раму, то тогда когда создавали компонент, нужно было поставить галку напротив инит-файла.
При сборке соф-а (ну или другого конфиг-файла) - указанный хекс квартусом пропишется как инициализационный для данных блоков памяти - то есть информация уже будет в конфиг-файле после окончания работы квартуса.

Глянте например вот сюда - немного не по теме конечно, но вроде процесс запихивания в ром-у должен быть разжёван по полочкам wink.gif
(сорцы на всякий случай)
DIMEbag
Спасибо огромное!
Завра на работе поизучаю pdf =)

PS не заметил галку напротив инит файла, это уже в quartus'e? Который Mega-wizard или в SOPC - builder'е?
Kuzmi4
2 DIMEbag - галка инициализации рамы файлом есть и там и там, у вас же SoC - вот в SoPC Builder-е, когда создаёте компонент и смотрите laughing.gif
DIMEbag
Ага, я сегодня уже сам нашёл %) Вроде бы всё комплируется. А этот hex файл надо хранить в папке с проектом квартуса или sopc? (просто у меня глюк - в NIOS не создаются проекты, если файл ptf лежит не в директории nios/examples, что-то с java)
а не подскажите, незарегистрированный quartus прошивать не будет?
а то вот у меня стоит 2 квартуса, 6й(регистрированный) и 9й.
В 6м прошиваю - всё нормально, включаю плату - вся логика работает, но там нет NIOS (в моей поставке)
Пршиваю с использованием 9го - вроде всё прошивается без ошибок, но даже логика не работает laughing.gif
Kuzmi4
2 DIMEbag - Hex у меня в руте прожекта лежал, где и всё остальное собсно.
На счёт ptf - там же можно тыкануть IDE-шке где он собсно находится 07.gif хотя жаба - есчё та гадость, может конечно и заглючить на одно место, кто её знает...
Прошивалка идёт так же отдельно от квартуса ( ftp.altera.com/outgoing/release/90sp2_quartus_programmer.exe например) , ставим её на комп без квартуса и шъём себе на здоровъе laughing.gif - по мойму так..

И зачем вам 2 квартуса wacko.gif
DIMEbag
Путь к .ptf указывается и он его вроде видит и cpu определяет правильно, но вот когда жмёшь кнопку finish, выдаёт ошибку. Ну это не у меня одного, здесь на форуме эта проблема уже обсуждалась. Буду Hex и там и там хранить =)))

А quartus 6й я оставил на всякий случай - потому что он проверенный =)
как нормально крякну 9й, стану только с ним работать.
А 2 квартуса - это совсем неудобно %)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.