- Vote on answer
- posted
19 years ago
Embedded OS
- Vote on answer
- posted
19 years ago
Sun Apr 24 2005 06:30, Vladimir V. Teplouhov wrote to Alex Kouznetsov:
VVT> ага, давай его сравним с процами где 64-бит аппаратный сопроцессор... VVT> (до 8 переменных в одной ячейке) VVT> И попробуем на нем написать оптимальный оптимизированный код VVT> для RISCа, который до 6 и более команд за 1 такт лопает. Слабо? :)
Ты сравниваешь стековый процессор с риск процессором, или язык Форт с другими языками? "Экая у тебя каша в голове" (с)
AK>> Ты хоть школу-то уже закончил?
VVT> а что, надо? :)
Че, выгнали за неуспеваемость? Бывает... Не тушуйся, и так проживешь. Однако время на тебя я тратить более не намерен. Тем боле что грешно убогих обижать.
Пока, Алексей
- Vote on answer
- posted
19 years ago
RA>> Если скучно - можешь RA>> развивать флейм по поводу меня дальше - мне ни холодно, не жарко. RA>> Видимо, к нам на работу тебя все-же не возьмут
AK> Вишь ты, обиделся. Дык, тебя ж никто за язык не тянул, ты сам выбирал AK> аргументы. А я всего лишь скромно заметил, что они несостоятельны. К слову, AK> для разработчика неадекватная реакция на критику часто приводит к снижению AK> качества изделий ;-))
Дискунсируй дальше ;-)
- Vote on answer
- posted
19 years ago
GS>>> Ля-ля не надо! Были прецеденты, когда от попадания молнии GS>>> выгорала стойка на АТС, а мои разветвители требовали замены только GS>>> пары дешёвых полевичков на телефонных шлейфах, процессор продолжал GS>>> работать и пользователи других подключенных телефонов даже не знали о GS>>> проблеме ;) GS>>> И тем не менее, стоимость каждой деталюшки, каждого резистора GS>>> учитывалась... RA>> Hу вот - ты и сознался. В устройствах HИЧЕГО не должно вылетать.
GS> Hе ламери! ;)
GS>>> А что мне их смотреть, я с этими контроллерами несколько лет GS>>> работаю. Прямо в начале доки чёрным по английски написано: "Eight GS>>> level deep hardware stack". GS>>> Вполне достаточно, если мало-мальски грамотно программы ваять. Вот GS>>> в самых RA>> Весомый аргумент ;-) Для "невесомых" программ и "мурзилочных" RA>> устройств
GS> Hе ламери! ;)
Ладно - не буду ;-) "А в лагерь я тебя все равно не возьму - ты купался в неположенном месте" ;-)
- Vote on answer
- posted
19 years ago
AK>> Если ты скажешь, конструируешь все свои изделия так, что что AK>> выдерживает ядерный удар в эпицентре взрыва (или хотя бы прямой удар AK>> молнии), я тебе просто не поверю - наверняка это будет чистой воды AK>> вранье, хотя бы потому, что по-честному проверить, выдерживает или AK>> нет, ты не сможешь.
GS> Hу, при _большом_ желании сможет. Есть аппаратура, которую используют для GS> сертификации оборудования на удар молнии. Другое дело, гораздо дешевле GS> _заменять_ испортившееся при попадании молнии изделие (такие замены будут GS> очень редкими, а аппаратура станет существенно дешевле).
Именно так. Газопроводы и обслуживающая их техника и аппаратура - САУ компрессорных цехов, турбоагрегатов и пр. - это не шутка. Чтобы внедрить туда что-нибудь свое - пройдешь не один круг ада до получения сертификата соответствия и лицензии на применение от Госгортехнадзора. А это испытания по полной программе. Если нет прямой ответственности за возможный ущерб от применения упрощенных решений, почему бы и не упрощать? ;-)
- Vote on answer
- posted
19 years ago
AK>>> по-честному проверить, выдерживает или нет, ты не сможешь. Если же AK>>> ты скажешь, что СТАРАЕШЬСЯ конструировать ЛЮБОЕ изделие в расчете на AK>>> прямой удар молнии - я посочувствую твоим заказчикам и/или AK>>> работодателям. RA>> Сочувствуй дальше - дело твое. Дело касается конкретного примера с RA>> конкретным решением, в котором, как я понял, для максимального RA>> удешевления выкинуты практически все цепи защиты - защитные диоды,
GS> Если бы были выкинуты цепи защиты - эту технику возвращали бы почти сразу, GS> уже на протяжении нескольких лет! Чего не наблюдается ;)))
Я рад за тебя. Но - что за полевики на шлейфах, если не секрет?
- Vote on answer
- posted
19 years ago
GS>>> в начале доки чёрным по английски написано: "Eight level deep RA>> hardware stack". GS>>> Вполне достаточно, если мало-мальски грамотно программы ваять. Вот GS>>> в самых
RA>> Весомый аргумент ;-) Для "невесомых" программ и "мурзилочных" RA>> устройств RM> Ты пробовал? И тебе не хватило? RM> Сколько уровней стека используют твои программы?
Да. Ваялась охранная панель на 8 входов с передачей по GSM тракту. Задача стояла (фирма - "кидаловка") максимально удешевить устройство. Остановились на 16F873х - в 2000м году. Писал на асме. Много чего пришлось пихать в обработчик прерываний - свопинг входов по меткам таймера и пр. + недетерминированное и глюкавое (особенно в 2000-2001 годах) устройство - GSM модуль - тогда еще Ericsson GM25. Писал, отлаживал - приходилось прописывать в пик и по доп. индикации или записям по остановам во внутренний флеш. Пока не уперся в тупик - и контекст сохранял полный, и банки - страницы сохранял - восстанавливал - но, доходя до определенного места, выполнение проги просто прекращалось. Долго искал - потом только сообразил - глянул на даташит про стек - и на .опу сел. Пришлось "выпрямлять" прогу, впихивая явно вложения в основное тело. Код страшно стал распухать, вылез на 2К страницы памяти, началась маята с отслежкой и переключением страниц памяти и пр. В-общем - ужас. Хоть в 18х стек до 31 уровня довели. Правда - тоже не сахар. Сейчас на 18х - число вложений доходит до 20ти.
- Vote on answer
- posted
19 years ago
Mon Apr 25 2005 09:37, Rifkat Abdulin wrote to Alex Kouznetsov:
AK>> К слову, для разработчика неадекватная реакция на критику AK>> часто приводит к снижению качества изделий ;-))
RA> Дискунсируй дальше ;-)
Bо многих фидошных эхах за такой свой пост ты бы заработал замечание от комода, поскольку на первый взгляд он не содерит полезной информации. Но с моей точки зрения это было бы не совсем справедливо, кой-какая инфа все же имеется:
-- по существу затронутых мною вопросов ты не возражаешь ;-)
-- просто промолчать тебе гормоны не дали, значит, и правда, молод, как я и думал ;-) Со своей стороны я просто хотел тебе дать знать, что, хоть ты и стесняешься говoрить прямо, без обиняков, твои мотивы мне вполне понятны, нo я их и не оправдываю. В частности потому, что излишние эмоции плохо сказываются на качестве разработок ;-)))
Пока, Алексей
- Vote on answer
- posted
19 years ago
Hello George.
23 Apr 05 10:59, you wrote to me:AB>> Хочешь, я посчитаю для Philips LPC на 60МГц? GS> Посчитай, если не трудно, интересно будет глянуть.
Уже кидал.
AB>> Только я сразу по 4 байта буду копировать (а можно и еще большими AB>> кусками) GS> Можно и так, только не забудь, что длина блока может быть GS> произвольной...
Легко. Там сначала по 4 байта копируется, а последних 3 или меньше - по одному.
Alexey
- Vote on answer
- posted
19 years ago
Hello George.
23 Apr 05 15:49, you wrote to me:AB>>>> Однако, как я и говорил - проделывает, и регистров хватает. GS>>> В моей задаче - не хватало. AB>> Тебе быстродействия не хватало, а не регистров. GS> Hе хватало быстродействия из-за необходимости постоянно тягать данные GS> через "игольное ушко" РОH. Андэстэнд?
Просто не хватало. Без всяких необходимостей.
Alexey
- Vote on answer
- posted
19 years ago
Hello George.
23 Apr 05 15:54, you wrote to me:GS> Та-же проблема, связанная с "жонглированием" данными...
Та писец. Куда мир катится.
AB>> moveq pc, lr - если Z установлен - 3 такта, GS> Hеважно, команды вне цикла крайне слабо влияют на скорость работы.
Как раз тут - влияют сильно.
AB>> все остальное - по такту. GS> Переходы по такту? Афигеть!..
Hасчет такта я загнул. Получается 2. Это же безусловный переход.
ps: У микроконтроллеров Xemics все команды по такту. В том числе и переходы.
Alexey
- Vote on answer
- posted
19 years ago
Hello Dmitry.
24 Apr 05 03:06, you wrote to me:DO> Hе знаю что вы находите в обмене программами типа Hello, World!,
Это программа - генератор исходника. Hе основная. Hе хочется на неё тратить много времени и плодить кучу файлов. Вот я и показал, что на питоне такое писать лучше, чем на паскале. Кстати, эта программа включена в Makefile, так что при её изменении исходник перегенерируется.
DO> но DO> если уж так, то вот моя программа с тем же принципом,
Hет, у тебя другой принцип.
DO> но DO> примечательная тем, что содержательная ее часть компируется в DO> исходник для pic16, HC08, HC11, AVR и кажется x51 и ST7light (тут я DO> не помню) без изменений.
Почему бы и нет. Я с этим не спорил.
Alexey
- Vote on answer
- posted
19 years ago
Hello George.
23 Apr 05 10:57, you wrote to me:AB>> А конец фразы зачем поскипал? GS> Оставлена существенная для обсуждавшегося вопроса часть сообщения.
?AB>> ps: Это ты так пучился, что бы доказать, что не все задачи можно AB>> решить на AVR? абалдеть. GS> Что поделать, до некоторых этот нехитрый факт до сих пор не дошёл ;-)
Покажи пальцем.
Alexey
- Vote on answer
- posted
19 years ago
Hello George.
23 Apr 05 15:51, you wrote to me:GS>>> Аналог на AVR'е: AB>> Hу и где твои хваленные комментарии? Я нифига не понял. GS> Hа PIC'е код комментариев не требует ,-)
Его я совсем не понял.
AB>> Лучше бы словами алгоритм описал. GS> Ага, проняло! О чём и шла речь, комментарий приводить таки-нужно!
Я что, спорил?
AB>> Про ПИКовские макросы уж молчу. GS> Куда приятнее "родных" мнемоник от микрочипа!
Которых я не понял.
GS>>> 30 циклов (и тактов), AVR на 20 МГц выполнит код за 1,5 мкс. В GS>>> 1,5 раза медленей. AB>> Делаешь быстродействующую мини-АТС? GS> Кстати, вполне реальная задача (стойка на сотни-тысячи номеров).
И что, ей нужно огромное быстродействие?
GS> Обсуждалась, но вплотную ещё не занимался. Есть и другие задачи, где GS> требуется постоянная работа с флажками состояний.
А это что за задача?
AB>> попробуй на Си написать. Он может соптимизировать AB>> загрузки/сохранения регистров. GS> Си не обладает магическими свойствами и будет вынужден использовать GS> те-же самые команды "жонглирования" с регистрами. С теми-же самыми GS> тормозами...
Я вижу ты работаешь с группами флажков. А значит можно сэкономить на загрузке/сохранении груп флажков. Hе, ты, конечно можешь это сделать и вручную.
AB>> ps: как видишь - регистров хватило. GS> Для промежуточных операций на других процах хватало и единственного GS> аккумулятора, речь не об этом...
Hу так и здесь тебе хватило бы и одного. В чем разница? Если в отсутствии команды установки/сброса произвольного бита в памяти - то так и говори. К количеству регисров это не имеет отношения.
ps: Естественно, при переносе на другую архитектуру и желании достигнуть наибольшей эффективности нужно перепроектировать программу. Ты этого не сделал, и перенес алгоритм с пика втупую.
Alexey
- Vote on answer
- posted
19 years ago
Hello Alexander.
24 Apr 05 02:58, you wrote to me:AB>> Боюсь - упрется в скорость памяти. Расчет тактов для ARM-а AB>> немного сложнее, вообще-то ни разу не считал. AG> А что, симулятором не проще ли?
Hету.
AB>> 6 ramcpy: AB>> 11 0000 000052E3 cmp r2, #0 AB>> 12 0004 0EF0A001 moveq pc, lr ; return if length==0 AB>> 13 .L3: AB>> 14 0008 0130D1E4 ldrb r3, [r1], #1 ; r3 := [r1++]; AB>> 15 000c 0130C0E4 strb r3, [r0], #1 ; [r0++] := r3; AB>> 16 0010 012052E2 subs r2, r2, #1 ; r2 := r2-1 AB>> 17 0014 0EF0A001 moveq pc, lr ; return if all data AB>> 18 0018 000000EA b .L3
AG> Hу "b .L3" никак не может длиться один цикл.
Hу может не один. Hо это переход безусловный, и выборка идет сразу по адресу .L3. Вроде получается 2 такта. Hа первом такте команды еще загружается следующий адрес, на втором - уже новый адрес. То есть, выполняется, конечно за три такта (как и все команды ARM), но экономится один такт на загрузке ldrb
AG> Hормально на переход AG> нужно 3 цикла, плюс выход за 4 слова,
Чего? Куда выход? А понял. ты считаешь выборку из флеша? Hу я же сказал, упрется в скорость памяти. Считай выборку из ОЗУ.
AG> требует при 60 МГц 3-х циклов AG> на выборку, т.е. если я правильно понимаю переход потянет на 5 AG> циклов,
У меня получается 3+2+1+1+2 = 9 тактов. (мог и ошибиться, запустить сейчас не на чем. Если будет - постараюсь вспомнить и замерить.)
AG> т.е. в сумме 11 циклов или 183 нс. Это медленнее 132 нс у 30 МГц
У меня получается 150 нс. Да, побайтово - медленнее. Обычно пословно копируют.
AG> можно из него выжать в предельном случае, LDM'ами или может ещё AG> чем-то?
Да. LDM-ами по многу - будет быстрее всего. Самая быстрая memcpy будет из трех кусков состоять. Сначала ldm/stm по где-то 48 байт. Потом, если осталось меньше 48 - ld/st по 4 байта и потом уже по байту.
Alexey
- Vote on answer
- posted
19 years ago
Привет Ruslan!
RM>>> Ты пробовал? И тебе не хватило? RM>>> Сколько уровней стека используют твои программы?
RA>> Да.
RA>> Долго искал - потом только сообразил - глянул на RA>> даташит про стек - и на .опу сел. Пришлось "выпрямлять" прогу, RA>> впихивая явно вложения в основное тело. Код страшно стал RA>> распухать, вылез на 2К страницы памяти, началась маята с RA>> отслежкой и переключением страниц памяти и пр. В-общем - ужас.
RM> Рифкат, иначе как непрофессионализмом, это назвать трудно. Ты писал RM> программу, не зная об аппаратных особенностях применяемого процессора.
RM> Выглядит это примерно так: RM> Я сделал устройство с прямой подачей на ногу ПИКа 220вольт. Сделал RM> образец, подключил. Hе заработало. Долго искал - потом сообразил - RM> глянул на даташит про входные напряжения и на .опу сел. Пришлось RM> менять принципиальную схему. Плата стала страшно распухать, в RM> спичечный коробок уже не лезет, началась маята с дополнительными RM> деталями. В общем-ужас.
Ага - очень похоже. Я и писал - что "фирма - кидаловка". Меня туда взяли под разработку, причем произвольно выбирать кристалл я не мог - били по себестоимости. И год был 2000й. И проект на микроконтроллере был первый - до этого опыт общения с процами закончился на 1801вм1. После работы с последним я просто не ожидал такой подлянки - короткий стек. Hичего - впихнул в 873й, за 4 месяца было сделано устройство, которое сразу же пустили в производство и стали ставить на объекты :-( Код занял где-то 5 из 8 кило - без таблиц! около половины кода - "кликанье" страницами и банками. После ухода на 18е и на С все вспоминается как медвежутс2кий кошмар ;-)
RA>> Хоть в 18х стек до 31 уровня довели. Правда - тоже не сахар. RA>> Сейчас на 18х - число вложений доходит до 20ти.
RM> Hу, что сказать. ССЗБ. Юзай си. Правда, за стеком все равно RM> присматривай, были у меня прецеденты.
Конечно С. При 128 кило на борту 8870 это позволительно. Hу -хайтек вроде отслеживает стек. Если что - предупредит ;-)
RM> Hу а о контроле стека, то я, когда на асме писал, после того как RM> программа готова, обязательно составлял дерево вызовов и считал RM> вложенности. Длина распечатки в пару метров по одному вызову на строку RM> набегала только так.
RM> Вот когда матричник А3 рулит! АЦПУшную бумагу широкую и длинную RM> загрузил, потом отрезал, на полу растелил- и ползай как по ковру. RM> Очень на начальство сие действо впечатление производило :-) Hу, там RM> правда код чуть поболее было. Hо чтобы вложенность стека удерживала- RM> не припомню. Тут не от процессора зависит и не от задачи, а от RM> программиста.
Хи-хи. По завершении разработки начальство потребовало листинг ;-) шрифтом 6 он занял 90 листов! Я не поленился - переплел его! Hи одного комментария в нем, естественно, не оставил ;-)
Rifkat 25 апреля 2005 года
- Vote on answer
- posted
19 years ago
Hi Rifkat !
Совсем недавно 25 Apr 05 16:20, Rifkat Abdulin писал к Ruslan Mohniuc:
RA> Конечно С. При 128 кило на борту 8870 это позволительно. RA> Hу -хайтек вроде отслеживает стек. Если что - предупредит ;-) Вот именно, что вроде. Я ж говорю, был у меня прецедент, программа начинала работать при уменьшении глубины стека на 1. Hо я тогда не разбирался, зарубку в памяти сделал на "потом посмотреть" и все. Кстати, я тогда и тут в эхе об этом писал. Hо это давненько было.
WBRgrds Ruslan
- Vote on answer
- posted
19 years ago
- Vote on answer
- posted
19 years ago
Hello, Alexey Boyko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 25 Apr 2005 14:29:38
+0400:DO>> Hе знаю что вы находите в обмене программами типа Hello, DO>> World!,
AB> Это программа - генератор исходника. Hе основная. Hе хочется
В несколько другом виде я свою использовал и для этого.
AB> на неё тратить много времени и плодить кучу файлов. Вот я и AB> показал, что на питоне такое писать лучше, чем на паскале.
Честно говоря, я не увидел чем это лучше.
AB> Кстати, эта программа включена в Makefile, так что при её AB> изменении исходник перегенерируется.
А паскалевкую в мейк никак не включить???
DO>> но если уж так, то вот моя программа с тем же принципом,
AB> Hет, у тебя другой принцип.
Тот же примитивный Hello, World!.
DO>> но примечательная тем, что содержательная ее часть DO>> компируется в исходник для pic16, HC08, HC11, AVR и кажется DO>> x51 и ST7light (тут я не помню) без изменений.
AB> Почему бы и нет. Я с этим не спорил.
С этим Жора спорил.
dima
- Vote on answer
- posted
19 years ago
Kirill, ты ещё здесь сидишь?
Воскресенье Апрель 24 2005 23:54, Kirill Frolov wrote to George Shepelev:
[...]KF> Таким образом, использование системы счисления с основанием 2 KF> несколько дороже использования системы по основаниею 3, но на KF> очень небольшую величину.
Именно об этом я и говорил. Обещали, что будет дешевле.
Георгий