The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "В ветку ядра Linux-next добавлен код для разработки драйверо..." +2 +/
Сообщение от Аноним (-), 21-Мрт-21, 01:38 
> Я вот думаю попробовать драйвер написать, под что угодно, любой простейший hw
> подойдет для обучения. Есть ли возможность это сделать на каком-нибудь JavaScript?

На нем это довольно сложно. Тупо потому что он для этого никогда не создавался и изначально потребные операции не очень то и предусматривает.

Например, железке может быть важен точный паттерн доступа к памяти. Вот в тот адрес надо именно 32 бита загнать, 1 операцией. А потом другие 32 бита. В нотации JS - это, например, как? И какие кто дает гарантии что все это случится именно вот так? Без потуг оптимизатора отумничать, что будет смерти подобно? Внутрях железо не может какую-то сильно крутую логику проверок и проч педалить, поэтому есть немало специфичных аспектов как с ним работать и странноватые constraints, когда это не прсто память, а довольно специфичная память, критичная к точному паттерну доступа.

В современном железе это часто куча memory-mapped регистров по конкретным физическим адресам памяти (порой разбитые на битовые поля и проч). Записью тех или иных значений или щелканием тех или иных битиков достигается что-то конкретное. Бывают и иные варианты, это самый среднепотолочный.

> Для упрощения первых шагов обучения, чтобы с чего-то начать, а не сразу на С или Rust.

Сподвигнуть JS на нечто типа упомянутого - КМК будет не "упрощением" а нефиговым difficulty bonus. Когда придется крепко чесать репу как JS вообще изогнуть под то на что он сам по себе не заточен чуть менее чем нихрена. Ну например там врядли есть понятие "volatile". В сях этот термин хинтит компилеру что вон то "может неожиданно меняться само по себе" (железо со своей стороны имеет право менять регистры железок как ему там угодно, часто там статус какой-нибудь показывается и проч).

Как максимум могу представить себе что-то такое: если это usb и для js можно зацепить libusb (в node.js?) - можно попытаться самому работать с ним "напрямую" (через функции libusb). Но это все же не "драйвер", да и без libusb на си оно таки не прокатит.

> Может JS можно в машинный код как-то превратить и подключить в виде модуля к ядру?

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

> Судя по комментариям, как я понял, можно даже на PHP, но я слышал,
> и мне уже подсказывали на opennet, что проще с JavaScript начинать.

Сильно некоторые вещи в user mode вывешены в виде когда их можно оттуда даже и из php. Скажем VFS через FUSE. Это апи когда с одной стороны кернел представит это как якобы ФС, с другой нечто в юзермоде само будет разбираться что эта якобы-ФС содержит, как и где это все брать и проч.

Еще я из user mode работал с железками сделав mmap() на нужный регион и потом аккуратно делая туда доступ. Наверное что-то такое реально даже из чего-то типа node.js, но из сей подобные выходки сильно предсказуемее. И еще, ОС при этом вообще не в курсе что с железкой что-то делают и если там ее драйвер будет одновременно что-то делать - можно жестоко пожалеть об этом действе. Так можно только если точно известно что система в железку не полезет. Два talker'а сразу в 1 железку - синоним факапа.

> Вот просто интересно стало, каков будет response от местного hardware.

С железками возиться достаточно прикольно, но, как мне кажется - таки не на яваскипте.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust, opennews, 19-Мрт-21, 20:18  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру