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

ARM Compiler 6 (LLVM/CLang): можно ли компилировать несколько файлов как один?

В Си тоже можно писать всё в одном файле от и до. Но мне кажется, тут вопрос не в этом стоит. Скорее, даже наоборот - не как свалить в один файл всё от и до, а как портянку поделить на части, сохранив при этом единоцелие. 

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


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

8 минут назад, EdgeAligned сказал:

В Си тоже можно писать всё в одном файле от и до. Но мне кажется, тут вопрос не в этом стоит. Скорее, даже наоборот - не как свалить в один файл всё от и до, а как портянку поделить на части, сохранив при этом единоцелие. 

Именно. Я хочу сохранить струкутру проекта максимально независимо между различными модулями.

При этом, чтобы при компиляции задействовалась максимальная оптимизация, коя невозможна априори при классической раздельной компиляции.

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


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

32 минуты назад, EdgeAligned сказал:

А интерфейс в ×× вообще делается на абстрактном классе

Там проблема с constexpr будет. Не делают так.

33 минуты назад, EdgeAligned сказал:

потому как чисто понятия интерфейса в ×× нету. 

Сейчас можно концептов навесить и фактически задать требования к интерфейсу.

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


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

А что, констэкспры прям в интерфейсе обязательны чтоль? Смотрите ширше и глубжее

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


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

3 минуты назад, EdgeAligned сказал:

констэкспры прям в интерфейсе обязательны чтоль

Конечно!

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


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

57 минут назад, Arlleex сказал:

3. Я провел некоторые тесты интенсивных обменов короткими пакетами в LwIP и пришел к выводу, что МК нужен пошустрее, но имею то, что запаяно - F407.

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

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


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

10 минут назад, Сергей Борщ сказал:

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

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

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


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

33 минуты назад, VladislavS сказал:

Конечно!

Здрасти-приехали. Я ж говорю - смотрите ширше. Интерфейс - это не только пины или SPI, I2C и тп, но и в общем смысле - набор инструментов взаимодействия с программным модулем. 

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


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

Так я и смотрю. Ограничение есть. Когда я об него споткнусь - вопрос только времени.

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


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

Как карету не назови... Я читал, что интерфейс - это тот же абстрактный класс, только в котором вообще все методы - чистые виртуальные, помещенные в публичную область класса, а сам класс еще и не имеет member-ов.

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


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

3 часа назад, Arlleex сказал:

2. У меня нет совершенно никаких планов переписывать LwIP:wink:

А зря! :mosking:

3 часа назад, Arlleex сказал:

3. Я провел некоторые тесты интенсивных обменов короткими пакетами в LwIP и пришел к выводу, что МК нужен пошустрее, но имею то, что запаяно - F407.

Тут: или МК шустрее; или стек свой писать; или протокол обмена изменить (или избавившись от коротких кадров; или позволяя много их подряд без ответа; или ...(впишите нужное)).

3 часа назад, Arlleex сказал:

А я хочу пнуть стек, чтобы он, по возможности, пошустрее все делал. Получится - отлично, не получится - жаль, переживем.

Имха: Зря Вы не хотите просто свой стек написать. Ничего там сложного нет (если конечно нужен только базовый функционал UDP, TCP/IP, и т.п. простые протоколы).

PS: Я уже давно свой написал. Даже сниффер в него встроил.  :smile:

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


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

3 hours ago, Arlleex said:

2. У меня нет совершенно никаких планов переписывать LwIP

так не все сводится к одному единственному lwIP, наверняка есть и другие готовые, возможно еще шустрее этого )

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


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

2 часа назад, Arlleex сказал:

чистые виртуальные

Даже чистые виртуальные в итоге, к сожалению, не бесплатны. А оно нам не надо.

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


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

1 час назад, jcxz сказал:

Имха: Зря Вы не хотите просто свой стек написать. Ничего там сложного нет (если конечно нужен только базовый функционал UDP, TCP/IP, и т.п. простые протоколы).

58 минут назад, Forger сказал:

так не все сводится к одному единственному lwIP, наверняка есть и другие готовые, возможно еще шустрее этого )

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

Мне LwIP мозга компасирует только на коротких UDP-пакетах: TCP и все что рядом - мне любой скорости хватит (ибо сервисы), а весь реалтайм будет именно на UDP. Вот за него и борюсь в первую очередь.
 

5 минут назад, VladislavS сказал:

Даже чистые виртуальные в итоге, к сожалению, не бесплатны. А оно нам не надо.

А вот кстати однофайловая компиляция (о которой я спрашивал в начале топика) или LTO-оптимизация (по крайней мере доки на мой компилятор пишут, что эффект такой же) вполне может помочь компилятору девиртуализировать страшные виртуальные вызовы, т.к. компилятор сможет внутри одного файла увидеть, на объект какого типа показывает указатель. И поэтому такие вызовы вполне смогут быть бесплатными. Однако это касается (в моем случае) только моих исходников, а LwIP писан на Си, поэтому к нему это не будет относиться.

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


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

13 минут назад, Arlleex сказал:

Мне LwIP мозга компасирует только на коротких UDP-пакетах: TCP и все что рядом - мне любой скорости хватит (ибо сервисы), а весь реалтайм будет именно на UDP. Вот за него и борюсь в первую очередь.

Тогда костыльный вариант: пропустить IP-фреймы с UDP мимо lwIP. Выкусив их из потока Ethernet-кадров от MAC до входа в lwIP. И обработав их самостоятельно.

Обработка чисто UDP - совсем уж простая. На одном этом другие тараканы, в ваших тараканьих бегах, устраиваемых заказчиком, вас не обгонят.  :wink:

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


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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...