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

Пара вопросов недают покоя

Решил пока не поздно переходить с AVR на ARM. Переход пока даётся крайне сложно... И всё таки, никак не могу найти ответа на несколько вопросов:

 

- Все ли контроллеры имеют одну и ту же систему команд? Т.е. например и у филиппса и у атмела есть камни на ядре ARM7TDMI, значит ли это, что они используют оду и ту же мнемонику?

 

- Какая разница - синтезируемое ядро или нет? (и что это такое?)

 

- Я так понял что эти камни могут работать как из под ОСи, так и без неё. В таком случает что из себя представляет просто программа? Для каких задач нужна ОСь?

 

ЗЫ: я попытался гуглить, но ничего путного так и не нашёл. Всё время находились сайты такие как: "Арматура и Сантехника", "Компания ARM-AUTO приглашает на работу", ООО "АРМЯНСКИЙ КОНЬЯК".....

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


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

Попробую ответить в меру своих поверхностных знаний:

- Все ли контроллеры имеют одну и ту же систему команд? Т.е. например и у филиппса и у атмела есть камни на ядре ARM7TDMI, значит ли это, что они используют оду и ту же мнемонику?
Они совместимы снизу вверх, т.е. код для ARM7 идет на ARM9, от ARM9 на ARM10, ARM11 и т.д. В ARM9 добавлена команда CLZ по сравнению с ARM7, может еще какие-то. Между собой все ARM7 имеют одинаковую систему команд. Но кристаллы от разных производителей имеют совершенно разную периферию (и соответственно разные имена SFR и приемы работы с периферией) вплоть до контроллера прерываний.

- Какая разница - синтезируемое ядро или нет? (и что это такое?)
Какая-то разница есть. Слышал, что у синтезируемого ядра на такт отличается время входа в прерывание (в какую сторону - не помню). Думаю, что на реальных задачах заморачивать себе голову этим вопросом не стоит.
- Я так понял что эти камни могут работать как из под ОСи, так и без неё. В таком случает что из себя представляет просто программа? Для каких задач нужна ОСь?
Да и AVR могут работать из-под ОСи, и примеров таких много - FreeRTOS, Ethernut, scmRTOS и т.д. "просто программа" представляет из себя то же самое что и на AVR - бесконечный цикл в main(). "Программа под ОСью - вызов функции старта OS в main() и по бесконечному циклу в нескольких потоках. Что касается нужности ОСи - "настоящие программисты пишут на фортране на любом языке". Если у вас когда-нибудь, пока программа крутится в цикле чего-либо ожидая, возникало желание в это время заставить программу сделать что-то еще - ОСь бы помогла сделать это легко и естественно - как только один поток захотел чего-то подождать - управление автоматически передается другим потокам. Или если у вас возникнет желание разделить программу на две "нити", которые выполняются параллельно - например одна измеряет и крутит моторы-клапана, а вторая через последовательный порт отвечает на запросы оператора - самое время почитать что-нибудь про ОСь.

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


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

Но кристаллы от разных производителей имеют совершенно разную периферию (и соответственно разные имена SFR и приемы работы с периферией) вплоть до контроллера прерываний.

 

А вот начтёт этого я был уверен, что тут то всё одинаково :) . А как же универсальные ОСи? Неужели они перегружают одни и те же функции для работы с периферией разных производителей?

 

Они совместимы снизу вверх, т.е. код для ARM7 идет на ARM9, от ARM9 на ARM10, ARM11 и т.д.

 

Кстати, а есть в запаснике линк на хоть какой нибудь обзор этих ядер? Так что бы вкупе рассматривались и 7-мые и 9-тые и т.д...

 

Думаю, что на реальных задачах заморачивать себе голову этим вопросом не стоит.

Есть не заморачивать этим голову!

 

просто программа" представляет из себя то же самое что и на AVR - бесконечный цикл в main(). "Программа под ОСью - вызов функции старта OS в main() и по бесконечному циклу в нескольких потоках

Т.е. ОСь нужна только для того, что бы решать несколько задач более-менее одновременно? А вот если я пишу под какую то ОСь, то процесс программизма будет отличатся, ежели я пишу "просто программу"?

 

ЗЫ:. последний вопрос не в тему : кто такие эти загадочные существа - "эмбеддеры"?

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


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

ЗЫ:. последний вопрос не в тему : кто такие эти загадочные существа - "эмбеддеры"?

См. тут => http://www.caxapa.ru/lib/bill_embedded.html

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


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

т.е. мк - это уже и есть "встраиваемая система"? Т.е. за знание однго AVR меня могуть обзывать эмбеддером??? :)

 

 

Ну ладно, если серьёзней. Счего же всё таки лучше начинать изучение программизма армов - с Си или же с Асма? Просто есть книжка на русском - там про Си. Есть мануал на английском - там про Асм. Часто ли приходится применять асмовские вставки в разрабатываемые программы?

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


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

www.gaw.ru/html.cgi/txt/doc/micros/arm/arh/index.htm

 

Родители всех ядер ARM шорхаются здесь www.arm.com

 

Купи себе книгу http://www.phnet.ru/book/index.asp?id=78174 и будет тебе хороший старт

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

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


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

Часто ли приходится применять асмовские вставки в разрабатываемые программы?

Нормальными эмбеддерами асм-овые вставки не практикуются. При необходимости вся функция или модуль целиком пишется на asm и прилинковывается к Сишному исходнику.

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


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

А вот начтёт этого я был уверен, что тут то всё одинаково :) . А как же универсальные ОСи? Неужели они перегружают одни и те же функции для работы с периферией разных производителей?
Именно так. Более того, перегружаются и часть функций работы с ядром (см. перечень разных ядер, на которых работает FreeRTOS, scmRTOS), а остальное делает компилятор, ибо ОСи в большинстве своем написаны на С/С++.
Кстати, а есть в запаснике линк на хоть какой нибудь обзор этих ядер? Так что бы вкупе рассматривались и 7-мые и 9-тые и т.д...
Не знаю, разве что покопаться на www.arm.com
Т.е. ОСь нужна только для того, что бы решать несколько задач более-менее одновременно? А вот если я пишу под какую то ОСь, то процесс программизма будет отличатся, ежели я пишу "просто программу"?
Да, в общем примерно для этого. Просто почти в любой задаче есть части, которые можно исполнять более-менее одновременно. Например: ждать нажатия клавиши и обновлять динамическую индикацию. Процесс програмирования отличаться конечно же будет, можете почитать об этом на русском вот в этой доке от scmRTOS

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


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

Купи себе книгу http://www.phnet.ru/book/index.asp?id=78174 и будет тебе хороший старт

 

Заказал себе ещё в июне. Её и вот эту, пока пришла только вторая. За линк отдельное спасибо))

 

Нормальными эмбеддерами асм-овые вставки не практикуются. При необходимости вся функция или модуль целиком пишется на asm и прилинковывается к Сишному исходнику.

Я это и имел в виду, просто выразился криво))) Ясно.

 

2 Сергей Борщ

Ясно, спасибо))

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


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

Придется уточнить.

Команды не совсем совместимы между ARM7, ARM9 и т.д ни сверху вниз ни снизу вверх . На бинарном уровне так точно. Из-за различий в конвеере разных ядер по разному отрабатывается вход и выход из прерываний в ARM7 м ARM9. Еще для ARM10, ARM11 возникают проблемы выравнивания при переходе с ARM7. Популярный нынче ARM Cortex (самый реальный, кстати, кандидат на замену AVR) вообще ни с кем из упомянутых не совместим.

Исходники на C еще с некоторой натяжкой можно говорить что переносимы снизу вверх от ARM7 к ARM9, а вот на asm-е врядли.

Еще не надо забывать про 15-й сопроцессор, который у каждого ядра оригинальный.

 

А вот периферия не всегда разная, просто выбор большой. Например UART у многих производителей реализуется одинаково. Дальше, например, 2-й SSP порт у LPC (Philips) и у STR91x (ST) одинаковые.

Тоже с I2C и т.д.

 

Такая знаменитая ОС-ь как uCOS для AVR даже лучше поддерживается чем для ARM. На сайте самого Atmel-а выложены порт и сами мсходники uCOS. Так, что серьезный пользователь AVR сам может поучить как пользоваться RTOS.

 

Синтезируемые ядра это просто ядра описание которых переведенно на язык типа VHDL. Это означает, что при определенных обстоятельствах юзер накопав эти исходники сможет внедрить ядро ARM в свой чип FPGA. (Не прикольно, на мой взгляд. Они там будут очень медленными )

 

 

 

 

