Hard-Soft News

Новости железа и софта

Posts Tagged ‘ARM’

Разработка программ для микроконтроллеров ARM для работы на голом железе

Понедельник, Январь 16th, 2012

Поскольку в некоторых (правда не очень широких) кругах я считаюсь специалистом по процессором ARM и всем, что с ними связано, еще недавно мне часто задавали вопрос как установить Linux на ту или иную железку ARM. Сейчас после появления Android такие вопросы задают гораздо реже и это еще одна польза от Android (по крайней мере для меня). Главная проблема с установкой Linux ARM заключается в том, что не существует стандартный платформы ARM, подобной стандартный платформе PC. Современные системы ARM, это системы выполненные на одном кристалле, на котором помимо процессора расположены различные контроллеры. Проблема в том, что в разных моделях и архитектура контроллеры и адреса регистров, и даже значение, которые записываются в эти адреса, могут развиться даже в рамках одного модельного ряда. Это значит, что для установки Линукса на любое железо ARM необходим свой уникальный набор драйверов. Этот факт очень важно понять не только тем кто пытается поставить Линукс на ARM, но и тем, кто просто пишет программы для ARM-систем, например для микроконтроллеров. Далее мы рассмотрим три типа современных систем на основе ARM и пример программы, предназначенной для работы на голом железе микроконтроллера ARM.

Читать дальше…

Безопасный запуск Linux на устройстве ARM (часть II)

Среда, Ноябрь 16th, 2011

Продолжаем обживаться в системе ARM Linux, установленной на флешку.

Первая часть

Читать дальше…

Безопасный запуск Linux на устройстве ARM

Понедельник, Ноябрь 7th, 2011

Речь пойдет о запуске полноценного дистрибутива Linux на устройствах, на которых уже установлен урезанный Linux. Проще говоря, на устройствах с Android и Angstrom.

Этот способ установки является на сегодняшний день самым безболезненным для девайса, что хорошо подходит тем, кто хочет по-прежнему пользоваться устройством по назначению, а не только как площадкой для тестирования Linux. При использовании этого способа файлы Linux вообще не будут устанавливаться на устройство с Андроидом. Вместо этого мы установим их на USB-флешку. Читать дальше…

Системные вызовы ARM Linux

Понедельник, Октябрь 31st, 2011

Номера и порядок передачи аргументов системных вызовов ARM Linux соответствуют таковым на платформе Intel, и это очень хорошо и правильно. Существует два режима системных вызовов – старый и новый (новый является частью стандарта EABI). Нынешние ядра ARM Linux поддерживают оба режима, но использовать режим EABI, разумеется, предпочтительнее. У двух режимов много общего: аргументы вызова передаются в регистрах r0-r6, а сам вызов выполняется с помощью инструкции SWI.
В старом режиме номер вызова является частью операнда инструкции SWI. Операнд инструкции выглядит так:

MOV r0, дескриптор_файла;
MOV r1, адрес_буфера;
MOV r2, длина_буфера;
SWI 0x900004;

В режиме EABI номер вызова передается в регистре r7, а операндом SWI всегда является значение 0×0. Еще одно отличие связано с передачей 64-битных аргументов. В обоих режимах их передают в паре 32-битных регистров, но в старом режиме это просто два следующих не занятых регистра, а в режиме EABI – следующая пара регистров, в которой первый регистр имеет четный номер. Тот же вызов _write() в режиме EABI будет выглядеть так:

MOV r0, дескриптор_файла;
MOV r1, адрес_буфера;
MOV r2, длина_буфера;
MOV r7, #4;
SWI 0x0;

Помимо прочего, между двумя режимами существует одно, не сразу заметное, различие: режим EABI может использовать как в режиме ARM MODE (32-битные инструкции), так и в более компактном THUMB MODE. Старый режим не может использоваться в THUMB MODE просто потому, что число 0×900000 не поместится в 16-битном операнде инструкции SWI режима THUMB.
Ну и напоследок, описания нескольких системных вызовов ARM Linux. Зная общий принцип, остальные описания легко «конвертировать» из описаний аналогичных вызовов для Intel.

Номер Обозначение Используемые регистры
1 sys_exit() r0
3 sys_read() r0, r1, r2
4 sys_write() r0, r1, r2
5 sys_open() r0, r1, r2
6 sys_close() r0

Программирование для ARM, часть II

Вторник, Сентябрь 27th, 2011

