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

1) В Кейле есть такая штука, как "Target", имея несколько таргетов, можно иметь разные опции проекта (Alt-F7).

Пользуюсь часто этим, например чтобы компилировать проект в вариантах для отладки и "боевой" (с другого начального адреса, под бутлоадер).

 

2) в Кейле опции проекта есть глобальные, а также можно сделать индивидуальные, дял каждого .с файла в проекте.

Напрмер, иметь глобальную отптимизацию по размеру а на определенных файлах - по скорости.

Или настраивать на исползование разных областей памяти, к примеру - для F407 я в глобальных настройках ставил RAM = CCM (как самую быструю - чтобы в ней был стек и многие переменные), а в тех фалах, где есть работа с DMA или нужны большие массивы - ставил остальные 128К RAM.

 

Теперь вопрос - как все это делается в IAR'е? Что-то пока не нашел.

 

Спасибо.

 

Доп.: на первый вопрос вроде нашел, Project->Edit Configuration. Не так удоюбно как в Кейле, но задачу в общем-то решает.

По второму вопрсоу - пока глухо. Т.е. персональные опции на файлы есть, но если оптимизатор там еще можно изменить, то память - не нашел.

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


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

По второму вопрсоу - пока глухо. Т.е. персональные опции на файлы есть, но если оптимизатор там еще можно изменить, то память - не нашел.

Не надо искать, как делается в IAR'е, сделайте правильно: полистайте документацию на компилятор и линкер и добавьте нужные #pragma в программе и сегменты в скрипте линкера.

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


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

Доп.: на первый вопрос вроде нашел, Project->Edit Configuration. Не так удоюбно как в Кейле, но задачу в общем-то решает.

нет, это не то.

В Workspace -> контекстное меню -> Options.

Если курсор находится на проекте, то можно менять глобальные опции для всего проекта. В частности в "General Options" можно выбрать конкретный процессор или устройство.

Если курсор находится на папке или файле - то локальные настройки для файла или всей папки.

 

 

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


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

нет, это не то.

Это как раз то. Если нужно сделать несколько вариантов компиляции с разными опциями, то через Edit Configuration делаете несколько вариантов, а затем в каждом через Options настраиваете режимы компиляции.

Что касается второго вопроса, то, как уже сказали выше, настраивать нужно прагмами и опциями линкера по программным секциям, а не по файлам. А стек - он вообще к файлу не относится.

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


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

Теперь вопрос - как все это делается в IAR'е? Что-то пока не нашел.

п.1 - через Edit\Configurations создать все нужные варианты компиляции с их опциями.

п.2 - для каждого варианта компиляции задать свой файл конфигурации линкёра: "$PROJ_DIR$\sdram.icf". А в этом файле прописать правила назначения регионов памяти конкретным секциям программы.

И в IAR можно задавать расположение секций для каждого файла исходника не только целиком для всего файла, но и для каждой конкретной переменной очень удобно через суффикс:

__no_init volatile u32 sysTimer @ ".raw"; //неинициализируемую переменную положить в секцию .raw и для этой секции в .icf прописать - в какой регион памяти её компоновать.

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


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

п.1 - через Edit\Configurations создать все нужные варианты компиляции с их опциями.

п.2 - для каждого варианта компиляции задать свой файл конфигурации линкёра: "$PROJ_DIR$\sdram.icf". А в этом файле прописать правила назначения регионов памяти конкретным секциям программы.

И в IAR можно задавать расположение секций для каждого файла исходника не только целиком для всего файла, но и для каждой конкретной переменной очень удобно через суффикс:

__no_init volatile u32 sysTimer @ ".raw"; //неинициализируемую переменную положить в секцию .raw и для этой секции в .icf прописать - в какой регион памяти её компоновать.

 

Спасибо, с отдельными переменными это понятно, а как "целиком на файл" или "целиком на группу"?

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


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

Спасибо, с отдельными переменными это понятно, а как "целиком на файл" или "целиком на группу"?

#pragma default_function_attributes = @ ".textInternal"

Откройте доку в IAR-е по ключевым словам, о прагмах - там всё есть.

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


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

Из ещё не упомянутых средств есть опция компилятора --section

 

Все эти способы так или иначе завязаны на определение своих секций и требуют редактирования .icf файла (что, впрочем, не так уж сложно как может показаться).

 

Единственный вариант без редактирования готовых .icf это:

__no_init <объявление переменной> @".ccram";

потому что секция .ccram уже определена, и нет забот по инициализации.

 

PS. С файлами stm32f407*.icf от версии 7.80.2 достаточно @".ccram" или #pragma location=".ccram",

стек теперь тоже размещается в ccram и переменные в ccram инициализируются как положено.

 

 

 

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


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

#pragma default_function_attributes = @ ".textInternal"

Откройте доку в IAR-е по ключевым словам, о прагмах - там всё есть.

 

Вопрос был:

а как "целиком на файл" или "целиком на группу"?

 

Каким образом эта прагма поможет? Особенено "на группу"? Вся-же идея в "группе", это что не надо прописывать ничгео в каждом входящем в нее файле.

 

Например - то какая-нибудь сторонняя библиотечка, типа FatFs. Я должен ее всю перелопатить, выискивая все переменные/буферы, которые могут работать по DMA, чтобы всунуть в них прагму?

Все-таки, в Кейле это сделано намного лучше.

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


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

Вопрос был:

Все-таки, в Кейле это сделано намного лучше.

Наивно полагаете, что кейл, от того, что Вы где-то поставили галочку, святым духом перелопатит готовую библиотеку и раскидает переменные по "правильным" областям памяти :) :) :)

 

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


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

Каким образом эта прагма поможет? Особенено "на группу"? Вся-же идея в "группе", это что не надо прописывать ничгео в каждом входящем в нее файле.

Это на файл.

 

Например - то какая-нибудь сторонняя библиотечка, типа 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)

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


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

У Вас почти в каждом сообщении претензии к IAR-у - то не так, это не так (в основном от незнания конечно).

Да, увы, обычная жертва IDE от производителей компиляторов :(. Хоть кейл, хоть иар делают всякие извращения и уродства, дабы вот так, отсутвием какой нибудь "галочки" подсаживать на свои компилятры. Хотя, реально компиляторы все еще остаются, и будут оставаться, набором прекрасно управляемых и БЕЗ ВСЯКИХ "фирменных" надстроек и оболочек инструментальных средств. Я бы с ума сошел, если-бы трахался с доброй дюжиной компиляторов с которыми приходися работать, если бы мне в голову пришла дурная мысль попользоваться их "фирменными" оболочками.

 

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


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

Да, увы, обычная жертва IDE от производителей компиляторов :(. Хоть кейл, хоть иар делают всякие извращения и уродства, дабы вот так, отсутвием какой нибудь "галочки" подсаживать на свои компилятры. Хотя, реально компиляторы все еще остаются, и будут оставаться, набором прекрасно управляемых и БЕЗ ВСЯКИХ "фирменных" надстроек и оболочек инструментальных средств. Я бы с ума сошел, если-бы трахался с доброй дюжиной компиляторов с которыми приходися работать, если бы мне в голову пришла дурная мысль попользоваться их "фирменными" оболочками.

А вообще какими-нибудь IDE пользуетесь или без гуёв больше нравится работать?

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


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

А вообще какими-нибудь IDE пользуетесь или без гуёв больше нравится работать?

Пользуюсь обязательно. Никаких извращений типа "я тут в встроенным в фар редактором пользуюсь". Только IDE должна быть и есть совершенно универсальная и подогнанная под себя любимого, а не "любезно" в качестве тоянского коня подсовывемая каждым из производителей компиляторов или контроллеров.

 

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


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

Пользуюсь обязательно. Никаких извращений типа "я тут в встроенным в фар редактором пользуюсь". Только IDE должна быть и есть совершенно универсальная и подогнанная под себя любимого, а не "любезно" в качестве тоянского коня подсовывемая каждым из производителей компиляторов или контроллеров.

На каком универсальном для себя варианте остановились, если не секрет?

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


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

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

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

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

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

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

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

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

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

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