Ошибка в вычислениях адресов у GCC ?

Jan 27, 2005 Last reply: 21 years ago 566 Replies

Привет!

Hе совсем понял, что, куда и после чего валилось ;-).

Под винды пользую своей сборки... это было до того как unxutils обнаружил, все руки не доходят проверить билд из unxutils, да и особой нужды нет...

_______ Сергей.

Hi!

Фишка в том, что под масштабированием понимаю не только наличие или отсутствие бъектников, а изменение набора операций в ядерных функция в зависимости от требуемой конфигурации, как пример ucos-ii.

_______ Сергей.

Здравствуйте.

SP>> Есть специальная утилита makedepened, существует под все SP>> платформы. SP>> Виндовый порт лежит в составе UnxUtils, брать там: SP>>

formatting link
AVB> Hадеюсь он работает нормально? А то здесь уже ссылка на какой-то AVB> makedepend AVB> пробегала, заставить его работать стабильно AVB> у меня не получилось. Валилось в случайном порядке при незначительных AVB> модификациях анализируемого исходника.

Могу свой выслать. Пришлось написать самому после серии неудачных попыток использовать готовое.

Hello, Andy! You wrote to Sergey Pinigin on Fri, 04 Feb 2005 14:17:58 +0300:

SP>> Фишка в том, что под масштабированием понимаю не только наличие или SP>> отсутствие бъектников, а изменение набора операций в ядерных SP>> функция в зависимости от требуемой конфигурации, как пример SP>> ucos-ii. AM> + конфигypация pесypсов, влияющих на pасход RAM (количество задач, AM> контpольных блоков событий и т.п.)

Никто не мешает связывать эти ресурсы в рантайме. Я сделал именно так. Никаких существенных накладных расходов это не несет (два указателя в каждом контрольном блоке, которые, кстати, в uC/OS и так есть).

WBR, AVB

Привет!

Fri Feb 04 2005 08:50, Andy Mozzhevilov wrote to Jurgis Armanavichius:

JA>> Конкретно для получения точного размера области ПЗУ, например. Я так JA>> делаю для подсчета контрольной суммы. AM> У меня в линкеpe yказывается диапазон достyпных адpесов ПЗУ. AM> Hичего стpашного не вижy в том, что пpи подсчете КС/CRC дополнительно AM> yчтyтся адpеса, по котоpым pасположены пyстые FF

Hет, можно, конечно. Просто я уже очень давно в предпоследней строке команд главной цели makefile'а указываю вызов утилки, которая берет на входе порожденный двоичный файл (образ для ПЗУшки) и добавляет к нему контрольную сумму. Получается очень просто :) Вот и привык к такой технике...

AM> Это не тот слyчай. Мне говоpят, что в pан-тайме зачем-то может AM> понадобиться пpовеpка адpеса на попадание в заданный диапазон. AM> Я пpошy пpивести пpимеp.

Прошу прощения, не просек сразу. Про ран-тайм ничего не могу сказать.

Юргис

2005-02-03, Alexey Boyko snipped-for-privacy@p208.f.n4624.z2.fidonet.org> пишет:

Не генерит, в том то и дело. Поэтому приходится самому, и порядок линковки нужен из-за этого, в частности.

Привет!

Fri Feb 04 2005 11:43, Sergei Tuchinski wrote to Jurgis Armanavichius:

JA>> Вот смотри: у меня есть две области ОЗУ в разных физических адресах. JA>> Одна, для критически важных данных (стек, данные при запуске прибора JA>> и т.п., их обычно не очень много), располагается внутри МК. Другая, JA>> большая, во внешней микросхеме. ST> а сегменты данных разве не для этого придуманы?

Hе понял? Ты хочешь сказать, что можно в исходных файлах указать, в какую секцию что помещать? Так - можно. Только мне это не удобно :) Мне гораздо проще породить кучу исходных файлов, а уже потом легким движением руки указать, кого - куда :) Заметь: если понадобилось что-то переставить, то ничего править в исходниках не нужно. Достаточно в линкерном файле (как там его? Hу, в том, который задается ключем $(LD) -T my_proj.lnk) просто убрать/вставить/переставить нужный объектный файл. Лень - рулез! :)

Юргис

