Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Тема закрыта

Re: In vino veritas

Вт июн 26, 2018 12:01:39

и уже на стр.15 описание 16-ти 32-х разрядных регистров. А так-то да, ничего не нужно знать о ядре

Re: In vino veritas

Вт июн 26, 2018 13:22:52

salang писал(а):описание 16-ти 32-х разрядных регистров. А так-то да, ничего не нужно знать о ядре
Я не это писал.
Мурик писал(а):Знать все подробности о ядре первое время тоже не обязательно.
Программируя на ЯВУ не нужно знать о регистрах процессора, т. к. это перекладывается на компилятор. Достаточно поверхностных знаний ядра. Гораздо важнее знать как работать с периферией.

Re: In vino veritas

Вт июн 26, 2018 13:59:34

код инициализации тактового генератора занимает более 10 строк (!!!). И это только запуск МК. Про какие 2 недели тут рассказывают? В MCS51 тактовый генератор запускается автоматически , ничего кодить не надо.

Re: In vino veritas

Вт июн 26, 2018 14:08:00

Ядро и система команд определяют возможности МК.
А вот для работы под ЯВУ как раз знания о структуре и особенностях периферии необходимо сводить в "функционал БИОС" - как это выполнено в первобытных ПК.
Ибо... иначе работать под той же "форточкой" и/или под ЯВУ там было бы просто невозможно.
Вряд-ли программиста базы данных или иного приложения интересует функционал работ южного/северного мостов или начинка видеокарты/сетевой карты на уровне регистров - для этого поработали программисты предприятия выпустившего материнку (или доверенные представители производителя материнки и тех же мостов).
АРМ это именно ядро, а периферия - продукт отдельных производителей с лицензированием ядра и системы команд.
Если для "простейших" МК вопрос контроля периферии можно в мозгу держать и под ассемблером прекрасно с прикладными задачами справляться, то для системы-на-кристалле предпочтителен вариант ЯВУ.
Однако без единого БИОС преимущество ЯВУ будет сводиться к нулю именно по причине различия периферии.
Как и когда вопросы унификации проявятся предугадать трудно, но развитие пойдет именно по такому варианту.
Ну и обязательность симулятора системы-на-кристалле в полном объеме также есть "большой гвоздь" поскольку на сегодня даже "динозавревы" семейства классики МК не имеют ПОЛНОГО и БЕЗГЛЮЧНОГО варианта симулятора для ВСЕЙ КЛАССИЧЕСКОЙ (обязательной по минимальному стандарту) периферии.
То счетчики не во всех режимах работают, то приемопередатчики с "косяками", то прерывания....МНДЯАА...
8)

Re: In vino veritas

Вт июн 26, 2018 14:36:59

В MCS51 тактовый генератор запускается автоматически , ничего кодить не надо.



Ничего, что система тактирования более гибкая и более универсальная?
Но и разобраться в ней раз плюнуть - http://mcu.goodboard.ru/viewtopic.php?id=11
Но вы продолжайте ныть о том как тяжело и страшно...



Ядро и система команд определяют возможности МК.
А вот для работы под ЯВУ как раз знания о структуре и особенностях периферии необходимо сводить в "функционал БИОС" - как это выполнено в первобытных ПК.
Ибо... иначе работать под той же "форточкой" и/или под ЯВУ там было бы просто невозможно.


Не мешай все в кучу. Нет никакого "биос", о ядре можно только о NVIC знать.
Еще раз - изучать надо периферию и работу с ней ...

Re: In vino veritas

Вт июн 26, 2018 14:43:07

salang писал(а):код инициализации тактового генератора занимает более 10 строк (!!!). И это только запуск МК.
В статье рассматривается работа системы тактирования.
Она немного сложнее чем в MCS51 и других 8-ми битниках.
СпойлерИзображение
STM32103_Clock.png
(99.12 KiB) Скачиваний: 17
Писать код настройки не обязательно. Об этом позаботился производитель МК предоставив файл system_stm32f10x.c (для STM3210x). В нем есть строки.
Код:
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz  24000000 */
/* #define SYSCLK_FREQ_36MHz  36000000 */
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
#define SYSCLK_FREQ_72MHz  72000000
Т. е. вся настройка заключается в раскомментировании нужной строки с частотой на которой будет работать МК. Это же не сложно, правда? :)
Посмотрите примеры простого кода. Где там предлагают настраивать тактирование?
http://purebasic.mybb.ru/viewtopic.php?id=575
https://habr.com/post/191624/

salang писал(а):В MCS51 тактовый генератор запускается автоматически , ничего кодить не надо.
В MCS51 есть умножитель частоты? В нем можно изменять частоту шин к которым подключена периферия? Можно во время работы программы переключить тактирование с внутреннего RC генератора на внешний кварц и обратно, или умножить частоту RC/кварца на нужное число раз чтобы при тактировании от 8 МГц, МК работал скажем на 48 или 72 МГц?
В MCS51 очень примитивная схема тактирования и там просто нечего настраивать. :)))

BOB51 писал(а):Ядро и система команд определяют возможности МК.
А я то думал что в первую очередь периферия. :) Если будет мощное ядро, но периферия отсутствовать то что получим? Все придется делать программно что сведет на нет все преимущества.

BOB51 писал(а):А вот для работы под ЯВУ как раз знания о структуре и особенностях периферии необходимо сводить в "функционал БИОС" - как это выполнено в первобытных ПК.
Не нужно путать МК с компом. БИОС это по сути драйвер на системную плату. Для STM32 есть библиотеки SPL и HAL позволяющие работать с периферией не на уровне регистров, а на уровне функций (примерно как в БИОС). Настройка DMA используя библиотеку SPL. https://radiokot.ru/forum/viewtopic.php ... 8#p3406698

BOB51 писал(а):Ну и обязательность симулятора системы-на-кристалле в полном объеме также есть
Для этого есть аппаратная отладка. :)

Re: In vino veritas

Вт июн 26, 2018 17:19:16

У MCS51 оччень много чего на сегодня есть (у разных производителей).
И отличителтьная особенность - нельзя менять ядро и обязательный набор функционала.
Можно добавлять любой функционал, соблюдая СТАНДАРТНЫЕ правила лицензионного соглашения INTEL.
У АРМ насколько я понимаю, лицензионные обязательства касаются только ядра и системы команд.
Периферия - вопрос достаточно интересный.
Есть обязательный минимум, обусловленный обеспечением существования МК.
Его-то и встроили в первые МК внутри кристалла.
А есть дополнительные "вкусности" которые ранее (а частенько и сегодня) можно применять в виде внешних компонентов.
Достаточно часто эти "дополнительные вкусности" встраиваются и вовнутрь типовых серий МК.
НО... Эта расширенная периферия не определяет функционал МК, а лишь делает его пригодным к дополнительным областям применения БЕЗ ДОПОЛНИТЕЛЬНОЙ ВНЕШНЕЙ ОБВЯЗКИ.
Как правильнее - делать классификацию по ядру,характеризующему свойства семейства?
или может классифицировать кристаллы по области применения (согласно спецпериферии) не учитывая ядра/семейства на основе которого идет взаимодействие с тем спецмодулем?
8)
Насчет "подобия БИОС" - речь идет не о конкретном STM32, а о семействе АРМ, производимом многими независимыми производителями и об более простом методе унификации как ЯВУ, так и IDE для ВСЕХ ВИДОВ АРМ.
Причем чисто фантазийно-теоретически (а кто станет следующим БИЛЛОМ - посмотрим, я по крайней мере не претендую).
:wink:

Кстати...
Об аппаратных отладчиках...
В принципе это один из "троянских коней" с недокументированной/недостаточно документированной аппаратной частью и отсутствием полного открытого описания работы.
:roll:

Re: In vino veritas

Вт июн 26, 2018 19:01:39

Народ, чего вы привязались к MCS51. Эта архитектура была разрабтана в 80-х. Естественно, начинка МК тогда была значительно проще, но для современных архитектур тогдашнее простое тактирование неприемлимо. Кстати, и сегодня дефолтное тактирование во всех МК работает без всяких настроек, и на начальном этапе освоения архитектуры его можно оставить без изменений в проекте. Для настройки, например, аппаратных модулей связи (UART, I2C,...) полезно знать его частоту, но это указано в ДШ. Но даже если настройка тактирования занимает дюжину строчек кода - это разве много по сравнению с кодом логики самого приложения? Кстати, тактирование во многих современных МК гораздо сложнее, чем в MCS51. Посмотрите, например, на таковое в RL78 или MSP430:
Спойлер
rl78.png
(116.24 KiB) Скачиваний: 11
fr59.png
(61.32 KiB) Скачиваний: 7
Они, правда, 16-битные, но ещё далеко не ARM. Никогда тактирование, ровно как и настройка любого другого аппаратного модуля камнем преткновения в изучении МК не были. Стоит лишь начать. И занимает это совсем не годы, и даже не недели. Для начала работы с новым МК даже на уровне настройки периферии регистрами с нуля по ДШ сегодня достаточно буквально пары дней, особенно если уже есть опыт работы с какой-то архитектурой.

Re: In vino veritas

Ср июн 27, 2018 06:18:53

Вопрос в том, оправдана ли сложность начинки в практическом приложении.
Не секрет, что даже простейшие варианты используются от силы на 5-10%, чего уж говорить о более навороченных.
Часто ли попадаются проекты с динамической реконфигурацией аппаратных ресурсов по ходу исполнения программы?
А вот выбор конкретной конфигурации одного-двух задействованных в устройстве блоков с ОБЯЗАТЕЛЬНОЙ побочной детальной конфигурацией АБСОЛЮТНО НЕИСПОЛЬЗУЕМЫХ В КОНКРЕТНОМ ИЗДЕЛИИ аппаратных ресурсов - СПЛОШЬ И РЯДОМ.
И это даже в "примитивных" АВР и простейших среднемладших ПИК.
Речь не об отрицании более навороченного, а в разумно-достаточном применении имеющихся ресурсов.
8)
Кстати...
Когда я говорю о БИОС для МК - имеется ввиду спецминимум под ассемблером для интегрированного в кристалл аппаратного потрошка в объеме "стандартного опциона". Как в виде области в ПЗУ, так и , возможно, в виде дополнительного модуля (сопроцессора) управления периферией.
Значительно снизится и нагрузка на компилятор ЯВУ.
В то же время библиотеки ЯВУ представляются поставляемыми производителем вместе с документацией "драйверами-библиотеками" для соответствующих общепризнанных IDE но... только в случае появления интегрированной в кристалл "начинки с изюминкой".

Не стоит забывать, что микроконтроллер возник как ОБЪЕКТИВНО-НЕОБХОДИМАЯ замена специализированных плат на основе микропроцессора с периферией сопровождения для того, чтобы "сэкономить место" в тех случаях, когда для управления устройством не хватало набора на основе "рассыпухи" и для "экономии места при тиражировании автомат-примитивов".
Собственно и сегодня это справедливо.
Можно конечно и современным многоядерным персональным компом два-три светика в ночнике засветить для куражу...
А можно и простейший стандартный МК или 555 поставить.
Только вот В ОБЯЗАТЕЛЬНОМ ПОРЯДКЕ изучать начинку микрокомпьютера с целью создания мобилки вряд-ли оправданно для простолюбителя. Максимум обзор, чтоб понять оправданы ли расходы на изучение будущей областью применения.
В то же время, сам МК, будь оный аж супернавороченный, проблем с автоматикой не решает - обязательно присутствуют и датчики и исполнительные устройства(кибенематика) и... ЛЮБИМЫЕ ПОМЕХИ...
Вот тут - то и ... продолжать не буду - всем известно, кто реально занимался СОБСТВЕННЫМИ проектами.
:beer:

Re: In vino veritas

Пт июн 29, 2018 20:18:02

А может кто подсказать, как работает вычисление косинусов синусов, в мк, калькуляторах, на уровне логических элементов?

Re: In vino veritas

Пт июн 29, 2018 20:50:47

Скорее всего табличным способом ... Или специальный макрос с добавкой многобайтового умножения/деления.
Особо не влазил пока за неиспользованием...
:dont_know:
Синусоиду точно по таблицам делают...
В то же время в Си используются функции-подпрограммки на основе математики - то копать библиотеки или листинг надо...
:roll:

Re: In vino veritas

Пт июн 29, 2018 21:00:35

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

Re: In vino veritas

Пт июн 29, 2018 21:24:50

asvhmao писал(а):ресурсы памяти они ведь не бесконечные.
Берете МК с 1 МБ или больше флеша и для таблиц хватит.

Re: In vino veritas

Пт июн 29, 2018 21:55:07

Нет, мне интересна именно реализация в железе на логике. Чисто спортивный интерес.
Как-то оно ж в мк и калькуляторах работает и без 1 МБ памяти?

Re: In vino veritas

Сб июн 30, 2018 08:05:31

Есть такая маахонькая штука - логарифмическая линейка.
Размеры минимальны - эфект максимален.
Возможно просто скопировать алгоритм и работу с разметкой?
:roll:

Re: In vino veritas

Сб июн 30, 2018 09:54:47

логарифмическая линейка заменяет таблицу логарифмов, т.е. принципиально от табличного метода не отличается.

Re: In vino veritas

Сб июн 30, 2018 10:17:34

Нет, мне интересна именно реализация в железе на логике. Чисто спортивный интерес.

6 сложений, 7 умножений, на STM32 с FPU синус тактов за 30 считает с неплохой точностью.

Re: In vino veritas

Сб июн 30, 2018 10:48:19

Нет, мне интересна именно реализация в железе на логике. Чисто спортивный интерес.

6 сложений, 7 умножений, на STM32 с FPU синус тактов за 30 считает с неплохой точностью.


Пример исходника на чистом ассемблере для АРМ (а не распечатку Сишного листинга) приложите.
:wink:
Я понимаю, что под Си это не вопрос в принципе.
8)

ARV
Таблица-таблицей, а еще и нониусный движок...
Вот в нем - то и "добавочная вкусность" возможна...
:roll:

Re: In vino veritas

Сб июн 30, 2018 11:16:49

BOB51 писал(а):Таблица-таблицей, а еще и нониусный движок..

Там шкала нелинейная, нониусы не спасают.
Reflector писал(а):6 сложений, 7 умножений

На пальцах можно объяснить как это работает? Из теории попалось только ряд Тейлора, в виде степенных рядов. Из практики не совсем то, но всё же, массовая радио библиотека 955 выпуск, конструкции советских и чехословацких радиолюбителей, электронная лагорифмическая линейка, 1979 год.

Re: In vino veritas

Сб июн 30, 2018 11:37:42

Я и алгоритмы многобайтового умножения/деления только в теории почитывал...
Все никак в реальную библиотеку не сведу...
:(
Единственно есть несколько учебников под стару базу - I8080/86...
Сегодня исходный материал арифметических примитивов довольно тяжко сыскать, а тут еще адаптация под иную систему команд и иное ядро...
Надо в архивах покопаться...
:roll:
Тема закрыта