Pull to refresh
31
0
Send message

Начинаем изучать Cortex-M на примере STM32, часть 2

Reading time21 min
Views171K
Данная статья является продолжением цикла по программированию микроконтроллеров на базе ядра Cortex-M.
Первую статью можно прочитать здесь:
Начинаем изучать Cortex-M на примере STM32
Задачей статей является подробное описание особенностей, возникающих при программировании МК. Материал не предназначен для желающих за 10 минут запустить пример мигания светодиодом. Я постараюсь подробно описать то, что часто скрывают от новичков, чтобы их не напугать.

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

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

Начинаем изучать Cortex-M на примере STM32

Reading time15 min
Views388K
Данная статья является первой в планируемом цикле статей по изучению программирования микроконтроллеров. Изучая различные материалы я отметил, что практически все они начинаются с того, что новичку предлагается скачать (или использовать идущую со средой разработки) библиотеку для работы с периферийными устройствами и использовать ее для написания своей первой программы (обычно мигание светодиодом).

Меня это сильно удивило. Если верить данным статьям, для программирования не обязательно даже читать документацию к программируемому контроллеру. Меня же учили премудростям «железного программирования» совершенно иначе.

В этой статье, путь от фразы «Да, я хочу попробовать!» до радостного подмигивания светодиода, будет значительно длиннее чем у других авторов. Я постараюсь раскрыть аспекты программирования микроконтроллеров, которые прячутся за использованием библиотечных функций и готовых примеров.
Если вы намерены серьезно изучать программирование микроконтроллеров данная статья для вас. Возможно, она может заинтересовать и тех, кто вдоволь наигрался с Arduino и хочет получить в свои руки все аппаратные возможности железа.
Если вас не пугает написанное выше - прошу под кат

Строим motion simulator из палок и синей изоленты

Reading time5 min
Views144K


Обычно первый комментарий к статье про какую-то неведомую технологию выглядит так: «Вы бы перед тем как углубляться сначала рассказали что это и зачем нужно». Итак, сия чуднАя периферия призвана при игре в автомобильные симуляторы имитировать воздействие перегрузок на игрока. В данном случае это обеспечивается наклоном кресла по двум осям, следовательно получился симулятор движения с двумя степенями свободы.
Возьмем в руки напильник и попробуем запилить?

Игровой сервер за один день на Node.js + Socket.io

Reading time3 min
Views45K
В конце рабочего дня в пятницу, обдумывая текущую задачу, в воспаленном мозгу неожиданно возникла мысль — а не попробовать ли мне написать свой игровой сервер?

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

Но по-видимому, заноза прочно засела в голове, поэтому проснувшись в субботу я принялся творить.
Читать дальше →

LPC1102 и тёплый ламповый индикатор

Reading time6 min
Views75K


Написать этот текст меня заставила статья – «Freescale уменьшила размеры самого маленького в мире микроконтроллера на архитектуре ARM». За три дня до публикации этой статьи я закончил свой маленький проект, в котором был использован контроллер NXP LPC1102, — это прямой конкурент описанного в статье Freescale KL02 и возможно нового KL03. Далее будет сравнение двух микроконтроллеров от NXP (Филипс) и Freescale (Моторола), и мой проект на LPC1102.
Читать дальше →

Проявщики RAW-файлов для Mac OS X RPP и Aperture: «Яблочный эксклюзив» в руках фотолюбителя

Reading time7 min
Views33K

В мире обработки цифровых изображений «Макинтоши» традиционно стоят особняком. Издревле так повелось, что продукция Apple во многом выверяется с учётом интересов графических дизайнеров, художников, фотографов и книгоиздателей. В былинные времена, когда Apple работали на процессорах PowerPC, особенным был и парк программного обеспечения для них.

