реклама на сайте
подробности

 
 
51 страниц V  « < 38 39 40 41 42 > »   
Reply to this topicStart new topic
> Cortex-M7, Не угнаться.
scifi
сообщение Jul 1 2015, 15:28
Сообщение #586


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(zltigo @ Jul 1 2015, 18:10) *
А безумные char, напротив, постоянно. Вот буквально сейчас вожусь с Jennic контролером у у которого ВООБЩЕ нет описания и только API, причем все байтами усыпано и чувствую себя очень, очень! стремно. Для себя такой "восьмибитовый" тип дефинирую для краткости, как bint (то-ли базовый, то-ли байтовый int - за давностью лет не помню sm.gif ) и спокойно таскаю исходники по 8-16-32 битникам.

Это лишние эмоции. Кому-то валерьянка помогает, кому-то - медитация. Ну, будут там лишние инструкции, ну и фиг с ними. "Работает - не трогай". "Преждевременная оптимизация - корень всех зол". И так далее.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 1 2015, 15:46
Сообщение #587


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (scifi @ Jul 1 2015, 18:28) *
Это лишние эмоции. Кому-то валерьянка помогает, кому-то - медитация.

Увы, это один из показателей КАЧЕСТВА кода. И если он оказывается глюкавым дерьмом, то ни один из Ваших "рецептов" не поможет.
QUOTE
Ну, будут там лишние инструкции, ну и фиг с ними. "Работает - не трогай".

А если НЕ работает. Причем иногда и далеко-глубоко? Ваши действия?
QUOTE
"Преждевременная оптимизация - корень всех зол"

Глупые байки ленивых кодописателей муссирующие изречения 70x годов, когда трудоемкость даже просто написания текста была велика, а уж о качестве компиляторов да и их стандартизации и говорить не приходилось. Посему и существовала проблема, что написав изысканный код, можно получить проблем по самое не хочу. Зато написав любую как-то работающую фигню можно было себе обеспечить буквально пожизненное сопровождение со всеми сопутствующими бонусами.
Опитимизация должна начинаться уже на уровне задумки системы. А в самом низу, все компиляторы должны быть отстроены под нужные и максимальные оптимизации. Надо просто УЧИТЬСЯ правильно и четко излагать свои мысли и требования компилятору. Причем СРАЗУ, а не потом.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 1 2015, 18:11
Сообщение #588


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Была важна быстрая реакция на прерывание, а не через сколько-то там тактов и короткий обработчик этого FIQ на фоне не менее жесткого и несколько синхронизированного 2ms прерывания.

ну тут вопрос сколько тактов занимает переход по FIQ, и сколько это времени в той частоте проца.

Цитата
Ну на 10 МИКРО секунд перрывание вешать то, что Вы перечислили, это какой-то безумный прдход к делу sad.gif
То-же TCP стек ни сном ни духом МИКРОСЕКУНД не требует и работает по собственным прерываниям и таймаутам. Это если его правильно писать.

очень важно было чтобы действия повторялись на одном расстоянии от этой 10 мкСек границы, а ТСР стэк имел свои прерывания, и какое-то время в них тратилось да и прочии прерывания системы, стек просто. Потому иногда граница попадала на серидину-начало другого прерывания, и действия бы смещались. Но благодаря системе вытеснения я точно знал что повторяемость будет 2-3 такта на 100 МГц для 10 мкСек события это 2-3%, то есть хорошо.

Да на старом арме я бы повесил это прерывание на FIQ, а если бы оно было не одно? То есть NVIC мне дает возможность иметь несколько прерываний которые корректно вызовутся как вложенные, без рукописного шедулера. А плата за это 12 тактов на 100 МГц, может так оказаться что это быстрее чем FIQ на старых армах.
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 1 2015, 18:27
Сообщение #589


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Golikov A. @ Jul 1 2015, 21:11) *
ну тут вопрос сколько тактов занимает переход по FIQ, и сколько это времени в той частоте проца.


Еще учтите, что сам вызов прерывания по себе еще ни о чем, еще нужна процедура, которая берет из массива векторов тот, который нужно по индексу дистрибутора. а это еще такты, такты...

Цитата(zltigo @ Jul 1 2015, 18:10) *
Ну на старом контроллере такая вещь на FIQ может быть повешена. Ну на 10 МИКРО секунд перрывание вешать то, что Вы перечислили, это какой-то безумный прдход к делу


