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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F20X - что-то новое от ST
Maximm
сообщение Apr 2 2010, 20:29
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 7-10-07
Из: Санкт-Петербург
Пользователь №: 31 137



Сегодня копался в последней версии Keil'a 4.10 в "Device Database" и нашел в разделе ST упоминание о новой линейке микроконтроллеров на Cortex M3 - серия STM32F20X. По информации из Кейла чипы очень вкусные: частота ядра 120 МГц, 128 Кб RAM и наконец-то 32-битный таймер

Но на сайте ST, Кейла и просто в гугле не нашел никакого упоминания об этих чипах...
Может кто-нибудь обладет более подробной инфой о них?
Давно уже наклевывалось, что в STM32 надо поднимать частоту, так вот когда ждать эти чипы?


--------------------
Если работает через раз - значит не работает!
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Apr 3 2010, 05:39
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



http://www.mcu-related.com/architectures/3...m3/95-stm32f200
http://www.google.com.ua/url?sa=t&sour...heS4fjldvW0cc5A

В общем реально следует ожидать в 2011
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Apr 12 2010, 09:27
Сообщение #3


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(Maximm @ Apr 3 2010, 00:44) *
128 Кб RAM


Неужели таки додумались? Очень интересно.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
vallav
сообщение Apr 12 2010, 16:04
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



То, что написано про ST32 в
http://www.gaw.ru/html.cgi/txt/doc/micros/...x_arh/index.htm
правда?
"В приведенном выше коде выполняется передача 10 слов данных между двумя массивами в статическом ОЗУ: вначале с использованием ПДП,
а затем с использованием только ЦПУ Cortex. В каждом из этих случаев, перед началом передачи запускается таймер и останавливается по
завершении передачи. В данном примера блок ПДП выполняет передачу за 220 циклов, ЦПУ - за 536."

То есть пересылка одного слова память-память через проц 54 такта а по ПДП 22 такта?
И это при одной комманде за такт...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 12 2010, 17:15
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Врут конечноsmile.gif

Код
int arry_dest[20];
int arry_src[20];

void test()
{
    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
    TIM2->CR1 = 0;
    TIM2->CNT = 0;
    TIM2->CR1 = 1;
    for(int index = 0; index <10; index++)
        arry_dest[index] = arry_src[index];
    TIM2->CR1 = 0;
    uart << "10 ints copied in " << TIM2->CNT << "cycles\r\n";
}


У меня вышло 122-124 такта, и это без ПДП.

ЗЫ. Правильный адрес обсуждаемой статьи:
http://www.gaw.ru/html.cgi/txt/doc/micros/...x_arh/4_2_3.htm


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
vallav
сообщение Apr 12 2010, 17:29
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Что, в рекламной статье ошиблись в 5 раз с подсчетом тактов?
И по ПДП будет 4 такта на слово?
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
sonycman
сообщение Apr 12 2010, 17:42
Сообщение #7


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(AHTOXA @ Apr 12 2010, 21:30) *
У меня вышло 122-124 такта, и это без ПДП.

А код откуда исполнялся? Из ОЗУ?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 12 2010, 17:51
Сообщение #8


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Не, не в 5:)
Я ошибся вдвое, мой результат надо умножить на два, потому что таймер 2 сидит на APB1, а это вдвое медленнее. То есть, 244 такта.

Отчего у них другой результат - не знаю.

ЗЫ. Код исполнялся из флеша.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Apr 12 2010, 18:40
Сообщение #9


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(AHTOXA @ Apr 12 2010, 22:06) *
ЗЫ. Код исполнялся из флеша.

А сколько wait state'ов у флеша? На какой частоте проц работает?

Переместите код в ОЗУ, для чистоты эксперимента.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2010, 19:59
Сообщение #10


Гуру
******

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



Цитата(sonycman @ Apr 12 2010, 20:55) *
Переместите код в ОЗУ, для чистоты эксперимента.

