Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Embedded Linux
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Motion
Добрый день.

Более простые embedded системы строятся на базе uC + RTOS (или без нее), более сложные на базе SoC + Linux.

Поигравшись с более простыми, решил перейти к более сложным.

Сначала полностью перешел на своем ПК на Linux вместо Windows. Перепробовал несколько дистрибутивов.

Потом полностью прошел вот этот курс по основам работы с Linux. Разобрался.

Дальше углубился в книги по Linux Kernel (Linux Kernel Development(Роберт Лав) и Linux Device Drivers). Немного понял как устроено само ядро и немного как писать модули (драйверы) используя примитивы ядра.

Устал копаться в теории, захотелось что-то сделать на практике. Взял Raspberry Pi2, запустил на ней Raspberian и решил написать драйвер для управления светодиодом подключенным к GPIO. Сделал обзор книг по Raspberry Pi. Но по их содержанию понял что работа с GPIO реализована с помощью языка Python.

Ну и вопросы:

1) почему Python, а не С? В теоретических книгах по ядру используют Си для написания драйверов, а в практических книгах по RP везде Python. Если все-таки С используется - подскажите книги с примерами.
2) расскажите более подробно об embedded системах на базе Linux - примеры таких устройств в быту, как происходит разработка ПО для них (берут голое ядро, пишут к нему нужные драйвера, бросают их определенный папки и компилируют?). Расскажите о подобных проектах.
3) Какие книги порекомендуете читать дальше?
4) Какой результат мне нужно получить чтобы разобраться с такими системами? Например написать приложение для Linux (userspace) которое через написанный мною драйвер(kernel space) будет управлять светодиодом.
jorikdima
Прохожу этот же путь sm.gif Чуть с другой бордой, но это не важно.
1. Просто потому что большинство пользователей РПИ пришли из того мира, а не из РТОС. Им привычнее питон.
2. Не отвечу точно, но вы познакомились с buildroot например? Это система постоения рутфс, куда можно подключить и свои приложения/настройки что угодно.
3. Книги напишу вечером, под рукой нет списка.
4. Светодиод это слишком просто. Но вопрос генерации задачи и для меня стоит остро. Что сделать такого, чтоб и не велик изобрести, и под силу было, и охватить многое...
Tarbal
Буквально в соседней теме обсуждали работу с GPIO. Поищите в интернете про /sys/class/gpio/export.

Это способ, предоставленный ядром Линукса. Там драйвер уже написан. Как я понимаю это не совсем то, что вам нужно.
Полагаю тот код что вы нашли на Питоне использует этот интерфейс.

Другой способ, который как я понимая вам и нужен:
На Распберри Пи есть документ периферийных устройств. Там вы найдете какие ругистры конфигурируют пины и какие регистры выводят на ножки свои значения.
Вот в своем драйвере это и воплотите точно так же как вы бы делали это без Линукса. Есть два способа (навскидку. может и больше) сделать интерфейс драйвера с пространством пользователя.
1. read/write driver ioctl для управления направлением
2. Писать цоманды через procfs.

Будут вопросы -- спрашивайте.
psL
скрипты питона не нужно компилировать, соответственно не нужен cross toolchain
Jury093
Цитата(Motion @ Aug 8 2016, 23:46) *
Устал копаться в теории, захотелось что-то сделать на практике. Взял Raspberry Pi2, запустил на ней Raspberian и решил написать драйвер для управления светодиодом подключенным к GPIO. Сделал обзор книг по Raspberry Pi. Но по их содержанию понял что работа с GPIO реализована с помощью языка Python.

всё зависит от ваших навыков и финансовых возможностей..
обычно, все что требуется, уже присутствует на рынке с тем или иным функционалом и остается либо найти подходящий и купить, или изобретать свое..
имхо, у малины не самый большой набор функционала и сеть через юсб не добавляет надежности
как ближайший вариант - посмотрите проект Kodi (exXBMC) https://kodi.tv/
https://kodi.tv/the-official-kodi-edition-raspberry-pi-case/
http://kodi.wiki/view/HOW-TO:Install_Kodi_on_Raspberry_Pi

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

Цитата
4) Какой результат мне нужно получить чтобы разобраться с такими системами? Например написать приложение для Linux (userspace) которое через написанный мною драйвер(kernel space) будет управлять светодиодом.

если светодиод объявлен в userspace как устройство, то работать как с обычным файлом:
открыли led/brightness и пишите туда нужное значение
Motion
Цитата
Будут вопросы -- спрашивайте.


Вы достаточно конкретно ответили с чем разбираться для работы с GPIO.

А можно так же по моим вопросам (1-4).



Есть такой документ от Linux Foundation - 10 ways to get started in embedded linux development. Там есть список рекомендуемых книг. Посмотрю их. Может как-то больше проясниться.

Еще нашел хорошую книгу по Raspberry Pi. Там есть примеры как на С/C++ так и на Python. Единственная такая книга, совсем свежая (June 2016).
Lagman
Цитата(Motion @ Aug 10 2016, 00:22) *
Еще нашел хорошую книгу по Raspberry Pi. Там есть примеры как на С/C++ так и на Python. Единственная такая книга, совсем свежая (June 2016).

На примерах этой книги, https://github.com/derekmolloy/exploringrpi...ee/master/chp05 , можно посмотреть как разными скриптами и языками программирования можно помигать светодиодами. Очень интересно сравнить как это можно сделать на функциональных языках и ООП, например на С и на С++ с ООП.
x893
Можно читать MagPi там и коды и схемы. Правда 99% фигня типа лампочек, но для изучения самое то, что надо.
Motion
Вот сегодня общался по телефону с рекрутером на вакансию Embedded Developer.

Один из первых вопросов - есть ли опыт разработки под Linux. Ответ отрицательный. Это было одно из ключевых требований.

Главные вопросы остаются открытыми - подскажите конкретные книги по изучению данного вопроса и примеры задач после решения которых я "буду в теме".
jorikdima
Уже наверно не в тему, но пусть будут для кого-то книги, что я использую:
Embedded Linux Primer - A Practical, Real-World Approach (2006)
Prentice.Hall.Embedded.Linux.Primer.2nd.Edition.Oct.2010
OReilly.Building.Embedded.Linux.Systems.Aug.2008
ну и очевидно J.Corbet - Linux Device Drivers 3rd Edition - 2005
MikleV
Embedded Linux System Design and Development - хоть и относительно старая но до сих пор актуальна
Отличный ресурс с кучей полезнейших материалов в pdf http://free-electrons.com/docs/
Ananas
вот еще книга для разработки модулей под линукс, да еще и на русском, да еще и с примерами!
http://rus-linux.net/MyLDP/BOOKS/Linux-too...mmers-3.159.pdf

У меня вопрос - имел ли кто опыт работы с buildroot?
У меня есть пара вопросов, которые до сих пор в моей голове не укладываются. Есть спецы по buildroot тут?
jorikdima
Цитата(Ananas @ Oct 28 2016, 06:25) *
У меня вопрос - имел ли кто опыт работы с buildroot?
У меня есть пара вопросов, которые до сих пор в моей голове не укладываются. Есть спецы по buildroot тут?

Не спец, а скорее начинающий sm.gif Но спрашивайте.
Valentine Loginov
Нашёл вот такое дело:
Курс на stepik
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.