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

 
 
 
Reply to this topicStart new topic
> Cyclone V HPS компилятор, Ошибка gcc
serjj
сообщение Jan 16 2015, 13:01
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Собираю под armcc, компиляция проходит успешно. Попробовал альтерный проект для gcc, выдаёт следующую ошибку:
Код
/usr/bin/sh: mkimage: command not found
make: *** [hello-mkimage.bin] Error 127

Есть идеи, как лечить? rolleyes.gif
И сразу еще вопрос, кто в основном это чудо чем собирает? gcc или armcc?
Go to the top of the page
 
+Quote Post
WitFed
сообщение Jan 16 2015, 16:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



mkimage -- это ехе-шник, который где-то в недрах DS-5 родится, если самому компилить Прелоадер.
Надо поискать *mkimage* -- исходники его поставляются.
Мне самому интересно, кто круче -- armcc или eabi.
Никак не могу найти, как хоть где-то из С вызывать NEON-команды, типа как у Тексусов были 15 лет назад ещё интринсики для вызова своих asm-DSP-фич, которые компилятор потом сам красиво шедулил. А связываться с ассемблером не хочу принципиально, раз хоть где-то "наука достигла".
CMSIS есть для контроллерцев, а нам Альтера вроде не положила такого...
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 16 2015, 20:48
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
mkimage -- это ехе-шник, который где-то в недрах DS-5 родится, если самому компилить Прелоадер.
Надо поискать *mkimage* -- исходники его поставляются.

Помогло добавлением в переменную PATH пути до cygwin, который поставляется с Квартусом rolleyes.gif
Но так и не смог запустить ваш пример инициализации MMU sad.gif Подцепил вроде все нужные инклуды, но компилятор упорно ругается на альтерные функции, которые в примере используются. Собирал gcc. Не поделитесь мудростью, как вы этот код все таки запустили?

ЗЫ: как я понял, инициализация MMU и является тем узким местом, которое влияет на конечную производительность ядра? В случае загрузки линукса она встроена в процесс запуска ОС, а в случае baremetal приходится делать ее вручную?

Сообщение отредактировал serjj - Jan 16 2015, 20:49
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 16 2015, 21:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



MMU - это вроде как просто защита многопоточных сред, чтобы один поток другой не загадил. Защита на железному уровне. Так что если у вас бареметал без операционки то вам она может и не понадобиться...
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 16 2015, 21:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(WitFed @ Jan 16 2015, 19:53) *
Никак не могу найти, как хоть где-то из С вызывать NEON-команды,


Если собирать gcc, то:

1) автоматическая оптимизация, через -ftree-vectorize -mfpu=neon -mfloat-abi=softfp - компилятор сам векторизирует обычные С-циклы.
2) https://gcc.gnu.org/onlinedocs/gcc-4.6.1/gc...Intrinsics.html

Если armcc это rvct - то там интринсики те же, что и в gcc. А вот tree-vectorizer-а нету. И, кстати, далеко не в каждой сборке gcc этот векторайзер имеется (он требует кучи всяких хитрых либ навроде cloog и ppl, поэтому мне пришлось собирать gcc самому, чтобы он с этими опциями был)
Go to the top of the page
 
+Quote Post
WitFed
сообщение Jan 19 2015, 15:46
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



Ага, спасибо, будем искать... Значит, мои наезды в большинстве случаев от плохого образования wink.gif

...MMU и MPU -- это немного разное. Одно management, другое -- protection.

...А когда я компилил пример инита MMU, там была только проблема инита в структурах -- точка, имя поля, потом = значение. Если это хитро-красивое расширение С откинуть и оставить одни значения через запятую в {}, то проблем нет. А поля шли в порядке объявления, ничего не свопалось, чтобы сильно наглючить. И BigEndian/LowEndian вроде далеко...
Go to the top of the page
 
+Quote Post
tvcam
сообщение Jan 19 2015, 17:48
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 10-12-04
Из: spb
Пользователь №: 1 435



WitFed,
Да про ключики -mfpu=neon для Neon забыл напомнить, и ещё, у меня компилятор отказывался векторизовать пока не поставил оптимизацию -O1 (или -O2 , непомню).
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 19 2015, 17:59
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



А еще есть способ кроссплатформенной векторизации - ORC – The Oil Runtime Compiler , такой хитрый язык, который компилируется на разные параллельные процессоры, в .т.ч. и на neon. В gstreamer используется местами.
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 20 2015, 10:32
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Собираю сейчас с помощью gcc. Компилятор ругается, если есть неиспользуемые переменные/функции, выдавая ошибки и заканчивая билд. Кто знает, как сделать, что бы эти ошибки заменялись варнингами?
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 20 2015, 12:14
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Убрать опцию "treat warnings as errors", которую Вы где-то дали (-Werror).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:55
Рейтинг@Mail.ru


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