Одно из самых существенных отличий разработки для ARM от разработки для обычного ПК заключается в том, что устройства, работающие на ARM, как правило, не могут собирать программы сами для себя. В принципе они, конечно, могут это делать, и если у вас есть компьютер на процессоре ARM с полноценной ОС Linux и средствами разработки, вам беспокоиться не о чем, но большинству устройств просто не хватает ресурсов для самостоятельной сборки чего-либо. Для таких устройств программы собираются на «обычных» интеловских ПК, а затем загружаются в компьютер на процессоре ARM. Одно из таких средств основано на системе Scratchbox и инструментарии сборки CodeSourcery. С помощью этого набора можно создавать и отлаживать программы, предназначенные для различных вариантов ОС Linux, выполняющихся на процессоре ARM.

Scratchbox представляет собой «песочницу», в которой можно выполнять различные действия (в том числе, в режиме эмуляции root), не затрагивая работу остальной системы. Одна из функций Scratchbox – кросс-платформенная сборка, в процессе которой программа связывается не с библиотеками хозяйской системы, а с библиотеками,  установленными в песочнице Scratchbox. Эти библиотеки могут быть предназначены для другой архитектуры процессора, например, для ARM.

Читать дальше…

Программирование для ARM, начало

Суббота, Август 20th, 2011

Судьба – ироничная штука. Семейство Intel x86 ведет свой род от процессоров, которые предназначались для микроконтроллеров. В то же время процессоры семейства ARM с самого начала были задуманы как центральные процессоры для персональных настольных компьютеров (и они таки работают «по специальности» в серии ПК Acorn Archimedes и  немногочисленных клонах это серии), но, увы, к моменту выхода первого ARM (1985 год) лидер в мире ПК уже определился. И хотя ARM1 – настоящий 32-битный процессор с тактовой частотой 8 мегагерц, мог померяться силами с тогдашним фаворитом – Intel 80286 (386-й процессор появился в том же 1985 году, но на рынок ПК вышел значительно позже), в дальнейшем процессорам ARM пришлось искать применение в более скромных устройствах. Но все меняется и история микропроцессорного мира сделала новый поворот. Процессоры ARM вернулись в мир полноценных компьютеров с триумфом (на сей раз это стали экономичные мобильные компьютеры) и потеснили Intel. О чем тут говорить, если Microsoft планирует выпустить Windows Для ARM? А вот о чем: Читать дальше…

Анатомия Toshiba AC 100 (часть 1)

Пятница, Август 12th, 2011

Многие пользователи уже поделились своим мнением об этом устройстве. Добавлю свои тридцать серебренников.  Коротко говоря, Toshiba AC 100 это iPad для бедных. Для бедных, прежде всего, не из-за цены, а потому, что устройство с Android  в качестве ОС должно быть оборудовано тачскрином, а не клавиатурой. Наличие откидной клавиатуры делает использование устройста по назначению (а назначение у него – мобильная звонилка, смотрелка, Web-бродилка, читалка) крайне неудобным. Такое устройство можно положить на колени (если вы сами можете при этом принять удобную позу) или на стол. Использование устройства формата «книжка» в других ситуациях я лично слабо себе представляю. На этом можно было бы поставить точку, если бы не одно но. То, что дешевые нетбуки нельзя использовать по прямому назначению, не означает, что их вовсе нельзя использовать. Попробуем извлечь из не очень удобного устройства максимум пользы путем изменения его функций.

 

Читать дальше…

Новый Linux для мобильных устройств на ARM

Понедельник, Август 8th, 2011

Разработчики Bodhi Linux намереваются перенести свое творение на платформу ARM, и позиционируют его как замену Android и MeeGo. Идея хорошая, если учесть, что у MeeGo перспективы туманные, а Android многие линуксоиды хотели бы заменить на «чистый» Linux. Одна беда — проекту требуются деньги. Не менее 10000 долларов и не позже 26 августа иначе они убьют заложников. Пока-что пожертвовано 28 долларов всего лишь. А жаль, проект действительно симпатичный.

Одноплатный компьютер (продолжение)

Четверг, Март 10th, 2011

Продолжаю делиться опытом работы с одноплатным компьютером. Что нам потребуется? Прежде всего, как ни странно,  мне потребовался переходник USB-COM. Не смотря на то, что COM порт давно морально умер, и на большинстве компьютеров его нет, различные электронные устроства продолжают оснащать  разъемами COM-порта. Причем, очень часто устройство может общаться с компом только через этот порт (ну, еще через специализированный разъем программатора), даже если у устройства есть инфраструктура USB. Читать дальше…

Моя новая игрушка

Пятница, Март 4th, 2011

Наконец-то я обзавелся собственным SBC (single-board computer). После долгих и тщательных раздумий выбрал lpc-2478stk вот он, во всей красе. В этом и нескольких следующих постах я буду делиться впечатлениями от исследования своего SBC, а начну с общих соображений относительно того, как надо обучаться программированию микроконтроллеров и встроенных систем, с которыми я вожусь уже год.

Читать дальше…