реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Embedded Linux, Подскажите куда двигаться дальше, что почитать
Motion
сообщение Aug 8 2016, 20:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Добрый день.

Более простые 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) будет управлять светодиодом.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Aug 8 2016, 22:09
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Прохожу этот же путь sm.gif Чуть с другой бордой, но это не важно.
1. Просто потому что большинство пользователей РПИ пришли из того мира, а не из РТОС. Им привычнее питон.
2. Не отвечу точно, но вы познакомились с buildroot например? Это система постоения рутфс, куда можно подключить и свои приложения/настройки что угодно.
3. Книги напишу вечером, под рукой нет списка.
4. Светодиод это слишком просто. Но вопрос генерации задачи и для меня стоит остро. Что сделать такого, чтоб и не велик изобрести, и под силу было, и охватить многое...
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 9 2016, 00:29
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Буквально в соседней теме обсуждали работу с GPIO. Поищите в интернете про /sys/class/gpio/export.

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

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

Будут вопросы -- спрашивайте.
Go to the top of the page
 
+Quote Post
psL
сообщение Aug 9 2016, 07:28
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



скрипты питона не нужно компилировать, соответственно не нужен cross toolchain
Go to the top of the page
 
+Quote Post
Jury093
сообщение Aug 9 2016, 12:18
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(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 и пишите туда нужное значение
Go to the top of the page
 
+Quote Post
Motion
сообщение Aug 9 2016, 21:22
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Цитата
Будут вопросы -- спрашивайте.


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

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



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

Еще нашел хорошую книгу по Raspberry Pi. Там есть примеры как на С/C++ так и на Python. Единственная такая книга, совсем свежая (June 2016).
Go to the top of the page
 
+Quote Post
Lagman
сообщение Aug 10 2016, 10:11
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



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

На примерах этой книги, https://github.com/derekmolloy/exploringrpi...ee/master/chp05 , можно посмотреть как разными скриптами и языками программирования можно помигать светодиодами. Очень интересно сравнить как это можно сделать на функциональных языках и ООП, например на С и на С++ с ООП.
Go to the top of the page
 
+Quote Post
x893
сообщение Aug 10 2016, 10:24
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Можно читать MagPi там и коды и схемы. Правда 99% фигня типа лампочек, но для изучения самое то, что надо.
Go to the top of the page
 
+Quote Post
Motion
сообщение Aug 10 2016, 18:03
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Вот сегодня общался по телефону с рекрутером на вакансию Embedded Developer.

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

Главные вопросы остаются открытыми - подскажите конкретные книги по изучению данного вопроса и примеры задач после решения которых я "буду в теме".
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Aug 13 2016, 21:02
Сообщение #10


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Уже наверно не в тему, но пусть будут для кого-то книги, что я использую:
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
Go to the top of the page
 
+Quote Post
MikleV
сообщение Aug 16 2016, 11:58
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 15-05-15
Пользователь №: 86 697



Embedded Linux System Design and Development - хоть и относительно старая но до сих пор актуальна
Отличный ресурс с кучей полезнейших материалов в pdf http://free-electrons.com/docs/
Go to the top of the page
 
+Quote Post
Ananas
сообщение Oct 28 2016, 13:25
Сообщение #12





Группа: Участник
Сообщений: 6
Регистрация: 28-10-16
Пользователь №: 93 959



вот еще книга для разработки модулей под линукс, да еще и на русском, да еще и с примерами!
http://rus-linux.net/MyLDP/BOOKS/Linux-too...mmers-3.159.pdf

У меня вопрос - имел ли кто опыт работы с buildroot?
У меня есть пара вопросов, которые до сих пор в моей голове не укладываются. Есть спецы по buildroot тут?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Oct 28 2016, 16:18
Сообщение #13


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



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

Не спец, а скорее начинающий sm.gif Но спрашивайте.
Go to the top of the page
 
+Quote Post
Valentine Logino...
сообщение Oct 31 2016, 06:49
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 7-04-10
Из: Пушкино
Пользователь №: 56 462



Нашёл вот такое дело:
Курс на stepik
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01483 секунд с 7
ELECTRONIX ©2004-2016