RTL871x - OverClock CPU

pvvx

Активный участник сообщества
Стандартно, у нас имеется такой ряд частот для CPU:

0 - 166 666 666.666667 Гц
1 - 83 333 333.333333 Гц
2 - 41 666 666.666667 Гц
3 - 20 833 333.333333 Гц
4 - 10 416 666.666667 Гц
5 - 4 000 000 Гц

Задается в 3-х битах REG_SYS_CLK_CTRL1.

Но, если записать бит 17 в REG_SYS_SYSPLL_CTRL1, то получим:

0 - 200 000 000 Гц
1 - 100 000 000 Гц
2 - 50 000 000 Гц
3 - 25 000 000 Гц
4 - 12 500 000 Гц
5 - 4 000 000 Гц

Код:
int CpkClkTbl[6] = { 200000000, 100000000, 50000000, 25000000, 12500000, 4000000 };
unsigned int HalGetCpuClk()
{
  unsigned int result = CpkClkTbl[(HAL_SYS_CTRL_READ32(REG_SYS_CLK_CTRL1) >> BIT_SHIFT_PESOC_OCP_CPU_CK_SEL) & BIT_MASK_PESOC_OCP_CPU_CK_SEL]; //  [0x40000014]
  if ( !(HAL_SYS_CTRL_READ32(REG_SYS_SYSPLL_CTRL1) & (1<<17)) && result > 4000000 ) // [0x40000074]
  result = 5 * result / 6;
  return result;
}
Но это не все варианты. У нас есть ещё PLL. Но это потестирую потом...

А пока побалуемся мультиплексором делителя - пробуем пустить модуль RTL00 с RTL8710AF на 200 МГц для проверки работоспособности:
# ATSD=40000074
40000074: 00A85800 00800028 00000000 00000000
# ATXD=40000074,0AA5800
addr: 0x40000074; value:0xaa5800
Тут частота UART тоже уплыла на 38400*200/166 = 46265 bps
Меняем в terminale и работаем далее:
# ATST
CLK CPU 200000000 Hz
RAM heap 71600 bytes
TCM heap 21992 bytes
...
Далее:
# ATPW=3
# ATPA=RTL8710,0123456789,1,0
# ATSW=c*
Соединяемся с SSID: RTL8710
# ATW?
...
WIFI wlan1 Setting:
==============================
MODE => AP
SSID => RTL8710
CHANNEL => 1
SECURITY => AES
PASSWORD => 0123456789
Interface (wlan1)
==============================
MAC => 00:f8:87:11:00:13
IP => 192.168.43.1
GW => 192.168.43.1
...
Ползем на http://192.168.43.1
Снимок1278.gif
Всё Ok.
В прошивке AT модуль даже не греется (это же не ESP8266!) :)

Дополнение: RTL8710AF - загрузчик в ROM-BIOS

*После описанных установок AP, при следующей загрузке модуля в AT, достаточно написать "ATSW=c" и web с AP запуститься.
 
Последнее редактирование:

pvvx

Активный участник сообщества
При переключении на другое тактирование из ряда 50, 100, 200 Mhz, в SDK срабатывает ошибка в установки скорости UART-ов (переключается делитель тактирования UART c 200000000*5/12 на 200000000*1/2). Ошибка происходит из-за переполнения переменной в коде подбора делителей UART. Там 100000000*50=0x12A05F200, что превышает 32 бита и дальнейший расчет идет неверно. Если исправить (в исходнике) - то всё Ok.
При делителе и PLL на 166Mhz ошибка не сказывалась (200000000*5/12)*50=0xF85A49AA, что почти в предел 32-х бит.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Чтение какой-то SD на 200MHz CPU в rtlDuino:
Снимок1308.gif
Правда на неё контроллер ставит CLK всего 25MHz. Наверно такой класс скорости у неё? Надписей на ней нет, кроме - "Element14" от малины.
При 166MHz на неё ставит 20MHz.

@kissste - CLK UART:
166MHz, 83 МГц, ..., 4МГц -> 200000000 * 5/12 Гц
200MHz, 100MHz, ..., 4МГц -> 200000000 * 1/2 Гц

SDIOH и прилагается SD:
166MHz -> 20.834MHz
200MHz -> 25МГц
 
Последнее редактирование:
Сверху Снизу