Сборка ядра для Raspberry Pi

В этой статье посмотрим как кроcскомпилировать ядро для raspberry pi (у меня b+).
Я буду производить махинации в Fedora, но суть идентична для всех дистрибутивов.
Для сборки нам понадобиться компилятор. Его можно собрать самому, скачать из репозиториев Вашей ОС или же с git raspberry.

Поставим из малинового гита.

Arduino IDE для ESP8266

Недавно нужно было сделать девайс, который выдает время по UART раз в секунду. Выбор пал на ESP8266.
Изначально пощупал micropython, но как оказалось его ещё пилить и пилить.
Позже узнал, что можно использовать для программирования ESP8266 Arduino IDE. Доступна куча библиотек и печеньки.

Arduino IDE для ESP8266

Установка:

Nios II Таймеры

В прошлый раз писал о том, как создать проект с процессором Nios - Nios II Быстрый старт. А сейчас поговорим о таймерах в нем. Ведь таймер - едва ли не самая важная периферия в контроллере. Без него ни время не посчитаешь, ни операционную систему не установишь.
У Altera есть готовый модуль для шины авалон. Его мы и добавим в наш проект.
При добавлении видим такое окно.

Устанавливаем nodejs 4

В репозиториях Fedora какойто доисторический nodejs.
За сим поставим свежий. Компилировать лень, сливаем бинарники с офа.

wget https://nodejs.org/dist/v4.2.1/node-v4.2.1-linux-x64.tar.gz

Распаковываем

tar xvf node-v4.2.1-linux-x64.tar.gz

Копируем файлы в opt

mv node-v4.2.1-linux-x64 /opt/

Добавляем путь. Если у вас bash то такое пишем в .bashrc

export PATH=$PATH:/opt/node-v4.2.1-linux-x64/bin

У меня fish. Для него делаем так:

Nios II Быстрый старт

Все популярнее становится тенденция создания устройства на одном кристалле. Да, в любой момент можно создать плату со жменей контроллеров и наладить между ними обмен (будь то spi, uart или еще что), но зачем это делать, если можно создать систему на одном кристале?! Всего одна микросхема! Как следствие простая схема и плата. Компактный размер.
ПЛИС безусловно в этом плане лидер. Но без процессора порой не обойтись. Ведь бизнес логику писать на vhdl/verilog как-то не вставляет.

Как запустить скрипт при старте ОС

В процессе использования любой операционки встает вопрос о запуске ПО по старту системы. Причем если в Windows с этим все более менее ясно, то в Linux - нет. Ибо чаще нужно не просто запустить скайп, а стартануть задачу из под root.
Раньше (когда systemd еще только угрожало) я, как и большинство народу, предпочитал просто запихать команду в /etc/rc.local.
Но вот сейчас испытал cron и понял, что несколько лет меня обманывали ;)

Добавляем свое приложение в busybox

Busybox - программа которая существенно облегчает жизнь встраиваемым системам. Это набор стандартных утилит, который написан с упором на компактность.
Проект приобрел довольно широкую распространенность на встраиваемых ПК именно из-за своего размера. Сделано это хитро. Бинарник один. А с помошью argv[] программа решает какой утилитой ей сейчас прикинуться. В каталоге bin же создаются ссылки на один единственный бинарный файл.

Давайте рассмотрим как добавить свою утилиту в этот набор.
Сперва скачаем репозиторий и попробуем собрать как есть.

Pyside QML Hello World

Программисту Python порой очень хочется запрограммировать еще и какой нибуть GUI.
Есть всем известный pyqt. Но ребята жадничают с лицензией и вы не сможете использовать его в комерческих целях.
А разучивать очередной продукт без интереса рабочего тоже как то не весело.
Так вот. Есть еще проект pyside, начатый уже после продажи Qt из Nokia в Digia.
Скажу честно, знаток PyQt я никакой. Но эта библиотека мне както ближе к телу.
Посмотрим как можно сделать QML привет мир.
QML файл в котором создаем интерфейс.

Перечисления в Python

Перечисления (Enum) - один из самых важных элементов в современном программировании. И да, без них можно обойтись и не чувствовать себя лишенным. Но не делайте так.
Думаю многие из Вас уже сталкивались с кодом в котором невозможно разобраться. Enum это именно то, что делает код понятнее и удобочитаемее.
В Python работать с перечислениями одно удовольствие.
Перед использованием нужно импортировать класс.

from enum import Enum

А теперь нужно просто унаследоваться от него при создании своего перечисления.
Например вот так: