Baking Pi – Разработка операционной системы

Недавно мне попался занятный курс Alex Chadwick'а из Кембриджа.
Представляю Вашему вниманию вольный перевод уроков данного курса.
Обратите внимание, что оригинальный курс не адаптирован для Raspberry Pi B+, 2 и 3. В свою очередь для я приведу код для B+.
Надеюсь будет полезно!

Работа с последовательным портом на С в Linux

Я уже писал о том, как работать с последовательным портом в Windows. Теперь созрела необходимость написать программу для обмена данными по последовательному каналу.
Работать с последовательным портом в Linux несколько сложнее чем в Windows.

Как и с любым другим устройством работа из пространства пользователя Linux происходит посредством чтения и записи в файл. Его нужно открыть при помощи функции open, в качестве параметров передаем путь к файлу и флаги.

I2C драйвер в Linux

С I2C в Linux вполне можно работать из пространства пользователя. Тем не менее это не очень удобно. Весьма удобнее и правильнее сделать модуль ядра.

Для создания драйвера в ядре Linux предусмотрены вспомогательные макросы. Если Вам не нужно ничего выполнять при инициализации модуля, можно воспользоваться макросом module_i2c_driver.

Подключение RTC ds1307 к raspberry pi при помощи Device Tree

Недавно писал о том как работать с i2c устройством из пространства пользователя в linux.
В качестве пациента у мня raspberry pi b+ и часы реального времени ds1307. В предыдущей статье описан метод работы с устройством при помощи i2c-dev, но в Linux уже есть драйвер для этих часов (drivers/rtc/rtc-ds1307.c).
Нам нужно только скормить устройство драйверу и установить время.

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

I2c в Linux из пространства пользователя

Наконец дошли руки до i2c в raspberry pi. Шина i2c в Linux доступна из ядра и из пространства пользователя благодаря модулю i2c-dev.
Как работать с i2c устройствами в linux рассмотрим на примере часов реального времени DS1307.
У меня модуль Tiny I2C Clock.

Стоит модуль копейки, но мне с ним очень не фортануло. Получил бракованную плату. Под батарейкой 3 закороченные дорожки.

Монитор последовательного порта для Windows

При разработке любого устройства, которое обменивается данными очень удобно просматривать эти данные в "сыром" виде. В случае последовательного порта - в виде дампа переданных и принятых байт.
На данный момент по для подобных операций очень не много, а бесплатного и вовсе нет. Кроме того время идет и программа которой я пользовался на Windows XP больше не работает на 7.

Что делать если не удалось получить http://dl.google.com/linux/chrome/deb/dists/stable

Все пользователи Google Chrome с недавних пор не могут обновить ubuntu!

W: Не удалось получить http://dl.google.com/linux/chrome/deb/dists/stable/Release  Невозможно найти ожидаемый элемент «main/binary-i386/Packages» в файле Release (некорректная запись в sources.list или файл)

Если Вы при обновлении командой:

sudo apt-get update 

Видите сообщение:

То Вы среди них! Что же делать? В чем же дело?

Установка OpenCV 3 в Windows

Большинство мануалов в интернетах предлагают собрать opencv самостоятельно. Это процесс не быстрый да и требует некоторых умений.
Гораздо проще воспользоваться готовой сборкой библиотеки.
Обратите внимание, что так Вы не сможете использовать статическую библиотеку. В поставке для Windows таковые отсутствуют. Их можно только собрать самостоятельно.
Но какая нам разница. Мы будем пользоваться собранной DLL, которую не нужно собирать.

Как заставить не скрываться меню в Unity

Пользователи ubuntu наверное знают о том, что все меню в Unity перенесены на верхнюю панель.
Это впринципе удобно, если бы не одно но (ну вот почему всегда все портят).
Это меню скрывается и оставляет вам голую панель. Да да, свободное место, которые никто не заказывал, а показано оно будет только при наведении на него указателя. Зачем? Дай Бог чтобы хоть в Canonical об этом знали.

Начиная с версии 16.04, которая вот вот выйдет, это поведение можно будет исправить из настроек.

Функция print в Python 2.7

Как Вы наверное знаете, в Python 3 оператор print был заменен одноименной функцией.
И это очень удобно, например для вывода в консоль без символа конца строки, или со своим символом.
Оказывается можно использовать функцию print и в Python 2.7.
Для этого импортируем её:

from __future__ import print_function

Теперь для вывода чисел через запятую в одну строку: