LINUX.ORG.RU

Драйвера на C

 , , , ,


1

3

Всех приветсвую! Хотел бы узнать с чего стоит начать, чтобы писать дрова для каких нибудь микроконтроллеров или микроплат (возможно даже какие-нибудь модули ядра). Для меня asm это уж слишком. Можно ли использовать только C? или asm это обязательное требование? Буду рад если вы мне дадите советов или каких нибудь источников для изучения.

Привет! Драйвера для микроконтроллеров начинают писать с мигания светодиодом - читаешь мануал к плате, устанавливаешь нужный бит и вуаля - он горит. Далее нужно какой-нибудь видимый обвес платы делать - либо UART/I2C и пр. Главное в этом деле - придумать как увидеть результат. Далее маленькое подмножество USB и т.д.

Вообще, для большинства стандартных плат все есть в виде библиотек. Можно с ними покопаться и повторять.

Но тегах есть Линукс, поэтому сразу скажу - Линукс на микроконтроллерах не поднять, так как там нет такой штуки как MMU, который обеспечивает работу виртуального адресного пространства

dmaj
()
Последнее исправление: dmaj (всего исправлений: 1)
Ответ на: комментарий от dmaj

Хотелось бы просто еще пробовать писать драйвера под какие-нибудь rpi или opi. А про микроконтроллеры, я собираюсь делать HID устройство, имитирующее клавиатуру. Спасибо за совет!

qoil_ghost
() автор топика

К asm скатываются, когда становятся важны такты. И от Си особо легче не становится, главное понять, как с железякой правильно работать, с этими битками/байтиками. С теми же МК всё просто, пока подёргать ногой, поморгать светодиодом. А как только что-то сложнее, нужно весь даташит по кругу перечитывать, чтобы понять, какие биты где установить, чтобы этот узел в МК был включен. Так как они внутри сложные и для экономии энергии умеют какие-то части отключать. В инете куча кривых примеров, где не выполняют всё, что предписано в даташите перед началом работы. Такой код как-то работает, но не гарантировано.

Непонятно какие дрова вы хотите писать, если к чему-нибудь есть дока/описание, то, обычно, драйвер уже написан, хотя, может и кривой :) А дампить и расковыривать протокол, блоб — уже другой уровень.

я собираюсь делать HID устройство, имитирующее клавиатуру.

ЕМНИП, полно примеров, на Arduino Leonardo / Arduino Pro Micro, на ATmega32u4, можете просто скачать примеры и посмотреть, есть ли там asm. А если вы захотите подешевле, на VUSB, то лучше туда не лезть.

mky ★★★★★
()

тогда лучше сразу пром-автоматику и научиться в низкий уровень SCADA. Взять CodeSys, китайский ПЛК и тренироваться.

Такое же «моргание лампочками», измерение и управление всяким, как с STM и программированием драйверов. Зато это стандарты и индустрия и через погода-год можно найти хлебное место.

MKuznetsov ★★★★★
()

с приобретения чего-то для чего нужно написать драйвер ядра, очевидно, писать можно на си, существуют ассемблерные вставки в код на си. Книга Advanced Linux Programming, глава 9, вряд ли они вам понадобятся

IvanRia
()

Хотел бы узнать с чего стоит начать … микроконтроллеров

STM32 + FreeRTOS

По обоим есть куча литературы.

микроплат (возможно даже какие-нибудь модули ядра).

Это немного другое. И намного большие абстракции.

AlexVR ★★★★★
()
Ответ на: комментарий от qoil_ghost

делать HID устройство, имитирующее клавиатуру.

там будет usb-контроллер и какой-нибудь простейший микроконтроллер, конечно же на языке ассемблера надо писать, туда Linux или другая операционная система не залезет.

писать драйвера под какие-нибудь rpi или opi.

Для Raspberry/Orange есть готовые дистрибутивы со всеми нужными драйверами и готовые SDK, писать свои драйверы для них не нужно, просто пользуйтесь SDK.

anonymous
()