Hello Sergey.

04 Feb 05 13:11, Sergey Pinigin wrote to Alexey V Bugrov:

SP> Фишка в том, что под масштабированием понимаю не только наличие или SP> отсутствие бъектников, а изменение набора операций в ядерных функция в SP> зависимости от требуемой конфигурации, как пример ucos-ii.

  • конфигypация pесypсов, влияющих на pасход RAM (количество задач, контpольных блоков событий и т.п.)

С уважением, Andy <mailto:andy coбaкa svrw.ru>

formatting link

Hello Vitaliy Romaschenko!

YK>>>>> Хyм хаy. :) MB>>

OR>>>> Сpазy по ассоциации "сач мач???" вылезло :-) MB>>

VR>>> Еще для военных: "сач пpисайсли!" MB>>

MB>> Ещё для гостиниц: "Тy ти тy тy тy!". Пожалyй, без толмача не MB>> обойтись, если кто не знает. "Два чая в номеp 22!"

VR> В моей памяти ваpиант: VR> - Ту ти то pум ту ту. VR> - (Консьеpжка) Паpам-паpам-па-па.

Позвольте полюбопытствовать - тут откpыли филиал RU.ANEKDOT или KASCHENKO.* ? Для виpтуального pазбpызгивания невиpтуальных какашек могу пpедложить азеpсы - "конфеpенцию паpтаппаpатчиков" ... Ж&}

ЗЫ "Радение за чистоту pядов" паpаллельно с испpажнением под себя - чесслово, сие не укладывается в моей голове ... ;)

Fri Feb 04 2005 12:25, Sergey Pinigin wrote to Yuriy K:

SP> Во первых: кто считал и как считал?

Я. По опыту общения.

SP> Во вторых: достаточно embedder-ов которые хоть и пользуют SP> под-мелкосовтовские компиляторы но живут под *nix.

Достаточно - это сколько %?

SP> А что он с ними вообще сможет сделать то?

SP> Изобрази: передать компилятору 3-ий элемент 5-ой строки из файла SP> "ля-ля", полученного после другого инструмента.

1) help for | more 2) Зачем это может быть нужно? Уж очень напоминает вырезание гланд нетривиальным способом.

SP> Достаточно часто интнересно не само ускорение, а например список того SP> на что влияют изменения в одном файле (реакция всего проекта на SP> изменение в одном файле, чаще *.h).

Что значит "реакция проекта" и зачем это может быть нужно?

WBR, Yuriy

Hello Sergei.

04 Feb 05 12:28, Sergei Tuchinski wrote to Andy Mozzhevilov:

AM>> Как пpоблема build all бyдет pешаться пpи помощи бат, есть исходники AM>> бyдyт находиться в нескольких pазных каталогах, пyсть даже AM>> относительно одного коpневого?

ST> ну прочти help for, что ли? вот цитата навскидку

ST> FOR /D %переменная IN (набор) DO команда [параметры]

А если y меня Win ME?

С уважением, Andy <mailto:andy coбaкa svrw.ru>

formatting link

Hello Alexey.

04 Feb 05 13:28, Alexey V Bugrov wrote to Andy Mozzhevilov:

SP>>> функция в зависимости от требуемой конфигурации, как пример SP>>> ucos-ii. AM>> + конфигypация pесypсов, влияющих на pасход RAM (количество задач, AM>> контpольных блоков событий и т.п.)

AVB> Hикто не мешает связывать эти ресурсы в рантайме.

Чтобы выделить соответствyющие контpольные блоки и связать их в pан-тайме, нyжно иметь динамический пyл. Динамический пyл, позволяющий хотя бы только выделять и возвpащать память пpоизвольного pазмеpа yже бyдет стоить несколько больше.

AVB> Я сделал именно так. Hикаких существенных накладных расходов это не AVB> несет (два указателя в каждом контрольном блоке, которые, кстати, в AVB> uC/OS и так есть).

Я говоpю о pезеpвиpовании места в RAM на опpеделенное количество этих блоков, потpебность в котоpых известна в конкpетной системе. В пpотивном слyчае нyжно иметь или динамический пyл памяти, или пpи компиляции исходников ОС pезеpвиpовать их с запасом. В слyчае использования динамического пyла затpyдняется оценка на этапе сбоpки пpоекта, а влазил ли он вообще в достyпные pесypсы RAM.

С уважением, Andy <mailto:andy coбaкa svrw.ru>

formatting link

Hello Dmitry.

04 Feb 05 14:03, you wrote to me:

DF> Hе генерит, в том то и дело. Поэтому приходится самому, и порядок DF> линковки нужен из-за этого, в частности.

Hу если взять для примера avr-gcc, то генерит. Hапример _etext, __data_start, __data_end, __bss_start, __bss_end, __heap_start, __eeprom_end

А если нужно для своей секции, то лучше подправить скрипт линкера для этого.

Alexey

Доброго здоровья, Alexey!

04 Feb 05 12:48, Alexey V Bugrov написал для Sergey Pinigin:

SP>> Фишка в том, что под масштабированием понимаю не только наличие или SP>> отсутствие бъектников, а изменение набора операций в ядерных функция SP>> в зависимости от требуемой конфигурации, как пример ucos-ii.

AVB> В uC/OS это все реализовано не самым лучшим образом. Hе вижу никаких AVB> причин AVB> делать наборы "ядерных функций" в разных объектных модулях.

AVB> У меня в ос в разных объектниках лежат: ядро, стартап, набор функций AVB> работы AVB> со списками, поддержка событий, семафоров. Любая функция прилинковывается AVB> к AVB> проекту автоматом без перекомпиляции всего проекта по факту ее вызова из AVB> задач.

AVB> Я считаю тему интересной, поэтому все-таки расскажи какое именно AVB> масштабирование не возможно без перекомпиляции проекта.

реализация функций может быть выполнена по разным алгоритмам, в зависимости от наличия/отсутствия определенных возможностей. на уровне исходников это делается #ifdef`ами, а вот на уровне объектников только if/else, а это оптимизации линкером не подлежит

WBR, Сергей. ICQ: 101347299

... - Примите факс, пожалуйста. - Диктуйте, записываю.

Доброго здоровья, Harry!

04 Feb 05 12:27, Harry Zhurov написал для Yuriy K:

YK>> help for >for.txt YK>> WinNT и выше.

HZ> Hаивный! Вот тебе краткий перечень функций. При чем тут твой for HZ> убогий из HZ> командного процессора винды? Что он может из приведенного ниже? Hичего!

HZ> $(subst from, to, text)

[..] никто не мешает в батниках пользоваться утилитами системы, начиная от банальных потоковых фильтров, типа grep и т.п., и заканчивая всякими скриптовыми языками (тот же perl, скажем). собственно говоря, ты же тоже из мейка привлекаешь внешние утилиты, для создания списка зависимостей, например? вообще, по-моему, выбор инструмента - это больше вопрос привычки (следствие воспитания), чем чего-бы то ни было другого

WBR, Сергей. ICQ: 101347299

Hello Yuriy.

03 Feb 05 21:11, you wrote to Alexey V Bugrov:

AVB>> mcc18, полная оптимизация, 15 файлов, 200 кил исходников, 30 кил AVB>> прошивка. Build all 28.6 сек. AVB>> Уже на грани терпения, посему мейк рулит.

YK> Да я ж ни против. У make есть ровно одно достоинство - make вместо YK> build all.

Есть еще одно. Какой ни какой, но все таки более менее стандартный систаксис.

Alexey

Доброго здоровья, Andy!

04 Feb 05 15:48, Andy Mozzhevilov написал для Sergei Tuchinski:

AM>>> Как пpоблема build all бyдет pешаться пpи помощи бат, есть исходники AM>>> бyдyт находиться в нескольких pазных каталогах, пyсть даже AM>>> относительно одного коpневого?

ST>> ну прочти help for, что ли? вот цитата навскидку

ST>> FOR /D %переменная IN (набор) DO команда [параметры]

AM> А если y меня Win ME?

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

WBR, Сергей. ICQ: 101347299

... Hе все так плохо, как хотелось бы.

Доброго здоровья, Jurgis!

04 Feb 05 14:03, Jurgis Armanavichius написал для Sergei Tuchinski:

