ARM. Учебный Курс. Вводная

Intro
Потихонечку, дабы не выпадать из модных течений, решил я запилить обучалку по ARM контроллерам.

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

Disclaimer
Информация будет не столько для тех кто начал с нуля, а тех кто уже наигрался с 8ми битными контроллерами и решил полезть выше.
И я буду отталкиваться от этого уровня, не сильно упираясь в разжевывание подробностей и мелочей (т.к. сам их еще не знаю ,) ), а действуя по индийской методике, где часто доказательство теоремы выглядит в виде одного слова смотри.

Также, по дефолту, буду считать, что читатель, раз освоился на PIC/AVR/C51, умеет читать даташиты и ковырять инфу сам.
Это не значит, что я не буду отвечать на вопросы в комментариях. Буду, но знайте, что для этого мне придется вместо вас лезть в даташит и разбираться. Я могу это делать знаете как быстро в таком режиме идет самообразование! Метод Я гуру и вам щас все вжую пинает круче любой сессии, т.к. в отличии от сессии не кончается никогдааа 🙂 А могу не делать. В зависимости от моего свободного времени и желания общаться 🙂 Да, у меня есть преимущество освоив несколько разных архитектур я уже задницей чую где и что надо искать в даташите, но свою голову никто не отменял 🙂

Предыстория
Собралась как то раз банда талантливых инженеров и решили они сварганить свой собственный проц. Так родился ARM Advanced Risc Machine. Причем своей фабрики у них нет и они просто лицензируют свою архитектуру всем кому ни лень. На сегодняшний день существует прорва разных видов ядра ARM, отличаются они не особо сильно, скорей это специализации, под разные задачи. Также выкристаллизовалась отдельная подветвь ядра семейство Cortex которые для нас представляют наибольший интерес.

Ху из ху
Так что контроллера ARM не существует. Есть контроллер с ядром ARM, а это две большие разницы.
Общее ядро гарантирует то, что код с контроллера фирмы STM можно будет перекомпилить, например, на контроллер фирмы NXP и он запустится, но вот как он будет работать вопрос совершенно другой. Т.к. все адреса периферии, не относящиеся к ядру, будут совсем другими. Будет совершенно другое значение битов и функционал.
Но в целом, все будет очень похожим и это дает возможным сделать нормальный слой HAL (абстракция, позволяющая отделить функционал от железа, в простейшем случае набор макросов и дефайнов) и при грамотно написанной программе портирование не создаст проблем. А также не особо заморачиваясь скакать между семействами, не отказывая себе ни в чем 🙂 Даже если пишешь на ассемблере, впрочем на асме под арм пишут исключительно маньяки.

Оно нам надо?
Изучать или не изучать интересный вопрос. Тут от ситуации и целей зависит.

Цена
ARM сильно подешевел и активно начинает вторгаться в нишу которую плотно занимают 8ми разрядные контроллеры. С другой стороны цена штука скользкая и это не более чем маркетинг. Сейчас захват рынка, а потом могут и поднять. Восьмиразрядные же могут и в цене упасть. Опять же цена играет роль только когда штампуешь изделия хотя бы сотнями. А когда для дома, для семьи, штучно, тут больше доступность решает. А то что, например, LPC дешевле чем AVR рублей на 50 еще не значит, что его проще и быстрей достать. Особенно в глубинке. Плюс изучать заново и с нуля, тоже та еще проблема.

Корпус
Пожалуй для домашнего радиолюбительства это один из главных критериев. Толку от контроллера который не можешь запаять? А все ARM идут преимущественно в LQFP корпусах, а то и в QFN или BGA, под который дома даже плату не сделать.

Для примера, чтобы понять о чем идет речь, вот вам для сравнения, слева направо:

LQFP48 (LPC1343), SSOP28 (FT232RL), TQFP44 (Mega16), SOIC20 (Tiny2313) внизу монстровидный DIP40 (Mega16)

Внушает, да? ,) Начиная с TQFP шаг уменьшается в среднем в полтора раза. А мне после LPC1343 корпус FT232RL показался слоноподобным.

Конечно джедаям, в совершенстве овладевшим искусством лазерного утюга, а также профессиональным фоторезистным каталам не составит проблем сделать такую плату. А твердая рука и хороший флюс дадут запаять эту микросхему даже раскаленным гвоздем, не говоря уже о нормальном паяльнике. У меня ЛУТом, на бумаге Lomond и Samsung ML1520, с уже почти пустым и полосящим картриджем, получилось примерно так.

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

Мощность
Тактовые частоты у ARM, даже у слабых моделей, достигают 70МГц, при том что на операцию им требуется тот же такт. Больше флеша, больше оперативки.

32х разрядная архитектура позволяет быстрей считать большие числа, а также дает плоскую 4Гб адресацию, что дает четыре миллиарда адресов под что угодно. Так что проблем куда сунуть периферийную конфигурацию не бывает в принципе места хватит всем. До такой степени, что появляется такой изврат как BitBanding, когда в сегменте памяти размером в мегабайт есть биты связаные с dwordами в другом сегменте. И для того ,чтобы выставить конкретный бит достаточно записать любой ненулевой dword в соответствующий адрес. 32 мегабайта адресного пространства потратили на руление битами, с другой стороны у нас его 4гигабайта, чего мелочиться 🙂

На борту бывает очень много периферии. По крайней мере тремя UART или SPI в компании с аппаратным USB (причем еще и как хост) и Ethernet (правда все без PHY так что одним корпусом не обойтись, а PHY микруха по цене не сильно отличается от W5100 у которой на борту еще и TCP IP стек, так что преимущество спорное), кучей таймеров и каналов ШИМ.

С другой стороны, если посмотреть на новые восьмиразрядники, такие как ATxMega, то фарша там тоже хоть ложкой загребай, причем по ряду показателей периферия превосходит ту, что стоит в конкурирующей ARM линейке. Плюс привычное окружение и паяемые корпуса.

Плюс надо учитывать, что в любительских разработках эта мощность нафиг не нужна. Потому как там где ее надо много (потоковая обработка, КПК всякие, промышленные компы), гораздо дешевле и качественней оказывается купить готовое решение. Спаять самому КПК конечно можно, но по результату, качеству исполнения и затратам он даже рядом не будет валяться с копечным ширпотребным поделием из Китая.
Так что если электроника это не более чем прикольное хобби, то дергаться смысла нет восьмиразрядников вам хватит еще всерьез и надолго. Плюс они гораздо проще в изучении, по ним навалом проектов, инструкций, примеров кода.

Самообучение и профессиональный рост
А вот если электроника и embedded программирование для вас больше чем посидеть вечерком с паяльником, профессиональная деятельность, не важно сейчас или в перспективе, то изучать, хотя бы одним глазком, ARM контроллеры необходимо. Т.к. это ядро один из столпов всей мобильной электроники, а сейчас и активно лезет в нишу малых контроллеров. Ну и просто интересно.

О курсе
Я пока не определился с целевым контроллером на котором все будет опробываться. Возможно это будет LPC1343 или LPC1751, а может и STM32 какой нибудь. Пока же я распологаю LPC1343/LPC1751 и балуюсь на них, но меня огорчает тот факт, что несмотря на общее ядро (ARM Cortex-M3) и одного производителя, периферия их сильно отличается друг от друга. Вот жду когда приедет посылка с STM32 Попробую запустить их в диком виде и побаловаться.

5 1 голос

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии