Страница 4 из 6

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 14:48:25
protoder
>> Попробуйте заставить все это сделать компилятор так

Все. Теперь понял, о чем вы.

>> Проблема многоядерного АЛУ (SIMD) состоит в том, что сама по себе математика может быть распараллелена на любое количество ядер, однако операнды нужно откуда то брать и результат куда то сохранять.

Да. Есть такая тема. И почему-то она не очень продумана в SIMD. Тут не поспоришь. Какая-нить предвыборка следующего банка была б очень в кассу.
Но тем не менее даже при своих ограничениях результат перевода на SIMD плюс качественной ассемблерной оптимизации получился очень существенным. К чему, собственно, и рассказ.

Добавлено after 11 minutes 52 seconds:
[uquote="Sergi",url="/forum/viewtopic.php?p=3792157#p3792157"]В своей второй конструкции осциллографа тоже использовал буферную память и тоже с М0. Тема есть на форуме. Прибор успешно работает. Быстрая запись медленное чтение во внутреннюю RAM с обработкой. Тактирование от MCO или TIM1. Захват до удвоенной частоты тактирования ограничен скоростью работы памяти.[/uquote]

Мне хочется попробовать упростить конструкцию, и уйти от использования памяти. В моей поделке стробоскоп, поэтому я готов, скорее, подвинуться по тактовой частоте (хотя и обидно не использовать АЦП по максимуму). Но ограничить цифровую часть двумя узлами: МК и АЦП.

Правда, я пока не очень понимаю, как сделать тактировку (для нормальной работы стробоскопа нужны две частоты. Одна рабочая, вторая чуть меньше. Сейчас это делают два кварца с близкими частотами. Но кварцы высокочастотные, напрямую от них МК не затактируешь. Если делить потом умножить - PLL по определению сдвинет фазу. Не катит. Вобщем, пока проблема... Не ставить же специальный контроллер исключительно в качестве PLL генератора для второй частоты... Вобщем, пока проблема.
Один, кстати, из все уменьшающихся по мере знакомства с STM плюсов atxmega - у нее есть возможность плавно менять частоту RC генератора (типа калибровка) в пределах полутора октав. Это было удобно.

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 16:52:12
Кислородный
Калибровка RC осциллятора (HSI) в STM32 есть, только не на полторы октавы (это слишком много, больше чем в два раза), а процентов на 6 примерно.

Осциллограф на F0 - это уж слишком оптимистично. Вообще, нормальный осциллограф получается на ПЛИС. ПЛИС умеет напрямую работать с DDR2(3) и с высокой скоростью сохранять в нее захват с АЦП. Подобные скорости недостижимы для микроконтроллеров, на какие бы ухищрения не шли, сколько бы не оптимизировали код.

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 17:14:06
protoder
>> Калибровка RC осциллятора (HSI) в STM32 есть, только не на полторы октавы (это слишком много, больше чем в два раза), а процентов на 6 примерно.

да это, к сожалению, ни о чем...

>> Осциллограф на F0 - это уж слишком оптимистично.

Не, не... F0 точно не подойдет

>> Вообще, нормальный осциллограф получается на ПЛИС.

Да. Но ПЛИС дорого. А у меня еще нет уверенности, что не проходит на STM. Мне надо-то хотя бы мегагерц 50, уже решит проблему. А это по слухам достижимо для F3 или F4.

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 17:50:12
Reflector
[uquote="Кислородный",url="/forum/viewtopic.php?p=3792376#p3792376"]ПЛИС умеет напрямую работать с DDR2(3) и с высокой скоростью сохранять в нее захват с АЦП. Подобные скорости недостижимы для микроконтроллеров, на какие бы ухищрения не шли, сколько бы не оптимизировали код.[/uquote]
Из F4 можно выжать под 100 MSPS для 16-ти бит и еще больше для 8-ми, естественно сохраняя во встроенную RAM, а на H750 должно быть 160 MSPS даже без разгона.

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 17:59:27
Sergi
Я сделал на F030 из-за дешевизны и простоты. Вся цифровая часть по сегодняшним ценам 500р. может делать монотонный захват 2х каналов по 8бит длиной до 256к на скорости 100msps и более. Зависит от минимальной ширины сигнала /WR микросхемы SRAM.
Да,на плис лучше, но надо уметь ее готовить. А для DDR еще и буфер внутри организовывать. Я такое не умею.

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 18:21:01
protoder
[uquote="Reflector",url="/forum/viewtopic.php?p=3792401#p3792401"][uquote="Кислородный",url="/forum/viewtopic.php?p=3792376#p3792376"]ПЛИС умеет напрямую работать с DDR2(3) и с высокой скоростью сохранять в нее захват с АЦП. Подобные скорости недостижимы для микроконтроллеров, на какие бы ухищрения не шли, сколько бы не оптимизировали код.[/uquote]
Из F4 можно выжать под 100 MSPS для 16-ти бит и еще больше для 8-ми, естественно сохраняя во встроенную RAM, а на H750 должно быть 160 MSPS даже без разгона.[/uquote]

>> Из F4 можно выжать под 100 MSPS для 16-ти бит и еще больше для 8-ми,

А как? Пока по данным разведки он не умеет читать порты быстрее, чем за 4 такта

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 18:53:11
Reflector
[uquote="protoder",url="/forum/viewtopic.php?p=3792417#p3792417"]А как? Пока по данным разведки он не умеет читать порты быстрее, чем за 4 такта[/uquote]
F407/405 гонятся до 260 и читают с порта действительно за 4 такта, но F429 у меня гнался до 300 и DMA работает уже за 3 такта, как и у F7. Если хватает 8 бит, то можно использовать 2-х тактовый DCMI.

Re: Ассемблер KEIL

Добавлено: Пн фев 17, 2020 22:22:16
Мурик
protoder писал(а):Одна рабочая, вторая чуть меньше. Сейчас это делают два кварца с близкими частотами. Но кварцы высокочастотные, напрямую от них МК не затактируешь. Если делить потом умножить - PLL по определению сдвинет фазу. Не катит. Вобщем, пока проблема... Не ставить же специальный контроллер исключительно в качестве PLL генератора для второй частоты...
Если использовать PLL что в МК и вывести частоту с него через MCO? Не подойдет?

Re: Ассемблер KEIL

Добавлено: Ср фев 19, 2020 23:45:16
protoder
Да не. Говорю ж - мне вторая частота нужна, привязанная к основной, но чуть ниже

Re: Ассемблер KEIL

Добавлено: Чт фев 20, 2020 23:08:44
protoder
Все! Я знаю, зачем изучать ассемблер. Я наконец разобрался и пишу. Парни! Я работал на 8-ми разрядных контроллерах. Этот - 32-х. Работая на С, вы не почувствуете этого кайфа! :)

Кстати, я не соглашусь, что ассемблер для STM32 сложный. Как обычно, много трудностей с освоением синтаксиса. Мало примеров, много подводных камней. Короче, начинать очень не легко.
Но, после того, как преодолел первые сложности - писать совсем не сложно. Ассемблер как ассемблер. Правда, пока знаком только с Cortext M0. Посмотрим, что будет дальше.

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 02:25:34
SII
[uquote="protoder",url="/forum/viewtopic.php?p=3794212#p3794212"]ассемблер для STM32[/uquote]

Позанудствую: не для STM32, а для архитектуры ARM. То же относится и к Cortex-M0 (название одного из ядер этой архитектуры версии ARMv6-M). А занудствую из-за того, что при переходе на любой другой ARM любой другой фирмы ассемблер не поменяется -- он относится к архитектуре, а не к конкретной реализации.

А насчёт сложности... Если человек действительно разобрался с ассемблером для какой-либо одной архитектуры, разобраться с любыми другими будет многократно проще. Несмотря на все отличия, общие принципы идентичны. Ну ладно, есть особо извращённые случаи типа IA-64 aka Itanium или там процессоров цифровой обработки сигналов, но их очень немного по сравнению с, условно говоря, "нормальными" архитектурами.

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 02:34:05
protoder
[uquote="SII",url="/forum/viewtopic.php?p=3794260#p3794260"][uquote="protoder",url="/forum/viewtopic.php?p=3794212#p3794212"]ассемблер для STM32[/uquote]

Позанудствую: не для STM32, а для архитектуры ARM. То же относится и к Cortex-M0 (название одного из ядер этой архитектуры версии ARMv6-M). А занудствую из-за того, что при переходе на любой другой ARM любой другой фирмы ассемблер не поменяется -- он относится к архитектуре, а не к конкретной реализации.[/uquote]

Ну... Да. В принципе, правильно занудствуете. Эту фишку я тоже оценил. Что в комплекте к STM32 прилагается еще очень приличный список контроллеров других производителей. Такой маленький бесплатный бонус :)
Не. Нравятся мне эти железяки. Все больше и больше. Разбираться с ними однозначно стоит.

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 11:02:21
КРАМ
[uquote="SII",url="/forum/viewtopic.php?p=3794260#p3794260"]или там процессоров цифровой обработки сигналов[/uquote]
Кстати, у AD интересный ассемблер...
Сумма регистров так и записывается как R1=R2+R3 :)

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 12:39:17
dosikus
[uquote="protoder",url="/forum/viewtopic.php?p=3794212#p3794212"]Парни! Я работал на 8-ми разрядных контроллерах. Этот - 32-х. Работая на С, вы не почувствуете этого кайфа! :)[/uquote]

Отличие stm32, если вы в пылу щенячьей радости не заметили , в мощной периферии.
И вот тут каГБы абсолютно нет никакого преимущества асмЪ...

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 15:30:36
protoder
[uquote="dosikus",url="/forum/viewtopic.php?p=3794398#p3794398"][uquote="protoder",url="/forum/viewtopic.php?p=3794212#p3794212"]Парни! Я работал на 8-ми разрядных контроллерах. Этот - 32-х. Работая на С, вы не почувствуете этого кайфа! :)[/uquote]

Отличие stm32, если вы в пылу щенячьей радости не заметили , в мощной периферии.
И вот тут каГБы абсолютно нет никакого преимущества асмЪ...[/uquote]

Э... Вы вообще о чем? Я вроде давно уже не про преимущества асм. Или так не терпелось написать про "щенячью радость"? :)

Добавлено after 1 minute 45 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=3794359#p3794359"][uquote="SII",url="/forum/viewtopic.php?p=3794260#p3794260"]или там процессоров цифровой обработки сигналов[/uquote]
Кстати, у AD интересный ассемблер...
Сумма регистров так и записывается как R1=R2+R3 :)[/uquote]

AD? Analog Devices? Какие-нибудь сигнальные процессоры? Или они тоже свои микроконтроллеры делают? Я вроде не слышал.

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 15:46:22
Кислородный
[uquote="protoder",url="/forum/viewtopic.php?p=3794212#p3794212"]Все! Я наконец разобрался и пишу.
Кстати, я не соглашусь, что ассемблер для STM32 сложный. Как обычно, много трудностей с освоением синтаксиса. ые сложности - писать совсем не сложно. .[/uquote]
Ха-ра-шо, если хотите настоящего кайфа, тогда переходите сразу на Cortex M7 - полторы тыщщи инструкций, если считать все их варианты - это даст вам ни с чем не сравнимый кайф. Лишь бы голова не лопнула.
Да, а вы как пишите? Освоили уже условное исполнение и переходы, аль так, r0 + r1 - r4 только? Ну а как насчет вариативного второго операнда? Второй операнд может быть инструкцией сам по себе - ну как? Пост-инкремент операнда, сдвиг, и т.д. Флаги условий, суффиксы? Их 15 штук. Почти каждая инструкция может иметь до 15 вариантов.
Ну а пробовали ли строить какие-нибудь алгоритмы, циклы с условиями? таблички?

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 16:03:38
protoder
Кстати, при всех "щенячьих восторгах" - а семейство мне несомненно нравится, - должен признать, что во многих случаях я с удивлением обнаружил, что... как бы это сказать... информационная среда создает вокруг STM32 завышенные ожидания. Так, я бы не сказал, что периферия stm32 так уж сильно отлична от периферии atxmega (на самом деле, вообще ощущение, что atxmega создавался для конкурирования с stm32. Местами отличия только в названии и разрядности регистров ). При чем, есть параметры, иногда важные, в которых atxmega впереди ( входной усилитель АЦП, настраиваемый в пределах полутора октав RC генератор, независимая схема тактировки usb, сеть событий). Из явных плюсов stm32 я пока нашел только более гибкую возможность настройки портов ввода - вывода. Наверное, по мере знакомства, будут и другие плюсы. Но чего-то принципиально нового я не жду.
Поэтому пока в качестве главного преимущества периферии stm 32 я бы назвал... знаете, прям даже боязно писать, типа, не сглазить бы... я бы назвал ее адекватную работу. Я пока поигрался еще не со всей периферией. Но с какой поигрался, еще ни разу не попал на ситуацию, когда ее поведение не соответствует даташиту.
У atxmega же, достаточно сказать, списки ошибок порою на несколько листов. При чем ошибок таких, что ставят под сомнение саму возможность использования данного узла на устройстве. А если учесть, что ошибки могут меняться от партии к партии, то - вообще беда...

Добавлено after 12 minutes 46 seconds:
[uquote="Кислородный",url="/forum/viewtopic.php?p=3794504#p3794504"][uquote="protoder",url="/forum/viewtopic.php?p=3794212#p3794212"]Все! Я наконец разобрался и пишу.
Кстати, я не соглашусь, что ассемблер для STM32 сложный. Как обычно, много трудностей с освоением синтаксиса. ые сложности - писать совсем не сложно. .[/uquote]
Ха-ра-шо, если хотите настоящего кайфа, тогда переходите сразу на Cortex M7 - полторы тыщщи инструкций, если считать все их варианты - это даст вам ни с чем не сравнимый кайф. Лишь бы голова не лопнула.
Да, а вы как пишите? Освоили уже условное исполнение и переходы, аль так, r0 + r1 - r4 только? Ну а как насчет вариативного второго операнда? Второй операнд может быть инструкцией сам по себе - ну как? Пост-инкремент операнда, сдвиг, и т.д. Флаги условий, суффиксы? Их 15 штук. Почти каждая инструкция может иметь до 15 вариантов.
Ну а пробовали ли строить какие-нибудь алгоритмы, циклы с условиями? таблички?[/uquote]

Cortex M0. Онли Cortex M0!
Но что-то мне подсказывает, что и дальнейшее знакомство ужаса не вызовет...

И да. Полагаю, на старших моделях выигрыш от ассемблера будет несколько меньше. Но на Cortex M0, в условиях острой нехватки регистров ( по сути, всего 8 независимых регистров, часть которых активно используется для служебных нужд, компенсируя урезанность системы команд) - программы на ассемблере способны дать очень сильный выигрыш по сравнению с С\С++. Например, для пользователей бесплатного Keil с его ограничением на 32 кБ. это наверняка может оказаться полезным.
Я сейчас делаю программку на С. Она будет не большой, поэтому по завершению тренировки ради и вообще планирую перевести ее на ассемблер. Как раз посмотрим, что это даст.

А. И еще знаете, что забавно... Я тут как-то, по-моему в другом форуме, пустил тему про то, что не плохо бы было, окажись для STM32 много хороших библиотек. И знаете? На меня кинулись с таким же рвением, как и при обсуждении ассемблера... Интересная такая особенность... То есть под stm32 надо писать только так. На С, обложившись документацией. И ни как иначе... Прям братство камня какое-то... :)

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 16:07:06
КРАМ
[uquote="protoder",url="/forum/viewtopic.php?p=3794501#p3794501"]AD? Analog Devices? Какие-нибудь сигнальные процессоры? Или они тоже свои микроконтроллеры делают? Я вроде не слышал.[/uquote]
Процессоры, конечно.
Контроллеры ADuC сделаны на ядре ARM-Cortex.
Контроллер DSP будет всегда иметь скоростное ограничение связанное с программным флешем.

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 16:08:59
protoder
[uquote="КРАМ",url="/forum/viewtopic.php?p=3794523#p3794523"][uquote="protoder",url="/forum/viewtopic.php?p=3794501#p3794501"]AD? Analog Devices? Какие-нибудь сигнальные процессоры? Или они тоже свои микроконтроллеры делают? Я вроде не слышал.[/uquote]
Процессоры, конечно.
Контроллеры ADuC сделаны на ядре ARM-Cortex.
Контроллер DSP будет всегда иметь скоростное ограничение связанное с программным флешем.[/uquote]

ну, мне до них еще далеко. Ясно уже, что я застрял с STM32.

Re: Ассемблер KEIL

Добавлено: Пт фев 21, 2020 16:10:25
КРАМ
[uquote="Кислородный",url="/forum/viewtopic.php?p=3794504#p3794504"]Cortex M7 - полторы тыщщи инструкций[/uquote]
Это не так уж и много, если помнить о том, что они делятся на группы по функционалу, а суффиксы ортогональны самим инструкциям. То есть все это создает реальные возможности решать задачу освоения по частям.