Они совместимы снизу вверх, т.е. код для ARM7 идет на ARM9, от ARM9 на ARM10, ARM11 и т.д. В ARM9 добавлена команда CLZ по сравнению с ARM7, может еще какие-то. Между собой все ARM7 имеют одинаковую систему команд. Но кристаллы от разных производителей имеют совершенно разную периферию (и соответственно разные имена SFR и приемы работы с периферией) вплоть до контроллера прерываний.

 

Какая-то разница есть. Слышал, что у синтезируемого ядра на такт отличается время входа в прерывание (в какую сторону - не помню). Думаю, что на реальных задачах заморачивать себе голову этим вопросом не стоит.Да и AVR могут работать из-под ОСи, и примеров таких много - FreeRTOS, Ethernut, scmRTOS и т.д. "просто программа" представляет из себя то же самое что и на AVR - бесконечный цикл в main(). "Программа под ОСью - вызов функции старта OS в main() и по бесконечному циклу в нескольких потоках. Что касается нужности ОСи - "настоящие программисты пишут на фортране на любом языке". Если у вас когда-нибудь, пока программа крутится в цикле чего-либо ожидая, возникало желание в это время заставить программу сделать что-то еще - ОСь бы помогла сделать это легко и естественно - как только один поток захотел чего-то подождать - управление автоматически передается другим потокам. Или если у вас возникнет желание разделить программу на две "нити", которые выполняются параллельно - например одна измеряет и крутит моторы-клапана, а вторая через последовательный порт отвечает на запросы оператора - самое время почитать что-нибудь про ОСь.

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


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

Популярный нынче ARM Cortex (самый реальный, кстати, кандидат на замену AVR) вообще ни с кем из упомянутых не совместим.

Скажите, Александр, а есть уже впечатления от Кортесов? Насколько в кремнии все так же хорошо, как на бумаге?

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


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

Популярный нынче ARM Cortex (самый реальный, кстати, кандидат на замену AVR) вообще ни с кем из упомянутых не совместим.

Выбор камней на Cortex-M3 совсем никой. :(

Тогда уж лучше на AVR32UC3 переходить, ИМХО.

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


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

имхо работа с армом или авр принципиально не отличается. Пишите на си и не думайте о совместимости. Начал бы я с LPC. Как-то более дружественней показались.

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


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

А вот начтёт этого я был уверен, что тут то всё одинаково :) . А как же универсальные ОСи? Неужели они перегружают одни и те же функции для работы с периферией разных производителей?

 

Для этого в осях существует такой компонент, как HAL (Hardware Abstraction Layer) и драйвера периферийных устройств. Разница между ними в том, что в HAL описаны сервисы, необходимые для функционирования самого ядра, а при помощи длайверов обычно реализуется работа с остальной периферией. Практически для каждого кристалла требуется адаптация этих компонентов операционки.

 

Все ядра ARM лицензированы всеми производители кристаллов у разработчика - компании ARM, которая производством своих кристаллов практически не занимается, позволяя делать это множеству других компаний. Наряду с ядрами ARM также предлагает для лицензирования блоки периферии - разработчики часто покупают их вместе с ядром и собирают кристалл как из конструктора. Но никто не мешает разработчику поставить на кристалл, например, свой UART, кроме того, нередко у ARM есть несколько различных модулей для одной функции, с несколько различными характеристиками, заточенные под различные области применения. Например, существет несколько вариантов модуля управления памятью, поддерживающий виртуальную память или обеспечивающий просто защиту памяти от неправильного доступа. Это объясняет, почему, с одной стороны, все кристаллы с ядром ARM очень похожи, с другой стороны, почему они очень сильно отличаются в деталях.

 

Система команд у ARM процессоров бывает несовместимой настолько, что для них требуюся различные настройки компилятора. Впрочем, как и у Пентиумов или AVR. Например, в названии ARM7TDMI буквы означают следующее:

 

ARM7 - ядро процессора ARM7

T - поддержка thumb режима.

D - поддержка аппаратной отладки через ICE от ARM

M - поддержка быстрого аппаратного умножителя

I - уже не помню что

 

То есть, теоретически, покупатель мог купить само седьмое ядро и без умножителя. В реальности же разошлось ядро в полном объеме - ARM7TDMI. Но у Интела, например, было сильно отличающееся ядро.

 

