Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 05.06.2018, 19:38   #1
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Быстродействие PIC32

Здравствуйте все.
Есть плата на МК STM32F100C6 и есть плата на PIC32MK0512MCF064.
Пробую моргать светодиодом с задержкой for(x=0; x < 1000000;x++);
так в stm цикл отрабатывает в 2 раза быстрее. Где то пол секунды.
В PICе отрабатывает за 1сек. Это при том, что stm подкючен на 12МГц,а
PIC заряжен на 120МГц.

Как такое может быть?
Iptash вне форума   Ответить с цитированием
Старый 05.06.2018, 19:51   #2
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

Цитата:
Сообщение от Iptash Посмотреть сообщение
Это при том, что stm подкючен на 12МГц,а
PIC заряжен на 120МГц.
Как такое может быть?
12 и 120 - это такие кварцы?
Greg вне форума   Ответить с цитированием
Старый 05.06.2018, 19:55   #3
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Цитата:
Сообщение от Greg Посмотреть сообщение
12 и 120 - это такие кварцы?
Да нет) PIC после PLL, а stm не стал доводить до 24МГц
Iptash вне форума   Ответить с цитированием
Старый 05.06.2018, 20:35   #4
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

И еще. Смотрю в дебагере, регистр осцилятора, там установлено внутренний RC генератор и нет не умножений не делений PLL. Я взял код конфигурации с помощью #pragma скомпилив в гармонии. Таймер проверил, вроде как правильно считает по времени. Как будто 120МГц. Сейчас с помощью регистров сконфигурирую
Iptash вне форума   Ответить с цитированием
Старый 05.06.2018, 21:06   #5
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

Iptash
PIC32MK0512MCF064 - у меня есть серьезные основание полагать, что Вы не можете с ним работать на 120. там ошибка в кремнии. кеш не работает. так что или 40 или 30 MHz - не помню уже. есть вероятность, что у Вас исправленная ревизия, однако я бы не надеялся.

Проверить частоту ядра в mips можно сняв значения count за 1 сек.
обнулить count.
прерывание по 1 секунде от rtcc.
дождаться первого прерывания.
снять count. count каждые два тика инкрементируется на 1, если не установлено иначе.
дождаться второго. и снять count.
частота есть count << 1
besogon вне форума   Ответить с цитированием
Старый 05.06.2018, 23:23   #6
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Попробовал с помощью регистров установить частоту. В общем то судя по таймеру у меня так и есть, системная частота равна 120МГц. Потому, что. Частота шины на котором сидит таймер равна SYSCLK/2, т.е. 60МГц. Предделитель таймера 1:16. Регистр периода 0xFFFF(65535) т.е. делим на это число. В теле прерывания по таймеру еще делю на 28 и вкл./выкл. светодиода еще делим на 2. У меня получается 1.02 сек. Визульно также 1 сек.
Iptash вне форума   Ответить с цитированием
Старый 05.06.2018, 23:47   #7
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

Iptash
если Вы убедились, что у Вас частота 120 MHz убедитесь, что ядро может забирать инструкции из памяти с такой частотой(я уже говорил про ошибку в prefetch cache у этого семейства).

вот у Вас код, да?
Код:
u32 count_before, count_after, result;
count_before = (u32)__builtin_mfc0(9, 0);
for(volatile u32 delay = 1000000; delay ; --delay);
count_after = (u32)__builtin_mfc0(9, 0);
result = count_after - count_before;
result<<=1;
наверное это что-то вроде
Код:
mfc0 t5, 9, 0
li t4, 1000000
0:
bgtz t4, 0b
addiu t4, t4, -1 
mfc0 t6, 9, 0
subu v0, t6, t4
sll v0, v0, 1
в v0 получили число циклов, что ядро молотило.
получается что на каждый цикл тратится в целом 2 инструкции.
вопрос, как часто их реально забрать из памяти.

можете в целом глянуть disassembly, что там живет - не так важно.

потом снизить частоту до там 30/40 MHz и сравнить, что выходит.
besogon вне форума   Ответить с цитированием
Старый 05.06.2018, 23:50   #8
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

да и в целом покажите свой boot.S
где Вы настраиваете память, кэш Ваш, и вот это вот все, что нужно, чтобы запускать уже обычное все.
besogon вне форума   Ответить с цитированием
Старый 05.06.2018, 23:57   #9
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Нигде не настраиваю) Я только изучаю. Делаю пока как понимаю. А
__builtin_mfc0 это что? Я где то видел)
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 00:02   #10
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Где взять boot.S ?
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 00:46   #11
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

В дебагере не могу посмотреть значение V0. Да и переменные не показывает. Блин. Все так сложно)
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 08:20   #12
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Как настраивают кэш, Где можно это почитать?
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 08:39   #13
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

__builtin_mfc0 это что? - move from coprocessor0. чтение регистров сопроцессора0. через сопроцессор0 мы управляем ядром.

В дебагере не могу посмотреть значение V0. Да и переменные не показывает. Блин. Все так сложно) - должно показывать. разбирайтесь.

Как настраивают кэш, Где можно это почитать? - ну есть datasheet и errata по контроллеру.

в datasheet глава
10. 0 PREFETCH MODULE

там ничего сложного. просто правильно выставить. другой вопрос, работает ли это у Вас в камне или надо все это отключать и понижать частоту.

из errata.
Cache Exception 51.A Data Bus Error Exception can occur when prefetchcache is enabled

