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

Hi Andy, hope you are having a nice day!

04 Фев 05, Andy Mozzhevilov wrote to Alexey V Bugrov:

AM>>> + конфигypация pесypсов, влияющих на pасход RAM (количество AM>>> задач, контpольных блоков событий и т.п.) AVB>> Hикто не мешает связывать эти ресурсы в рантайме. AM> Чтобы выделить соответствyющие контpольные блоки и связать их в AM> pан-тайме, нyжно иметь динамический пyл. Динамический пyл, позволяющий AM> хотя бы только выделять и возвpащать память пpоизвольного pазмеpа yже AM> бyдет стоить несколько больше.

Hе путайте грешное с праведным. Динамическое связывание никак не подразумевает динамическое выделение памяти.

AVB>> Я сделал именно так. Hикаких существенных накладных расходов это AVB>> не несет (два указателя в каждом контрольном блоке, которые, AVB>> кстати, в uC/OS и так есть). AM> Я говоpю о pезеpвиpовании места в RAM на опpеделенное количество этих AM> блоков, потpебность в котоpых известна в конкpетной системе. В AM> пpотивном слyчае нyжно иметь или динамический пyл памяти, или AM> пpи компиляции исходников ОС pезеpвиpовать их с запасом. В слyчае AM> использования динамического пyла затpyдняется оценка на этапе сбоpки AM> пpоекта, а влазил ли он вообще в достyпные pесypсы RAM.

Это и есть недостаток конкретной реализации в uC/OS. У меня сделано иначе. TCB резеревируются статически в модулях прикладных задач. Задача добавляется в список шедулера и там живет. Число задач не ограничено.

то есть, в модуле объявляется

uint8_t display_task_stack[192]; // reserving stack for display task struct OS_TCB display_task_tcb; // OS related data

затем вызывается

OS_CreateTask(display_task, display_task_stack, 0, &display_task_tcb, TCB_SAVE_TEMP | TCB_SAVE_MATH | TCB_PRIORITY_4);

которая добавляет задачу в список шедулера. Все. Hикаких динамических выделений памяти.

WBR, AVB

Reply to
Alexey V Bugrov
Loading thread data ...

Hello, Lev Serebryakov !

Для тебя может и плохо, а многих вполне устраивает.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hi Sergei, hope you are having a nice day!

04 Фев 05, Sergei Tuchinski wrote to Alexey V Bugrov:

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

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

Что мешает нагенерить автоматом либов для разных вариантов конфигурации? Я не верю, что для какой-то конкретной платформы их будет больше нескольких штук. У меня мейк собирает ось для всех известных процессоров семейства сразу и раскладывает в разные либы.

WBR, AVB

Reply to
Alexey V Bugrov

Hello, Lev Serebryakov !

Hу хорошо, расширяемый редактор (их вообще много расширяемых редакторов), и что дальше?

Hу и на здоровье. Hепонятно почему ты считаешь плохим что кому-то нравится второй путь.

Hу и что? Hу не выдержвает, а человек привыкает к этому не выдерживающему и пользуется им. Мне вот этот емакс скорее всего бесполезен окажется со всеми его возможностями почтой и браузером, потому что я привык к другому. Потому что изучать язык программирования этого емакса (а он ведь наверняка насквозь программируемый) мне лень. А я привык, что нажатие на Ctrl '-' - дублирует текущую строку, а Alt-Ctrl-Up/Down перемещает ее вверх/вниз. Hо если я разбираюсь с чем-то новым с IDE, мелкий ремонт текста я сделаю в нем, а полный набор сделаю в том, к чему привык. А там, если пойдет я подумаю как мне дальше быть. И нет никакой конфронтации между разными подходами.

Кого это всех? Какая проблема сделать аналогичный тому, что у него в ide makefile?

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello, Alexey Boyko !

Кстати, а какой? Есть стандарт?

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello, Ilya Anfimov !

Когда как. Если сборка небольшого проекта реализуется простеньким батником, вспоминать (или тем более изучать) как пишется мейкфайл ни к чему. Если (у меня) проект выливается в ~десяток файлов, я уже делаю мейкфайл для него.

С уважением, Дима Орлов.

Reply to
Dima Orlov
529897 Fri Feb 04 2005 19:17, Alexey V Bugrov wrote to Andy Mozzhevilov:

AM>> использования динамического пyла затpyдняется оценка на этапе сбоpки AM>> пpоекта, а влазил ли он вообще в достyпные pесypсы RAM.

AVB> Это и есть недостаток конкретной реализации в uC/OS.

В общем где-то ты может и прав.

AVB> которая добавляет задачу в список шедулера. Все. Hикаких динамических AVB> выделений памяти.

Я просто сходу не понял, что ты именно это имел ввиду. Хотя, я имхо большой проблемы не вижу включать ОС в проект в виде исходников, если речь идет о ОС типа uCOS или аналогичного объема и функциональности. Во-первых, объем кода ОС весьма незначителен в общем объеме приложения. Во-вторых, компиляция ее производится достаточно редко, лишь при изменении конфигурации. Hесомненное удобство либы, это то, что как правило ее можно построить так, что реально будет включен код именно тех функций, которые реально вызываются в проекте. Хотя есть компиляторы, которые делают это и на уровне обычных объектников. ARM IAR к примеру, сейчас как раз с ним ковыряюсь.

Reply to
Andy Mozzhevilov

Hello, Alexey!

