Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Пн фев 17, 2020 14:48:25

>> Попробуйте заставить все это сделать компилятор так

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

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

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

Добавлено after 11 minutes 52 seconds:
В своей второй конструкции осциллографа тоже использовал буферную память и тоже с М0. Тема есть на форуме. Прибор успешно работает. Быстрая запись медленное чтение во внутреннюю RAM с обработкой. Тактирование от MCO или TIM1. Захват до удвоенной частоты тактирования ограничен скоростью работы памяти.


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

Правда, я пока не очень понимаю, как сделать тактировку (для нормальной работы стробоскопа нужны две частоты. Одна рабочая, вторая чуть меньше. Сейчас это делают два кварца с близкими частотами. Но кварцы высокочастотные, напрямую от них МК не затактируешь. Если делить потом умножить - 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

>> Калибровка RC осциллятора (HSI) в STM32 есть, только не на полторы октавы (это слишком много, больше чем в два раза), а процентов на 6 примерно.

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

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

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

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

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

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

Пн фев 17, 2020 17:50:12

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

Из F4 можно выжать под 100 MSPS для 16-ти бит и еще больше для 8-ми, естественно сохраняя во встроенную RAM, а на H750 должно быть 160 MSPS даже без разгона.

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

Пн фев 17, 2020 17:59:27

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

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

Пн фев 17, 2020 18:21:01

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

Из F4 можно выжать под 100 MSPS для 16-ти бит и еще больше для 8-ми, естественно сохраняя во встроенную RAM, а на H750 должно быть 160 MSPS даже без разгона.


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

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

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

Пн фев 17, 2020 18:53:11

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

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

Да не. Говорю ж - мне вторая частота нужна, привязанная к основной, но чуть ниже

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

Чт фев 20, 2020 23:08:44

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

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

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

Пт фев 21, 2020 02:25:34

ассемблер для STM32


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

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

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

Пт фев 21, 2020 02:34:05

ассемблер для STM32


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


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

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

Пт фев 21, 2020 11:02:21

или там процессоров цифровой обработки сигналов

Кстати, у AD интересный ассемблер...
Сумма регистров так и записывается как R1=R2+R3 :)

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

Пт фев 21, 2020 12:39:17

Парни! Я работал на 8-ми разрядных контроллерах. Этот - 32-х. Работая на С, вы не почувствуете этого кайфа! :)


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

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

Пт фев 21, 2020 15:30:36

Парни! Я работал на 8-ми разрядных контроллерах. Этот - 32-х. Работая на С, вы не почувствуете этого кайфа! :)


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


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

Добавлено after 1 minute 45 seconds:
или там процессоров цифровой обработки сигналов

Кстати, у AD интересный ассемблер...
Сумма регистров так и записывается как R1=R2+R3 :)


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

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

Пт фев 21, 2020 15:46:22

Все! Я наконец разобрался и пишу.
Кстати, я не соглашусь, что ассемблер для STM32 сложный. Как обычно, много трудностей с освоением синтаксиса. ые сложности - писать совсем не сложно. .

Ха-ра-шо, если хотите настоящего кайфа, тогда переходите сразу на Cortex M7 - полторы тыщщи инструкций, если считать все их варианты - это даст вам ни с чем не сравнимый кайф. Лишь бы голова не лопнула.
Да, а вы как пишите? Освоили уже условное исполнение и переходы, аль так, r0 + r1 - r4 только? Ну а как насчет вариативного второго операнда? Второй операнд может быть инструкцией сам по себе - ну как? Пост-инкремент операнда, сдвиг, и т.д. Флаги условий, суффиксы? Их 15 штук. Почти каждая инструкция может иметь до 15 вариантов.
Ну а пробовали ли строить какие-нибудь алгоритмы, циклы с условиями? таблички?

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

Пт фев 21, 2020 16:03:38

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

Добавлено after 12 minutes 46 seconds:
Все! Я наконец разобрался и пишу.
Кстати, я не соглашусь, что ассемблер для STM32 сложный. Как обычно, много трудностей с освоением синтаксиса. ые сложности - писать совсем не сложно. .

Ха-ра-шо, если хотите настоящего кайфа, тогда переходите сразу на Cortex M7 - полторы тыщщи инструкций, если считать все их варианты - это даст вам ни с чем не сравнимый кайф. Лишь бы голова не лопнула.
Да, а вы как пишите? Освоили уже условное исполнение и переходы, аль так, r0 + r1 - r4 только? Ну а как насчет вариативного второго операнда? Второй операнд может быть инструкцией сам по себе - ну как? Пост-инкремент операнда, сдвиг, и т.д. Флаги условий, суффиксы? Их 15 штук. Почти каждая инструкция может иметь до 15 вариантов.
Ну а пробовали ли строить какие-нибудь алгоритмы, циклы с условиями? таблички?


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

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

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

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

Пт фев 21, 2020 16:07:06

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

Процессоры, конечно.
Контроллеры ADuC сделаны на ядре ARM-Cortex.
Контроллер DSP будет всегда иметь скоростное ограничение связанное с программным флешем.

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

Пт фев 21, 2020 16:08:59

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

Процессоры, конечно.
Контроллеры ADuC сделаны на ядре ARM-Cortex.
Контроллер DSP будет всегда иметь скоростное ограничение связанное с программным флешем.


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

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

Пт фев 21, 2020 16:10:25

Cortex M7 - полторы тыщщи инструкций

Это не так уж и много, если помнить о том, что они делятся на группы по функционалу, а суффиксы ортогональны самим инструкциям. То есть все это создает реальные возможности решать задачу освоения по частям.
Ответить