Это Вы STM32 код из RAM предлагаете? У него три шины. I-bus имеет доступ только к ROM. Обходной пути загрузки инструкций через S-bus есть, но торомозить должно хорошо.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Apr 12 2010, 21:02
Сообщение #11


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(AHTOXA @ Apr 12 2010, 22:06) *
Я ошибся вдвое, мой результат надо умножить на два, потому что таймер 2 сидит на APB1, а это вдвое медленнее. То есть, 244 такта.

Таймеры TIM2 - TIM7 у STM32 имеют множитель (от х1 до х2) частоты APB1, поэтому не всё так однозначно.
Если прескалер APB1 имеет значение, отличное от /2, то множитель таймеров будет равен х2.
То есть если частота ядра = 72 МГц, а APB1, соответственно, 36 МГц, таймеры будут тактироваться также 72 мегагерцами.

Цитата(zltigo @ Apr 13 2010, 00:14) *
Это Вы STM32 код из RAM предлагаете? У него три шины. I-bus имеет доступ только к ROM. Обходной пути загрузки инструкций через S-bus есть, но торомозить должно хорошо.

То есть выполнение кода из RAM будет тормознее, чем из флеш?
Хм, всегда считал, что наоборот...

Сейчас протестирую.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2010, 21:13
Сообщение #12


Гуру
******

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



Цитата(sonycman @ Apr 12 2010, 23:17) *
То есть выполнение кода из RAM будет тормознее, чем из флеш?

Для Cortex-M3 будут дополнительные тормоза. Вопрос в том, что перетянет - ws на Flash, или доступ зигзагом через System-bus.
Цитата
Хм, всегда считал, что наоборот...

Для ARM7 c его нейманом да - за счет обычно более медленной Flash.
Цитата
Сейчас протестирую.

Давайте.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 12 2010, 21:31
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Apr 13 2010, 01:28) *
Для Cortex-M3 будут дополнительные тормоза. Вопрос в том, что перетянет - ws на Flash, или доступ зигзагом через System-bus.

Пробовал когда-то - получилось, что исполнение из RAM немного (единицы %%) медленнее.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Apr 12 2010, 21:49
Сообщение #14


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Apr 13 2010, 01:46) *
Пробовал когда-то - получилось, что исполнение из RAM немного (единицы %%) медленнее.

В общем, у меня получилось вот что.

Исполнялся вот этот код:
Код
volatile int arry_dest[20];
volatile int arry_src[20];

TIM2->CR1    =    TIM_CR1_CEN;
for(int index = 0; index <10; index++) arry_dest[index] = arry_src[index];
TIM2->CR1 = 0;
lcd.PrintText("tacts: %u", 0, 0, NO_FLAGS, RGB_BLUE, TIM2->CNT);

после компиляции цикл выглядит так:
Код
;;;47         TIM2->CR1    =    TIM_CR1_CEN;
MOVS     r0,#1
LSLS     r2,r0,#30
STRH     r0,[r2,#0]
;;;48         for(int index = 0; index <10; index++) arry_dest[index] = arry_src[index];
LDR      r1,|L4.56|
MOVS     r0,#0
SUB      r3,r1,#0x50
|L4.16|
LDR      r4,[r1,r0,LSL #2]
STR      r4,[r3,r0,LSL #2]
ADDS     r0,r0,#1
CMP      r0,#0xa
BLT      |L4.16|
;;;49         TIM2->CR1 = 0;
MOVS     r0,#0
STRH     r0,[r2,#0]


STM32F103RET6, ядро на 72 МГц, 2 такта ожидания для флеш:
RAM - 116 тактов
FLASH - 122 такта

ядро на 24 МГц, 0 тактов ожидания флеш:
RAM - 116 тактов
FLASH - 75 тактов

Ну, zltigo как обычно прав, озу проигрывает флехе на малой частоте. На большой - немного выигрывает.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 12 2010, 22:30
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Apr 13 2010, 02:04) *
STM32F103RET6, ядро на 72 МГц, 2 такта ожидания для флеш:
RAM - 116 тактов
FLASH - 122 такта

Помнится смотрел на dhrystone - получалось примерно такое же соотношение, но в пользу флеш. Но все равно вывод в общем-то один напрашивается - не стоит класть код туда, где ему не место.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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