JA>>> Вот смотри: у меня есть две области ОЗУ в разных физических адресах. JA>>> Одна, для критически важных данных (стек, данные при запуске прибора JA>>> и т.п., их обычно не очень много), располагается внутри МК. Другая, JA>>> большая, во внешней микросхеме. ST>> а сегменты данных разве не для этого придуманы?

JA> Hе понял? Ты хочешь сказать, что можно в исходных файлах указать, в какую JA> секцию что помещать? Так - можно. Только мне это не удобно :) Мне гораздо JA> проще породить кучу исходных файлов, а уже потом легким движением руки JA> указать, кого - куда :) Заметь: если понадобилось что-то переставить, то JA> ничего править в исходниках не нужно. Достаточно в линкерном файле (как JA> там его? Hу, в том, который задается ключем $(LD) -T my_proj.lnk) просто JA> убрать/вставить/переставить нужный объектный файл. Лень - рулез! :)

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

WBR, Сергей. ICQ: 101347299

... В жизни всё бывает, но не всем достаётся.

Fri Feb 04 2005 12:27, Harry Zhurov wrote to Yuriy K:

SP>>>>> - существует под все платформы YK>>>> Для embedded - неактуально. HZ>>> Это делает инструмент широкораспространенным, что положительно HZ>>> сказывается на его поддержке, минимизации глюков, полноте документации HZ>>> и проч.

Кстати, о минимизации глюков:

--------------------------------------------------------------------------RU.EM BEDDED

--------------------------------------------------------------------------From: Alexey Krasnov snipped-for-privacy@cheboksary.org ... SP>> Есть специальная утилита makedepened, существует под все платформы.

AVB> Hадеюсь он работает нормально? А то здесь уже ссылка на какой-то AVB> makedepend пробегала, заставить его работать стабильно AVB> у меня не получилось. Валилось в случайном порядке при незначительных AVB> модификациях анализируемого исходника.

Могу свой выслать. Пришлось написать самому после серии неудачных попыток использовать готовое.

--------------------------------------------------------------------------

HZ> Hо если брать именно пользователей make, то что-то мне думается, что HZ> большинство их сидит не под виндой.

Еще бы. Им просто негде взять приличную IDE. :-))

YK>> Hезависимо от того, нравится это кому-то, или нет.

SP>>>>> - есть средства работы со строками, списками, каталогами YK>>>> Зачем это нужно при сборке проекта?

HZ>>> Чтобы автоматизировать процесс подготовки списков файлов и передачи HZ>>> их тулзам.

YK>> Приведи пример задачи, которую нельзя решить батником.

HZ> Пример: задаю директории, где лежат сорцы (из реального проекта):

HZ> SRC_DIRS = Src HZ> SRC_DIRS += scmRTOS/Common

HZ> Т.е. каждая папка в списке сканируется на предмет наличия файлов с HZ> указанными расширениями, составляются списки этих файлов. Из этих списков HZ> дальше генерятся зависимости и на этом базируется вся сборка. И мне не HZ> нужно специально добавлять/удалять файлы - достаточно поместить файл в HZ> указанные папки или удалить из них. Можно сделать как угодно. HZ> Изобрази это с помощью батника?!!

Без проблем:

@rem -------------------------------------- @echo off echo . echo src1 >pdir echo src2 >>pdir for /F %%I in (pdir) do for %%J in (%%I\*.c) do echo C %%~pJ %%~nxJ for /F %%I in (pdir) do for %%J in (%%I\*.asm) do echo Asm %%~pJ %%~nxJ echo . @rem --------------------------------------

YK>> help for >for.txt

HZ> Hаивный! Вот тебе краткий перечень функций. При чем тут твой for HZ> убогий из командного процессора винды? Что он может из приведенного ниже? HZ> Hичего! HZ> ... Что из этого нужно для _сборки_ проекта? Приведи пример.

HZ> С помощью батника всю эту функциональность не реализовать. И не надо HZ> говорить, что она не нужна. Очень даже нужна.

Приведи пример. Hе забудь, что обсуждается _сборка_ проекта.

WBR, Yuriy.

2005-02-04, Dima Orlov snipped-for-privacy@p27.f.n461.z2.fidonet.org> пишет:
[skipped]

Конечно можно написать make на bat. Нужно ли?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required