Скомпилировал программу для ниос, загружать ее (всего пару сотен байт) хочу в On-Chip Memory, которой необходимо указать .hex для инициализации... Как его сделать или где взять?
Methane
Feb 3 2009, 11:37
Цитата(torik @ Feb 3 2009, 13:25)

Скомпилировал программу для ниос, загружать ее (всего пару сотен байт) хочу в On-Chip Memory, которой необходимо указать .hex для инициализации... Как его сделать или где взять?
Компилятор должен сделать. Если там gcc, то из elf objdump может сделать.
А поподробнее, как конвертировать из elf в hex?
Methane
Feb 3 2009, 12:24
Цитата(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 итд.
простите, может я туплю, но ничего не понял - где чего прописать-то, где чё должно быть?
Ну так что, кто-нибудь подскажет, как создавать в ниосе hex из (или вместо) elf? Как-то делал раньше, но давно это было, я уж и забыл
Tarantul
Feb 3 2009, 13:48
Компилятор делает hex сам в папке с системой, квартус при компиляции пихает его в pof/sof. Все автоматом, нечего делать не надо.
На самом деле туплю, спасибо. Я хотел сперва скомпилировать программу, а потом систему собрать...
EvgenyNik
Feb 5 2009, 10:26
В папке проекта onchip_mem.hex (или имя_внутренней_памяти.hex) создается при компиляции в NIOS_IDE. Но, разумеется, прежде проект должен быть создан, определено семейство ПЛИС, тип ядра, набор периферии, тип и размер памяти.
Да, спасибо. Я уже вспомнил (давно последний раз в он-чип память программу пихал)...
DIMEbag
Sep 18 2009, 19:33
И тут я бы хотел вставить свои 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'а - девятая
А как Вы прошиваете ПЛИС без JTAG?
Kuzmi4
Sep 21 2009, 07:18
2 torik - через AS.
http://www.altera.com/literature/hb/cyc/cyc_c51013.pdfFigure 13–9. In-System Programming of Serial Configuration Devices
Нажмите для просмотра прикрепленного файла2 DIMEbag
Цитата
Возможно ли вообще создать работоспособную систему с софт-процессором без использования JTAG?
Можно, только отлаживаться скорей всего будете на модельсиме, а не в реальной системе, что в принципе не есть гут...
Зря вы житаг не заложили....
DIMEbag
Sep 21 2009, 08:55
Цитата(Kuzmi4 @ Sep 21 2009, 11:18)

2 DIMEbag
Можно, только отлаживаться скорей всего будете на модельсиме, а не в реальной системе, что в принципе не есть гут...
Зря вы житаг не заложили....
Да, полностью согласен - зря.
Но с другой стороны, часть, возложенная на процессор достаточно простая, так что наверное справимся.
И всё-таки, что это за глюк/ошибка с конвертированием HEX в POF?
Kuzmi4
Sep 21 2009, 09:21
2 DIMEbag - на сколько я знаю траблов там не должно быть, квартус всё сам собирать должен - у меня в SOF-е, что я через житаг заливал, всё это было (когда свой загрузчик написать нужно было - он в он-чип-роме хранился).
Выложите последовательность действий и прожект если не большой - посмотрим-с..
DIMEbag
Sep 21 2009, 09:36
Цитата(Kuzmi4 @ Sep 21 2009, 13:21)

2 DIMEbag - на сколько я знаю траблов там не должно быть, квартус всё сам собирать должен - у меня в SOF-е, что я через житаг заливал, всё это было (когда свой загрузчик написать нужно было - он в он-чип-роме хранился).
Выложите последовательность действий и прожект если не большой - посмотрим-с..
Проект большой, 20мБ (там логики уже много), поэтому выкладывать не буду.
А последовательность действий такая:
1. в SoPC сгенерил ядро
2. добавил его в проект и скомпилировал проект
3. Запустил NIOS EDA(ну или как там его, в общем среду разработки софта)
4. Создал на основе моего ядра мелкий проект(hello_world), скомпилировал(ошибок в логе нет)
5. взял HEX файл, сгенерированный при компиляции и попытался конвертировать через quartus, появилась та самая ошибка.
При этом когда конвертирую sof - файл с логикой, то всё в порядке.
Kuzmi4
Sep 21 2009, 09:47
2 DIMEbag - если брать во внимание, что вы используете он-чип раму, то тогда когда создавали компонент, нужно было поставить галку напротив инит-файла.
При сборке соф-а (ну или другого конфиг-файла) - указанный хекс квартусом пропишется как инициализационный для данных блоков памяти - то есть информация уже будет в конфиг-файле после окончания работы квартуса.
Глянте например вот
сюда - немного не по теме конечно, но вроде процесс запихивания в ром-у должен быть разжёван по полочкам
(
сорцы на всякий случай)
DIMEbag
Sep 22 2009, 16:32
Спасибо огромное!
Завра на работе поизучаю pdf =)
PS не заметил галку напротив инит файла, это уже в quartus'e? Который Mega-wizard или в SOPC - builder'е?
Kuzmi4
Sep 23 2009, 07:32
2 DIMEbag - галка инициализации рамы файлом есть и там и там, у вас же SoC - вот в SoPC Builder-е, когда создаёте компонент и смотрите
DIMEbag
Sep 23 2009, 15:52
Ага, я сегодня уже сам нашёл %) Вроде бы всё комплируется. А этот hex файл надо хранить в папке с проектом квартуса или sopc? (просто у меня глюк - в NIOS не создаются проекты, если файл ptf лежит не в директории nios/examples, что-то с java)
а не подскажите, незарегистрированный quartus прошивать не будет?
а то вот у меня стоит 2 квартуса, 6й(регистрированный) и 9й.
В 6м прошиваю - всё нормально, включаю плату - вся логика работает, но там нет NIOS (в моей поставке)
Пршиваю с использованием 9го - вроде всё прошивается без ошибок, но даже логика не работает
Kuzmi4
Sep 23 2009, 17:06
2 DIMEbag - Hex у меня в руте прожекта лежал, где и всё остальное собсно.
На счёт ptf - там же можно тыкануть IDE-шке где он собсно находится

хотя жаба - есчё та гадость, может конечно и заглючить на одно место, кто её знает...
Прошивалка идёт так же отдельно от квартуса ( ftp.altera.com/outgoing/release/90sp2_quartus_programmer.exe например) , ставим её на комп без квартуса и шъём себе на здоровъе

- по мойму так..
И зачем вам 2 квартуса
DIMEbag
Sep 23 2009, 19:32
Путь к .ptf указывается и он его вроде видит и cpu определяет правильно, но вот когда жмёшь кнопку finish, выдаёт ошибку. Ну это не у меня одного, здесь на форуме эта проблема уже обсуждалась. Буду Hex и там и там хранить =)))
А quartus 6й я оставил на всякий случай - потому что он проверенный =)
как нормально крякну 9й, стану только с ним работать.
А 2 квартуса - это совсем неудобно %)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.