Ну а что тут такого безумного, в прерывании 100к раз в сек, при частоте проца в 100МГц, скажем?? Если это полностью оправдывает задачу.. Безумно повесить на это прерывание код в 1000 тактов, это да, чистой воды дурь.

Сообщение отредактировал mantech - Jul 1 2015, 18:28
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jul 1 2015, 19:08
Сообщение #590


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(mantech @ Jul 1 2015, 21:27) *
Ну а что тут такого безумного, в прерывании 100к раз в сек, при частоте проца в 100МГц, скажем?? Если это полностью оправдывает задачу.. Безумно повесить на это прерывание код в 1000 тактов, это да, чистой воды дурь.

Ну да... "100к раз в сек, при частоте проца в 100МГц" это не дурь... а "1000 тактов" при частоте проца в 100МГц... 10мкС это дурь... не говоря о приоритете прерываний... Логика где??? Или опять "слова пико-аврщика который просто жутко боится даже ознакомится с чем-то другим"(С)???

Сообщение отредактировал HHIMERA - Jul 1 2015, 19:09
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 1 2015, 19:14
Сообщение #591


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



логика в том что 10 мкСек на 100 МГц это как раз 1000 тактовsm.gif
потому сделать такое прерывание реально дурь, ибо только оно и будет работать.

Кстати в той системе в нем от 300 до 700 команд в зависимости от условий, то есть да оно грузит проц на 30-70% но так как это его основная задача, то не страшно....


Цитата
Еще учтите, что сам вызов прерывания по себе еще ни о чем, еще нужна процедура, которая берет из массива векторов тот, который нужно по индексу дистрибутора. а это еще такты, такты...

не совсем так. FIQ - быстрое прерывание было одно, на то оно и было быстрое что одно, не было векторов, он был один источники прерывания уже в процедуре обработки анализировались и конечно их делали по минимуму....
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 1 2015, 19:17
Сообщение #592


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Golikov A. @ Jul 1 2015, 22:14) *
на то оно и было быстрое что одно, не было векторов, он был один источники прерывания уже в процедуре обработки анализировались и конечно их делали по минимуму....


Так то оно так, можно и irq на один вектор задать, а если требуется более чем одно прерывание?
ЗЫ. Одно только непонятно, когда разрабатывали этот суперконтроллер прерываний были уже камни с аппаратным векторным контроллером, аля пресловутых аврок, почему они до этого недотумкали...

Сообщение отредактировал mantech - Jul 1 2015, 19:20
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jul 1 2015, 19:22
Сообщение #593


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Golikov A. @ Jul 1 2015, 22:14) *
логика в том что 10 мкСек на 100 МГц это как раз 1000 тактовsm.gif
потому сделать такое прерывание реально дурь, ибо только оно и будет работать.

Спасибо... посмеялся...
И что... эти 1000 тактов не могут прерваться другим прерыванием... если нужно???
Правильно говорят... "АВР - это диагноз!"(С)...
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 1 2015, 19:34
Сообщение #594


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(HHIMERA @ Jul 1 2015, 22:22) *
И что... эти 1000 тактов не могут прерваться другим прерыванием... если нужно???
Правильно говорят... "АВР - это диагноз!"(С)...


Че-то я не понял, причем тут авр вообще? Вы сами-то с чего начинали, сразу с арма, да еще наверно с А серии в стандалоне проектах? Тогда к чему это все?
А уж если так пошло, то и на авр можно прервать его другим прерыванием, если не знаете как - тогда в детский сад вообще...

А по сути, ну прервете его и дальше что? Основной программе вообще тактов не дадите? biggrin.gif

Я писал это тому товарищу, который думает, что прерывания в 100к раз в секунду - это бред, поясню, нужно сделать сбор данных с порта и поместить в массив, сколь тактов потребуется? Допустим 20, плюс вход и выход в прерывание, все это хозяйство займет 3-4% процессорного времени на данной частоте. И в чем бред?? При условии, что я получаю четко детерминированную выборку по времени, это можно сделать по другому? Или, как мне тут предложили однажды - поставить ПЛИС? По-моему это бред...

Сообщение отредактировал IgorKossak - Jul 2 2015, 06:22
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 1 2015, 19:50
Сообщение #595


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Golikov A. @ Jul 1 2015, 21:11) *
А плата за это 12 тактов на 100 МГц, может так оказаться что это быстрее чем FIQ на старых армах.

Ой! Ограничили изучение рекламным буклетом sad.gif.
Нет, 12 это только до вызова вектора. Дальше сам переход тактик. А сколько регистров еще НЕ сохраняется за эти 12 тактов? Напоминаю - 8 штук. На их сохранение и последующее восстановление, тоже такты нужны. Ну и возвратиться не забудьте, а это еще 12 тактов плюс такт на собственно команду возврата. При попадании приоритетного на вход в низкоприоритетное - еще до 6 тактов добавляется. Да, еще не забываем, что Flash из которого код выполняется не 0WS, так-что еще всякие фирменные механизмы предвыборки таки слетают при прерывании. На восстановление при входе-выходе еще затраты тактов.

Так-что зря Вы это вы 12 тактов помянули всуе sad.gif.

На "старых" в FIQ за 5 тактов, причем оказывались в СВОЕМ СОБСТВЕННОМ стеке (а не нагло рвем одну из многих задач и пожираем ее стек) со СВОИМ банком хоть и не полным, регистров. И точка входа последняя в таблице, так-что без всяких джампов сразу можно было писать код. Это если просто тупо только о быстродействии говорить. Я же, напомню, что мне нравилось, как контроллер прерываний ложился на систему. NVIC, несоменно по своему хорош.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jul 1 2015, 19:55
Сообщение #596


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(mantech @ Jul 1 2015, 22:34) *
Основной программе вообще тактов не дадите? biggrin.gif

Если у вас прога выполняется всего 10мкС... тогда да... (рукалицо)...
Цитата
Я писал это тому товарищу, который думает, что прерывания в 100к раз в секунду - это бред

Т.е. ... раскатывание сферического коня в вакууме в обратном порядке???
В общем - да... частые прерывания такой же бред как и длинные... а может ещё и хуже... большие потери на вход/выход... а так... по задаче...
И вообще... все эти фобии... из области скелетов в шкафу...
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 1 2015, 19:58
Сообщение #597


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(zltigo @ Jul 1 2015, 22:50) *
На "старых" в FIQ за 5 тактов, причем оказывались в СВОЕМ СОБСТВЕННОМ стеке


Ну и допустим, но это только если ОДИН вектор прерывания, в NVIC - это любой вектор из множества, а в старом контроллере нужно использовать программный селектор, который сожрет еще кучу тактов...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 1 2015, 19:58
Сообщение #598


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Golikov A. @ Jul 1 2015, 22:14) *
не было векторов, он был один источники прерывания уже в процедуре обработки анализировались и конечно их делали по минимуму....

Ужас sm.gif. Вообще-то вектора на IRQ родного контроллера прерывания от ARM были и есть, только при необходимости надо было ОДНОЙ комадой этот вектор считать-перейти. Или НЕ считывать, если не нужно было.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 1 2015, 20:04
Сообщение #599


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(HHIMERA @ Jul 1 2015, 22:55) *
В общем - да... частые прерывания такой же бред как и длинные... а может ещё и хуже... большие потери на вход/выход... а так... по задаче...


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

Цитата(zltigo @ Jul 1 2015, 22:58) *
Ужас sm.gif. Вообще-то вектора на IRQ родного контроллера прерывания от ARM были и есть, только при необходимости надо было ОДНОЙ комадой этот вектор считать-перейти. Или НЕ считывать, если не нужно было.


Чтоб не быть голословным, выложите сюда код обработчика irq с переходом на вектора прерываний из списка. Там и посмотрим, что это за "одна команда" wink.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 1 2015, 20:06
Сообщение #600


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (mantech @ Jul 1 2015, 22:58) *
Ну и допустим, но это только если ОДИН вектор прерывания, в NVIC - это любой вектор из множества, а в старом контроллере нужно использовать программный селектор, который сожрет еще кучу тактов...

Ответ выше - ровно одна команда - считать и перейти. Для особо непонятливых скопипастил из startup:
CODE
                ldr     pc,[pc,#-0xFF0]; 18 Jump directly to the address given by the AIC
                    ; from [0xFFFFF030] Curent 18h +8(conveyor)=20h

По адресу 0xFFFFF030 и находится этот самый вектор.
Причем ПО ЛЮБОМУ одна команда перехода и вектор есть и в "новом" NVIC. Вот такая НЕСУЩЕСТВУЮЩАЯ проблема sm.gif
Если, конечно, мы говорим о продаваемом ARM контроллере. Покупатели могли и свой прицепить любой степени примитивизма.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

51 страниц V  « < 38 39 40 41 42 > » 
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01527 секунд с 7
ELECTRONIX ©2004-2016