Первоначально ядро было жестким блоком, спроктированным под конкретныую технологию выпечки кристаллов. Потом ARM описал его на HDL как полностью синхронную схему (два варианта - VHDL и Verilog) и начал предлагать его лицензировать в исходниках. При этом пришлось переделать работу некоторых компонентов, чтобы получить полностью синхронное описание ядра. Это привело к некоторым минимальным несовместимостям. Синтезируемые ядра получили суффикс S: ARM7TDMI-S

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


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

Команды не совсем совместимы между ARM7, ARM9 и т.д ни сверху вниз ни снизу вверх . На бинарном уровне так точно.

Исходники на C еще с некоторой натяжкой можно говорить что переносимы снизу вверх от ARM7 к ARM9

 

Ясно. Ну думаю мне пока рано ещё говорить о том, что бы работать со всем семейством ARM. Пока хватит и седьмого.

 

А вот периферия не всегда разная, просто выбор большой. Например UART у многих производителей реализуется одинаково. Дальше, например, 2-й SSP порт у LPC (Philips) и у STR91x (ST) одинаковые.

Тоже с I2C и т.д.

А вот это уже приятный бонус. Например читаеш в книжке про периферию скажем филиппсовских мк, идёш в магазин - а там одни атмелы. Хотя в общем то, судя по всему работа с перифирией у ARM и AVR мало чем отличается (это я понял из книжки тов. Редькина). Различаются в основном имена регистров и флагов, а методы работы остались практически такими же. Если я не прав, то лучше поправьте меня сразу))

 

Такая знаменитая ОС-ь как uCOS для AVR даже лучше поддерживается чем для ARM. На сайте самого Atmel-а выложены порт и сами мсходники uCOS. Так, что серьезный пользователь AVR сам может поучить как пользоваться RTOS.

Ну значит я несерьёзный пользователь. До недавнего времени я даже не знал, что на AVR есть ОСь. Просто никогда не задавался вопросов, что бы скажем в восьмую мегу залить ОСь и выполнять в реалтайме несколько задач.

 

Синтезируемые ядра это просто ядра описание которых переведенно на язык типа VHDL. Это означает, что при определенных обстоятельствах юзер накопав эти исходники сможет внедрить ядро ARM в свой чип FPGA. (Не прикольно, на мой взгляд. Они там будут очень медленными )

Значит мне это совсем не нужно. Вот если бы можно было синтезировать ядро в домашних условиях на кухне - то я бы ещё поэксперементировал)))

 

имхо работа с армом или авр принципиально не отличается. Пишите на си и не думайте о совместимости. Начал бы я с LPC. Как-то более дружественней показались.

:biggrin: Я с LPC и начал. Потому что только по ним есть литература на русском. Кстати в октябре у додеки ожидается ещё одна книжка про ARM, на сей раз про мои горячо любимые Атмелы)))

 

Для этого в осях существует такой компонент, как HAL (Hardware Abstraction Layer) и драйвера периферийных устройств. Разница между ними в том, что в HAL описаны сервисы, необходимые для функционирования самого ядра, а при помощи длайверов обычно реализуется работа с остальной периферией. Практически для каждого кристалла требуется адаптация этих компонентов операционки.

Ясно. А можно написать одну универсальную ОСь, в которой будут все-все-все драйвера (как в XP)? Ну скажем написать много-много драйверов под почти все камни, много-много сервисов. А выбор зашиваемых компонентов происходит в отдельной программе. Ну например кликает юзверь в чекбоксы, затем нажимает "instal" и все выбранные компоненты по джитагу зашиваются в мк...

 

I - уже не помню что

"ядро имеет в своём составе встроенную логику отладки (ICE)"

 

 

 

 

А вот ещё такой вопрос. Можно ли на ARM7 построить что-то типа КПК. Т.е. всё как положено - экран, кнопки. Можно и без тачпада. И под всё это дело написать свою операционку аля "UniOS" (надеюсь это имя ещё не занято) - свой ГУЙ, многозадачность, аудио/видео, простятцкие игры, оффисные приложения и т.д. Сложно ли вообще всё это сделать?

 

 

ЗЫ:. спасибо за терпение ко мне))) Лучше я задам эти глупые вопросы один раз в одной теме, чем в течении времени освоения данных ядер буду плодить кг/ам'ные темы. Как говорится "плох тот солдат, кто не мечтает стать генералом")))

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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