реклама на сайте
подробности

 
 
> Инициализация клоков vybird, Работает как черепаха...
mantech
сообщение Sep 19 2014, 18:54
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



День добрый.

Программирую проц под иаром, вроде все ок, но решил проверить, насколько быстр данный проц, и вот тут меня постигло недоумение...

Задал я простой тестик, счетчик, который прибавляется на 1 пока идет 1 сек, без оптимизации и т.п. Итого, на А5, на который идет тактировка 500!!! МГц, счетчик насчитал около 2000000. В отладке посмотрел, на прибавление 1 и выполнения while с условием, выполняется 10 асмовских команд. Итого получаем черепашью скорость, если так мягко выразиться

Для примера запустил тоже самое на стм32f407 на 160МГц результат был в 6 раз больше...

Может у кого есть светлые мысли, или там еще каких-нить делителей понапичкали...

Вот код инициализации

Код
void SystemInit(void)
{
CCM->CLPCR &= ~CCM_CLPCR_FXOSC_PWRDWN_MASK;

while(!(CCM_CSR_FXOSC_RDY_MASK & CCM->CSR));

CCM->CCSR |= CCM_CCSR_FAST_CLK_SEL_MASK;

// using PLL1 PFD3
//Enable CCM, SRC, and more
CCM->CCGR4 |= CCM_CCGR4_CG10(1); // WKPU ungate
CCM->CCGR4 |= CCM_CCGR4_CG11(1); // CCM ungate
CCM->CCGR4 |= CCM_CCGR4_CG12(1); // GPC ungate
CCM->CCGR4 |= CCM_CCGR4_CG14(1); // SRC ungate
CCM->CCGR3 |= CCM_CCGR3_CG0(1); // ANADIG ungate

//Enable IOMUX
CCM->CCGR2 |= CCM_CCGR2_CG8(1); // IOMUX Controller ungate
CCM->CCGR2 |= CCM_CCGR2_CG9(1); // Port A Controller ungate
CCM->CCGR2 |= CCM_CCGR2_CG10(1); // Port B Controller ungate
CCM->CCGR2 |= CCM_CCGR2_CG11(1); // Port C Controller ungate
CCM->CCGR2 |= CCM_CCGR2_CG12(1); // Port D Controller ungate
CCM->CCGR2 |= CCM_CCGR2_CG13(1); // Port E Controller ungate

/* enable PLLs in Anadig */
ANADIG->PLL1_CTRL=0x00002001;
while(!(ANADIG_PLL1_CTRL_LOCK_MASK & ANADIG->PLL1_CTRL));//wait until lock

ANADIG->PLL2_CTRL=0x00002001;
while(!(ANADIG_PLL2_CTRL_LOCK_MASK & ANADIG->PLL2_CTRL));//wait until lock
ANADIG->PLL4_CTRL=0x00002031; //PLL4
while(!(ANADIG_PLL4_CTRL_LOCK_MASK & ANADIG->PLL4_CTRL));//wait until lock
ANADIG->PLL5_CTRL=0x00002001; //PLL5
while(!(ANADIG_PLL5_CTRL_LOCK_MASK & ANADIG->PLL5_CTRL));//wait until lock
ANADIG->PLL6_CTRL=0x00002028; //PLL6
while(!(ANADIG_PLL6_CTRL_LOCK_MASK & ANADIG->PLL6_CTRL));//wait until lock

//Use 500MHz CA5, 400 MHz DDR(async), 166MHz CM4, and 83MHz bus (PFD1=500MHz)
//CCM->CCSR=0x0001FF24; //PLL1 uses PLL1_PFD3, enable all PLL1 and PLL2, select Fast Clock, and sys_clock_sel use PLL1
CCM->CCSR=0x0001FF24; //PLL1 uses PLL1_PFD3, enable all PLL1 and PLL2, select Fast Clock, and sys_clock_sel use PLL1
CCM->CACRR=0x00000810; //ARM_DIV=0 (div by 1), BUS_DIV=2 (div by 3), ipg_div value is 1 (div by 2)


}
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 30)
Integro
сообщение Sep 21 2014, 09:05
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460



