MP>>> Как 4 разместить в ниодном я тебе плохо доказал? Будь спок. твои MP>>> 10 как раз в 5 ляжут ;) AM>> Пример кода, плз. MP> Это надо поискать будет...
Так может сначала надо было поискать?
AM>> И все дураки, портировали ее почти на сотню платформ, лицензии AM>> покупают... MP> Мышиная возня! Пусть хоть с крыши прыгают - я на любой платформе сам напишу MP> быстрее красивее и лучше, чем буду ковырятся в чужих исходниках не MP> предоставляющих нормальный уровень сервиса и неэфективно распаралеливающих MP> задачи.
В чем там неэффективность, может пояснишь?
AM>> Ассемблер здесь обладает ну просто огромным превосходством. MP> Hет. Hо восприятие такой программы в случае применения макросов резко MP> упрощается.
опять эти пресловутые макросы.
MP>>> И вообще не понимаю, что за мышиная возня с ОС? MP>>> мне лично ос нафиг не надо, AM>> Это твоя личная проблема, впрочем до поры до времени всем не надо. MP> Hадо будет - напишу. Hе царское это дело в ламерских исходниках ковырятся.
Никак себя к царской фамилии уже причислил? Может тебе вообще в начальники надо, а то не царское это дело, программировать.
MP>>> нужна хорошая файловая система! MP>>> В исходниках на АСМ. AM>> на каком? MP> В идеале на x51 и на ARM.
Какая проблема, возьми на Си, скомпилируй и оптимизируй.
MP>>> переменных, чтоб мало места в озу жрала. AM>> Так напиши. MP> Так проблема есть. Чтоб ее писать надо сначала в мельчайших подробностях ее MP> продумать.
FAT продумать? Чего ее продумывать, она есть какая есть, стандартная.
MP> У меня есть примеры хороших систем но увы они отказонеустойчивы.
Так при чем тогда вообще здесь FAT?
AM>> Прерывания есть для асинхронных событий. Задачи занимают слишком AM>> много времени, что бы выполнять их в прерываниях, блокируя другие AM>> события. MP> Зависит от задач! Кто сказал что мне вообще нужно будет 2 main-а для решения MP> 2-х задач? Я могу их и в одном решать.
Тогда это будет не многозадачка. Или ты полагаешь, что если ты в main кнопку опрашиваешь, и символ в порт выводишь, и эти действия по алгоритму работы устройства логически не связаны, то у тебя уже система стала многозадачной?
MP>>> Если они нужны 1 раз - то пофиг локальными они будут или MP>>> глобальными - место то 1 раз они все равно займут. ;) AM>> Где, в памяти? Как потом ты на ассеблере этот же адрес памяти отдашь AM>> под локальные переменные других функций? MP> Да так и отдам.
Как отдашь? Как конкртено укажешь, что ячейка озу Х используется для локальной переменной А функции F1 и локальной переменной B функции F2. Приведи кусок кода на ассемблере, как будет назначаться адрес для переменных А и В, равный адресу Х.
MP> Если мне мое соглашение об использовании озу позволит. MP> Удивляюсь как Си-шники могут обсуждать проблему, которую я вообще MP> не вижу! И даже никогда о ней не задумываюсь.
Вот именно не видишь. Не задумываешься, потому что не знаешь о ней. А еще пытаешься о чем то спорить. Ты вообще хоть понимаешь, о чем я пытаюсь говорить?
MP> Все это наверно уже давно на уровне подсознания делается.
У тебя на уровне подсознания строится дерево вызовов функций? Круто!
AM>> Только ты максимум, что показал в 1.58 раза. Hа моем примере вообще AM>> отказался это делать. А на словах все те же разы. Откуда? MP> Hе свисти - по регистрам в 4.
Да ради бога, оставайся при своих заблуждениях, если элементарная логика для тебя слишком сложная наука.
AM>> Для тебя показатель 'количесвтво таблиц' является определяющим в AM>> оценке сложности проекта? MP> Только попробуй сказать что эта прошивка - простой проект.
Я не оцениваю сложность конкртено этой прошивки. Повторяю вопрос - тебя показатель 'количесвтво таблиц' является определяющим в оценке сложности проекта?
AM>> подменить нельзя. Увы, аппаратное ограничение. То, что ты понимаешь AM>> под многозадачностью в прерываниях, это обычная и банальная AM>> foreground/background система. В общем, опять берешься судить о том, AM>> чего не пробовал сам. MP> А с чего ты решил что нужно?
Нужно что, пробовать? Я думал иначе нельзя. Есть такая заезжанная, но верная фраза "спорить о вкусе устриц с теми, кто их ел". Так вот, сначала поешь, а потом спорь, иначе глупо выглядишь, по большей части.
MP> Ты пойми производительность процессора конечна.
Я то понимаю.
MP> Подмена контекста выигрыша вобщем-то не дает.
Сама по себе подмена контекста выигрыша конечно не дает.
MP> Все равно задачи должны иметь разный приоритет иначе это глюкодром.
Могут иметь разный, а могут один, от типа многозадачности зависит. Конкретно в uCOS задачи не могут иметь одинаковый приоритет.
MP> Почему и говорю что все что само по себе MP> требует быстрой реакции но не сложно - в прерывания.
Быстрой реакции на обнаружение события - да. Используется прерывание, но оно и в многозадачке так используется. Если нужно обеспечить _детерминированное_ время от возникновения события до начала его обработки задачей не на уровне прерываний, (по объективным причинам) то прерывания тебе не помогут.
MP> Остальное в общем цикле. Кстати в этом режиме задачи по умолчанию MP> равнозначны.
То что ты понимаешь под задачами, это совершенно не то, что вкладывается в смысл понятия "задача" в многозадачных ОС.
MP>>> Да вот не знаю. пишу на x86 - кода уже 120к, AM>> Давно пишешь? MP> Год.
Времени не жалко?
MP>>> а проблем все нет и нет, когда-же черт возьми они появятся? AM>> Hаверное, уже за 500 таблиц зашкалило... MP> Таблиц кстати много. Hо реально надо еще больше.
То есть уже целый год ты таблицы составляешь.
MP>>> Да у тебя математика одна все озу засрет. AM>> Hе засрет, не засрет... MP> Медитация только перед нажатием ctrl-f9 помогает (или че у вас там)...
У нас листинг после Си и мар-файл, где видно распределение памяти.
MP> Часто складываешь 2 байта - элементы массива? Я чего-то не припомню таких MP> фокусов.
по 10 раз в день, упражняюсь...
MP>>> Hапиши-ка мне асм производное си компиллера для хождения в массиве MP>>> xram и я тебе моментально укажу где компилятор облажается ;) AM>> Ты думаешь, я сам не увижу оверхед? Смысл мне писать, чтобы ты опять AM>> показал 50%. MP> Тогда не приводи глупые примеры имеющие слабое отношение к реальности.
У тебя реальны только сферические кони в вакууме...
AM>> Да, в реальности числа не складывают, а если складывают, то они должны AM>> быть обязательно в iram или dram. MP> В 95% именно так. Так что твой пример для рассмотрения оверхеда неинтересен.
Рассмотри тот, что я кидал, там как раз все в dram и iram.
AM>> Только не забудь позаботиться, чтобы у тебя массив не попал на границу AM>> страницы в 256 байт. MP> Он не попадет - это не обсуждается!
Почему это не попадет?
MP> Вот кстати еще одно приемущество.
Да, чуть не забыл... :)
MP> У меня массив в 256 байт (и меньше) всегда будет находится в 1-й странице.
А что такое первая страница?
MP> Hа си - как компилятор положит. И не факт что он положит правильно.
Не волнуйся, все будет правильно лежать.
MP> Отсюда оверхед по времени регистрам и инкрементам 16-ти MP> битных переменных (коих кот наплакал в x51).
Опять не более 50%. Не надоело по кругу бегать?
AM>> Хотя ты наверное при своем опыте втиснeшь 500 байтный массив в 256 AM>> байт. MP> Кстати это неоднократно удавалось делать, например при обработке ответов AT MP> комманд в прерываниях производился парсинг пакета на лету, в результате в MP> память PIC-а влезали пакеты зачастую 2-х кратно превосходящие ее объем. MP> Тебе бы для такого извращения нужна была бы RTOS и проц с озу разов в MP> 5 больше!
На Си думаешь нельзя на лету делать обработку? Есть какие-то ограничения? А, ну да, совсем забыл, озу же будет засрано при инициализации системы, какой-нибудь win32.dll :)))