подвержена ревизия 1
besogon вне форума   Ответить с цитированием
Старый 06.06.2018, 08:54   #14
bzx
Senior Member
 
Аватар для bzx
 
Регистрация: 25.02.2007
Адрес: St. Petersburg
Возраст: 44
Сообщений: 462
Вес репутации: 1181/57
bzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud of
Отправить сообщение для bzx с помощью ICQ Отправить сообщение для bzx с помощью Skype™
По умолчанию Re: Быстродействие PIC32

Цитата:
Сообщение от Iptash Посмотреть сообщение
Как такое может быть?
Про частоту и тактирование ядра уже сказали.

Посмотрите уровень оптимизации компиляторов. Это так же можем влиять на быстродействие.
__________________
Для связи email: info собака qbit.su
bzx вне форума   Ответить с цитированием
Старый 06.06.2018, 09:41   #15
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Спасибо! С кэшем разобрался. Работает. Раза в три стал быстрее работать.
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 09:55   #16
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

Iptash
посмотрите еще настройки памяти и что Вам компилятор сгенерировал.
мб. у Вас что-либо не такое как bgtz addiu.
понятно, что будет тогда медленней.
besogon вне форума   Ответить с цитированием
Старый 06.06.2018, 10:04   #17
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

result прочитал. Оно равно 30165642. У меня есть еще прерывания каждую 1мсек.
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 10:11   #18
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Без прерываний 30000030. besogon, а почему result вы умножаете на 2?.

Цитата:
! for(delay = 1000000; delay; --delay);
0x9D000C30: LUI A1, 15
0x9D000C34: ADDIU A1, A1, 16960
0x9D000C44: SW A1, 28(SP)
0x9D000C48: LW V0, 28(SP)
0x9D000C4C: BEQ V0, ZERO, 0x9D000C6C
0x9D000C50: NOP
0x9D000C54: LW V0, 28(SP)
0x9D000C58: ADDIU V0, V0, -1
0x9D000C5C: SW V0, 28(SP)
0x9D000C60: LW V0, 28(SP)
0x9D000C64: BNE V0, ZERO, 0x9D000C54
0x9D000C68: NOP
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 10:12   #19
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Это тело цикла
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 10:14   #20
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

У меня есть еще прерывания каждую 1мсек. - отключите их. если Вы сейчас что-то пытаетесь понять, то наверное лучше обойтись без прерываний.

тем не менее по result все более-менее ясно.
ядро затратило 30 000 000 машинных циклов чтобы перебрать 1 000 000 чисел.

по 30 тиков на один декремент.

это крайне плохо и абсолютно не нормально.

отключайте прерывания и смотрите disassembly.
besogon вне форума   Ответить с цитированием
Старый 06.06.2018, 10:20   #21
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

При снижении частоты в 4 раза, т.е. 30МГц, значение то же.
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 10:36   #22
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

Iptash
При снижении частоты в 4 раза, т.е. 30МГц, значение то же. - здесь мы смотрим, сколько инструкций выполнялся код. сколько тиков.
чтобы узнать сколько за секунду, нужно прерывание от секунды ждать и в нем смотреть, сколько натикало.

я только что у себя на pic32mx (m4k) проверил сколько, как и что генерируется.

Код:
	before = c0count_get();
	for(volatile uf delay = 1000000; delay; --delay);
	after = c0count_get();
	result = (after - before) << 1;
генерится
Код:
0x9D006208: LW V0, 16(SP)
0x9D00620C: ADDIU V0, V0, -1
0x9D006210: SW V0, 16(SP)
0x9D006214: LW V0, 16(SP)
0x9D006218: BNE V0, ZERO, 0x9D006208
0x9D00621C: NOP
итого шесть инструкций, чтобы перибирать.
result получается 11000012
по 11 тиков на цикл.
навставляло пузырьков в конвеер, тк. компилятор сказал честно работать с памятью.

если поставить ram_waitstates 0, то будет 8000010
по 8 тиков на цикл. меньше пузырьков навставляет в конвеер.
besogon вне форума   Ответить с цитированием
Старый 06.06.2018, 10:45   #23
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Быстродействие PIC32

в общем наверное все это мало эффективно.
все что я здесь пишу.

есть настройки контроллера. они описаны в datasheet по пикушке Вашей и ядру microAptiv.

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

в итоге сгенерированное выполняется на контроллере с результатами, которые можно отследить, если сделать тот или иной отладочный код.

конкретно с pic32mk я не работал. испугала erratа.
besogon вне форума   Ответить с цитированием
Старый 06.06.2018, 10:46   #24
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Почему же у меня 12 инструкций?(. Оптимизация 03
Iptash вне форума   Ответить с цитированием
Старый 06.06.2018, 10:47   #25
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 52
Сообщений: 344
Вес репутации: 251/43
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: Быстродействие PIC32

Спасибо большое! Вы и так мне очень помогли.
Iptash вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC32 уже продаются? jump01 Продукция MICROCHIP 35 08.12.2013 19:58
PIC32 + mp3, как оно? Вова Продукция MICROCHIP 23 02.08.2013 16:04
Программные прерывания INT в PIC32. evgem Вопросы начинающих 14 16.10.2010 11:53
PIC32 Assembler Aduc84x Продукция MICROCHIP 3 07.09.2010 16:02
PIC32 Ethernet Starter Kit gazpr1bor Продукция MICROCHIP 1 01.09.2010 15:24


Часовой пояс GMT +3, время: 15:15.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot