Добрый день.
Более простые 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) будет управлять светодиодом.