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

 
 
> ARM9-Cortex clock control, он сам частоту себе подымает ?
WitFed
сообщение Sep 19 2014, 10:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



Подобные названию топика запросы не нагугливают конкретики. Кто в проблему погружен ?
Я на неделе обнаружил, что процессор из SoC на плате Альтеры стартует на очень слабой частоте. Функция:
Код
void my_chk() {
  volatile int i = 0;
  for (; i < 800*1000*1000; i++);
}

из 8-6 тактов цикла (в зависимости от оптимизации) работает порядка 4 минут в Baremetal режиме, а если её вызвать из Линукс-приложения (бывает на той же плате такая бяка) -- то 7 секунд.
Частота ARM-а позиционируется до 925 МГц, Линукс-результат очень подходит к этому числу.
А то, что у меня получается в без-ОС-ом случае -- на 25 МГц, которые подаются на процессор, судя по документации Альтеры, в которой больше нарыть ничего не удалось.
И ARM-овая избыточно подробна и необозрима, неудобна, ужасно пугающа, как много раз мне нагуглилось...
В ARM-ядре есть какие-то механизмы, PLL, регистры, чтобы установить множитель ко входу тактовой частоты ?
По идее, чтобы отсчитать 1 мс в любой ОС, нужно точно знать, на какой частоте ты работаешь, и запитать от неё таймер, а не надеяться на что-то внешнее.
Тогда 25 МГц и умножитель будут лучшим решением.
Но вдруг именно эту частоту 25 снаружи нужно подымать до 925 ? И Альтера должна дать описание, а их 10%, как я вижу ? Хотя и разбавленные...
Кто на ARM-ах собаку съел, как у них дело обстоит ?

И, пожалуйста, киньте конкретных ссылок для более-менее пристойного изучения этой архитектуры "сверху вниз" без ДТП, а в последнем случае уж и TRM из pdf сгодятся wink.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
MiklPolikov
сообщение Oct 7 2014, 18:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Судя по вопросу, вы совсем не попытались изучить документацию на процессор.
В процессорах есть довольно сложная система генерации тактовой частоты. По нескольку PLL , множество делителей. Это всё нужно настраивать вручную. И иначе как путём чтения документации, в этом не разобраться. Нет никакого волшебного решения, которое можно было бы дать тут, избавив Вас от необходимости читать доки.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 8 2014, 09:21
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Судя по вопросу, чел даже не понял какое у него ядро на плате. Новое изобрёл: ARM9-Cortex
А Вы тут про какие-то PLL талдычите...
biggrin.gif
Go to the top of the page
 
+Quote Post
WitFed
сообщение Oct 24 2014, 12:11
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



Похоже, я опять не туда попал wink.gif Тут микроконтроллеры, а есть спец-форум про SoC, там уже наблюдаются вопли по этим "модным" ПЛИС CycloneV со встроенными 2 ядрами ARM и тучей нечётких файлов документации, но без "единого" обозримого User Guide из 300 листов на всё про всё, как у нормальных людей, или хотя бы примеров кода на каждый случай. Книжек научно-приличных по ARM-ам я пока не встретил на нашем языке, чтобы быть в теме, по этим грёбаным необъятным мануалам забодался лазить в последние полгода, где всё самое интересное, типа раскладки управляющих регистров -- в конце, но до этого прелюдии забивают голову кучей мусора... wink.gif
Я писал Альтере -- включите в SoC EDS все файлы, которые необходимы для полного понимания процессов в HPS, или хотя бы прямые ссылки на них, просто имена, если лицензиары кривят с доступом ! А лучше сваяйте man-friendly manual вместо DoxyGen-отписок. Но пока сырость продукта в процовой части пахнет изо всех щелей. ПЛИСовая -- как обычно, на любителя, наши к такому продукту давно привыкли, уже не дёргаются.

...У меня в среде разработки DS-5 при отладке писано "Cortex-A9_0 #1 running", так что в Альтере считают, что есть такой проц ! И даже убеждаюсь на практике, что он живой и исполняющий инструкции, хотя и медленно.
В Cyclone V SoC Development Kit and SoC Embedded Design Suite можно увидеть общий план, в Altera SoC Embedded Design Suite User Guide -- стартовая точка, в Clock Manager описание блока клоков, который вроде рулит всеми частотами для всех встроенных чиповых девайсов системы, ARM-у типа как уже не надо разгонять ничего внутри, о чём я собственно и вопрошал, вдруг у кого в кэше сидят общие принципы. Там 3 PLL на всё про всё, читаю их регистры -- нормальные дефолтные значения, должно быть 925 на проце ! А по факту -- тормозит, как будто идёт bypass входной частоты PLL-ки наружу без применения к-тов.
В Линуксе всё летает, но я читаю тамошние регистры, пишу несколько отличающихся значених в Baremetal своём куда надо -- нифига по скорости.
Но я не хочу встроенный Линукс, куда толкает в принципе Альтера, ибо не видел достойных описаний встроенных систем на его основе и не люблю использовать тучи ресурсов непонятно на что.
Сколько исходников ни дай -- от их количества только хуже, доказать рабочесть системы можно только практикой, а не теоретическими выкладками, а последнее всегда предпочтительнее, потом уж второе...
Есть у кого положительный русскоязычный опыт выжимания приличной работы из этого SoC-а ?
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Oct 24 2014, 12:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



