-
- Для компилятора 5 версии нужно выбирать порт из каталога rvds а для
6 версии из каталога gcc - NickB(04.09.2024 15:04)
- Да, моя проблема решается так, надо взять порт для GCC. Попутно выяснилась еще пара мелких деталей. AlexBi(471 знак., 04.09.2024 16:53)
- Чтобы включить FPU (Floating Point Unit) в микроконтроллере Artery
AT32F407, нужно выполнить следующие шаги: Бoмж(648 знак., 03.09.2024 21:48)
- На днях поймал занятный эффект с этой штукой. С включением оптимизации -flto всё настолько оптимизировалось, что компилятор вынес на начало Reset_Handler инструкцию "vpush {d8}". Соответственно, FPU ещё не включен, получается Hard Fault :-) - SciFi(04.09.2024 08:42)
- До исполнения кода у меня еще не дошло. У меня на этапе компиляции
не проходит проверка __TARGET_FPU_VFP Попытка добавлять компилятору
ключи в части fpu, или в самом кейле ставил "использовать fpu", все
безуспешно, __TARGET_FPU_VFP не дефайнился, код не компилировался.
Задефайнить его вручную я могу, но это явно не тот метод. Возможно
в примере Artery устаревший компилятор (5й), а сейчас более новый и
у него другим дефайном проверяется использование fpu. Но порт
freertos и AlexBi(102 знак., 03.09.2024 22:17)
- Думаю можно задефайнить его вручную. il-2(681 знак., 04.09.2024 10:24)
- Гугел говорит, что этот макрос определён компилятором, если ключики
указывают на правильный FPU. Наверняка можно как-то увидеть
командную строку компилятора и проверить ключики. - SciFi(04.09.2024 10:32)
- Нет там его. Скорее всего у Алекса используется старый тип проекта
(расширение .uvproj), там надо все ручками задавать. Новый тип
проекта (.uvprojx) поддерживает паки, и там да - те-же символы
выбора процессора по умолчанию выбираются вместе с процессором, и
их видно в командной строке. - il-2(04.09.2024 11:20)
- Проект у меня uvprojx, паки Artery установлены, при выборе в кейле
типа FPU "Single Precision" компилятору добавляются ключи
-mfpu=fpv4-sp-d16 -mfloat-abi=hard чего по всем признакам должно
быть достаточно, но не помогает. Видимо оно не работает в версии
компилятора 6.хх - AlexBi(04.09.2024 12:30)
- Я было сначала тоже 6 поставил. Начались проблемы с артеревскими экзамплами. Не стал разбираться, откатил на 5. - vesago(04.09.2024 14:30)
- Ну и даже так. Если это не делается ни паком, ни компилятором - а
необходимо для компиляции проекта - надо ручками делать. - il-2(04.09.2024 12:43)
- Есть обоснованное опасение, что замена компилятора на таком
обширном проекте вылезет боком не только в одном макросе. - SciFi(04.09.2024 12:45)
- Да, после перехода на 5, потянулся шлейф ошибок. Разбираться не стал, взял подходящий порт для версии 6 (порт для GCC). Вообще, судя по отзывам в и-нете, версия 6 гораздо современнее, код делает лучше, лучше понимает С++, -flto умеет и т.д.. Мне кажется лучше потратить время на адаптацию примеров Artery, а не переходить на версию 5. - AlexBi(04.09.2024 17:00)
- Есть обоснованное опасение, что замена компилятора на таком
обширном проекте вылезет боком не только в одном макросе. - SciFi(04.09.2024 12:45)
- Проект у меня uvprojx, паки Artery установлены, при выборе в кейле
типа FPU "Single Precision" компилятору добавляются ключи
-mfpu=fpv4-sp-d16 -mfloat-abi=hard чего по всем признакам должно
быть достаточно, но не помогает. Видимо оно не работает в версии
компилятора 6.хх - AlexBi(04.09.2024 12:30)
- Нет там его. Скорее всего у Алекса используется старый тип проекта
(расширение .uvproj), там надо все ручками задавать. Новый тип
проекта (.uvprojx) поддерживает паки, и там да - те-же символы
выбора процессора по умолчанию выбираются вместе с процессором, и
их видно в командной строке. - il-2(04.09.2024 11:20)
- Гугел говорит, что этот макрос определён компилятором, если ключики
указывают на правильный FPU. Наверняка можно как-то увидеть
командную строку компилятора и проверить ключики. - SciFi(04.09.2024 10:32)
- Думаю можно задефайнить его вручную. il-2(681 знак., 04.09.2024 10:24)
- А ты вообще, кроме freertos, системные библиотеки процессора в
проект подключил? Там, в частности, есть "system_at32f403a_407.c",
в котором: Idler(248 знак., 03.09.2024 21:22)
- До библиотек еще не дошло, у меня файл не компилируется, т.к.
проверяет __TARGET_FPU_VFP которого почему-то нет. - AlexBi(03.09.2024 22:19)
- Так откуда же он это прочитает, если библиотеки не подключены?
Телепатически из чипа? - Idler(03.09.2024 23:52)
- ну примерно POV(1 знак., 03.09.2024 23:53, картинка)
- Если бы это был Eclipse, то в шаблоне проекта это имя было бы явно определено и в параметрах компилятора, и в параметрах компоновщика. И передавалось бы как аргумент командной строки. - Nikolay_Po(03.09.2024 23:25)
- Первая ссылка поиска Яндекс: Nikolay_Po(107 знак., 03.09.2024 23:22, ссылка)
- Пока мои исследования привели к находке, что для AMR есть два компилятора, v5.03 и v6.22 оба на сайте ARM, обе версии Latest. Вместе с кейлом у меня установился версии 6, а для этой версии среди predefined macro нет __TARGET_FPU_VFP, а для версии 5 он есть. Получается я установил неправильную разновидность кейла? Как найти правильную? AlexBi(2 знак., 04.09.2024 11:32, ссылка, ссылка)
- Теоретически - да. Практически - не выходит каменный цветок. И в кейле выбирал "fpu single precision", и ключами добавлял --fpu=разные-варианты, не помогает. Видимо у меня какая-то более фундаментальная ошибка. Буду сегодня дальше разбираться. - AlexBi(04.09.2024 08:26)
- Так откуда же он это прочитает, если библиотеки не подключены?
Телепатически из чипа? - Idler(03.09.2024 23:52)
- До библиотек еще не дошло, у меня файл не компилируется, т.к.
проверяет __TARGET_FPU_VFP которого почему-то нет. - AlexBi(03.09.2024 22:19)
- Для компилятора 5 версии нужно выбирать порт из каталога rvds а для
6 версии из каталога gcc - NickB(04.09.2024 15:04)