Перейти к содержанию
    

Добрый день!

 

Имею кит CIII_DEV_KIT. В проекте есть NIOS с флэшкой.

 

Такая проблема: надо собрать .sof и .elf в один файл и залить, чтобы запускалось.

 

Делаю так:

sof2flash --epcs --input=project.sof --output=hw.flash --verbose

elf2flash --input=project_nios.elf --output=sw.flash --boot="$ALTERA/nios2eds/components/altera_nios2/boot_loader_cfi.srec" \
          --base=0xc000000 --end=0x10000000 --reset=0xe000000 --verbose

nios2-elf-objcopy -I srec -O binary hw.flash hw.bin
nios2-elf-objcopy -I srec -O binary sw.flash sw.bin

cat hw.bin sw.bin > firmware.bin
nios2-elf-objcopy -I binary -O ihex firmware.bin firmware.hex

quartus_cpf -c make_pof.cof
quartus_pgm pgm_pof.cdf

 

В make_pof.cof, соответственно, прописано:

post-67084-1424418090_thumb.png

 

В pgm_pof.cdf прописано:

post-67084-1424418272_thumb.png

 

Программатор долго сначала стирает, затем прошивает, но проект в итоге не стартует (горит светодиод ERROR).

 

Что я делаю не так?

Спасибо!

 

 

P.S.: Если делать по отдельности - сначала заливать только .POF с образом ПЛИС, потом .SOF с ней же, потом на нее накатывать .FLASH с ниосом, то все работает прекрасно. Но хочется уйти от такой кучи файлов.

Изменено пользователем ilkz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что я делаю не так?

Спасибо!

P.S.: Если делать по отдельности - сначала заливать только .POF с образом ПЛИС, потом .SOF с ней же, потом на нее накатывать .FLASH с ниосом, то все работает прекрасно. Но хочется уйти от такой кучи файлов.

 

Попробуйте flash programmer в Eclipse. Там вручную конвертировать и объединять sof и elf не нужно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте flash programmer в Eclipse. Там вручную конвертировать и объединять sof и elf не нужно.

 

Так для того, чтобы им воспользоваться, надо все равно сначала .sof залить (иначе он не видит что в чип залито), плюс потом .POF, чтобы сам образ ПЛИС во флэшке оказался. А мне надо уйти от этих, по сути, лишних для производственника действий. Хочу просто один файл (содержащий и ПЛИС и ОС), который заливается через какой-то программатор (пускай пока через quartus_pgm), после чего устройство готово к использованию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так для того, чтобы им воспользоваться, надо все равно сначала .sof залить (иначе он не видит что в чип залито), плюс потом .POF, чтобы сам образ ПЛИС во флэшке оказался. А мне надо уйти от этих, по сути, лишних для производственника действий. Хочу просто один файл (содержащий и ПЛИС и ОС), который заливается через какой-то программатор (пускай пока через quartus_pgm), после чего устройство готово к использованию.

 

Буквально недавно шил в память один старый проект, собранный в Q7.1. Для заливки во флеш использовал Q 11.1. Делал следующее:

Залил через программер sof

Открыл flash programmer там указал sopcinfo и добавил файлы на заливку: sof + elf

нажал programm flash.

отключил/включил питание. Все заработало

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такой вариант:

1) Компилите проект в Eclipse

2) Выполняете Make Targets -> Build -> mem_init_generate -> OK

3) В Quartus добавляете файл software/project_name/mem_init/meminit.qip в проект

4) Компилите проект в Quartus

5) Полученный SOF уже содержит проинициализированную память для Nios II.

6) Конвертируете SOF в нужный формат и заливаете в конфигурационное устройство.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sof2flash --epcs --input=project.sof --output=hw.flash --verbose

Я таки не понял - у Вас флэшка параллельная (CFI) или последовательная (EPCS)???

И еще - какой установлен режим конфигурирования (что на MSEL'ах)?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Буквально недавно шил в память один старый проект, собранный в Q7.1. Для заливки во флеш использовал Q 11.1. Делал следующее:

Залил через программер sof

Открыл flash programmer там указал sopcinfo и добавил файлы на заливку: sof + elf

нажал programm flash.

отключил/включил питание. Все заработало

 

Делаю в точности как Вы описали - не стартует, горит светодиод ERROR.

 

Выхлоп флэш-программера:

Info: Info: *******************************************************************
Info: Info: Running Quartus II 32-bit Convert_programming_file
Info: Info: Command: quartus_cpf --no_banner --convert D:/projects/pack/firmware.sof D:/projects/pack/firmware_ext_flash.rbf
Info: Info: Quartus II 32-bit Convert_programming_file was successful. 0 errors, 0 warnings
Info:	 Info: Peak virtual memory: 189 megabytes
Info:	 Info: Processing ended: Fri Feb 20 14:32:58 2015
Info:	 Info: Elapsed time: 00:00:01
Info:	 Info: Total CPU time (on all processors): 00:00:01
Info: Using cable "USB-Blaster [uSB-0]", device 1, instance 0x00
Info: Resetting and pausing target processor: OK
Info: Reading System ID at address 0x08000040: 
Info:	 ID value verified
Info:	 Timestamp value was not verified: value was not specified
Info: 
Info:			   : Checksumming existing contents		  
Info: 
Info: Checksums took 1.2s										
Info: Erase not required
Info: 
Info: 00000000 ( 0%): Programming							 
Info: 
Info: 00020000 ( 3%): Programming							 
Info: 
Info: 00040000 ( 7%): Programming							 
Info: 
Info: 00060000 (11%): Programming							 
Info: 
Info: 00080000 (14%): Programming							 
Info: 
Info: 000A0000 (18%): Programming							 
Info: 
Info: 000C0000 (22%): Programming							 
Info: 
Info: 000E0000 (25%): Programming							 
Info: 
Info: 00100000 (29%): Programming							 
Info: 
Info: 00120000 (33%): Programming							 
Info: 
Info: 00140000 (36%): Programming							 
Info: 
Info: 00160000 (40%): Programming							 
Info: 
Info: 00180000 (44%): Programming							 
Info: 
Info: 001A0000 (47%): Programming							 
Info: 
Info: 001C0000 (51%): Programming							 
Info: 
Info: 001E0000 (55%): Programming							 
Info: 
Info: 00200000 (58%): Programming							 
Info: 
Info: 00220000 (62%): Programming							 
Info: 
Info: 00240000 (66%): Programming							 
Info: 
Info: 00260000 (69%): Programming							 
Info: 
Info: 00280000 (73%): Programming							 
Info: 
Info: 002A0000 (77%): Programming							 
Info: 
Info: 002C0000 (80%): Programming							 
Info: 
Info: 002E0000 (84%): Programming							 
Info: 
Info: 00300000 (88%): Programming							 
Info: 
Info: 00320000 (91%): Programming							 
Info: 
Info: 00340000 (95%): Programming							 
Info: 
Info: 00360000 (99%): Programming							 
Info: 
Info: Programmed 3488KB in 52.8s (66.0KB/s)					  
Info: Device contents checksummed OK
Info: Leaving target processor paused
Info: Using cable "USB-Blaster [uSB-0]", device 1, instance 0x00
Info: Resetting and pausing target processor: OK
Info: Reading System ID at address 0x08000040: 
Info:	 ID value verified
Info:	 Timestamp value was not verified: value was not specified
Info: 
Info:			   : Checksumming existing contents		  
Info: 
Info: Checksums took 0.1s										
Info: Erase not required
Info: 
Info: 02000000 ( 0%): Programming							 
Info: 
Info: 02020000 (37%): Programming							 
Info: 
Info: 02040000 (75%): Programming							 
Info: 
Info: Programmed 338KB in 5.5s (61.4KB/s)						
Info: Device contents checksummed OK
Info: Leaving target processor paused

Изменено пользователем des00
Используйте тег codebox для размещения больших сегментов кода (с) Модератор

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получается возможность сделать единый файл прошивки из .sof+.elf, и залить его сразу, отсутствует?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В проекте, где ниос работает на onchip memory использую вариант doom13. При производстве прошивается только .pof.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В проекте, где ниос работает на onchip memory использую вариант doom13. При производстве прошивается только .pof.

В моем случае ниос работает в ddr2-памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такой вариант:

1) Компилите проект в Eclipse

2) Выполняете Make Targets -> Build -> mem_init_generate -> OK

3) В Quartus добавляете файл software/project_name/mem_init/meminit.qip в проект

4) Компилите проект в Quartus

5) Полученный SOF уже содержит проинициализированную память для Nios II.

6) Конвертируете SOF в нужный формат и заливаете в конфигурационное устройство.

 

Спасибо, Ваш метод хорош, но он приводит к ненужной пересборке ПЛИС в случае если изменился только код NIOS (а он меняется на порядок чаще).

Вопрос по-прежнему открыт...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

он приводит к ненужной пересборке ПЛИС в случае если изменился только код NIOS (а он меняется на порядок чаще).

smart compilation не помогает ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, Ваш метод хорош, но он приводит к ненужной пересборке ПЛИС в случае если изменился только код NIOS (а он меняется на порядок чаще).

Вопрос по-прежнему открыт...

Если меняется только код Nios и используется Smart Compilation, то анализ/синтез и фиттер не выполняются, много времени не занимает, почему нет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если меняется только код Nios и используется Smart Compilation, то анализ/синтез и фиттер не выполняются, много времени не занимает, почему нет.

Большое спасибо! Давно искал нечто подобное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...