кроме тактовой, вы ещё про кэши не забывайте. они ж по умолчанию отключены.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 25 2014, 06:28
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(WitFed @ Oct 24 2014, 18:11) *
..У меня в среде разработки DS-5 при отладке писано "Cortex-A9_0 #1 running", так что в Альтере считают, что есть такой проц !

Cortex-A9 и ARM9 - чувствуете разницу?
Это совершенно разные ядра с разной архитектурой и системой команд.
Go to the top of the page
 
+Quote Post
SII
сообщение Oct 28 2014, 07:09
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Цитата(jcxz @ Oct 25 2014, 09:28) *
Это совершенно разные ядра с разной архитектурой и системой команд.


С разной микроархитектурой. Архитектура у ядер Cortex-A (ARMv7-A) является эволюционным развитием архитектуры ядер ARM9 (ARMv4T или ARMv5T* в зависимости от конкретного ядра). Система команд у них тоже является результатом эволюционного развития (у Cortex-A есть всё, что есть у более ранних ядер, но имеются и новые команды, отсутствовавшие ранее). Так что здесь будет правильным говорить о разных версиях архитектуры, но никак не о разных архитектурах. Разные архитектуры -- это, например, ARM и IA-32 (x86).
Go to the top of the page
 
+Quote Post
SM
сообщение Oct 28 2014, 08:02
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Ну, во первых, понятный, внятный и всеобъемлющий handbook у них есть - вот он, аж 22 мегабайта, на саму фпга - http://www.altera.com/literature/hb/cyclon...e5_handbook.pdf, и второй - на HPS, 25 мБайт, (он Вам и нужен) - http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf

А во вторых, просто прочитайте раздел "clock manager" во втором документе, и спрашивайте тут уже конкретно. Я, конечно, понимаю, что большой документ качать лень, сказать, что его якобы нету. Но скачать и изучить его придется. Только не говорите, что найти его не смогли - он торчит в самой середине раздела документации на самом видном месте - http://www.altera.com/literature/lit-cyclone-v.jsp, и все регистры всех периферийных устройств АРМа там подробнейшем образом расписаны, в том числе и main PLL
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 28 2014, 18:33
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(SII @ Oct 28 2014, 13:09) *
С разной микроархитектурой. Архитектура у ядер Cortex-A (ARMv7-A) является эволюционным развитием архитектуры ядер ARM9 (ARMv4T или ARMv5T* в зависимости от конкретного ядра). Система команд у них тоже является результатом эволюционного развития (у Cortex-A есть всё, что есть у более ранних ядер, но имеются и новые команды, отсутствовавшие ранее). Так что здесь будет правильным говорить о разных версиях архитектуры, но никак не о разных архитектурах. Разные архитектуры -- это, например, ARM и IA-32 (x86).

Я конечно реального дела с Cortex-A не имел, но ARM7/9 и Cortex-M знаю достаточно хорошо. И считаю их совершенно разными (хоть и не настолько как x86).
Неужто Cortex-A ближе к ARM7/9 чем к Cortex-M?
Go to the top of the page
 
+Quote Post
SM
сообщение Oct 29 2014, 05:36
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(jcxz @ Oct 28 2014, 21:33) *
Неужто Cortex-A ближе к ARM7/9 чем к Cortex-M?

Возьмите от Cortex-M систему команд, добавьте к нему кеши и MMU примерно от ARM9/11, и еще NEON, и получится Cortex-A. Вот как-то так. В общем, все оно близко друг к другу, сложно сказать, к кому ближе, к Cortex-M (по базовому набору инструкций), или к ARM9 (по возможностям кеширования, защиты и виртуализации памяти и векторным операциям). Скорее, все же к ARM9
Go to the top of the page
 
+Quote Post
SII
сообщение Oct 29 2014, 16:17
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Цитата(jcxz @ Oct 28 2014, 21:33) *
Я конечно реального дела с Cortex-A не имел, но ARM7/9 и Cortex-M знаю достаточно хорошо. И считаю их совершенно разными (хоть и не настолько как x86).
Неужто Cortex-A ближе к ARM7/9 чем к Cortex-M?


Ядра серии Cortex-A (и Cortex-R тоже) являются прямым продолжением ядер ARM7/9/11. В частности, у них две системы команд (ARM и Thumb/Thumb-2) и одинаковая системная архитектура (организация прерываний и т.п. вещи). А вот у ядер Cortex-M система команд только одна -- Thumb/Thumb-2, а системная архитектура кардинально отличается от таковой что для ARMов предыдущих поколений (т.е. ядер ARM7/9/11), что для Cortex-A/R. В общем и целом ядра Cortex-A не имеют с точки зрения программиста каких-либо существенных отличий от ядер предыдущих поколений, за исключением появления новых инструкций и тому подобных вещей, и программа, написанная для процессора со старым ядром, скажем, с ARM7TDMI, без переделок заработает на любом Cortex-A (естественно, речь не идёт о коде, прямо связанном с обслуживанием специфической аппаратуры: если, к примеру, UARTы с точки зрения программиста у этих процессоров различаются, то соответствующий код придётся переделывать; однако в части "чистого" программирования, не привязанного к конкретной периферии, обеспечивается совместимость "снизу вверх", чего нет в случае ядер Cortex-M).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:13
Рейтинг@Mail.ru


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