Pavel Ivanchenko
Admin
Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Озадачился разгоном памяти до сабжевой частоты, но пока не понял как в boot_prep скрутить частоту ...
Лучше, чем сделать так, пока не придумал:
Код void init_clock()
{
HW_CLKCTRL_FRAC_SET(BM_CLKCTRL_FRAC_CLKGATEEMI);
#ifdef EMI_96M
set_emi_frac(30);
#else //EMI_133M
//pi set_emi_frac(33);
set_emi_frac(28);
#endif
HW_CLKCTRL_FRAC_CLR(BM_CLKCTRL_FRAC_CLKGATEEMI);
delay(11000);
#ifdef EMI_96M
HW_CLKCTRL_EMI_WR(BF_CLKCTRL_EMI_DIV_XTAL(1)|
BF_CLKCTRL_EMI_DIV_EMI(3)
);
#else
HW_CLKCTRL_EMI_WR(BF_CLKCTRL_EMI_DIV_XTAL(1)|
BF_CLKCTRL_EMI_DIV_EMI(2)
);
#endif
Проверяю номинал осциллографом, из-за того что она управляется по СKE, точно не измерить, поэтому как то на "глаз" получилось ...
Поднял вопрос поднятия тактовой на
форуме FreeScale, говорят "работает до 133М" - явно перестраховываются.
Pavel Ivanchenko
Admin
Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Итак, на форуме FreeScale дали внятный ответ, из которого следует, что set_emi_frac(26) делает частоту тактовой DDR 166МГц, что и требовалось получить.
Сейчас имею следующие тайминги:
Код void init_ddr_mt46v32m16_167Mhz(int ce)
{
HW_DRAM_CTL00_WR(0x01010001);
HW_DRAM_CTL01_WR(0x00010100);
HW_DRAM_CTL02_WR(0x01000101);
HW_DRAM_CTL03_WR(0x00000001);
HW_DRAM_CTL04_WR(0x00000101);
HW_DRAM_CTL05_WR(0x00000000);
HW_DRAM_CTL06_WR(0x00010000);
HW_DRAM_CTL07_WR(0x01000001);
HW_DRAM_CTL09_WR(0x00000001);
HW_DRAM_CTL10_WR(0x07000200);
// HW_DRAM_CTL11_WR(0x00070202); //CAS Lat
HW_DRAM_CTL11_WR(0x00070202);
// HW_DRAM_CTL12_WR(0x02020000);
HW_DRAM_CTL12_WR(0x02020000);
// HW_DRAM_CTL13_WR(0x04040a01); //CAS Lat
HW_DRAM_CTL13_WR(0x05050a01);
HW_DRAM_CTL14_WR(0x00000200|ce);
// HW_DRAM_CTL15_WR(0x02040000);
HW_DRAM_CTL15_WR(0x03050000);
HW_DRAM_CTL16_WR(0x02000000);
// HW_DRAM_CTL17_WR(0x19000f08);
HW_DRAM_CTL17_WR(0x18000d0a);
// HW_DRAM_CTL18_WR(0x0d0d0000);
HW_DRAM_CTL18_WR(0x15150000);
// HW_DRAM_CTL19_WR(0x02021313);
HW_DRAM_CTL19_WR(0x02021313);
// HW_DRAM_CTL20_WR(0x02061521);
HW_DRAM_CTL20_WR(0x03071524);
// HW_DRAM_CTL21_WR(0x0000000a);
HW_DRAM_CTL21_WR(0x0000000c);
HW_DRAM_CTL22_WR(0x00080008);
HW_DRAM_CTL23_WR(0x00200020);
HW_DRAM_CTL24_WR(0x00200020);
HW_DRAM_CTL25_WR(0x00200020);
// HW_DRAM_CTL26_WR(0x000003f7);
HW_DRAM_CTL26_WR(0x00000509);
HW_DRAM_CTL29_WR(0x00000020);
HW_DRAM_CTL30_WR(0x00000020);
HW_DRAM_CTL31_WR(0x00c80000);
// HW_DRAM_CTL32_WR(0x000a23cd);
HW_DRAM_CTL32_WR(0x000d2d62);
HW_DRAM_CTL33_WR(0x000000c8);
// HW_DRAM_CTL34_WR(0x00006665);
HW_DRAM_CTL34_WR(0x000081c7);
HW_DRAM_CTL36_WR(0x00000101);
HW_DRAM_CTL37_WR(0x00040001);
HW_DRAM_CTL38_WR(0x00000000);
HW_DRAM_CTL39_WR(0x00000000);
HW_DRAM_CTL40_WR(0x00010000);
HW_DRAM_CTL08_WR(0x01000000);
}
C которыми ядро "нормально" работает, но memtester (на 45М) находит ошибки.
Pavel Ivanchenko
Admin
Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Потому как "1 chip enable", GPIO не пойдет - арбитраж шины не сделаете.
PS лучше было это отдельной темой оформить