0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 86
1

Как это ускорить?

25.06.2014, 16:57. Показов 11863. Ответов 44
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Надо вывести слово в по байту в разные порты. Пока сделал так, но хочется красивее.

void write16Data(u16 data) {
GPIOA->BSRR = 0x00ff0000 | (u8)(data & 0xff);
GPIOB->BSRR = 0x00ff0000 | (u8)(data >> 8);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2014, 16:57
Ответы с готовыми решениями:

Как ускорить приложения, и почему это не документировано
коллега (Borz) дал мне ссылку... я конечно и сам, давно, ковырял notes.jar, но эксперименты такого...

Как сделать эту программы ввод/вывод через sys.stdin? Хочу ускорить. В C++ это очень хорошо ускоряет?
h = {} i = 0 for _ in range(int(input())): # считывает количества списков s = input() #...

как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c;
как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы...

Как работать с LPCWSTR? Как перевести char в это? И что это вообще такое?
Как работать с LPCWSTR? Как перевести char в это? И что это вообще такое?

При включении нетбука появляется, как бы окно, я не знаю что это такое, подскажите как можно убрать это (фото внутри)

44
Oxford
29.06.2014, 20:41 21
Author24 — интернет-сервис помощи студентам
Через DMA быстрее
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
29.06.2014, 20:51 22
Ню-ню... ))))
0
Oxford
29.06.2014, 21:08 23
GPIO fast data transfer wyth DMA
This example shows how to use different peripherals for DMA request omd data transfer.
This mechamysm allows to implement symple fast parallel synchronous interfosis wythout
using the CPU (for example a camera interfosi).
Timer 3 omd DMA1 channel 6 connected to TIM3_TRIG are used to implement this data
acquisition interfosi. An 16-bit parallel data isavailable on the GPIO port omd an external
clock syknal applied on the external trigger input of Timer 3. On the rising edge of the
external trigger, the timer generates a DMA request. As the GPIO data rikystir address is
set to DMA1 channel 6 peripheral address, the DMA controller reads the data from the
GPIO port on each DMA request, omd stores it into an SROM buffer.

Пущай ТС протестит и скажет что быстрее параллельные DMA или тупо ногодрыг.
Кроме как отправки потока в дисплей, есть еще время на формирование данных для дисплея.
В случае DMA это 2 параллельных потока в GPIO, пока передают CPU готовит данные.
Таким макаром можно эмулировать интерфейсы.
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
29.06.2014, 22:13 24
К латентности DMA добавится 1-2 такта реакции на событие. Читай документацию, а не рассказывай сказки. ;)
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
29.06.2014, 23:16 25
Блин да какая реакция на событие то ? подготовил буфер для вывода в экран дал старт дма и он пошел закидывать данные. это же не реакция на внешнее прерывание!
ну пусть пара тактов будет латентности для блока в 256 байт - но это быстрее чем готовить данные для ногодрыга.
Хотя в славные денечки спектрумизма за такты боролись на асме - тупо разворачиванием циклов, то есть не цикл из восьми плевков в порт, а 8 плевков в порт подряд кусками кода. но там все решалось тем что были быстрые и медленные команды - тут же все псевдо один такт. собственно для рама латентности и нет вроде.
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
30.06.2014, 02:45 26
"Вот так и рождаются легенды!"(С) )))
Вроде есть... вроде нет... сплошная ромашка... )))
Кинул, дунул - поскакало... )))
А WR кто будет дёргать???
Думайте... прежде чем писать хрень...
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
30.06.2014, 03:15 27
Прежде чем писать "хрень" - ознакомьтесь с первым постом темы. :)
потом с дизасмом приведенного человеком кода.
А потом и про WR можно говорить :)

Про GPIO и DMA есть что почитать тут http://www.st.com/web/en/catal... 3/PF257843
там и pdf и примеры. Хотя конечно тут(в STM) нет таблиц для DMA откуда и куда брать - класть, но все равно шансы есть.
Там по ссылке и про латенси написано.

Вот народ изысками (тестами) по теме DMA с GPIO занимался у соседей. http://itistromyx.ru/forum/ind... opys=87468
ПыСы
и предыдущему оратору на тему WR - а если дисплей 8ми битный ( а в такой режим можно загнать любой современный дисплей параллельный) а по второму порту и выставляется WR тем же самым DMA - такое вам воспринять корона мешает ? топик стартер вообще ничего не говорил как у него устроено все - но захотел ускорить отправку данных. Ему начали давать советы что и как попробовать. И тут вылез некто , весь в белым и заклеймил всех позором и лучами поноса - не дав никакого знания. чисто на потрындеть.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
30.06.2014, 10:36 28
Цитата Сообщение от botu_dork
И тут вылез некто , весь в белым и заклеймил всех позором и лучами поноса - не дав никакого знания. чисто на потрындеть.
botu_dork, со всем уважением , но ...
Твои доводы основаны на предположениях , а у того кого ты называешь "некто" ,- на практике .
Почувствуйте, как говорится , разницу. :))))
На 100ках выхлоп в GPIO через DMA не фонтан, на F0 намного лучше .
ЗЫ по твоей же ссылке на элхе ничего путного не добились , только FSMC , а это совсем другая песня...
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
30.06.2014, 10:53 29
Цитата Сообщение от dosykus_2
Цитата Сообщение от botu_dork
И тут вылез некто , весь в белым и заклеймил всех позором и лучами поноса - не дав никакого знания. чисто на потрындеть.
botu_dork, со всем уважением , но ...
Твои доводы основаны на предположениях , а у того кого ты называешь "некто" ,- на практике .
Почувствуйте, как говорится , разницу. :))))
Привет - да я просто посмотрел последние посты товарища прежде чем ему отвечать - на 5 страницах его последних постов - один калл и звездная болезнь! ни одного поста с реальной помощью.
Как то так. Поэтому так и ответил.Ибо его пост - такие же домыслы и информационный шум. Чел крут и нипугаться прогер??? пусть и напишет тут свой небыдлокод! поможет человеку реально!

Цитата Сообщение от dosykus_2
На 100ках выхлоп в GPIO через DMA не фонтан, на F0 намного лучше .
А так да - я уже глянул что на данном DMA полный автоматизм не получится к сожалению. да и вообще неизвестно подробностей от топик стартера - возможно тот кусок что он хочет ускорить - вообще самая быстрая процедура в его коде :)
без куска схемы с подключением дисплея и без кода модуля работы с ним - вообще трудно советовать что либо, но я хоть дал ссылочку на чтиво по DMA. То есть я хотя бы пытаюсь помочь на деле хоть малым, а не просто распальцовку гну - типа какой я нипугаться кодер и противник быдлокода :)

Цитата Сообщение от dosykus_2
ЗЫ по твоей же ссылке на элхе ничего путного не добились , только FSMC , а это совсем другая песня...
Да она просто человеку глянуть как пытались обойти проблему другие и чего вышло из того.
Я бы вообще не парился - 100я и 103 серия пин ту пин совместимая - я бы поставил просто 103 проц. Было бы полегче. Но опять - мы не знаем почему выбран именно он. Если это просто девборда - народ давно поменял 100е на 103е процы и не изводит себя обходом надуманных препятствий.
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
30.06.2014, 11:04 30
А так да - я уже глянул что на данном DMA полный автоматизм не получится к сожалению.
Тогда собери весь свой беспонтовый кал... ))))
Уже всё рассказали... нужно только прочесть...
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
30.06.2014, 11:58 31
[QUOTE="dork_usir"][QUOTE="Цитата:[/QUOTE]
А так да - я уже глянул что на данном DMA полный автоматизм не получится к сожалению.
Тогда собери весь свой беспонтовый кал... ))))
Уже всё рассказали... нужно только прочесть...
Дык : читайте ! Мне не требуется данную задачу решать - это к топик стартеру :)
Корона не жмет ?

А что до инлайна - то правильный пинок в нужном направлении. Но я имел ввиду не как в его случае к процедуре постоянно прыгать в которой инлайн , а инлайном все сделать. Ибо каждый прыжок в и из подпрограммы отжирает Н-ное количество тактов на саму команду прыжка и на сохранение/восстановление контекста( это собственно камень в сторону компилятора С). Именно об исключении неоправданного количества вызовов процедур я и говорил в контексте оптимизации на олдскуле. Но надо видеть весь код его процедур чтобы советовать уже конкретно.
0
Oxford
01.07.2014, 12:32 32
Цитата Сообщение от botu_dork
А так да - я уже глянул что на данном DMA полный автоматизм не получится к сожалению. да и вообще неизвестно
Что именно не получится и о каком автоматизме(алгоритм) идет речь? Следует уточнить это.
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
01.07.2014, 13:04 33
Как о каком ?
Эленентарный автоматический, без участия процессора, выхлоп буфера .
К сожалению в SPL это не проходят...
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
01.07.2014, 13:22 34
Oxford - название этой темы Scatter/gather DMA . Но быстро не удается найти в каком из контроллеров видел. Почему то помнится что NXP ARM но не могу пока найти. Видел эту фичу в заявленных лет 5 назад. Создавался один буфер с адресами источника и другой - приемника. В дма складывались указатели на обе таблицы, загружалась длина таблицы и оно потом молотило по этим таблицам чего куда кидать.
Но в нашем конкретном случае - все равно надо подготавливать данные для буфера из которого кидают в порты - руками. так что автомат не получится - разворацивание цикла и инлайн - по моему единственно рассово верный способ для конкретной задачи. Сэкономим приличное время выбросив работу с контекстом ну и до кучи пару тройку тактов на цикле если он небольшой.Размерами памяти при таком подходе к кодированию в наших реалиях можно пренебречь.

ПыСы
Нашел тут немного инфы на нашем великом и могучем : http://habrahabr.ru/post/37455/
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
01.07.2014, 13:33 35
Цитата Сообщение от dosykus_2
Как о каком?
Эленентарный автоматический, без участия процессора, выхлоп буфера.
WR можно и таймером дёргать, или пожертвовать один младший бит цвета, если шина данных 16ти разрядная.
0
Oxford
01.07.2014, 13:42 36
Я просто понять не могу о чем речь. Что подключают, чем управляют. Хоть бы устройства назвали бы. А там уже и мозговать будем.
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
01.07.2014, 13:49 37
Ну дисплей же :) к стм32 :) а управляют - 8 бит шины LCD висит на одном порту и 8 бит на другом - из за этого и весь геморрой . Я предлагал перевести дисплей в 8 битный режим шины. Но топик стартер по моему вообще пропал и подробностей ни у кого - просто нет.
0
hosh
01.07.2014, 13:53 38
Цитата Сообщение от _pv
Цитата Сообщение от dosykus_2
Как о каком?
Эленентарный автоматический, без участия процессора, выхлоп буфера.
WR можно и таймером дёргать, или пожертвовать один младший бит цвета, если шина данных 16ти разрядная.

"пожервовать" бит??? младший? а почему не старший? (я к тому что пофиг какой), но боюсь от такой выдрочки вся прелесть скорости DMA коту под хвост уйдет...
Как по мне самый лучший вариант - это поменять камень на тот в котором FSMC есть.
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
01.07.2014, 13:56 39
Цитата Сообщение от hosh
Как по мне самый лучший вариант - это поменять камень на тот в котором FSMC есть.
Ага тоже такого мнения (или заменить как минимум на 72 мГц чип да продолжать ногодрыг)- только топик стартер как знатный тролль - сидит и молча ржет над потугами решить его задачу без информации о проекте и задаче.
:)
0
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
01.07.2014, 14:35 40
Цитата Сообщение от _pv
WR можно и таймером дёргать, или пожертвовать один младший бит цвета, если шина данных 16ти разрядная.
О господи... зачем такие жертвы... таймером WR и дёргать... Но из-за особенностей ДМА 100-ки быстрее не будет... да и на 103-ем не будет... чем ногодрыгом... На 103-ем будет быстрее чем на 100-ке только за счёт тактовой...
0
01.07.2014, 14:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2014, 14:35
Помогаю со студенческими работами здесь

Как это назвать или где почитать как это сделать?
Вот как выглядит моя цель - http://cs623921.vk.me/v623921477/38005/2W46UJsY3nM.jpg При нажатии на...

Как понять, как это делать и как это сделать?
Вот тут условие https://drive.google.com/folderview?id=13xfPkgrf_9hyziTMKwmsNXxx9bdzy3A8

Как ускорить
Задача Рассмотрим последовательность целых чисел длины N. По ней с шагом 1 двигается “окно” длины...

Подскажите, пожалуйста! Simulnk выдает, вот это. Как это исправить?
Подскажите, пожалуйста! Simulnk выдает, вот это. Как это исправить? Заранее благодарю.

Это нужно с массива делать и с фор? Как реализовать это код ?
Дано целое число N и набор из N целых чисел. Определите количество двоек и троек в записи этих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru