Пт сен 02, 2016 18:10:23
Почитайте сообщения выше и узнаете в чем разбирались, семейство оговаривалось stm32f1xx. у Вас есть конкретное значение из даташита "латентности" или просто поговорить пришли? нет тогда к чему этот вброс? На текущий момент выяснено:scorpi_0n писал(а):А что там разбираться? У ДМА есть такой па раметр как латентность. У разных МК она разная.
Пт сен 02, 2016 18:58:19
ldrb r0,[r1] ;2
strb r0,[r2] ;2
adds r2,1 ;1
Пт сен 02, 2016 19:11:40
GFX писал(а):процедура ручного считывания отнимает 30 кбайт памяти, т.е. половину из доступной, лучше я на ней анализатор спектра намучу или сохранение на флешку скриншотов, а тут такая подстава. свободно памяти 2.4 кбайта, это только на исправление косяков можно сказать.
Пт сен 02, 2016 19:33:08
GFX писал(а):1. у stm32f0xx 5 тактов на мем то мем проверено людьми
Пт сен 02, 2016 19:36:10
Andrew Martin писал(а):Очень полезная информация. А главное ни в одном даташите нет этих данных. Стесняются своего DMA что ли?
Пт сен 02, 2016 19:41:22
scorpi_0n писал(а):Инфа есть, но не в даташите, в какой-то апноте или программ мануале.
Пт сен 02, 2016 19:45:33
scorpi_0n писал(а):GFX писал(а):1. у stm32f0xx 5 тактов на мем то мем проверено людьми
А что вам мешало?
Опять пустые слова и только слова.scorpi_0n писал(а):Andrew Martin писал(а):Очень полезная информация. А главное ни в одном даташите нет этих данных. Стесняются своего DMA что ли?
Инфа есть, но не в даташите, в какой-то апноте или программ мануале.
Пт сен 02, 2016 19:48:44
Вы изменяете скорость количеством команд? не смешите, дайте реальную скорость своего кода посчитанную как-то желательно на логическом анализаторе. "4000*6 = 24 000 байт" кто вам сказал такое? что это за расчет? просто ни в какие ворота он не годится, смешно просто. подсказка каждая команда не весит 1 байт, вторая подсказка, не каждая команда выполняется за 1 такт. И смех и грех.Andrew Martin писал(а):Очень полезная информация. А главное ни в одном даташите нет этих данных. Стесняются своего DMA что ли?
Однако на F0 получается забирать за 5 тактов
- Код:
ldrb r0,[r1] ;2
strb r0,[r2] ;2
adds r2,1 ;1
И это на ядре М0. А у вас МК на ядре М3 и 6 тактов? Плохая сосиска
И размер... при 4000 семплов длина сосиски будет 4000*6 = 24 000 байт.
LDR r2,[r1,#0x00]
STRB r2,[r0,#0x07]
Пт сен 02, 2016 20:03:14
Вот это интересно, т.е. программу собираем для мк STM32F103СB, чтобы ошибки по памяти не было, а потом тупо пытаемся залить в МК с заявленными 64 кбайтами 128? Где можно об этом почитать, выглядит загадочноReflector писал(а):GFX писал(а):процедура ручного считывания отнимает 30 кбайт памяти, т.е. половину из доступной, лучше я на ней анализатор спектра намучу или сохранение на флешку скриншотов, а тут такая подстава. свободно памяти 2.4 кбайта, это только на исправление косяков можно сказать.
Кстати, у F103С8 флеша 128К, а не 64, хотя не везде можно получить к ней доступ. Родная утилита для ST-Link нормально шьет, в VS выдает ошибку и через интерфейс OpenOCD и через Texane ST-Link, а J-Link и в студии нормально работает.
Пт сен 02, 2016 20:20:27
GFX писал(а):Вот это интересно, т.е. программу собираем для мк STM32F103СB, чтобы ошибки по памяти не было, а потом тупо пытаемся залить в МК с заявленными 64 кбайтами 128? Где можно об этом почитать, выглядит загадочно
Пт сен 02, 2016 20:31:48
Reflector писал(а):Кстати, у F103С8 флеша 128К,
Пт сен 02, 2016 23:01:12
Пт сен 02, 2016 23:51:26
О, спасибо за подтверждение, но это я итак знал, что команды тут не выполняются за 1 такт, хоть некоторые и упрямо лепят мне ассемблерные команды в доказательство количества циклов. Только практический замер может дать реальное значение скорости.Z_h_e писал(а):Reflector писал(а):Кстати, у F103С8 флеша 128К,
----------
GFX, по количеству тактов на команду, может Вам будет интересно вот это. Как раз с этим МК тест делал.
Сб сен 03, 2016 00:28:13
GFX писал(а):У меня и STM32F407 при программном за 4 такта шпарит (теже 2 команды он выполняет за 4 такта, а не за 6, это для тех, кто думал скорость на ассемблерных командах мерить), а по ДМА за 6!
Тоже в 1.5 раза оно медленнее, в режиме мем то мем по крайней мере, а в других оно не завелось.
asm("LDRB R0, [R1]");
asm("STRB R0, [R2], #1");
Сб сен 03, 2016 07:57:43
GFX писал(а):
На текущий момент выяснено ДМА:
1. у stm32f0xx ?
2. у stm32f1xx 9 тактов на мем то мем, точно
3. у stm32f3xx ?
4. у stm32f4xx 6 тактов на мем то мем, точно в m2m, p2m не заводится(вроде и не должен работать, gpio не поддерживается),
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.
Сб сен 03, 2016 09:05:45
У меня работает за 6, это точно и это факт, почему у вас за 4 не знаю, я проверю DMA1 может оно быстрее. Код выложите свой сравню. ДМА может работать с разной скоростью, нужно понять просто, как выжать максимальную.Reflector писал(а):GFX писал(а):У меня и STM32F407 при программном за 4 такта шпарит (теже 2 команды он выполняет за 4 такта, а не за 6, это для тех, кто думал скорость на ассемблерных командах мерить), а по ДМА за 6!
Тоже в 1.5 раза оно медленнее, в режиме мем то мем по крайней мере, а в других оно не завелось.
Не подтверждаю. Последовательность вот таких команд
- Код:
asm("LDRB R0, [R1]");
asm("STRB R0, [R2], #1");
выполняется за 14355 тактов, DMA отрабатывает за 14383, разница в одну сотую такта... Итого 4 и 4, как в статье и написано.
Сб сен 03, 2016 09:21:15
Может и реальный пример есть, а то что-то теория с практикой не сходится? ДМА1 вообще не работает с GPIO, DMA2 работает, но медленнее, у меня за 6 тактов. Тактирование проверить еще, но если бы там косяк был и процессор бы медленнее забирал. Да и перечитайте, что вы написали, там не о 4 тактах говорится "with the exception of thescorpi_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.
Сб сен 03, 2016 09:46:25
GFX писал(а):У меня работает за 6, это точно и это факт, почему у вас за 4 не знаю, я проверю DMA1 может оно быстрее. Код выложите свой сравню. ДМА может работать с разной скоростью, нужно понять просто, как выжать максимальную.
Сб сен 03, 2016 10:03:42
Сб сен 03, 2016 10:07:27
GFX писал(а):ДМА2 только может работать в режиме мем то мем.