Но скоро уже десять лет, как аппаратная уникальность яблочных продуктов потеряна, и взаимопроникновение различных программ в условиях монополии Intel-совместимых процессоров значительно ускорилось. Как результат, типичный профессиональный фотограф или «продвинутый» любитель использует сейчас и на Apple традиционную в мире Windows связку для обработки графических файлов: Adobe Lightroom (а то и плагин Adobe Camera Raw) плюс Adobe Photoshop.
Читать дальше →

«Сверхзвуковая» загрузка фотографий в Облако с помощью собственного NSInputStream

Reading time10 min
Views16K


Максимально быстрая загрузка фотографий и видео с устройства на сервер была нашим основным приоритетом при разработке мобильного приложения Облако Mail.Ru для iOS. Кроме того, с самой первой версии приложения мы предоставили пользователям возможность включить автоматическую загрузку на сервер всего содержимого системной галереи. Это очень удобно для тех, кто волнуется о возможной потере телефона, однако, как вы понимаете, увеличивает объем передаваемых данных в разы.

Итак, мы поставили перед собой задачу сделать загрузку фото и видео из мобильного приложения Облака Mail.Ru не просто хорошей, а близкой к идеальной. Результатом стала наша библиотека POSInputStreamLibrary, которая реализует потоковую загрузку в сеть фото и видео из системной галереи iOS. Благодаря ее тесной интеграции с фреймворками ALAssetLibrary и CFNetwork загрузка в приложении происходит очень быстро и не требует ни байта свободного места на устройстве. О реализации собственного наследника класса NSInputStream из iOS Developer Library я расскажу в этом посте.
Читать дальше →

Преодолеваем скрытые опасности KVO в Objective C

Reading time21 min
Views26K
The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.
— Douglas Adams


Objective C существует уже с 1983 года и является ровесником C++. Однако, в отличие от последнего он начал приобретать популярность только в 2008 году, после выхода iOS 2.0 — новой версии операционной системы для революционного iPhone, включавшей приложение AppStore, позволяющее пользователям приобретать приложения, создаваемые сторонними разработчиками.
Дальнейший успех Objective C обеспечивался не только популярность устройств на базе iOS и относительной легкостью продаж через AppStore, но и значительными усилиями компании Apple по совершенствованию как стандартных библиотек, так и самого языка.
Согласно рейтингу TIOBE к началу 2013 года Objective C обогнал по популярности C++ и занял третье место, уступая только C и Java.

На сегодняшний день Objective C включает и такие относительно старые функции как KVC и KVO, существовавшие еще за 4 года до выхода первого iPhone, и такие новые возможности как блоки (blocks, появившиеся в Mac OS 10.6 и iOS 4) и автоматический подсчет ссылок (ARC, доступный в Mac OS 10.7 и iOS 5), которые позволяют с легкостью решать задачи, вызывавшие серьезные трудности ранее.

KVO — это технология, позволяющая незамедлительно реагировать в одном объекте (наблюдателе) на изменения состояния другого объекта (наблюдаемого), без внесения знаний о типе наблюдателя в реализации наблюдаемого объекта. В Objective C, наряду с KVO, существует несколько способов решения этой задачи:

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

10 малоизвестных возможностей Objective-C

Reading time7 min
Views46K
Приветствую уважаемых хабражителей!

Objective-C — язык с богатым рантаймом, но в данной статье речь пойдёт не о содержимом хедера <objc/runtime.h>, а о некоторых возможностях самого языка, о которых многие разработчики и не догадываются. Да, на них натыкаешься, читая документацию, отмечаешь про себя «хм, интересно, надо как-нибудь копнуть», но они обычно быстро вылетают из головы. А начинающие разработчики часто вообще читают документацию наискосок.

В этой статье я собрал 10 удивительных на мой взгляд свойств языка Objective-C. Некоторые свойства самоочевидны, некоторые далеко не таковы. За использование некоторых в боевом коде надо бить по рукам, другие же способны помочь в оптимизации критических мест кода и в отладке. В конце статьи имеется ссылка на исходник, показывающий на примере все эти фичи.

