0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 59
|
|
1 | |
Начал изучать STM32, я в лёгком недоумении )28.02.2014, 14:08. Показов 30249. Ответов 85
Метки нет (Все метки)
Здравствуйте уважаемые форумчане!
Долгое время сидел на 51м ядре, включая его продвинутые версии и вот решил с нуля изучить кортекс. Пишу я свои программы на hexе... шучу, на асме). Ибо в затылок никто не дышит со сроками, а подход у меня всегда творческий и фундаментальный. Ну речь не об этом. Много уже говорено-переговорено про это ядро, конечно никто не ставит под сомнение его продвинутость, периферию и что немаловажно стоимость. Мне другое интересно, процентов 90-95 сейчас пишут на си и порой даже не вдумываются что там творится на самом деле. А меня смутило следующее. Неужели в STM32 чтобы банально сконфигурировать регистр или дернуть пином нужно как минимум 3 команды (или 5 тактов) Пример конфигурации 8051 - конфигурируем таймер mov TMOD, #25h STM32 - включаем тактирование порта MOV32 R0, RCC_APB2ENR MOV32 R1, 0x00000010 STR R1, [R0] ну ладно, конфигурация - это такое, вначале настроил и забыл. Но когда банально доходит до вывода информации, например подергать пином, неужели всё те же 3 команды? Другими словами там, где я мог запустить вывод в порт на силабе х51 допустим на 24 МГц, с STM32 мне для уверенности нужно будет МГц 50? Может я чего-то недопонял и в кортексе есть прямая установка регистров, а не через косвенное обращение?
0
|
28.02.2014, 14:08 | |
Ответы с готовыми решениями:
85
Начал изучать С++ Начал изучать JS начал изучать с++ Начал изучать javascript Начал изучать ООП |
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
|
|
02.03.2014, 05:49 | 41 |
0
|
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
|
|
02.03.2014, 05:53 | 42 |
Сообщение от _pv
DMA в GPIO + таймер, пожалуй, могут отправить кусок данных в дисплей без участия процессора. было бы только откуда улетать. Если я правильно понял... у ТСа STM32F100... и походу он от него много хочет... В его случае ногодрыгом с оптимизацией кода будет быстрее... как не странно... У 100-ок ДМА тормозной... да и тактовая низкая...
0
|
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 26
|
|
02.03.2014, 06:34 | 43 |
Я не знаю кто как, но я лично не понимаю смысла написания чего-либо на ассемблере в данный момент кроме очень специфичных случаев. То есть знать ассемблер, конечно, нужно, но вообще компиляторы сейчас все переводят из языка высокого уровня так хорошо, что никакой особой разницы между ручным набором и через высокий язык по сути нет. Ну разве что нужно работать с чем-то, где нужна максимальная скорость и точность до наносекунд.
0
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 59
|
|
02.03.2014, 12:44 | 44 |
Сообщение от dork_usir
И что многого я от него хочу? Запустить виндоус 95? Или может архивирование? Или конвертация видео в mpeg? Я хочу банально выводить инфу на дисплей в параллельном потоке. Это под силу даже Tiny, если бы у неё было 23 пина.
Сообщение от Domyit5555
Естественно при хорошей периферии это всё упрощается, но даже в таком навороченном контроллере я не вижу таких возможностей.
0
|
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
|
|
02.03.2014, 14:17 | 45 |
На вкус и цвет товарища нет. Не нравится STM, по своему ногодрыгательству, берите силаб, берите AVR. Вас никто насильно не заставляет применять STM. Причины которые могут повлиять на выбор STM могут быть вовсе крайне отдалённые, к примеру стоимость, совместимость по ногам, наличие 2-х или 3-х uart в недорогих камнях, и многое, многое, другое, никак не связанное с ногодрыгательством.
Получив "шаровый" дискавери по акции, я его закинул в дальний угол более чем на год, по той же причине, на тему которой тут ведётся разговор. Увидев что для ногодрыгательства нужно 3 команды я возмутился и закинул его, а теперь жалею про столь опрометчивый шаг. Потеряв более года.
0
|
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 261
|
|
02.03.2014, 14:30 | 46 |
Сообщение от imkymiir83
0
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 59
|
|
02.03.2014, 15:16 | 47 |
Сообщение от Vottdymor
Я же проводил команду установить пин, 2 такта setb P2.4 Да и 5 тактов не одна команда выполняется, а три команды которые устанавливают пин. Это я тоже приводил. Не знаю как в реале, но кейл четко показывает 5 тактов mov32 R0, GPIOC_BSRR mov32 R1, 0x00000100 str R1, [R0]
0
|
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
|
|
02.03.2014, 16:23 | 48 |
Похоже ни кто не заметил, что:
Код
mov32 R0, GPIOC_BSRR mov32 R1, 0x00000100 str R1, [R0] Первая это макрос, подставляющий 2 команды. Все команды занимают 1 такт 32бит. Это все идеология RISC. Если коротко: простые фиксированного размера инструкции, требующие мало тактов, мало элементов и соответственно мало энергии. CISC - сложные с переменным размером длины команды, с разным числом тактов и требующие много вспомогательных блоков жрущие энергию. На нынешний момент: ARM (RISC) дешевые экономные, но слегка медленные. x86(CISC) быстрые, но сложные и не экономные. i51 прародитель 8бит 32разрядных x86, не думаю, что бы вы хотели в контроллере это ядро.
0
|
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
|
|
02.03.2014, 16:35 | 49 |
По моим наблюдениям большинство команд на asm выполняются за 1 такт. Кажется по 2 такта тратится на команды загрузки/сохранения в ОЗУ. Команды умножения за несколько тактов выполняются, от 1 до 5 в зависимости от команды (32х или 64 битный результат, с накоплением или без и т.п. нюансов). Деление за 7 тактов. Команды условного перехода тактов за 5 выполняются. Из приведенного примера команда mov32 - псевдокоманда состоящая из 2х команд mov и movt и выполняется за 2 такта. Причем это для cortex-m3.
0
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 106
|
|
02.03.2014, 20:03 | 50 |
Не возбраняется!
Купить 100 Мгц 80с120 от силабс (51 архитектура ) за 23 бакса за штуку и побивать им все на свете! А я тихонечко в уголочечке, на своем стм32ф103 на 72 Мгц за 2 (sic!)доллара со всеми накрутками, зарабатываю свою денежку + 21 бакс разницы в цене кладу себе в карман...
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 222
|
|
02.03.2014, 20:37 | 51 |
x86 прародитель 32-ти разрядных x386 i51 отдельное направление - ядро которых до сих пор востребовано (взять тот же логический анализатор USBee SeaLogig на базе 8051-ядра При продажной цене моей поделки в *** баксов себестоимостью ** - 21 бакс есть ничто :) Аргумент просто смешной.
0
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 106
|
|
02.03.2014, 20:51 | 52 |
Я неоднократно был свидетелем выцарапывания глаз за простой конденсатор или резистор при тираже 10 экземпляров, а ты мне тут тень на плетень наводишь. Я жеж написал: Не возбраняется!
0
|
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
|
|
02.03.2014, 21:03 | 53 |
Кстати, интересный момент: MCS 51 является открытым ядром, что, несмотря на большую конкуренцию, продолжает выпускаться в больших количествах и в ближайшее годы останется на плаву, уже почти 40 лет!
Вполне возможно, что Sortix-m, легко лицензируемый может оказаться таким же в области 32бит. микроконтроллеров, тем более резерва там заложено о-го-го.
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 222
|
|
02.03.2014, 21:11 | 54 |
Я к тому что аргументация должна быть другой.
У STM32 из преимуществ достаточно большой объём программной памяти и памяти данных + широкая периферия + 32-х битная арифметика + относительно низкая цена + простота записи и отладки... поэтому приходится мириться с минусами и переползать на Си. Кстати, интересный момент: MCS 51 - любимое ядро Сименса для периферийных микросхем устройств промышленной автоматики. <Изображение удалено>
0
|
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 59
|
|
02.03.2014, 21:58 | 55 |
Так, ладно, тема зашла немного в другое русло, никто тут не доказывает превосходство 51х в сравнении с STM32.
Просто хотелось понять чем STM компенсирует сложность обращения к регистрам, ответ получен.
0
|
TWW
|
|
03.04.2014, 05:03 | 56 |
Сообщение от imkymiir83
Понравилось ядро F4, обвязка понравилась. Периферия легко настраивается. Цена приемлемая. Будет время, доберусь и до сайта. Наработок уже полно... Сделал устройство, которое в реальном времени обрабатывает входящие импульсы на частоте 1-2мгц и отдаёт в ответ ~10 мгц. Работает жёстко, не пропуская ни одного импульса на входе. Используются прерывания. Одновременно выводится картинка на экран. С 8-битниками о подобной задаче можно забыть.. Возвращаясь к теме, да, нужно смириться с тем, что нельзя напрямую адресовать 32-битные адреса. Их нужно сначала загрузить в регистр. Причём на эту загрузку будет ухлопано 2 цикла, т.к. команда MOV32 является макросом, состоящим из двух команд - MOVW и MOVT. Но если все регистры загружены, ногодрыганье становится одноцикловым на 1/2 частоте процессора. Из-за использования дешёвых встроенных умножителей частоты, на выходе таких генераторов будет лошадиное биение фронтов. Или работайте на частоте кварца, а это максимум 24 мгц! Ещё, из-за тормозов флеша, время выполнения некоторых участков кода может варьироваться +/- несколько циклов. Так что, если нужно жёстко привязываться к каждому циклу, то опять же, работайте на частоте кварца без умножения. Выполнять код из ROM не пробовал, возможно это решение... Регистров всего 13. Всё это огорчает... Я бы сделал 256 регистров. Но уже появился ARM v8, где многие проблемы решены. Ядро наворочено до тошнотиков. И остаётся только подождать, когда он спустится с небес, хоть не в дипы, так в tqfp. На этом плохие новости заканчиваются. И начинаются только хорошие. Вкусняшек у кортексов во много раз больше, чем у 8-битников. Просто мало у кого они укладываются в голове... И мало кто всем этим реально пользуется... Камни по производительности достигают уровня Pentium. Ещё я хочу сказать, что написание программ на чём либо, кроме ассемблера, это напрасная трата машинного времени. Переходите на Xeon. |
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
|
|
03.04.2014, 07:10 | 57 |
TWW, спасибо за сайт, будем ждать...
Несколько моментов: Максимальная частота кварца 25Мгц. Джиттер PLL не очень большой, но в некоторых случаях не приемлем. Т.к. шина команд из флеш отдельная, то идет параллельный процесс выборок команд и данных из ROM, если и команды в ROM то понятное дело будут задержки конвейера. А вот вопрос про задержки флеш при высоких частотах интересный, по моим наблюдениям очень слабо влияют. 1-3% на сложном алгоритме. То же самое скажу и про работу DMA. Похоже ARM не плохо поработало по оптимизации ядра М.
0
|
TWW
|
|
03.04.2014, 14:02 | 58 |
Да, поциклово привязать какой-то код ко времени не получается. Он обязательно нацепляет ошибок. Например, попробуйте читать константы из флеша, непредсказуемый процесс.. Это всё я случайно заметил, когда для экспериментов начал измерять время выполнения разных программ. Измерял счётчиком циклов, который встроен в DWT. Команды перехода то же, не самый предсказуемый участок. Был то же слегка в шоке, когда понял, что время гуляет +/- 3 часа.. Думаю, что это одна из причин, почему линейные 8-битные архитектуры живут. Там хоть мегабайт кода, можно высчитать до цикла. Но к счастью, мне таких задач не попадалось.
Ассемблер в кортексах - всё равно что БМВ и запорожец. ПИКи вспоминаются как кошмар... |
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
03.04.2014, 15:14 | 59 |
если вы хотите измерять такты на кортексе или любом другом сложном проце - вы что-то делаете неправильно. то бишь, забиваете гвозди микроскопом. вот и весь секрет.
0
|
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
|
|
03.04.2014, 23:59 | 60 |
Сообщение от TWW
0
|
03.04.2014, 23:59 | |
03.04.2014, 23:59 | |
Помогаю со студенческими работами здесь
60
Начал изучать PHP Только начал изучать C++ Начал изучать ассемблер Начал изучать javascript по книге только начал изучать программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |