Написать драйвер SD-карточки
От: Kernighan СССР  
Дата: 03.07.17 11:26
Оценка:
Товарищи программисты!
Прошу подсказку.

Нужно написать linux-драйвер для SD-карточки для отечественного (очень экзотического) компьютера.
Импортозамещение не хухры-мухры!

У меня вопросы:
0) Как вообще в linux-е писать драйверы?
Книжку Linux Device Drivers прочитал. Ясности это не добавило.

1) Говорят, что нужно взять аналогичный драйвер, и сделать свой по мотивам.
Как в исходниках linux-а найти "похожий драйвер"? Может кто знает?
Поиск по буквам "SD" даёт миллион ссылок, потому что букв в строке поиска всего две.

2) Что такое spi-контроллер и какое он имеет отношение к этой задаче?

3) Какие могут быть ещё подводные камни?
Сколько вообще должно быть драйверов, чтобы флешка заработала?
Например драйвер файловой системы должен быть?
Re: Написать драйвер SD-карточки
От: wildwind Россия  
Дата: 03.07.17 11:33
Оценка:
Здравствуйте, Kernighan, Вы писали:

K>1) Говорят, что нужно взять аналогичный драйвер, и сделать свой по мотивам.


А зачем делать свой, если в Линуксе все и так работает? Синдром BolgenOS?


P.S. Отечественное импортозамещение во всей его красе...
Re[2]: Написать драйвер SD-карточки
От: Kernighan СССР  
Дата: 03.07.17 11:38
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Kernighan, Вы писали:


K>>1) Говорят, что нужно взять аналогичный драйвер, и сделать свой по мотивам.


W>А зачем делать свой, если в Линуксе все и так работает? Синдром BolgenOS?


Проходите мимо, я по понедельникам не кормлю тролей.
Зачем Вы wildwind нужны, если уже есть Билли-Гейц и он всё сделал?
Re: Написать драйвер SD-карточки
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 03.07.17 12:12
Оценка:
Здравствуйте, 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 подключается после того, как покажете флэшку в виде блочного устройства прямого доступа.
The God is real, unless declared integer.
Re: Написать драйвер SD-карточки
От: Слава  
Дата: 03.07.17 12:32
Оценка: 1 (1)
Здравствуйте, Kernighan, Вы писали:


K>Товарищи программисты!

**тут был вырезанный цензурой текст про тамбовского волка**

K>Нужно написать linux-драйвер для SD-карточки для отечественного (очень экзотического) компьютера.

K>Импортозамещение не хухры-мухры!

Самый простой способ — дать денег тому, кто этим занимается профессионально. Например keinkeinkein (LJ), он как раз драйвера для FS пишет.

Драйвер файловой системы вам не потребуется, нужен драйвер блочного устройства, самый его минимум это:
0) Проверить, доступно ли устройство физически
1) Дать размер блока на устройстве
2) Дать количество блоков на устройстве
3) Прочитать блок N на устройстве
4) Записать блок N на устройстве
Re[2]: Написать драйвер SD-карточки
От: alpha21264 СССР  
Дата: 01.11.17 14:17
Оценка:
Здравствуйте, Слава, Вы писали:

С>Драйвер файловой системы вам не потребуется, нужен драйвер блочного устройства, самый его минимум это:

С>0) Проверить, доступно ли устройство физически
С>1) Дать размер блока на устройстве
С>2) Дать количество блоков на устройстве
С>3) Прочитать блок N на устройстве
С>4) Записать блок N на устройстве

Ну вроде как со всем перечисленным справился. Оно даже работает.
Теперь имею следующий вопрос.
Как Линукс (и его драйвер) должен реагировать на вытаскивание карточки?
То, что для этого нужно прочесть определённый регистр контроллера, — понимаю.
Что с этим дальше делать? Как про это сказать Линуксу?
Достаточно просто сказать или нужно самому что-то сделать (например обнулить что-нибудь)?

Может быть про это где-то написано?

Течёт вода Кубань-реки куда велят большевики.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.