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

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 18:10:23

scorpi_0n писал(а):А что там разбираться? У ДМА есть такой па раметр как латентность. У разных МК она разная.
Почитайте сообщения выше и узнаете в чем разбирались, семейство оговаривалось stm32f1xx. у Вас есть конкретное значение из даташита "латентности" или просто поговорить пришли? нет тогда к чему этот вброс? На текущий момент выяснено:
1. у stm32f0xx 5 тактов на мем то мем проверено людьми
2. у stm32f1xx 9 тактов на мем то мем, проверено мною в том числе
3. у stm32f3xx 4 тактов на мем то мем, хз придут проверю, пока не ясно, интересно, т.к. серия 303 хорошо для осликов подходит.
4. у stm32f4xx 4 тактов на мем то мем, проверено людьми, в принципе, МК есть можно перепроверить. И интерфейс камеры нужно проверить.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 18:58:19

Очень полезная информация. А главное ни в одном даташите нет этих данных. Стесняются своего DMA что ли? :)
Однако на F0 получается забирать за 5 тактов

Код:
ldrb   r0,[r1]         ;2
strb   r0,[r2]         ;2
adds  r2,1            ;1


И это на ядре М0. А у вас МК на ядре М3 и 6 тактов? Плохая сосиска :dont_know:
И размер... при 4000 семплов длина сосиски будет 4000*6 = 24 000 байт.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 19:11:40

GFX писал(а):процедура ручного считывания отнимает 30 кбайт памяти, т.е. половину из доступной, лучше я на ней анализатор спектра намучу или сохранение на флешку скриншотов, а тут такая подстава. свободно памяти 2.4 кбайта, это только на исправление косяков можно сказать.

Кстати, у F103С8 флеша 128К, а не 64, хотя не везде можно получить к ней доступ. Родная утилита для ST-Link нормально шьет, в VS выдает ошибку и через интерфейс OpenOCD и через Texane ST-Link, а J-Link и в студии нормально работает.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 19:33:08

GFX писал(а):1. у stm32f0xx 5 тактов на мем то мем проверено людьми

А что вам мешало?

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 19:36:10

Andrew Martin писал(а):Очень полезная информация. А главное ни в одном даташите нет этих данных. Стесняются своего DMA что ли? :)

Инфа есть, но не в даташите, в какой-то апноте или программ мануале.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 19:41:22

scorpi_0n писал(а):Инфа есть, но не в даташите, в какой-то апноте или программ мануале.


В какой апноте?
В программ мануале (PM0215 для F0) нет описания периферии, кроме периферии ядра.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 19:45:33

scorpi_0n писал(а):
GFX писал(а):1. у stm32f0xx 5 тактов на мем то мем проверено людьми

А что вам мешало?

Нет такого МК, вас это устроит? вы спамите только не пойму для чего?
scorpi_0n писал(а):
Andrew Martin писал(а):Очень полезная информация. А главное ни в одном даташите нет этих данных. Стесняются своего DMA что ли? :)

Инфа есть, но не в даташите, в какой-то апноте или программ мануале.
Опять пустые слова и только слова.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 19:48:44

Andrew Martin писал(а):Очень полезная информация. А главное ни в одном даташите нет этих данных. Стесняются своего DMA что ли? :)
Однако на F0 получается забирать за 5 тактов

Код:
ldrb   r0,[r1]         ;2
strb   r0,[r2]         ;2
adds  r2,1            ;1


И это на ядре М0. А у вас МК на ядре М3 и 6 тактов? Плохая сосиска :dont_know:
И размер... при 4000 семплов длина сосиски будет 4000*6 = 24 000 байт.
Вы изменяете скорость количеством команд? не смешите, дайте реальную скорость своего кода посчитанную как-то желательно на логическом анализаторе. "4000*6 = 24 000 байт" кто вам сказал такое? что это за расчет? просто ни в какие ворота он не годится, смешно просто. подсказка каждая команда не весит 1 байт, вторая подсказка, не каждая команда выполняется за 1 такт. И смех и грех.
мой код, кстати, лучше вашего, сосиска не плоха.
Код:
 LDR      r2,[r1,#0x00]
 STRB    r2,[r0,#0x07]
Вот только выполняются эти две команды по 3 такта и это есть в описании этих команд, вернее в описании 3 задержки в каждой команде, чему они равны хз, ну судя по всему по 1 такту а там ХЗ, но по факты вместе они 6 тактов занимают
Последний раз редактировалось GFX Пт сен 02, 2016 20:14:48, всего редактировалось 1 раз.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 20:03:14

Reflector писал(а):
GFX писал(а):процедура ручного считывания отнимает 30 кбайт памяти, т.е. половину из доступной, лучше я на ней анализатор спектра намучу или сохранение на флешку скриншотов, а тут такая подстава. свободно памяти 2.4 кбайта, это только на исправление косяков можно сказать.

Кстати, у F103С8 флеша 128К, а не 64, хотя не везде можно получить к ней доступ. Родная утилита для ST-Link нормально шьет, в VS выдает ошибку и через интерфейс OpenOCD и через Texane ST-Link, а J-Link и в студии нормально работает.
Вот это интересно, т.е. программу собираем для мк STM32F103СB, чтобы ошибки по памяти не было, а потом тупо пытаемся залить в МК с заявленными 64 кбайтами 128? Где можно об этом почитать, выглядит загадочно :shock:

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 20:20:27

GFX писал(а):Вот это интересно, т.е. программу собираем для мк STM32F103СB, чтобы ошибки по памяти не было, а потом тупо пытаемся залить в МК с заявленными 64 кбайтами 128? Где можно об этом почитать, выглядит загадочно :shock:

В документации есть глава "Device overview", там все подвиды мк сведены в таблицу и сгруппированы в том числе по объему флеша и RAM. Например, у меня есть F103VC, в таблице он в одной группе с 103VD и 103VE, в таком случае обычно(может и всегда) все эти 3 мк есть 103VE, т.е. самый старший из них. Реально у 103VC в 2 раза больше флеша и на четверть больше RAM. F103C8 в таблице рядом с F103CB и они оба F103CB. F407VE рядом с F407VG и они оба VG. Так под F407VG прогу и собираем, главное подобрать правильные настройки программатора или его самого, иначе придется шить отдельной утилитой, что не так удобно. Еще есть и более экзотические варианты, у того же F030 не только в 2 раза больше памяти, но еще есть 32-ти битный таймер и по сути он F031. У F101 есть USB и т.д. :)

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 20:31:48

Reflector писал(а):Кстати, у F103С8 флеша 128К,

----------
GFX, по количеству тактов на команду, может Вам будет интересно вот это. Как раз с этим МК тест делал.

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 23:01:12

У меня и STM32F407 при программном за 4 такта шпарит (теже 2 команды он выполняет за 4 такта, а не за 6, это для тех, кто думал скорость на ассемблерных командах мерить), а по ДМА за 6!
Тоже в 1.5 раза оно медленнее, в режиме мем то мем по крайней мере, а в других оно не завелось.
Вложения
Скриншот 2016-09-03 00.11.54.png
(37.04 KiB) Скачиваний: 1186

Re: Карманный осциллограф на STM32

Пт сен 02, 2016 23:51:26

Z_h_e писал(а):
Reflector писал(а):Кстати, у F103С8 флеша 128К,

----------
GFX, по количеству тактов на команду, может Вам будет интересно вот это. Как раз с этим МК тест делал.
О, спасибо за подтверждение, но это я итак знал, что команды тут не выполняются за 1 такт, хоть некоторые и упрямо лепят мне ассемблерные команды в доказательство количества циклов. Только практический замер может дать реальное значение скорости.

На текущий момент выяснено ДМА:
1. у stm32f0xx ?
2. у stm32f1xx 9 тактов на мем то мем, точно
3. у stm32f3xx ?
4. у stm32f4xx 6 тактов на мем то мем, точно в m2m, p2m не заводится(вроде и не должен работать, gpio не поддерживается), кто завел, выложите код для проверки скорости.
Программное чтение:
1. у stm32f0xx ?
2. у stm32f1xx 6 тактов, точно
3. у stm32f3xx ?
4. у stm32f4xx 4 такта, точно

Как то так.

Re: Карманный осциллограф на STM32

Сб сен 03, 2016 00:28:13

GFX писал(а):У меня и STM32F407 при программном за 4 такта шпарит (теже 2 команды он выполняет за 4 такта, а не за 6, это для тех, кто думал скорость на ассемблерных командах мерить), а по ДМА за 6!
Тоже в 1.5 раза оно медленнее, в режиме мем то мем по крайней мере, а в других оно не завелось.

Не подтверждаю. Последовательность вот таких команд
Код:
asm("LDRB R0, [R1]");
asm("STRB R0, [R2], #1");

выполняется за 14355 тактов, DMA отрабатывает за 14383, разница в одну сотую такта... Итого 4 и 4, как в статье и написано.

Re: Карманный осциллограф на STM32

Сб сен 03, 2016 07:57:43

GFX писал(а):
На текущий момент выяснено ДМА:
1. у stm32f0xx ?
2. у stm32f1xx 9 тактов на мем то мем, точно
3. у stm32f3xx ?
4. у stm32f4xx 6 тактов на мем то мем, точно в m2m, p2m не заводится(вроде и не должен работать, gpio не поддерживается),

Читайте референс. В stm32f4xx два ДМА. Один работает с ЖПИО, другой - нет. Это связано с распределением шин.

у stm32f0xx 6 тактов с p2m.

И ваще. Это от Трэвора Мартина (Trevor Martin) для М3. Для других семейств принцип тот же.
Each DMA transfer is made up of four phases: a sample and arbitration phase, an address computation phase,
bus access phase and a final acknowledgement phase. Each phase takes a single cycle, with the exception of the
bus access phase.

Re: Карманный осциллограф на STM32

Сб сен 03, 2016 09:05:45

Reflector писал(а):
GFX писал(а):У меня и STM32F407 при программном за 4 такта шпарит (теже 2 команды он выполняет за 4 такта, а не за 6, это для тех, кто думал скорость на ассемблерных командах мерить), а по ДМА за 6!
Тоже в 1.5 раза оно медленнее, в режиме мем то мем по крайней мере, а в других оно не завелось.

Не подтверждаю. Последовательность вот таких команд
Код:
asm("LDRB R0, [R1]");
asm("STRB R0, [R2], #1");

выполняется за 14355 тактов, DMA отрабатывает за 14383, разница в одну сотую такта... Итого 4 и 4, как в статье и написано.
У меня работает за 6, это точно и это факт, почему у вас за 4 не знаю, я проверю DMA1 может оно быстрее. Код выложите свой сравню. ДМА может работать с разной скоростью, нужно понять просто, как выжать максимальную.

Re: Карманный осциллограф на STM32

Сб сен 03, 2016 09:21:15

scorpi_0n писал(а):
GFX писал(а):
На текущий момент выяснено ДМА:
1. у stm32f0xx ?
2. у stm32f1xx 9 тактов на мем то мем, точно
3. у stm32f3xx ?
4. у stm32f4xx 6 тактов на мем то мем, точно в m2m, p2m не заводится(вроде и не должен работать, gpio не поддерживается),

Читайте референс. В stm32f4xx два ДМА. Один работает с ЖПИО, другой - нет. Это связано с распределением шин.

у stm32f0xx 6 тактов с p2m.

И ваще. Это от Трэвора Мартина (Trevor Martin) для М3. Для других семейств принцип тот же.
Each DMA transfer is made up of four phases: a sample and arbitration phase, an address computation phase,
bus access phase and a final acknowledgement phase. Each phase takes a single cycle, with the exception of the
bus access phase.
Может и реальный пример есть, а то что-то теория с практикой не сходится? ДМА1 вообще не работает с GPIO, DMA2 работает, но медленнее, у меня за 6 тактов. Тактирование проверить еще, но если бы там косяк был и процессор бы медленнее забирал. Да и перечитайте, что вы написали, там не о 4 тактах говорится "with the exception of the
bus access phase.", т.е. доступ к шине может быть больше а на сколько не указано, это от загрузки шины зависит видимо, ну оно так и есть стоит два ДМА запустить их скорость падает.

Re: Карманный осциллограф на STM32

Сб сен 03, 2016 09:46:25

GFX писал(а):У меня работает за 6, это точно и это факт, почему у вас за 4 не знаю, я проверю DMA1 может оно быстрее. Код выложите свой сравню. ДМА может работать с разной скоростью, нужно понять просто, как выжать максимальную.

Я перебрал кучу настроек, всегда получается 4 такта кроме случаев, когда размер источника в 2 раза больше, т.е., например, читаешь из порта 16 бит, а пишешь по 8, но тогда выходит 8 тактов, а не 6. С разной скоростью DMA тоже не должен работать, если не считать лаги. VGA либа, на которую я ссылался, выдает 800x600, там скорость вывода пикселей ровно 40MHz, а скорость проца - 160MHz.
Код практически такой-же, как и на F103:

Re: Карманный осциллограф на STM32

Сб сен 03, 2016 10:03:42

ДМА2 только может работать в режиме мем то мем.
dma.png
(96.42 KiB) Скачиваний: 656

Re: Карманный осциллограф на STM32

Сб сен 03, 2016 10:07:27

GFX писал(а):ДМА2 только может работать в режиме мем то мем.

Ну да, у меня там и assert стоит на всякий случай :)
Ответить