Нужно написать linux-драйвер для SD-карточки для отечественного (очень экзотического) компьютера.
Импортозамещение не хухры-мухры!
У меня вопросы:
0) Как вообще в linux-е писать драйверы?
Книжку Linux Device Drivers прочитал. Ясности это не добавило.
1) Говорят, что нужно взять аналогичный драйвер, и сделать свой по мотивам.
Как в исходниках linux-а найти "похожий драйвер"? Может кто знает?
Поиск по буквам "SD" даёт миллион ссылок, потому что букв в строке поиска всего две.
2) Что такое spi-контроллер и какое он имеет отношение к этой задаче?
3) Какие могут быть ещё подводные камни?
Сколько вообще должно быть драйверов, чтобы флешка заработала?
Например драйвер файловой системы должен быть?
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, Kernighan, Вы писали:
K>>1) Говорят, что нужно взять аналогичный драйвер, и сделать свой по мотивам.
W>А зачем делать свой, если в Линуксе все и так работает? Синдром BolgenOS?
Проходите мимо, я по понедельникам не кормлю тролей.
Зачем Вы wildwind нужны, если уже есть Билли-Гейц и он всё сделал?
Здравствуйте, Kernighan, Вы писали:
K>У меня вопросы: K>0) Как вообще в linux-е писать драйверы? K> Книжку Linux Device Drivers прочитал. Ясности это не добавило.
Формируйте конкретные вопросы.
K>1) Говорят, что нужно взять аналогичный драйвер, и сделать свой по мотивам. K> Как в исходниках linux-а найти "похожий драйвер"? Может кто знает? K> Поиск по буквам "SD" даёт миллион ссылок, потому что букв в строке поиска всего две.
В линуксе это drivers/mmc/, там, например, sdio*, sdhci*
Но тема сложная — потому что одних только разновидностей SD/SDHC/SDXC несколько, у них подвиды интерфейсов и разные режимы, карточка может работать как блочное устройство, как исполнитель команд или ещё что-то...
K>2) Что такое spi-контроллер и какое он имеет отношение к этой задаче?
https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
"Typical applications include Secure Digital cards and liquid crystal displays."
K>3) Какие могут быть ещё подводные камни? K> Сколько вообще должно быть драйверов, чтобы флешка заработала? K> Например драйвер файловой системы должен быть?
Драйвер FS подключается после того, как покажете флэшку в виде блочного устройства прямого доступа.
K>Товарищи программисты!
**тут был вырезанный цензурой текст про тамбовского волка**
K>Нужно написать linux-драйвер для SD-карточки для отечественного (очень экзотического) компьютера. K>Импортозамещение не хухры-мухры!
Самый простой способ — дать денег тому, кто этим занимается профессионально. Например keinkeinkein (LJ), он как раз драйвера для FS пишет.
Драйвер файловой системы вам не потребуется, нужен драйвер блочного устройства, самый его минимум это:
0) Проверить, доступно ли устройство физически
1) Дать размер блока на устройстве
2) Дать количество блоков на устройстве
3) Прочитать блок N на устройстве
4) Записать блок N на устройстве
Здравствуйте, Слава, Вы писали:
С>Драйвер файловой системы вам не потребуется, нужен драйвер блочного устройства, самый его минимум это: С>0) Проверить, доступно ли устройство физически С>1) Дать размер блока на устройстве С>2) Дать количество блоков на устройстве С>3) Прочитать блок N на устройстве С>4) Записать блок N на устройстве
Ну вроде как со всем перечисленным справился. Оно даже работает.
Теперь имею следующий вопрос.
Как Линукс (и его драйвер) должен реагировать на вытаскивание карточки?
То, что для этого нужно прочесть определённый регистр контроллера, — понимаю.
Что с этим дальше делать? Как про это сказать Линуксу?
Достаточно просто сказать или нужно самому что-то сделать (например обнулить что-нибудь)?