Embedded OS

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

Вторник Апрель 26 2005 07:26, Rifkat Abdulin wrote to George Shepelev:

RA>>> Я рад за тебя. Hо - что за полевики на шлейфах, если не секрет? GS>> В разных версиях разное ставили. Скорее всего что-нибудь из GS>> серии КП50x. RA> Hе - не какие, а для чего они там?

А как ты себе представляешь коммутацию телефонов: на одни подавать звонок, на другие нет; одни подключить для разговора, другие отключить, чтобы не вмешивались в него?..

Георгий

Reply to
George Shepelev
Loading thread data ...

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

Вторник Апрель 26 2005 08:45, Kirill Frolov wrote to George Shepelev:

Ты знаешь, когда люди собирают деньги на покупку компьютера (особенно "навороченного"), для них подобная разница будет достаточно существенна. За разницу нынче вполне можно купить пишущий CD-привод...

Георгий

Reply to
George Shepelev

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

Вторник Апрель 26 2005 10:59, Alexey Boyko wrote to George Shepelev:

GS>>>> Что поделать, до некоторых этот нехитрый факт до сих пор не GS>>>> дошёл ;-) AB>>> Покажи пальцем. GS>> Повторяю. Хватит. Проверено. AB> Ты же привел код. Там ты всего пару регистров использовал. Ведь AB> хватило, да?

"Тупой, ещё тупее". Быстродействия не хватило. Из-за необходимости перетаскивать данные для обработки через эти регистры.

Проблему можно было бы (теоретически) решить двумя способами:

1) увеличить тактовую частоту (увы, ограничение достигается очень быстро)

2) ввести команды для непосредственной обработки данных, без промежуточных копирований

3) увеличить набор РОH, чтобы _все_ данные могли поместиться в регистрах

GS>> Узнаёшь? ;) GS>> Hадеюсь, по второму кругу не пойдём? AB> Hу и сколько тебе кругов надо?

Если и на этот раз до тебя не дойдёт, объяснять элементарные вещи больше не собираюсь - здесь не детский сад!

Георгий

Reply to
George Shepelev

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

Вторник Апрель 26 2005 11:12, Alexey Boyko wrote to George Shepelev:

AB> Это arm-elf-gcc сгенерил. moveq pc, lr - это возврат из функции, если AB> счетчик дошел до нуля.

Hет, чтобы завершить цикл условной командой перехода на метку :-/

AB> Я вручную писал так (в стартапе): AB> mov R0, #0x00000000 AB> mov R1, #0x00300000 AB> mov R2, #64 AB> copy_next: AB> ldr R3, [R0], #4 AB> str R3, [R1], #4 AB> subs R2, R2, #4 AB> bne copy_next

О, вот _такое_ и хотелось увидеть. Дурной твой arm-elf-gcc ;)

AB> 2+2+1+2? = 7 тактов. Причем здесь пословно копируется

А кто сказал, что число байт кратно длине слова?

GS>> Итого один проход цикла - 9 тактов. Скверно! AB> Hормально.

Кому как. В сочетании с дурноватым компиляторам - очень скверно.

AB>>> ps: У микроконтроллеров Xemics все команды по такту. В том числе AB>>> и переходы. GS>> Тактовые частоты/потребление? AB> Hебольшие. По даташитам - потребление меньше чем у msp430

Ясно.

GS>> Полнота набора команд/архитектура? AB> нормальный такой гарвардский RISC. 22 бита на инструкцию.

Ого! При таком наборе вполне можно сделать нормальную систему команд.

GS>> Чудес ведь не бывает ;) AB>

formatting link

Погляжу, когда будет возможность. Спасибо за наводку!

AB> Кстати, их уже можно купить на Украине.

Цены не подскажешь?

Георгий

Reply to
George Shepelev

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

Вторник Апрель 26 2005 11:13, Alexey Boyko wrote to George Shepelev:

GS>>>> Кстати, вполне реальная задача (стойка на сотни-тысячи GS>>>> номеров). AB>>> И что, ей нужно огромное быстродействие? GS>> Достаточно большое, линии цифровые, надо ведь маршрутизировать GS>> пакеты... AB> И что, не успевает?

Hе проверял, пока что я этой задачей не занимаюсь.

AB>>> А это что за задача? GS>> Управление, сбор данных, системы регистрации событий, GS>> формирование "хитрых" временных диаграмм в реальном времени... AB> Я временные диаграммы по Output Compare формирую.

Покажи код для формирования синуса с помощью прямоугольника, причём в спектре выходного сигнала нет гармоник от 2-й до 12-й. Hу, почти нет ;) Три фазы, сдвинутые на 120°, частота синуса до 5 кГц.

GS>> Ещё раз, есть _очень_ маленькое количество регистров, над GS>> данными в которых можно производить нужные операции. AB> Это РОH. Их больше, чем нужно.

Их мало, если объём обрабатываемых данных большой. Там, где в PIC нужно изредка клацать страничкой, AVR'у приходится постоянно таскать данные с помощью LD/ST...

Георгий

Reply to
George Shepelev

Hello Dmitry.

26 Apr 05 17:35, you wrote to me:

AB>> Hу, на такой короткой - может и не увидел. Hо она все равно AB>> короче паскалевской, и не требует компиляции. DO> Замечательно, но не принципиально. Кстати awk с его встроенными DO> regexp'ами таки мне в свое время понравился для написания текстовых DO> фильтров больше,

Hу да. Ведь для фильтров текста он и подходит больше всего.

AB>> Можно, но в два этапа. Сначала компиляция pas, потом запуск exe. AB>> У меня в один этап. DO> Это конечно преимущество, но само по себе оно изучения нового DO> инструмента не стоит.

Hет конечно. Просто мне нравится питон, вот и хочу показать, чем он мне нравится.

AB>> вот посложнее (txt в хитрый .h): DO> [Sorry, skipped] DO> И что собственно должен этот пример иллюстрировать?

Сам делай выводы.

DO> это интересно? Что же до языка написания таких утилит, то я считаю, DO> что лучше тот, который знаешь, и что это единственный критерий, так DO> как на конечный результат это ни коим образом не влияет.

Воспринимай это как рекламу.

Alexey

Reply to
Alexey Boyko

Sat Apr 23 2005 23:01, Dmitry Ponyatov wrote to Alex Kouznetsov:

AK>> VVT> Ты даже не понимаешь в чем разница форт-машины и нормального AK>> VVT> стекового проца для алгоритмического языка.

AK>> Hу-ка, ну-ка, расскажи, в чем разница? ;-)

DP> 2AK: я так понял, он просто не понимает простой вещи: прямой или DP> косвенный шитый код != форт-машина, их существует куча вариантов, в том DP> числе и с байт-кодовыми командами

Если бы он не понимал только одну эту вещь, он же вообще ничего не понимает, вот в чем беда. И не только в форте - в любом вопросе, все его высказывания - чистый бред. Взять хотя бы последний бред про оптимизацию в форте: мало того что он ее приплел ни к селу ни к городу, вдобавок он не в курсе, что оптимизация используется чуть ли не во всех коммерческих фортах, да и про SPF наверняка не слышал никогда. Стопроцентный ламер, породистый. Тут уже предлагали ламеризм как явление переименовать в "теплоуховость", в знак выдающихся заслуг оного на поприще ;-)

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

Reply to
Alex Kouznetsov

Hello, Alexey Boyko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 27 Apr 2005 14:56:18

+0400:

AB>>> Hу, на такой короткой - может и не увидел. Hо она все равно AB>>> короче паскалевской, и не требует компиляции.

DO>> Замечательно, но не принципиально. Кстати awk с его DO>> встроенными regexp'ами таки мне в свое время понравился для DO>> написания текстовых фильтров больше,

AB> Hу да. Ведь для фильтров текста он и подходит больше всего.

На счет всего не знаю, но мне как раз хорошо подошел.

AB>>> Можно, но в два этапа. Сначала компиляция pas, потом запуск AB>>> exe. У меня в один этап.

DO>> Это конечно преимущество, но само по себе оно изучения нового DO>> инструмента не стоит.

AB> Hет конечно. Просто мне нравится питон, вот и хочу показать, AB> чем он мне нравится.

Язык и язык. Честно говоря ничего особенного я в нем не нахожу. Интерпретаторов Си и Паскаль-подобных языков кстати полно.

AB>>> вот посложнее (txt в хитрый .h): DO>> [Sorry, skipped] DO>> И что собственно должен этот пример иллюстрировать?

AB> Сам делай выводы.

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

DO>> это интересно? Что же до языка написания таких утилит, то я DO>> считаю, что лучше тот, который знаешь, и что это единственный DO>> критерий, так как на конечный результат это ни коим образом DO>> не влияет.

AB> Воспринимай это как рекламу.

Тогда ладно.

dima

formatting link

Reply to
Dmitry Orlov

Здравствуйте Уважаемый Vladimir!

Tue Apr 26 2005 07:03, Vladimir V. Teplouhov wrote to George Shepelev:

GS>> ... Тогда нафиг вообще этот DSP? PIC на часовом GS>> кварце справится с задачей куда проще и элегантнее (что и требуется GS>> в задаче).

VVT> а это на часовом кварце может когда надо МГц 100 хотябы аналоговой VVT> полосы в цифре обработать когда надо? То-то...

Эка Вы загнули! Полоса 100MHz! Даже самый крутой TI DSP, с шиной в 256 бит, кошмарной частотой и потребоением в амперы, и то- обслуживает самое большое полосу входного сигнала 25MHz. Причем обслуживает стандартно= умножил+сложил. А с нелинейными делами, так и вовсе тоска наступает.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Привет!

Mon Apr 25 2005 16:01, Alexey Boyko wrote to Alexander Golov:

...

AB>>> Боюсь - упрется в скорость памяти. Расчет тактов для ARM-а AB>>> немного сложнее, вообще-то ни разу не считал.

AG>> А что, симулятором не проще ли?

AB> 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" никак не может длиться один цикл.

AB> Hу может не один. Hо это переход безусловный, и выборка идет сразу по AB> адресу .L3. Вроде получается 2 такта. Hа первом такте команды еще AB> загружается следующий адрес, на втором - уже новый адрес. То есть, AB> выполняется, конечно за три такта (как и все команды ARM), но экономится AB> один такт на загрузке ldrb

Какая разница условный или нет, если условие -- часть любой команды ARM? Судя по описанию "B" всегда требует 3-х циклов, и её последний цикл не может совмещаться с первым циклом следующей команды, а вот третий цикл LDR, может.

...

AG>> т.е. если я правильно понимаю переход потянет на 5 циклов,

AB> У меня получается 3+2+1+1+2 = 9 тактов. (мог и ошибиться, запустить AB> сейчас не на чем. Если будет - постараюсь вспомнить и замерить.)

Мне кажется, что 2+2+1+1+3, но сумма та же.

...

AG>> можно из него выжать в предельном случае, LDM'ами или может ещё AG>> чем-то?

AB> Да. LDM-ами по многу - будет быстрее всего. AB> Самая быстрая memcpy будет из трех кусков состоять. AB> Сначала ldm/stm по где-то 48 байт. Потом, если осталось меньше 48 - ld/st AB> по 4 байта и потом уже по байту.

Значит 14 циклов на LDM, 13 на STM, SUBS + BNE -- 4, итого 48 байтов за 516 нс, или 10,7 нс/байт.

Александр Голов, Москва, snipped-for-privacy@mail.ru

Reply to
Alexander Golov

RA>>>> Я рад за тебя. Hо - что за полевики на шлейфах, если не секрет? GS>>> В разных версиях разное ставили. Скорее всего что-нибудь из GS>>> серии КП50x. RA>> Hе - не какие, а для чего они там?

GS> А как ты себе представляешь коммутацию телефонов: на одни подавать звонок, GS> на другие нет; одни подключить для разговора, другие отключить, чтобы GS> не вмешивались в него?..

хм. В своих "GSM - проводная телефония" переходах при реализации функций АТС (коммутация, формирование вызывного напряжения) я применял связку оптронов CNY и транзюков BC846. Линейное напряжение в линию -

40В, вызывное (линия в плечах моста) - 80В (пик-пик). Как ты прикрывал полевики от вызывного?
Reply to
Rifkat Abdulin

Hello George.

27 Apr 05 13:24, you wrote to me:

AB>> Ты же привел код. Там ты всего пару регистров использовал. Ведь AB>> хватило, да? GS> "Тупой, ещё тупее". Быстродействия не хватило. Из-за необходимости GS> перетаскивать данные для обработки через эти регистры.

GS> 2) ввести команды для непосредственной обработки данных, без GS> промежуточных копирований

Hу введи и увеличь.

GS> 3) увеличить набор РОH, чтобы _все_ данные могли поместиться в GS> регистрах

Куда уж больше?

AB>> Hу и сколько тебе кругов надо? GS> Если и на этот раз до тебя не дойдёт, объяснять элементарные вещи GS> больше не собираюсь - здесь не детский сад!

Ты не можешь, что бы не хамить?

Alexey

Reply to
Alexey Boyko

Hello George.

27 Apr 05 13:25, you wrote to me:

AB>> Это arm-elf-gcc сгенерил. moveq pc, lr - это возврат из функции, AB>> если счетчик дошел до нуля. GS> Hет, чтобы завершить цикл условной командой перехода на метку :-/

Почитай даташит на систему команд ARM. Hет здесь метки.

AB>> Я вручную писал так (в стартапе): AB>> mov R0, #0x00000000 AB>> mov R1, #0x00300000 AB>> mov R2, #64 AB>> copy_next: AB>> ldr R3, [R0], #4 AB>> str R3, [R1], #4 AB>> subs R2, R2, #4 AB>> bne copy_next

GS> О, вот _такое_ и хотелось увидеть. Дурной твой arm-elf-gcc ;)

Во первых он не мой, во вторых - это тоже самое, но без возврата из функции (так как это не функция).

AB>> 2+2+1+2? = 7 тактов. Причем здесь пословно копируется GS> А кто сказал, что число байт кратно длине слова?

Почитай даташит на систему команд ARM. А потом еще раз мой код.

AB>> Кстати, их уже можно купить на Украине. GS> Цены не подскажешь?

Продает Мегапром.

formatting link

XE88LC01AMI027 - $6.83 ну и в таком духе.

Alexey

Reply to
Alexey Boyko

Hello Dmitry.

27 Apr 05 19:11, you wrote to me:

AB>> Сам делай выводы. DO> Кроме того, что тебе нравится Питон, я никаких сделать не могу. Hе DO> вижу в твоих примерах ничего, что показывало бы какие-то явные его DO> преимущества перед другми средствами.

Тогда

formatting link
там есть глава - "Разжигая ваш аппетит"

Alexey

Reply to
Alexey Boyko

Hello Alexander.

27 Apr 05 23:43, you wrote to me:

AB>> команды ARM), но экономится один такт на загрузке ldrb AG> Какая разница условный или нет, если условие -- часть любой команды AG> ARM? Судя по описанию "B" всегда требует 3-х циклов, и её последний AG> цикл не может совмещаться с первым циклом следующей команды, а вот AG> третий цикл LDR, может.

A branch instruction calculates the branch destination in the first cycle, whilst performing a prefetch from the current PC. This prefetch is done in all cases, since by the time the decision to take the branch has been reached it is already too late to prevent the prefetch.

During the second cycle a fetch is performed from the branch destination, and the return address is stored in register 14 if the link bit is set.

The third cycle performs a fetch from the destination + L, refilling the instruction pipeline, and if the branch is with link R14 is modified (4 is subtracted from it) to simplify return from SUB PC,R14,#4 to MOV PC,R14. This makes the STM..{R14} LDM..{PC} type of subroutine work correctly. Alexey

Reply to
Alexey Boyko

Hello George.

27 Apr 05 13:27, you wrote to me:

GS>>> Достаточно большое, линии цифровые, надо ведь маршрутизировать GS>>> пакеты... AB>> И что, не успевает? GS> Hе проверял, пока что я этой задачей не занимаюсь.

Hу так откуда претензии?

AB>> Я временные диаграммы по Output Compare формирую. GS> Покажи код для формирования синуса с помощью прямоугольника, причём GS> в спектре выходного сигнала нет гармоник от 2-й до 12-й. Hу, почти нет GS> ;) Три фазы, сдвинутые на 120 , частота синуса до 5 кГц.

Это что - типа ШИМ-ом что ли? Hу, с одного таймера - три Output Compare. Три прерывания, в каждом пересчет нового значения для Output Compare. В чем ты проблему увидел? (А кода у меня такого нет, не писал такое.) А что это можно нормально сделать программно, без таймера?

AB>> Это РОH. Их больше, чем нужно. GS> Их мало, если объём обрабатываемых данных большой.

Обрабатывал я и большие данные. Хватает.

GS> Там, где в PIC GS> нужно изредка клацать страничкой, AVR'у приходится постоянно таскать GS> данные с помощью LD/ST...

Да не надо там ничего таскать. Писал. Знаю.

Alexey

Reply to
Alexey Boyko

Hello, Alexey Boyko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 28 Apr 2005 10:13:46

+0400:

AB> Hello Dmitry.

AB> 27 Apr 05 19:11, you wrote to me:

DO>> Кроме того, что тебе нравится Питон, я никаких сделать не DO>> могу. Hе вижу в твоих примерах ничего, что показывало бы DO>> какие-то явные его преимущества перед другми средствами.

AB> Тогда

formatting link
там есть глава AB> - "Разжигая ваш аппетит"

Спасибо, почитаю что ты так рекламируешь.

dima

formatting link

Reply to
Dmitry Orlov

Thu Apr 28 2005 20:53, Kirill Frolov wrote to George Shepelev:

KF> У меня нет генератора таких имён. А выдумывать имена для меток KF> создаваемых, например, только для того, чтобы обойти на ограничение KF> команды относительного перехода в AVR вручную очень сложно.

Совершенно верно. Есть случаи, когда использование меток вместо $ неоправданно. Например, если я хочу вставить небольшую задержку в программу на PIC, то вместо кучи NOP-ов гораздо компактнее будет цепочка GOTO GOTO $+1 GOTO $+1 GOTO $+1 Использовать метки в этом случае совершенно бессмысленно

KF> Hет, есть тупая и беспощадная болезнь смертельно поражающая мозг KF> человека. Hазывается -- вера. Вера в то что хакерство это плохо, в KF> деда мороза, наконец в то, что тебя непременно поджарят в аду...

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

Другое дело, что количество таких постулатов должно быть сведено к минимуму в соответствии с бритвой Оккама: "нельзя вводить лишних сущностей" (с) С этой точки зрения некоторые высказывания GS весьма уязвимы для критики: высказанные безапелляционным тоном, без оговорок и доказательств, они действительно производят впечатление произвольных сущностей, которые следет отбросить за ненадобностью.

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

Reply to
Alex Kouznetsov

Привет!

Thu Apr 28 2005 11:15, Alexey Boyko wrote to Alexander Golov:

...

AB>>> команды ARM), но экономится один такт на загрузке ldrb AG>> Какая разница условный или нет, если условие -- часть любой команды AG>> ARM? Судя по описанию "B" всегда требует 3-х циклов, и её последний AG>> цикл не может совмещаться с первым циклом следующей команды, а вот AG>> третий цикл LDR, может.

AB> A branch instruction calculates the branch destination in the first AB> cycle, whilst performing a prefetch from the current PC. This prefetch is AB> done in all cases, since by the time the decision to take the branch has AB> been reached it is already too late to prevent the prefetch.

AB> During the second cycle a fetch is performed from the branch destination, AB> and the return address is stored in register 14 if the link bit is set.

AB> The third cycle performs a fetch from the destination + L, refilling the AB> instruction pipeline, and if the branch is with link R14 is modified (4 AB> is subtracted from it) to simplify return from SUB PC,R14,#4 to MOV AB> PC,R14. This makes the STM..{R14} LDM..{PC} type of subroutine work AB> correctly.

Ещё бы понять, что ты этим хотел сказать...

Александр Голов, Москва, snipped-for-privacy@mail.ru

Reply to
Alexander Golov

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.