Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Частота ядра
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Stepanov V. Andrew
Привет.

Краткая информация:

Davinci dm365, tms320dm365.
ОС Linux.

Данная платка имеет два PLL: PLL1 и PLL2

Процессор ARM926EJ-S может тактоваться от:

* PLLC1SYSCLK2 - устанавливается при загрузке ОС Linux == 243000 kHz.
* PLLC2SYSCLK2 - то что я могу менять.

Максимальная частота процессора, которую теоретически можно установить: 300 000 kHz.
Минимальная == 121500 kHz == PLLC1SYSCLK4 (CFG/DMA bus clock frequency).

Алгоритм:
1. перевести процессор из PLLC2SYSCLK2 на PLLC1SYSCLK2.
2. Сресетить PLL2.
3. Настроить делители\множитель на PLL2.
4. Перебросить процессор обратно на PLLC2SYSCLK2.
5. Вызвать adjust_jiffies() (которое я украл из cpufreq.c)

Столкнулся с ситуацией, что моя схема работает только на некоторых частотах.

Например на частоты можно стабильно переключатся, сколько угодно раз:

272000 (kHz), mul=17, div=2
204000 (kHz), mul=17, div=3
252000 (kHz), mul=21, div=3
201600 (kHz), mul=21, div=4
200000 (kHz), mul=25, div=5
249600 (kHz), mul=26, div=4
259200 (kHz), mul=27, div=4
268800 (kHz), mul=28, div=4
278400 (kHz), mul=29, div=4
232000 (kHz), mul=29, div=5
205714 (kHz), mul=30, div=6
297600 (kHz), mul=31, div=4
248000 (kHz), mul=31, div=5
212571 (kHz), mul=31, div=6
186000 (kHz), mul=31, div=7

На следующие частоты переключится нельзя, плата мгновенно зависает:
144000 (kHz), mul=3, div=0
180000 (kHz), mul=15, div=3
136000 (kHz), mul=17, div=5
126000 (kHz), mul=21, div=7
157714 (kHz), mul=23, div=6
171428 (kHz), mul=25, div=6
133333 (kHz), mul=25, div=8
178285 (kHz), mul=26, div=6
162000 (kHz), mul=27, div=7
174000 (kHz), mul=29, div=7
165333 (kHz), mul=31, div=8
158400 (kHz), mul=33, div=9
296000 (kHz), mul=37, div=5
203076 (kHz), mul=55, div=12
299076 (kHz), mul=81, div=12

Вся периферия тактуется от PLL1.

Данная плата не имеет никаких доменов частот.
Есть домены только по энергопотреблению.

Может кто подсказать в чем проблема??

Это сходит с ума ОС Linux, или все таки сама плата?

Я потерялся в догадках.

Если выставить на PLL2 нужную частоту, но не переключать на нее процессор (оставить на PLLC1SYSCLK2), то все продолжает стабильно работать.

Посоветуйте на что обратить внимание sm.gif))
Dron_Gus
Откуда тактируется память? PLL лочится? Нет ли каких огнраничений на соотношение частот ядра/периферии?
Stepanov V. Andrew
Цитата(Dron_Gus @ Jan 31 2011, 14:39) *
Откуда тактируется память? PLL лочится? Нет ли каких огнраничений на соотношение частот ядра/периферии?


Из руководства память (контроллер DDR2) тактуется одновременно двумя источниками:
1. VLCK == PLLC1SYSCLK4 (т.е. о чем я говорил: CFG/DMA bus clock frequency).
2. PLLC1SYSCLK7 или PLLC2SYSCLK3.

В Linux по умолчанию используется PLLC1SYSCLK7. Я не думаю что в этом проблема... так как плата спокойно переживает ресет PLL2, до тех пор пока я не "заскакиваю" процом обратно на PLL2.

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

PLL - делаю ему полный ресет - это единственный способ установить новые делители/множитель.



The DDR2/mDDR EMIF uses either PLLC1SYSCLK7 or PLLC2SYSCLK3 clock domains depending on
what the selection is by programming the DDRCLKS bit field in the PERI_CLKCTL register.

У меня используется PLLC1SYSCLK7.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.