Перейти к содержанию
    

Инициализация клоков vybird

Пока только у М4 стала равна стм, с А5 пока все так же уныло...

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

Или мешает то, что прогу гружу через JTAG, т.к. видимо здесь нет никого, кто бы поделился, каким образом ее в нанд-флеш загрузить, или нехотят рассказывать. Через "задний проход"(убут, фтп-сетка и т.п.) я не пробовал, т.к. в убутах и его командах не особо разбираюсь...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если у Вас на проце написано 0N02G, 1N02G или 2N02G, то у такого проца есть проблемы с генерацией 500 МГц в PLL. См. errata e6235 в атаче и здесь http://cache.freescale.com/files/32bit/doc...mp;fileExt=.pdf.

VYBRID_0N02G_Errata.pdf

VYBRID_1N02G.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у Вас на проце написано 2N02G,

 

"Повезло", именно такой проц. Попробую задать, что там написали.

Спасибо за информацию!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Причем частота А5 - 400 мегагерц - жуткий тормоз!!

 

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

Вопрос - что за хренотень с этим камнем??? Такое впечатление, что весь он сплошная еррата...

 

У кого есть какие мысли по этому поводу??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Вопрос - что за хренотень с этим камнем??? Такое впечатление, что весь он сплошная еррата...

У кого есть какие мысли по этому поводу??

Мысль что у вас область SRAM объявлена некэшируемой. Так часто делают потому что в SRAM кладут критические данные которым кэширование мешает.

Перетряхните настройки кэширования.

в u-boot какие результаты ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мысль что у вас область SRAM объявлена некэшируемой. Так часто делают потому что в SRAM кладут критические данные которым кэширование мешает.

Перетряхните настройки кэширования.

в u-boot какие результаты ?

 

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

 

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

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда стесняюсь спросить, а какая частота внутренней памяти?? Ну хорошо, пусть она некэшируемая, хотя настройки 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 от производителя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Документы изучать надо!

 

OCRAM сидит на интерфейсе AXI, смотрим Table 62-1. OCRAM = platform bus.

В описании тактирования смотрим что platform bus clock = cortex m4 clock.

 

Дак в том и дело, что читал! Только это не объсняет того, почему 32х разрядная статика, которая работает на 166 мегагерцах на порядок медленнее ДДР 400, которая 16 бит! Вот в чем вопрос...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

u-boot это же bare-metal код, кто мешает посмотреть настройки в регистрах и забить их в любимый иар?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

u-boot это же bare-metal код, кто мешает посмотреть настройки в регистрах и забить их в любимый иар?

 

убут работает в статике?? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

убут работает в статике?? ;)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дак в том и дело, что читал! Только это не объсняет того, почему 32х разрядная статика, которая работает на 166 мегагерцах на порядок медленнее ДДР 400, которая 16 бит! Вот в чем вопрос...

Чтобы не гадать смотрите таблицу MMU, возможно стоит вывести дамп во время работы.

Почти наверняка как:

Медленная ддр с помощью кэша L1 превращается в реактивную и процессор работает со своей полной скоростью.

166 мегагерцовая OCRAM не кэшируется и тормозит быстрый процессор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы не гадать смотрите таблицу MMU

 

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Кэш L2 включен ?

Есть предположение что возможен конфликт между OCRAM и L2. Кэш контроллер копирует OCRAM -> L2 и потом L2 -> L1 используя один и тот же порт шины AXI.

В случае ddr возможно используются разные порты шинного коммутатора и по этой причине работает быстрее.

Попробуйте отключить L2 оставив L1 включенным.

Вообще OCRAM не просто так объявлена некэшируемой. Туда обычно кладут volatile переменные доступ к которым требуется с минимальной латентностью.

 

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

Для начала разместите в статике а по уму надо смотреть исходники линукс - таблица MMU может разрастаться если диспетчер памяти будет выделять 4кб страницы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...