Итак, начну с самого «вкусного» на мой взгляд: безымянные методы.

1. Безымянные методы


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

10% кэшбэк на платежи от Apple с Payoneer

Reading time1 min
Views6.9K
Компания Payoneer предоставляет разработчикам под iOS платежные решения, позволяющие получить выплаты, независимо от того, в каком уголке земного шара они находятся. Именно поэтому тысячи разработчиков по всему миру получают свои платежи с Payoneer. Вы можете прочитать о некоторых из них в нашем блоге.
Мы решили не останавливаться на достигнутом, и рады объявить, что с 1 августа 2013 года мы будем возвращать 10% от первого перевода, который владелец счета получит от компании Apple!
Читать дальше →

Apple, допили пожалуйста Interface Builder!

Reading time4 min
Views21K
Этот пост — крик гнева в сторону Apple, и все же во мне осталась надежда. Я являюсь iOS-разработчиком уже 4 года, и то, что поначалу казалось сиюминутным несовершенством, несущественными деталями, с годами превращается в китайскую пытку водой, а ведь мы с вами пользуемся IB каждый день, ну или хотя бы раз в неделю.



Возможно, Apple и не заслуживает такой критики — правда, все остальное, ну или почти все остальное, у них на высоте. Исключая iTunes и Apple developer portal (который за последние годы, все же, стал значительно лучше) технологии позволяют сосредоточиться на том, что ты делаешь, а не на том, как это будет смотреться в IE.
Читать дальше →

Советы начинающим iOS разработчикам

Reading time3 min
Views29K
Если не знаешь, надо не бояться, а узнавать.
Айн Рэнд “Атлант расправил плечи”



Добрый день, меня зовут Игорь Томич и я лектор курсов iOS-разработки и сооснователь онлайн курсов Master Up. Это мой первый пост в наш корпоративный блог, в котором я решил поделиться советами для начинающих iOS-разработчиков. Свое первое приложение для iOS я начал писать в начале 2009 года, а в мае 2012 году провел первый курс обучения по рарзработке под эту же платформу и к этому времени у меня скопилось достаточно “часто повторяемых ошибок” и путей их решения.
Читать дальше →

Рекомендации по использованию SQLite на мобильных устройствах

Reading time4 min
Views29K
В буржунете есть интересный документ по оптимизации SQLite на платформе BlackBerry. Однако, идеи, которые в нем содержатся, вообще говоря, относятся к любой мобильной платформе. Мы решили развить этот список и создать эдакий эталонный текст в рунете с набором полезных, вводных советов для программирования SQLite под мобильными устройствами. Принимаем ваши предложения в комментариях.

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

Почему NSURLSession лучше, чем NSURLConnection

Reading time10 min
Views40K


iOS 7 официально вышла в сентябре, тогда Apple предоставила разработчикам новый способ работы с сетью — NSURLSession. Это достаточно фундаментальная вещь, потому в случае необходимости поддержки iOS 6 и ниже, распараллеливать код относительно версии системы будет крайне проблематично. Но тем не менее, время идет, и уже сейчас по разным данным от 75 до 85 процентов пользователей перешло на последнюю iOS, потому я бы советовал попробовать NSURLSession уже в следующем проекте.

По замыслу Apple, NSURLSession должна сменить NSURLConnection, и тут действительно возникает вопрос: «а зачем все это надо?» Потому сразу плюсы по сравнению с NSURLConnection:
  1. Загрузка и отправка данных в бэкграунде
  2. Возможность останавливать и продолжать загрузку
  3. Мы можем использовать блоки и делегаты одновременно, так, например, блоки используем для получения данных и обработки ошибок, а делегатный метод — для прохождения аутентификации
  4. У сессии есть специальный конфигурационный контейнер, в который можно уложить все нужные свойства для всех тасков(запросов) в сессии, а также, например, хэдеры для всех запросов в сессии
  5. Можно использовать приватное хранилище для куков, кэша и прочего
  6. Получаем более строгий и структурированный код, в отличие от набора беспорядочных NSURLConnection

Подробности и примеры

Свободный редактор GIMP — теперь нативное приложение для Mac OS X

Reading time1 min
Views9.7K


Популярный open source графический редактор GIMP (свободная и бесплатная альтернатива редактору Adobe Photoshop) наконец-то портирован на Mac OS X в виде нативного приложения!
Читать дальше →

Запись видео с экрана Mac OS X средствами open-source

Reading time6 min
Views31K
Иногда надо записать демо работы программы, но под руками нет подходящих инструментов. Более того, бесплатных утилит для этих целей вообще не найти, а платные еще и не факт, что справятся как надо. Как поправили меня в коментариях, обычная версия QuickTime Player отлично пишет видео. Дальше рекомендуется читать только любителям open-source и необычных решений.
В моем случае возникла необходимость записать работу игры на симуляторе iPhone и Android. Программист внутри меня сразу предложил написать кучу кода, как под iOS/Android, так и под сам Мак, дампить кадры через OpenGL и пр. Остановив эти позывы, я таки решил найти готовые решения, а затем и оформить тут статью, как памятку.

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

Потоки в OS X: как получить CPU usage всех потоков в чужой программе?

Reading time5 min
Views6.7K
Добрый день, уважаемые хабровчане-маководы!

В [Mac] OS X имеется замечательный встроенный инструмент — Activity Monitor, который легко покажет занимаемую процессом память и процессорное время. Что ж, это очень хорошо, но иногда хочется странного. Например, посмотреть, сколько у процесса потоков (threads) и сколько CPU кушает каждый из них. Тут уже Activity Monitor нам никак не может помочь, увы, а файловой системы procfs здесь бывалый линуксоид не найдёт. Придётся решать эту проблему своими силами.

Сегодня я поведаю вам о том, как написать маленькую консольную программку, которая будет на вход принимать PID процесса и на выходе давать информацию о CPU usage каждого потока этой программы (а так же общий usage).

Писать будем на чистом C, у нас будет всего один файл исходников, и я решил не использовать Xcode для такого мелкого проекта, пусть будет обычный Makefile.
Пишем на C

Additional XCode SDK — что это такое, и почему вам это не нужно

Reading time3 min
Views11K
Apple привносит в мир много нового. Удачные нововведения приживаются, а неудачные понемногу отмирают. Кстати неудачных решений оказывается не так уж и мало и я считаю это абсолютно нормальным. В конце концов мы уважаем Apple именно за готовность идти на риск и экспериментировать:)

Все это в полной мере относится и к средствам разработки. В прошлой заметке я писал о нестандартном алгоритме поиске заголовочных файлов в XCode. Сегодня я хочу подробнее остановиться на так называемых SDK — в XCode этим термином называют комплект библиотек и заголовочных файлов под определенную версию iOS или Mac OS. Зачем нужны SDK в понимании xCode?
Читать дальше →

Что нужно знать об ARC

Reading time5 min
Views58K
Автоматический подсчет ссылок (Automatic Reference Counting, ARC) для языка Objective-C был представлен компанией Apple еще в 2011 году для iOS 4.0 и выше, Mac OS X 10.6 и выше, с использованием xCode 4.2 и выше. И, хотя всё больше библиотек, фреймворков и проектов сегодня используют ARC, до сих пор среди программистов встречается либо неприятие этой технологии, либо eё неполное понимание. Опытные программисты, привыкшие к retain/release, иногда считают, что они лучше и эффективней справяться с подсчетом ссылок, чем это за них сделает компилятор, а новички, начищающие сразу использовать ARC, полагают, что им не надо вообще думать об управлении памятью, и всё сделается магическим образом само.
Давайте расставим точки над i

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity