Embedded OS

Loading thread data ...

Sun Apr 24 2005 06:30, Vladimir V. Teplouhov wrote to Alex Kouznetsov:

VVT> ага, давай его сравним с процами где 64-бит аппаратный сопроцессор... VVT> (до 8 переменных в одной ячейке) VVT> И попробуем на нем написать оптимальный оптимизированный код VVT> для RISCа, который до 6 и более команд за 1 такт лопает. Слабо? :)

Ты сравниваешь стековый процессор с риск процессором, или язык Форт с другими языками? "Экая у тебя каша в голове" (с)

AK>> Ты хоть школу-то уже закончил?

VVT> а что, надо? :)

Че, выгнали за неуспеваемость? Бывает... Не тушуйся, и так проживешь. Однако время на тебя я тратить более не намерен. Тем боле что грешно убогих обижать.

Пока, Алексей

Reply to
Alex Kouznetsov

RA>> Если скучно - можешь RA>> развивать флейм по поводу меня дальше - мне ни холодно, не жарко. RA>> Видимо, к нам на работу тебя все-же не возьмут

AK> Вишь ты, обиделся. Дык, тебя ж никто за язык не тянул, ты сам выбирал AK> аргументы. А я всего лишь скромно заметил, что они несостоятельны. К слову, AK> для разработчика неадекватная реакция на критику часто приводит к снижению AK> качества изделий ;-))

Дискунсируй дальше ;-)

Reply to
Rifkat Abdulin

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е ламери! ;)

Ладно - не буду ;-) "А в лагерь я тебя все равно не возьму - ты купался в неположенном месте" ;-)

Reply to
Rifkat Abdulin

AK>> Если ты скажешь, конструируешь все свои изделия так, что что AK>> выдерживает ядерный удар в эпицентре взрыва (или хотя бы прямой удар AK>> молнии), я тебе просто не поверю - наверняка это будет чистой воды AK>> вранье, хотя бы потому, что по-честному проверить, выдерживает или AK>> нет, ты не сможешь.

GS> Hу, при _большом_ желании сможет. Есть аппаратура, которую используют для GS> сертификации оборудования на удар молнии. Другое дело, гораздо дешевле GS> _заменять_ испортившееся при попадании молнии изделие (такие замены будут GS> очень редкими, а аппаратура станет существенно дешевле).

Именно так. Газопроводы и обслуживающая их техника и аппаратура - САУ компрессорных цехов, турбоагрегатов и пр. - это не шутка. Чтобы внедрить туда что-нибудь свое - пройдешь не один круг ада до получения сертификата соответствия и лицензии на применение от Госгортехнадзора. А это испытания по полной программе. Если нет прямой ответственности за возможный ущерб от применения упрощенных решений, почему бы и не упрощать? ;-)

Reply to
Rifkat Abdulin

AK>>> по-честному проверить, выдерживает или нет, ты не сможешь. Если же AK>>> ты скажешь, что СТАРАЕШЬСЯ конструировать ЛЮБОЕ изделие в расчете на AK>>> прямой удар молнии - я посочувствую твоим заказчикам и/или AK>>> работодателям. RA>> Сочувствуй дальше - дело твое. Дело касается конкретного примера с RA>> конкретным решением, в котором, как я понял, для максимального RA>> удешевления выкинуты практически все цепи защиты - защитные диоды,

GS> Если бы были выкинуты цепи защиты - эту технику возвращали бы почти сразу, GS> уже на протяжении нескольких лет! Чего не наблюдается ;)))

Я рад за тебя. Но - что за полевики на шлейфах, если не секрет?

Reply to
Rifkat Abdulin

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ти.

Reply to
Rifkat Abdulin

Mon Apr 25 2005 09:37, Rifkat Abdulin wrote to Alex Kouznetsov:

AK>> К слову, для разработчика неадекватная реакция на критику AK>> часто приводит к снижению качества изделий ;-))

RA> Дискунсируй дальше ;-)

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

-- по существу затронутых мною вопросов ты не возражаешь ;-)

-- просто промолчать тебе гормоны не дали, значит, и правда, молод, как я и думал ;-) Со своей стороны я просто хотел тебе дать знать, что, хоть ты и стесняешься говoрить прямо, без обиняков, твои мотивы мне вполне понятны, нo я их и не оправдываю. В частности потому, что излишние эмоции плохо сказываются на качестве разработок ;-)))

Пока, Алексей

Reply to
Alex Kouznetsov

Hello George.

23 Apr 05 10:59, you wrote to me:

AB>> Хочешь, я посчитаю для Philips LPC на 60МГц? GS> Посчитай, если не трудно, интересно будет глянуть.

Уже кидал.

AB>> Только я сразу по 4 байта буду копировать (а можно и еще большими AB>> кусками) GS> Можно и так, только не забудь, что длина блока может быть GS> произвольной...

Легко. Там сначала по 4 байта копируется, а последних 3 или меньше - по одному.

Alexey

Reply to
Alexey Boyko

Hello George.

23 Apr 05 15:49, you wrote to me:

AB>>>> Однако, как я и говорил - проделывает, и регистров хватает. GS>>> В моей задаче - не хватало. AB>> Тебе быстродействия не хватало, а не регистров. GS> Hе хватало быстродействия из-за необходимости постоянно тягать данные GS> через "игольное ушко" РОH. Андэстэнд?

Просто не хватало. Без всяких необходимостей.

Alexey

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

Hello George.

23 Apr 05 10:57, you wrote to me:

AB>> А конец фразы зачем поскипал? GS> Оставлена существенная для обсуждавшегося вопроса часть сообщения.

?

AB>> ps: Это ты так пучился, что бы доказать, что не все задачи можно AB>> решить на AVR? абалдеть. GS> Что поделать, до некоторых этот нехитрый факт до сих пор не дошёл ;-)

Покажи пальцем.

Alexey

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

Привет 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 года

Reply to
Rifkat Abdulin

Hi Rifkat !

Совсем недавно 25 Apr 05 16:20, Rifkat Abdulin писал к Ruslan Mohniuc:

RA> Конечно С. При 128 кило на борту 8870 это позволительно. RA> Hу -хайтек вроде отслеживает стек. Если что - предупредит ;-) Вот именно, что вроде. Я ж говорю, был у меня прецедент, программа начинала работать при уменьшении глубины стека на 1. Hо я тогда не разбирался, зарубку в памяти сделал на "потом посмотреть" и все. Кстати, я тогда и тут в эхе об этом писал. Hо это давненько было.

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

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

formatting link

Reply to
Dmitry Orlov

Kirill, ты ещё здесь сидишь?

Воскресенье Апрель 24 2005 23:54, Kirill Frolov wrote to George Shepelev:

[...]

KF> Таким образом, использование системы счисления с основанием 2 KF> несколько дороже использования системы по основаниею 3, но на KF> очень небольшую величину.

Именно об этом я и говорил. Обещали, что будет дешевле.

Георгий

Reply to
George Shepelev

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.