|
ARM9-Cortex clock control, он сам частоту себе подымает ? |
|
|
|
Sep 19 2014, 10:40
|
Местный
  
Группа: Свой
Сообщений: 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 сгодятся
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Oct 24 2014, 12:11
|
Местный
  
Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701

|
Похоже, я опять не туда попал  Тут микроконтроллеры, а есть спец-форум про SoC, там уже наблюдаются вопли по этим "модным" ПЛИС CycloneV со встроенными 2 ядрами ARM и тучей нечётких файлов документации, но без "единого" обозримого User Guide из 300 листов на всё про всё, как у нормальных людей, или хотя бы примеров кода на каждый случай. Книжек научно-приличных по ARM-ам я пока не встретил на нашем языке, чтобы быть в теме, по этим грёбаным необъятным мануалам забодался лазить в последние полгода, где всё самое интересное, типа раскладки управляющих регистров -- в конце, но до этого прелюдии забивают голову кучей мусора...  Я писал Альтере -- включите в 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-а ?
|
|
|
|
|
Oct 28 2014, 07:09
|
Знающий
   
Группа: Свой
Сообщений: 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).
|
|
|
|
|
Oct 28 2014, 08:02
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 29 2014, 05:36
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 29 2014, 16:17
|
Знающий
   
Группа: Свой
Сообщений: 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).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|