Недавно я выложил под BSD лицензией небольшой проект на 8 килострочек C кода. Официально это коллекция бенчмарков для моих клиентов — вендоров промавтоматики. Код очень специфический, и, на первый взгляд, малоприменим за пределами узкой области PLC и motion control. Но есть небольшая изюминка, на которой я не очень акцентировал внимание в статье на IDZ. В поставку бенчмарков включена baremetal среда для их исполнения. В этом посте я опишу, что это такое, и как ее можно использовать.
Читать полностью »
Рубрика «Программинг микроконтроллеров» - 17
Создание умного домофона с автоответчиком и Интернет-соединением
2013-08-04 в 0:16, admin, рубрики: avr, diy или сделай сам, автоответчик, звук, Программинг микроконтроллеров, умный дом, метки: avr, автоответчик, звук, умный дом Не так давно я чинил домофонную трубку и задумался — а не сделать ли мне небольшую модернизацию? Научить его уведомлять меня через Интернет о том, что кто-то приходил или даже удалённо открывать дверь с мобильного телефона… А затем я решил — почему бы вообще не сделать автоответчик? На телефонах сейчас автоответчик уже мало кому нужен, а вот знать, кто же ко мне приходил, было бы весьма полезно, особенно при том, что я не привык брать трубку, если никого не жду. Воплотить идею в реальность оказалось не так уж сложно.
Читать полностью »
Прерывания в конвейеризированных процессорах
2013-07-27 в 1:39, admin, рубрики: abort, exception, interrupt, RISC, Железо, исключение, как это работает, прерывание, Программинг микроконтроллеров, процессор, Процессоры, метки: abort, exception, interrupt, risc, исключение, Как это работает, прерывание, процессорНаверняка вы знаете, что такое прерывания. Возможно, даже интересовались устройством процессора. Почти наверняка вы нигде не видели внятный рассказ про то, как именно процессор обнаруживает прерывание, переходит к обработчику и, самое главное, возвращается из него именно туда, куда положено.
Я писал эту статью год. Изначально она была рассчитана на хардварщиков. Понимание того, что я ее никогда не закончу, а также жажда славы и желание, чтобы ее прочло больше десяти человек, заставило меня адаптировать ее для относительно широкой аудитории, повыкидывав схемы, куски кода на Верилоге и километры временных диаграмм.
Если когда-нибудь вы задумывались над тем, что значат слова «the processor supports precise aborts» в даташите, прошу под кат.
Читать полностью »
Секреты кэш-памяти, или как потратить 1000 тактов на 10 команд
2013-07-24 в 10:55, admin, рубрики: burst, RISC, ассемблер, как это работает, кэш-память, Программинг микроконтроллеров, процессор, Процессоры, метки: burst, risc, ассемблер, Как это работает, кэш-память, процессорПро кэш процессоров написано много, в том числе и на Хабре, но все больше общими словами. Предлагаю вашему вниманию конкретный пример того, как работает кэш в реальной жизни.
В качестве примера я возьму простенькую систему на кристалле, основанную на 32-битном гарвардском RISC-процессоре с одноуровневой кэш-памятью и без MMU (что-то типа ARM Cortex-R). Процессор подключен к контроллеру внешней памяти через 32-битную шину AMBA AHB, работающую на частоте процессора.
STM32F4Discovery – подключаем камеру по интерфейсу DCMI
2013-07-17 в 22:21, admin, рубрики: STM32F4Discovery, Программинг микроконтроллеров, метки: STM32F4DiscoverySTM32F4Discovery – подключаем камеру по интерфейсу DCMI
Когда-то, подключая камеру от мобильного телефона к микроконтроллеру STM32F407VGT6 (который имеет место быть на плате STM32F4Discovery), я даже не думал о том, что данный контроллер имеет специальный аппаратный интерфейс для данного дела. Может быть, невнимательно читал даташит, но я всегда считал, что интерфейс DCMI имеется только у чипов в корпусах UFBGA176 и LQFP от 144 ног. Однако, не так давно, открыл для себя озвученную деталь: 100-ногий STM32F407 также имеет DCMI на борту.
Являясь большим любителем изучения и совместного запуска различного мобильного железа (в частности, LCD и камер) с МК, мимо такого открытия я просто так пройти не смог, и решил восполнить данный пробел в изучении периферии STM32. Собственно, данный материал и посвящен описанию осуществления возникшей затеи. Читать полностью »
Обсуждение Cubietruck (от создателей Cubieboard)
2013-07-14 в 11:31, admin, рубрики: cubieboard, cubietruck, Гаджеты. Устройства для гиков, Железо, миникомпьютер, Программинг микроконтроллеров
Первый open-source-hardware продукт команда Cubieteam разработала еще в августе 2012 года. В течение 2012, и в начале 2013 года команда не представила ни одного продукта. Но один из разработчиков команды Cubieteam, сказал что проект уже вышел на новый технологический уровень сопоставимый с промышленными решениями. Это уже не тот небольшой проект предназначенный сугубо для любителей техники. Мы сделали массовый продукт для рынка, который распространяют крупные поставщики.
Читать полностью »
Новая версия Cubieboard2 Allwinner A20 (Cortex-A7 Dual-Core)
2013-07-14 в 3:56, admin, рубрики: cubieboard, Гаджеты. Устройства для гиков, Железо, миникомпьютер, Программинг микроконтроллеров, метки: Cubieboard, миникомпьютер После успеха проекта разработки отладочной платы Cubieboard, команда Cubieteam продолжила разработку. И в июне, представила новую версию своего продукта Cubieboard2. Отладочная плата Cubieboard2, является модифицированной платой Cubieboard первой версии. Отличие заключается в установке новой версии SoC AllWinner A20 ARM Cortex-A7 Dual-Core. Благодаря соответствию контактной площадки AllWinner A20 с предыдущим чипом AllWinner A10, не потребовалось переделывать схематику платы Cubieboard.
Читать полностью »
Решение проблем связанных с правилами наименования в Quartus II при использовании Schematic
2013-06-21 в 8:11, admin, рубрики: Altera, Quartus II, Железо, Программинг микроконтроллеров, Электроника для начинающих, метки: Altera, Quartus IIЗдравствуйте, Хабросообщество.
Хотел бы поделиться с Вами решением одной проблемы, с которой столкнулся и которую решал довольно долго. Причем помочь решить эту проблему не смогли куча различных радиоэлектронщиков (к которым я обращался за помощью и консультацией), а также 2 отечественных и 1 иностранный форумы по радиоэлектронике.
Я хочу сделать так, чтобы тот, кто это прочитает, никогда не «встал на грабли», на которые я встал и с которыми долго мучался.
Проблема была в том, что я не мог использовать более 1 пина на одном IDC разъеме. Т.е. если мне надо было вывести с устройства 5 бит на 5 пинов, то мне приходилось использовать 5 сорока-пиновых IDC разъемов, используя на каждом лишь 1 пин из 40 имеющихся.
Если на разъеме использовалось более 1 пина (2 и более) — то при проверке осциллографом разъем молчал.
Я очень долго делал все, что мне говорили на форумах — но проблема не решалась. Как выяснилось теперь — проблема заключалась в правилах наименования в Quartus II при использовании Schematic.
Всем тем, кому это будет полезно или интересно — прошу под кат.
Читать полностью »