Откуда программа выполняется, DDR?
Кэш включен?
какой тип данных используете для счетчика, uint32_t? если одна итерация выполняется быстрее чем 0,23нс (с кешем вполне реально) возможно переполнение переменной.



Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 21 2014, 15:03
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Integro @ Sep 21 2014, 12:05) *
Откуда программа выполняется, DDR?
Кэш включен?
какой тип данных используете для счетчика, uint32_t? если одна итерация выполняется быстрее чем 0,23нс (с кешем вполне реально) возможно переполнение переменной.


Кэш, который L1 включен, в L2 смысла не вижу - прога выполняется в статической памяти. Переполнение 32х битной переменной?? Этож больше 2 миллиардов итераций должно быть!!! У этого проца если 400лимонов будет - уже праздник biggrin.gif
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Sep 23 2014, 14:09
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(mantech @ Sep 19 2014, 22:54) *
День добрый.

Программирую проц под иаром, вроде все ок, но решил проверить, насколько быстр данный проц, и вот тут меня постигло недоумение...

Задал я простой тестик, счетчик, который прибавляется на 1 пока идет 1 сек, без оптимизации и т.п. Итого, на А5, на который идет тактировка 500!!! МГц, счетчик насчитал около 2000000. В отладке посмотрел, на прибавление 1 и выполнения while с условием, выполняется 10 асмовских команд. Итого получаем черепашью скорость, если так мягко выразиться

Для примера запустил тоже самое на стм32f407 на 160МГц результат был в 6 раз больше...

Может у кого есть светлые мысли, или там еще каких-нить делителей понапичкали...


Надо бы ещё записать MFD = 0x12 в ANADIG_PLL1_DENOM и PFD3 = 0x13 в ANADIG_PLL1_PFD. Ещё обратите внимание, что Freescale рекомендует использовать для 500 MHz PFD1, а не PFD3 (см. раздел 9.6.1.1 в Rev.5 мануала на Vybrid).
Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 23 2014, 18:14
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Zwerg_nase @ Sep 23 2014, 17:09) *
рекомендует использовать для 500 MHz PFD1, а не PFD3


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

В М4 были действительно выключены кэши, когда подключил, стало значительно быстрее, соизмеримо с стм407, НО только для частоты 132мег.

Затем я сменил делитель, на 1й, должно стать 500 на А5 и 166 на М4, однако скорость М4 осталась прежней, что с кэшем, что без,т.е или его частота не поменялась, что странно, т.к. частота шины с 66 возросла до 83мег. проверял по уарту принастройке скорости...

С А5 пока все так-же тоскливо, включение кэша дало прирост, но небольшой.
Единственное, в проце есть бутлоадер, который стартует первым, затем загружает в память и пускает прогу, т.е линукс, который во флешке. У меня же прогу загружает jlink, может тет дело, или скорость статики выбирать нужно, только где??
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Sep 24 2014, 11:34
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(mantech @ Sep 23 2014, 22:14) *
Я в курсе, там и задан первый делитель, а не 3й, просто коммент не поправил. 3й для частоты 400мег.


А чему у Вас равен PFD1_FRAC в ANADIG_PLL1_PFD?

Какой partnumber у Вашего проца?
Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 24 2014, 14:04
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Zwerg_nase @ Sep 24 2014, 14:34) *
А чему у Вас равен PFD1_FRAC в ANADIG_PLL1_PFD?

Какой partnumber у Вашего проца?


Проц - MVF61NN151CMK50

Значение из регистра- 0x9CBB
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Sep 24 2014, 14:24
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(mantech @ Sep 24 2014, 18:04) *
Значение из регистра- 0x9CBB


Здесь где-то ошибка. Если ANADIG_PLL1_PFD = 0x9CBB, то это значит PFD1_CLKGATE = 1, т.е. PFD1 отключен. Кроме того, чтобы получить PFD1 = 500 MHz, надо чтобы PFD1_FRAC = 0x13.

А чему у Вас равны ANADIG_PLL1_NUM и ANADIG_PLL1_DENOM?
Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 24 2014, 15:01
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Zwerg_nase @ Sep 24 2014, 17:24) *
Здесь где-то ошибка. Если ANADIG_PLL1_PFD = 0x9CBB, то это значит PFD1_CLKGATE = 1, т.е. PFD1 отключен. Кроме того, чтобы получить PFD1 = 500 MHz, надо чтобы PFD1_FRAC = 0x13.

А чему у Вас равны ANADIG_PLL1_NUM и ANADIG_PLL1_DENOM?


прочиталось -
PLL1_NUM = 0
PLL1_DENOM = 0x16

Здесь где-то ошибка. Если ANADIG_PLL1_PFD = 0x9CBB,
Да фиг знает, перед инициализацией pll выполняется команда - ANADIG_PLL1_PFD =0x13;
Почему такой результат незнаю...

И еще, пользуясь случаем, может подскажете, как залить бинарники во флешку на плате, я так понимаю, надо использовать
mfgtools, но надо делать конфиг... Может есть что по данному поводу?

ЗЫ. Не знаю поможет это в моем вопросе или нет, решил посмотреть, сколь насчитает мне global timer за 1 сек, вообщем результат 1 177 600 000. Последние цифры "прыгают", но как-то так. Вопрос - какой частотой он тактируется, по прикидкам - частота pll1 *2

Сообщение отредактировал mantech - Sep 24 2014, 18:58
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Sep 25 2014, 11:38
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(mantech @ Sep 24 2014, 19:01) *
прочиталось -
PLL1_NUM = 0
PLL1_DENOM = 0x16

Это правильно.
Цитата
Да фиг знает, перед инициализацией pll выполняется команда - ANADIG_PLL1_PFD =0x13;
Почему такой результат незнаю...

Видимо, кто-то портит содержимое этого регистра. Это Вам надо чинить.
Цитата
И еще, пользуясь случаем, может подскажете, как залить бинарники во флешку на плате, я так понимаю, надо использовать
mfgtools, но надо делать конфиг... Может есть что по данному поводу?

Мы заливаем через Jlink. MFGtool пока не используем.


Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 25 2014, 17:36
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Zwerg_nase @ Sep 25 2014, 14:38) *
Мы заливаем через Jlink.


В смысле, во флешку? Каким образом?
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Sep 26 2014, 07:41
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(mantech @ Sep 25 2014, 21:36) *
В смысле, во флешку? Каким образом?

Есть два варианта: через Jlink записываем uboot во внутреннюю SRAM проца. Запускаем uboot. Затем из uboota копируем через Ethernet имидж для внешней NAND Flash, который лежит на РС, собственно в NAND Flash. Второй вариант - записать через Jlink имидж для NAND Flash во внутреннюю SRAM проца (имидж включает uboot). Запускаем uboot. Затем из uboota записываем имидж для внешней NAND Flash из внутренней SRAM собственно в NAND Flash.
Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 26 2014, 12:05
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Zwerg_nase @ Sep 26 2014, 10:41) *
Есть два варианта:


Ммм да, я думал это как-то проще, и без убутов. laughing.gif
Go to the top of the page
 
+Quote Post
Integro
сообщение Sep 28 2014, 20:03
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460



mantech, удалось нормально оценить производительность? Хотя бы относительно стм32f407?
Go to the top of the page
 
+Quote Post
mantech
сообщение Sep 29 2014, 17:06
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Integro @ Sep 28 2014, 23:03) *
mantech, удалось нормально оценить производительность? Хотя бы относительно стм32f407?


Пока только у М4 стала равна стм, с А5 пока все так же уныло...
Go to the top of the page
 
+Quote Post
Porychik Kize
сообщение Oct 7 2014, 04:19
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 15-10-04
Пользователь №: 884



Цитата(mantech @ Sep 29 2014, 21:06) *
Пока только у М4 стала равна стм, с А5 пока все так же уныло...


И все же очень интересно, как с производительностью A5?


--------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми."
Чингисхан.
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 7 2014, 06:46
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Porychik Kize @ Oct 7 2014, 07:19) *
И все же очень интересно, как с производительностью A5?


Она меньше М4. Запускал линукс, пишет 256bogomips, сколько это в реальных мипсах - х.з, но явно больше, чем в моей проге. С чем это связано - незнаю, единственное, есть подозрение, что как-то неправильно подключаю кеш, т.к. при его подключении рост составляет 10%, а в случае М4 - увеличение в 4 раза!

Второе - проц упорно не хочет работать на 168МГц, М4 в смысле, т.е прога пишет, что частота именно такая и есть, но работает как на 132.

Линукс, кстати тоже только на 400\132 работает, может брачный камень у меня попался...

Или мешает то, что прогу гружу через JTAG, т.к. видимо здесь нет никого, кто бы поделился, каким образом ее в нанд-флеш загрузить, или нехотят рассказывать. Через "задний проход"(убут, фтп-сетка и т.п.) я не пробовал, т.к. в убутах и его командах не особо разбираюсь...
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Oct 7 2014, 08:42
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(mantech @ Oct 7 2014, 10:46) *
Линукс, кстати тоже только на 400\132 работает, может брачный камень у меня попался...


Если у Вас на проце написано 0N02G, 1N02G или 2N02G, то у такого проца есть проблемы с генерацией 500 МГц в PLL. См. errata e6235 в атаче и здесь http://cache.freescale.com/files/32bit/doc...mp;fileExt=.pdf.
Прикрепленные файлы
Прикрепленный файл  VYBRID_0N02G_Errata.pdf ( 212.92 килобайт ) Кол-во скачиваний: 15
Прикрепленный файл  VYBRID_1N02G.pdf ( 243.05 килобайт ) Кол-во скачиваний: 11
 
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 7 2014, 09:31
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Zwerg_nase @ Oct 7 2014, 11:42) *
Если у Вас на проце написано 2N02G,


"Повезло", именно такой проц. Попробую задать, что там написали.
Спасибо за информацию!
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 8 2014, 14:21
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Вообщем решил я сегодня еще раз проверить, достал меня этот хренов камешек, если честно, но думаю, загружу-ка я свою прогу не в "особо быструю" статическую память, а в ДДР...

По логике вещей, быстродействие в ДДР должно упасть в полтора-2 раза по сравнению свнутренней статикой, запускаю тест, в котором после 100 000 000 итераций производится вывод в уарт.

Запускаю в статике, результат 1 сообщение за 11 секунд. Быстродействие на уровне СТМ32Ф4 на частоте 70 мегагерц!!!
Причем частота А5 - 400 мегагерц - жуткий тормоз!!

Ту же самую прогу гружу в ДДР, запускаю...... и чуть не падаю со стула!!! она БЫСТРЕЕ в 11 РАЗ!!!
Вопрос - что за хренотень с этим камнем??? Такое впечатление, что весь он сплошная еррата...

У кого есть какие мысли по этому поводу??
Go to the top of the page
 
+Quote Post
_3m
сообщение Oct 9 2014, 05:42
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(mantech @ Oct 8 2014, 18:21) *
Ту же самую прогу гружу в ДДР, запускаю...... и чуть не падаю со стула!!! она БЫСТРЕЕ в 11 РАЗ!!!
Вопрос - что за хренотень с этим камнем??? Такое впечатление, что весь он сплошная еррата...
У кого есть какие мысли по этому поводу??

Мысль что у вас область SRAM объявлена некэшируемой. Так часто делают потому что в SRAM кладут критические данные которым кэширование мешает.
Перетряхните настройки кэширования.
в u-boot какие результаты ?
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 9 2014, 05:48
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(_3m @ Oct 9 2014, 08:42) *
Мысль что у вас область SRAM объявлена некэшируемой. Так часто делают потому что в SRAM кладут критические данные которым кэширование мешает.
Перетряхните настройки кэширования.
в u-boot какие результаты ?


Тогда стесняюсь спросить, а какая частота внутренней памяти?? Ну хорошо, пусть она некэшируемая, хотя настройки mmu в mqx говорят об обратном, неужели ее частота меньше частоты флеша в стм407?? И второе, что меня убивает, как такая медленная память может быть кэшем 2го уровня?? Мысли есть?

По поводу убутов и прочего гнушного софта уже где-то писал - нет никакого желания и времени разгребать по 500 файлов, ставить виртуалки с линуксом и изучать все это чудо-юдо. Поэтому не зннаю как и что в нем проверять...

Сообщение отредактировал mantech - Oct 9 2014, 05:52
Go to the top of the page
 
+Quote Post
_3m
сообщение Oct 9 2014, 12:09
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(mantech @ Oct 9 2014, 09:48) *
Тогда стесняюсь спросить, а какая частота внутренней памяти?? Ну хорошо, пусть она некэшируемая, хотя настройки mmu в mqx говорят об обратном, неужели ее частота меньше частоты флеша в стм407?? И второе, что меня убивает, как такая медленная память может быть кэшем 2го уровня?? Мысли есть?

Документы изучать надо!
DDI0246F_l2c310_r3p2_trm.pdf
Table 1-1 Typical memory sizes and access times
Processor registers 128B 1 cycle
On-chip L1 cache 32KB 1-2 cycles
On-chip L2 cache 256KB 8 cycles
Main memory, L3, dynamic RAM ... 30-100 cycles

500MHz A5 / 8 = 62.5M обращения в L2

Далее VYBRIDRM.pdf
OCRAM сидит на интерфейсе AXI, смотрим Table 62-1. OCRAM = platform bus.
В описании тактирования смотрим что platform bus clock = cortex m4 clock.

Цитата
По поводу убутов и прочего гнушного софта уже где-то писал - нет никакого желания и времени разгребать по 500 файлов, ставить виртуалки с линуксом и изучать все это чудо-юдо. Поэтому не зннаю как и что в нем проверять...

Чипы такого уровня сложности как уже писали "поле усеянное граблями, и грабли до горизонта".
Производитель пишет bsp глядя совсем не в мануал где половины информации нет и порядка 30% переврано а в Verilog код чипа или имея доступ к работающей модели в симуляторе где можно посмотреть внутренние сигналы в чипе. Мы этого лишены, поэтому ничего не остается как курить сорцы bsp от производителя.
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 9 2014, 17:38
Сообщение #24


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(_3m @ Oct 9 2014, 15:09) *
Документы изучать надо!

OCRAM сидит на интерфейсе AXI, смотрим Table 62-1. OCRAM = platform bus.
В описании тактирования смотрим что platform bus clock = cortex m4 clock.


Дак в том и дело, что читал! Только это не объсняет того, почему 32х разрядная статика, которая работает на 166 мегагерцах на порядок медленнее ДДР 400, которая 16 бит! Вот в чем вопрос...
Go to the top of the page
 
+Quote Post
psL
сообщение Oct 9 2014, 18:13
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



u-boot это же bare-metal код, кто мешает посмотреть настройки в регистрах и забить их в любимый иар?
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 9 2014, 19:24
Сообщение #26


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(psL @ Oct 9 2014, 21:13) *
u-boot это же bare-metal код, кто мешает посмотреть настройки в регистрах и забить их в любимый иар?


убут работает в статике?? wink.gif
Go to the top of the page
 
+Quote Post
psL
сообщение Oct 9 2014, 22:13
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Цитата(mantech @ Oct 9 2014, 23:24) *
убут работает в статике?? wink.gif

где работает uboot без разницы, если "статика" в системе используется, она c большой степенью вероятности будет настраиваться в uboot
Go to the top of the page
 
+Quote Post
_3m
сообщение Oct 10 2014, 05:44
Сообщение #28


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(mantech @ Oct 9 2014, 21:38) *
Дак в том и дело, что читал! Только это не объсняет того, почему 32х разрядная статика, которая работает на 166 мегагерцах на порядок медленнее ДДР 400, которая 16 бит! Вот в чем вопрос...

Чтобы не гадать смотрите таблицу MMU, возможно стоит вывести дамп во время работы.
Почти наверняка как:
Медленная ддр с помощью кэша L1 превращается в реактивную и процессор работает со своей полной скоростью.
166 мегагерцовая OCRAM не кэшируется и тормозит быстрый процессор.
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 11 2014, 11:35
Сообщение #29


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(_3m @ Oct 10 2014, 08:44) *
Чтобы не гадать смотрите таблицу MMU


Вы были правы, статика была некэшируемым регионом, поправил - стало работать быстрее, хотя все равно медленнее ДДР.

Еще вопрос, для работы мму требуется таблица в памяти 4кб, где ее лучше размещать, чтоб работало быстрее, если вообще разница, где она находится, в статике или в ДДР? Сейчас я ее разместил в статике по адресу 0x3f00:0000, программа выполняется в ддр с базового адреса 0x8000:0000.
Go to the top of the page
 
+Quote Post
_3m
сообщение Oct 12 2014, 05:44
Сообщение #30


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(mantech @ Oct 11 2014, 15:35) *
Вы были правы, статика была некэшируемым регионом, поправил - стало работать быстрее, хотя все равно медленнее ДДР.

Кэш L2 включен ?
Есть предположение что возможен конфликт между OCRAM и L2. Кэш контроллер копирует OCRAM -> L2 и потом L2 -> L1 используя один и тот же порт шины AXI.
В случае ddr возможно используются разные порты шинного коммутатора и по этой причине работает быстрее.
Попробуйте отключить L2 оставив L1 включенным.
Вообще OCRAM не просто так объявлена некэшируемой. Туда обычно кладут volatile переменные доступ к которым требуется с минимальной латентностью.

Цитата
Еще вопрос, для работы мму требуется таблица в памяти 4кб, где ее лучше размещать, чтоб работало быстрее, если вообще разница, где она находится, в статике или в ДДР? Сейчас я ее разместил в статике по адресу 0x3f00:0000, программа выполняется в ддр с базового адреса 0x8000:0000.

Для начала разместите в статике а по уму надо смотреть исходники линукс - таблица MMU может разрастаться если диспетчер памяти будет выделять 4кб страницы.
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 12 2014, 05:56
Сообщение #31


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(_3m @ Oct 12 2014, 08:44) *
Кэш L2 включен ?


Тут вообще вопрос интересный, сам до конца не понял, судя по маркировке чипа, он с кэшем, но непонятно одно - это означает, что там просто есть контроллер кэша и его можно включить\выключить программно, тогда да, он у меня не включен, а если он включен по умолчанию, то я его специально не выключаю.

Хотя пусть даже и так, программа-то выполняется с адреса 0x3F00:0000, а это область system ram, а кэш может находиться только во второй странице graph ram, что по адресам совсем не одно и тоже...

Цитата(_3m @ Oct 12 2014, 08:44) *
Для начала разместите в статике а по уму надо смотреть исходники линукс - таблица MMU может разрастаться если диспетчер памяти будет выделять 4кб страницы.



Пока именно там и расположена, на счет "ковыряния" в линуксе - это для меня уже слишком laughing.gif
Я и так еле с мму разобрался, а копаться в этом море каких-то исходников... Да и мне вся эта виртуальная система не нужна, только, чтоб кэши включить и все!
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 00:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.02635 секунд с 7
ELECTRONIX ©2004-2016