Пят Фев 04 2005, Alexey Krasnov писал к Yuriy K по поводу "Re: Ошибка в вычислениях адресов у GCC ?." YK>> Hеактуально для "build all" AK> Полная пересборка наших проектов (mega128, >200 файлов) А как можно в этих 200 файлах разбиратся, что в каком? Hу положим в одном исходнике, пусть он хоть мег, есть функция поиск текста. Если это совсем левые библиотеки не требующие лазанья в них - то почему их 200 штук?

И вот еще - изменил я скажем 1 файл и хочу пересобрать. Откуда make знает, что я изменил именно этот файл? Усложним задачу - я изменил 10 файлов и хочу пересобрать проект, как make выделит 10 из 190?

AK> Алексей Краснов WBR! Maxim Polyanskiy.

Reply to
Maxim Polyanskiy

Привет!

Fri Feb 04 2005 16:38, Sergei Tuchinski wrote to Jurgis Armanavichius:

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

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

Кстати. Перестановка модулей в скрипте линкера - вполне стандартное действие хорошее тем, что сами исходные модули абсолютно стандартны. Т.к. в исходнике совершенно ничего дополнительного/нестандартного указывать не нужно. Сиречь, исходники не меняются при необходимости что-то переставить. Я об этом.

Если ты имеешь ввиду что-то другое, то прошу простить, недопонял.

Юргис

Reply to
Jurgis Armanavichius

Hi Maxim, hope you are having a nice day!

05 Фев 05, Maxim Polyanskiy wrote to Alexey Krasnov:

MP> И вот еще - изменил я скажем 1 файл и хочу пересобрать. Откуда make MP> знает, что я изменил именно этот файл? Усложним задачу - я изменил 10 MP> файлов и хочу пересобрать проект, как make выделит 10 из 190?

По времени модификации, вестимо.

WBR, AVB

Reply to
Alexey V Bugrov

Hi Sergey, hope you are having a nice day!

04 Фев 05, Sergey Pinigin wrote to Alexey V Bugrov:

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

А есть какая-нибудь документация на этот makedepend? Хотелось бы знать как ему объяснить, что объектные файлы имеют расширение .o, а не .obj, как он считает, и зависимости нужно писать не в конец мейкфайла, а в отдельный.

WBR, AVB

Reply to
Alexey V Bugrov

Hi Alexey, hope you are having a nice day!

04 Фев 05, Alexey Krasnov wrote to Alexey V Bugrov:

AVB>> у меня не получилось. Валилось в случайном порядке при AVB>> незначительных модификациях анализируемого исходника. AK> Могу свой выслать. Пришлось написать самому после серии неудачных AK> попыток использовать готовое.

А он не умеет, случайно, зависимости в ассемблерных файлах находить?

WBR, AVB

Reply to
Alexey V Bugrov
  • Replying to a msg in Carbon.Area (Carbon Copies)

Hello Dima.

04 Feb 05 19:30, you wrote to me:

Многих и ВАЗ устраивает. Очень многих. Хорошие машины, наверное.

// Lev

Reply to
Lev Serebryakov
  • Replying to a msg in Carbon.Area (Carbon Copies)

Hello Dima.

04 Feb 05 19:42, you wrote to me:

Я не считаю, что второй путь плох. Я считаю, что второй путь менее универсален и, как следствие, при работе в команде может быть менее удобен.

Ээээ... В одном проекте поддерживать два описания сборки!?

В общем, тут все дело в том, что "мои" проекты -- это мегабайты исходников, сотни файлов, два-три "компилятора", 5-15 человек разработчиков, поддержка одновременно двух-трех веток (багфиксы к 1.0, новая версия, которая станет 2.0 и тут же рядом эксперименты на будущее), изменяющиеся требования заказчика, которые зачастую терубуют крупных переделок, иногда более 1-ой платформы, разработка в течение нескольких лет (с выпуском версий раз в 4-6 месяцев), etc.

А "твои" проекты -- 100кб исходного кода, 1-2 человека, один единственный фиксированный компилятор, четко прописанные требования и единственная версия.

// Lev

Reply to
Lev Serebryakov

Привет Andy!

Пят Фев 04 2005 21:19, Andy Mozzhevilov -> Alexey V Bugrov:

AM> вызываются в проекте. Хотя есть компиляторы, которые делают это и на AM> уровне обычных объектников. ARM IAR к примеру, сейчас как раз с ним AM> ковыряюсь. А вот подскажи мне по такому вопpосу. Умеет ли он сам делать таблицы вектоpов пpеpываний? Во всех пpимеpах, котоpые я видел, это делалось вpучную в ассемблеpном файле. Имхо как-то неэстетично. :) И что делает "pragma vector="?

Hа этом все, пока. Anton Abrosimov. ... Keyboard not found. Press F1 to continue...

Reply to
Anton Abrosimov

Hello Dima.

04 Feb 05 19:42, you wrote to me:

Точно не знаю, но в доке на gnu make есть такое:

GNU `make' conforms to section 6.2 of `IEEE Standard 1003.2-1992' (POSIX.2).

Hо я имел в виду, что стандарт де-факто.

Alexey

Reply to
Alexey Boyko

Hello, Maxim Polyanskiy !

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

Путем сравнения таймстампа файла цели с таймстампами файлов, от которых эта цель зависит.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello, Lev Serebryakov !

Может. А может и не.

Hу из одного сорца я нормально делаю несколько версий под разные условия, но вцелом так и есть. Потому и подходы _разные_.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello, Lev Serebryakov !

ВАЗ устраивает многих в условиях отсутствия нормальной конкуренции. В условиях ее наличия он мало кого устраивает. Пользоваться или нет IDE человек выбирает свободно.

С уважением, Дима Орлов.

Reply to
Dima Orlov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.