avr c/c++ препроцессор для макроса PORT_x

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

ARV писал(а):делать вектор прерывания в зависимости от выбранного порта вы все равно не можете
На самом деле можно и без нумерации портов, но это уже за пределами возможностей C препроцессора. Подобную задачу я решаю в makefile вызовом скрипта на perl после препроцессора, но до компилятора.
В принципе, подойдет что угодно, умеющее проехаться по файлу с regex для поиска и замены.
Последний раз редактировалось ptr128 Ср ноя 23, 2016 13:54:19, всего редактировалось 2 раза.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 625
Зарегистрирован: Ср дек 08, 2010 19:03:17

Сообщение sunjob »

будет не плохо, если вы для наших котов сделаете выкусы ваших скриптов, мейкфайлов итд
спапсибо
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Это не тривиальная задача, так как у меня одним makefile собирается все. То есть не только для МК, но и для PC, и для SQL, и для Web. И сам makefile при этом состоит, по сути, из двух строк.
В первой - include другого makefile (который тянет за собой больше десятка других), а во второй просто присваивается переменной список подпроектов включаемые в него (по именам директорий на том же уровне).

P.S. Не то, чтобы я отказывался выдрать оттуда пример и скомпоновать в виде рабочего makefile, но этим я, если и займусь, то уж точно не сегодня.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не буду говорить за всех, но мне кажется, многие из здесь присутствующих собирают свои проекты не через makefile, а внутри IDE.
тем, кто освоил make со всеми его возможностями, нет нужды объяснять, как можно сделать что-то с его помощью, пусть даже и со скриптами.
вопросы, как правило, у тех, кто с make не дружит... к числу которых принадлежу и я.

так вот, если вы собираете в IDE свой проект, там почти со 100% вероятностью есть возможность задать выполнение некоего файла ПЕРЕД сборкой и ПОСЛЕ нее... что-то типа PreBuild step и PostBuild step. и вот тут-то вы запросто можете указать запуск любого скрипта или утилиты, какой хотите...

вопрос лишь в том, чем именно прошерстить свой исходник и сделать в нем соответствующую замену перед сборкой... и как при этом не испортить сам исходник... но, видит бог, неужели так сложно выбрать нужный вектор вручную?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

ARV писал(а): PreBuild step и PostBuild step. и вот тут-то вы запросто можете указать запуск любого скрипта или утилиты, какой хотите...
Лично для меня, это будет существенно сложнее, чем
ptr128 писал(а):в makefile вызовом скрипта на perl после препроцессора, но до компилятора.
Одно дело, подправить то, что не доделано препроцессором, а совсем другое, сделать что-то до препроцессора, частично выполнив и работу препроцессора.

P.S. Изучать make только если в результате сборки будет одна прошивка одного МК, если честно, смысла мало. А вот когда проект состоит из нескольких связанных частей на нескольких МК или компов, тогда без make очень не удобно. В общем случае, если результат сборки один файл, не мучайтесь с make. Если результатом сборки должно быть множество файлов - make Вам нужен.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Не связывайтесь с Makefile. Сначала захотите просто компилировать файл. Потом вынести какие-то настройки. А там уже и до описанного ptr128 недалеко - выбор архитектуры, настроек и всего остального. Так и будете погружаться в бездну Makefile.
:))
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):Не связывайтесь с Makefile.
Многообразие не следует предполагать без необходимости

не забывайте, что мы общаемся на сайте любителей, т.е. людей, для которых программирование - это не средство зарабатывания на жизнь, не смысл всей жизни, а всего лишь способ быстро достичь поставленной цели.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Если серьезно, никто же не заставляет так уж глубоко изучать makefile. Для самого примитивного уровня достаточно чего-то вроде

Код: Выделить всё

all:
  avr-gcc -o firmware.elf main.c -mmcu=atmega8 -Os -Wall -gdwarf-2
  avr-objcopy -O ihex firmware.elf
clean:
  rm -f firmware.*
То есть, по сути, замена обычному макросу. Когда программа станет посложнее (у меня это случилось на программе для ПК а не МК) в константы выносятся флаги компилятора и линкера, компилятор, набор объектных файлов и прочее.
То есть на самом деле ситуация обратна описанной мной в прошлом посте. Многие фичи достаточно просто добавить, так почему бы этого не сделать.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):так почему бы этого не сделать
а почему бы этого не делать вообще, если IDE по дефолту 90% необходимого для всех подряд перекрывает, а остальные 10% точно так же в случае необходимости можно добавить? и добавление не будет сложнее, чем в голеньком makefile
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

На любителя. Но ручная работа с makefile более располагает к ковыряниям с настройками.
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Если хочется изучить GNU make, то рекомендую для начала воспользоваться Eclipse + CDT. Он все равно все собирает через make и предоставляет Вам возможность ознакомиться с уже работающими make файлами, которые он сформировал.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ptr128 писал(а):предоставляет Вам возможность ознакомиться с уже работающими make файлами, которые он сформировал.
в которых без поллитры не разберешься :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»