Allregia 9 1 апреля, 2017 Опубликовано 1 апреля, 2017 · Жалоба 1) В Кейле есть такая штука, как "Target", имея несколько таргетов, можно иметь разные опции проекта (Alt-F7). Пользуюсь часто этим, например чтобы компилировать проект в вариантах для отладки и "боевой" (с другого начального адреса, под бутлоадер). 2) в Кейле опции проекта есть глобальные, а также можно сделать индивидуальные, дял каждого .с файла в проекте. Напрмер, иметь глобальную отптимизацию по размеру а на определенных файлах - по скорости. Или настраивать на исползование разных областей памяти, к примеру - для F407 я в глобальных настройках ставил RAM = CCM (как самую быструю - чтобы в ней был стек и многие переменные), а в тех фалах, где есть работа с DMA или нужны большие массивы - ставил остальные 128К RAM. Теперь вопрос - как все это делается в IAR'е? Что-то пока не нашел. Спасибо. Доп.: на первый вопрос вроде нашел, Project->Edit Configuration. Не так удоюбно как в Кейле, но задачу в общем-то решает. По второму вопрсоу - пока глухо. Т.е. персональные опции на файлы есть, но если оптимизатор там еще можно изменить, то память - не нашел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 62 1 апреля, 2017 Опубликовано 1 апреля, 2017 · Жалоба По второму вопрсоу - пока глухо. Т.е. персональные опции на файлы есть, но если оптимизатор там еще можно изменить, то память - не нашел. Не надо искать, как делается в IAR'е, сделайте правильно: полистайте документацию на компилятор и линкер и добавьте нужные #pragma в программе и сегменты в скрипте линкера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 1 апреля, 2017 Опубликовано 1 апреля, 2017 · Жалоба Доп.: на первый вопрос вроде нашел, Project->Edit Configuration. Не так удоюбно как в Кейле, но задачу в общем-то решает. нет, это не то. В Workspace -> контекстное меню -> Options. Если курсор находится на проекте, то можно менять глобальные опции для всего проекта. В частности в "General Options" можно выбрать конкретный процессор или устройство. Если курсор находится на папке или файле - то локальные настройки для файла или всей папки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 1 апреля, 2017 Опубликовано 1 апреля, 2017 · Жалоба нет, это не то. Это как раз то. Если нужно сделать несколько вариантов компиляции с разными опциями, то через Edit Configuration делаете несколько вариантов, а затем в каждом через Options настраиваете режимы компиляции. Что касается второго вопроса, то, как уже сказали выше, настраивать нужно прагмами и опциями линкера по программным секциям, а не по файлам. А стек - он вообще к файлу не относится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 182 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба Теперь вопрос - как все это делается в IAR'е? Что-то пока не нашел. п.1 - через Edit\Configurations создать все нужные варианты компиляции с их опциями. п.2 - для каждого варианта компиляции задать свой файл конфигурации линкёра: "$PROJ_DIR$\sdram.icf". А в этом файле прописать правила назначения регионов памяти конкретным секциям программы. И в IAR можно задавать расположение секций для каждого файла исходника не только целиком для всего файла, но и для каждой конкретной переменной очень удобно через суффикс: __no_init volatile u32 sysTimer @ ".raw"; //неинициализируемую переменную положить в секцию .raw и для этой секции в .icf прописать - в какой регион памяти её компоновать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба п.1 - через Edit\Configurations создать все нужные варианты компиляции с их опциями. п.2 - для каждого варианта компиляции задать свой файл конфигурации линкёра: "$PROJ_DIR$\sdram.icf". А в этом файле прописать правила назначения регионов памяти конкретным секциям программы. И в IAR можно задавать расположение секций для каждого файла исходника не только целиком для всего файла, но и для каждой конкретной переменной очень удобно через суффикс: __no_init volatile u32 sysTimer @ ".raw"; //неинициализируемую переменную положить в секцию .raw и для этой секции в .icf прописать - в какой регион памяти её компоновать. Спасибо, с отдельными переменными это понятно, а как "целиком на файл" или "целиком на группу"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 182 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба Спасибо, с отдельными переменными это понятно, а как "целиком на файл" или "целиком на группу"? #pragma default_function_attributes = @ ".textInternal" Откройте доку в IAR-е по ключевым словам, о прагмах - там всё есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба Из ещё не упомянутых средств есть опция компилятора --section Все эти способы так или иначе завязаны на определение своих секций и требуют редактирования .icf файла (что, впрочем, не так уж сложно как может показаться). Единственный вариант без редактирования готовых .icf это: __no_init <объявление переменной> @".ccram"; потому что секция .ccram уже определена, и нет забот по инициализации. PS. С файлами stm32f407*.icf от версии 7.80.2 достаточно @".ccram" или #pragma location=".ccram", стек теперь тоже размещается в ccram и переменные в ccram инициализируются как положено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 2 апреля, 2017 Опубликовано 2 апреля, 2017 · Жалоба #pragma default_function_attributes = @ ".textInternal" Откройте доку в IAR-е по ключевым словам, о прагмах - там всё есть. Вопрос был: а как "целиком на файл" или "целиком на группу"? Каким образом эта прагма поможет? Особенено "на группу"? Вся-же идея в "группе", это что не надо прописывать ничгео в каждом входящем в нее файле. Например - то какая-нибудь сторонняя библиотечка, типа FatFs. Я должен ее всю перелопатить, выискивая все переменные/буферы, которые могут работать по DMA, чтобы всунуть в них прагму? Все-таки, в Кейле это сделано намного лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба Вопрос был: Все-таки, в Кейле это сделано намного лучше. Наивно полагаете, что кейл, от того, что Вы где-то поставили галочку, святым духом перелопатит готовую библиотеку и раскидает переменные по "правильным" областям памяти :) :) :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 182 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба Каким образом эта прагма поможет? Особенено "на группу"? Вся-же идея в "группе", это что не надо прописывать ничгео в каждом входящем в нее файле. Это на файл. Например - то какая-нибудь сторонняя библиотечка, типа FatFs. Я должен ее всю перелопатить, выискивая все переменные/буферы, которые могут работать по DMA, чтобы всунуть в них прагму? 1.В FatFS нет переменных/буферов работающих по DMA. 2.Изучите для чего предназначены *.h-файлы в си - многие проблемы решатся. В том числе - объявления чего-либо для группы или для всех файлов исходников. Все-таки, в Кейле это сделано намного лучше. У Вас почти в каждом сообщении претензии к IAR-у - то не так, это не так (в основном от незнания конечно). Но если так мил Keil, кто-ж так заставляет IAR-ом пользоваться???? Под дулом автомата что-ли в IAR-е сидите? Каким образом эта прагма поможет? Особенено "на группу"? Вся-же идея в "группе", это что не надо прописывать ничгео в каждом входящем в нее файле. Для неумеющих читать даташит на компилятор: Приведённый ниже фрагмент .icf-файла размещает все секции .text из указанных выходных объектных файлов компилятора файлов в регионе SDRAM_regionA. А также секции .rodata и .fnt из всех выходных файлов проекта, для которых явно не указано место размещения. place in SDRAM_regionA { section .fnt, section .rodata, section .text object rds.o, section .text object menu.o, section .text object ir_term.o, section .text object fonttest.o }; Полный .icf для STM32F429 для отладки кода в SDRAM: sdram.zip Т.е. - в IAR-е можно не только в исходнике переопределить секции по умолчанию для кода/данных, но и для секций по-умолчанию уже скомпилённых объектных файлов/библиотек указать произвольный регион размещения. Даже не перелопачивая ничего. А может ли всё это Keil? B) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба У Вас почти в каждом сообщении претензии к IAR-у - то не так, это не так (в основном от незнания конечно). Да, увы, обычная жертва IDE от производителей компиляторов :(. Хоть кейл, хоть иар делают всякие извращения и уродства, дабы вот так, отсутвием какой нибудь "галочки" подсаживать на свои компилятры. Хотя, реально компиляторы все еще остаются, и будут оставаться, набором прекрасно управляемых и БЕЗ ВСЯКИХ "фирменных" надстроек и оболочек инструментальных средств. Я бы с ума сошел, если-бы трахался с доброй дюжиной компиляторов с которыми приходися работать, если бы мне в голову пришла дурная мысль попользоваться их "фирменными" оболочками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
backend 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба Да, увы, обычная жертва IDE от производителей компиляторов :(. Хоть кейл, хоть иар делают всякие извращения и уродства, дабы вот так, отсутвием какой нибудь "галочки" подсаживать на свои компилятры. Хотя, реально компиляторы все еще остаются, и будут оставаться, набором прекрасно управляемых и БЕЗ ВСЯКИХ "фирменных" надстроек и оболочек инструментальных средств. Я бы с ума сошел, если-бы трахался с доброй дюжиной компиляторов с которыми приходися работать, если бы мне в голову пришла дурная мысль попользоваться их "фирменными" оболочками. А вообще какими-нибудь IDE пользуетесь или без гуёв больше нравится работать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба А вообще какими-нибудь IDE пользуетесь или без гуёв больше нравится работать? Пользуюсь обязательно. Никаких извращений типа "я тут в встроенным в фар редактором пользуюсь". Только IDE должна быть и есть совершенно универсальная и подогнанная под себя любимого, а не "любезно" в качестве тоянского коня подсовывемая каждым из производителей компиляторов или контроллеров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
backend 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба Пользуюсь обязательно. Никаких извращений типа "я тут в встроенным в фар редактором пользуюсь". Только IDE должна быть и есть совершенно универсальная и подогнанная под себя любимого, а не "любезно" в качестве тоянского коня подсовывемая каждым из производителей компиляторов или контроллеров. На каком универсальном для себя варианте остановились, если не секрет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться