NXP i.MX7D установка частоты ядер

После сброса процессора или подачи питания, загрузчик устанавливает частоту всех ядер A7 в 792 МГц.
Вы можете перестроить её на любую, в диапазоне 648 - 1296 МГц.

Запасайтесь временем. На эту процедуру уйдут кошмарные 50 микросекунд:

	MOV32 R0, CCM_ANALOG_BASE

	@ Что бы перестроить PLL
	@ Сначала затактируем ядро в обход PLL
	MOV R1, 1 << BYPASS @ Во время обновления настроек PLL
	STR R1, [R0, PLL_ARM_SET] @ Ядро будет тактироваться частотой кварца 24 МГц

	@ Нам нужен гигагерц
	Умножитель_частоты_ядра = 83 @ 24*83/2 = 996 МГц

	@ Обновить настройки PLL
	MOV R1, 0b01111111 @ Битовая маска для сброса
	STR R1, [R0, PLL_ARM_CLR] @ Сбросить старое значение PLL
	MOV R1, Умножитель_частоты_ядра
	STR R1, [R0, PLL_ARM_SET] @ Установить новое

	@ Дождаться завершения процесса
	@ Перестройки PLL
	1:
	LDR R1, [R0, PLL_ARM]
	TST R1, 1 << PLL_ARM_LOCK
	BEQ 1b

	@ Затактировать ядро непосредственно от PLL
	MOV R1, 1 << BYPASS
	STR R1, [R0, PLL_ARM_CLR]

	@ Прямо здесь и сейчас: гигагерц!
	

Рекомендуемые частоты приводятся в документации на камень. В нашем случае, это гигагерц. А более высокие частоты можно устанавливать в режиме 50/50. То есть, давать ядру остыть. 10 мс поработал, 10 мс остывает. Иначе возникнет локальный перегрев и пойдут разрушительные процессы на кристалле.

Целевая частота рассчитывается по формуле:

     Частота ядра = 24 * умножитель / 2

"Умножитель" может принимать значение от 54 до 108.