Одного не понимаю: зачем каждый раз заливать драйвер на роутер, когда можно тестировать его под десктопным линуксом, при этом пересобирая только сам модуль?
В принципе можно и под десктопом, однако, хотелось проверять на целевой машине, т.к. могли быть кое-какие проблемы.
Например, контроллер USB-хоста в этом роутере не очень дружит с Full Speed устройствами. И совсем не дружит с Low Speed.
В каком одном из? 103 умеет работать только в FS.
У хоста с ним аппаратные проблемы, поэтому не мешает проверить, как это все работает на целевой системе.
Отлаживать можно и на десктопе, кто ж вам запрещает. Но вот когда у меня в ядре отваливался драйвер на роутере, перезагрузка длилась несколько секунд. Сможет этим похвастаться десктоп? Или отдельную виртуалку для тестирования придется заводить…
К тому же, когда начинаешь писать собственно фб драйвер, часто нужно будет самому перегружаться и пересобирать все ядро, чтобы посмотреть, как другие дрова его подхватили.
На десктопе это будет куда как менее удобно.
Понятно, мне казалось, что он и LS умеет.
По поводу проверки согласен, но всё равно основную логику можно и на хосте написать и оттестировать. По поводу падений и фреймбуфера — да, есть такое, но тут можно воспользоваться qemu, он умеет подхватывать из командной строки нужное ядро и initrd.
Нет, он и FS-то через раз держит, вот с СТМовским ФС у него проблем вроде не возникло. А некоторые слейв ФС контроллеры, говорят, могут работать несколько минут, потом отваливаться. Лечится подключением устройств через HS хаб.
Да можно куему, но, право слово, быстрее было на роутере проверить, чем стартовать ОпенВРТ на куему для проверки.
Хотя это тоже надо как-нибудь попробовать…
Вау, какая бесценная статья на хабре! Хабр просто мегаторт. Прям то, что нужно. Разработка драйверов на пальцах для нубов! Шикарнейше, поясной поклон! Громаднейшее спасибо и прям мне подарок на НГ!
Драйверов не надо бояться, это такие же программные модули, как и всё остальное. Ну выполняются в привилегированном режиме, но не доступно ничего кроме обрезанной стандартной сишной библиотеки да функций ядра. Кого и когда это останавливало?
Никто не боится, пока разбираюсь как это делать. Но я прям мечтаю разрабатывать на уровне ядра, чтобы лучше чувствовать Linux. Главная беда — плохое знание английского, даже не знаю с какого края к этому подойти, чтобы было легко читать английский книжки. А то так каждая страница даётся по 5-7 минут, и ещё 3 на понимание что там написано. 500 страничная книга будет читаться оооооОоОочень долго… (я пока пытался читать mirror.lzu.edu.cn/docs/ebooks/Embedded/OReilly.Building.Embedded.Linux.Systems.Aug.2008.eBook-DDU.pdf )
С каждой прочитанной страницей скорость чтения страницы будет повышаться. Если, конечно, у Вас есть хоть какие-нибудь способности к обучению английскому :)
Ну так читай дальше. Смотри фильмы, сериалы сначала с русскими субтитрами, потом, по мере привыкания к английской речи, и с английскими. Читай газеты, статьи на Википедии на Simple english. Короче, используй все доступные источники текста и речи. Не забывай о том, что на английский язык тоже нужно тратить время. Ты талантливый парень (читал твои статьи в «Хакере» и не только), но ты же электронику не за два дня освоил? (:
Вы маньяк:) Кажется, я уже говорил это в личной переписке:)
У меня такой вопрос — что мешает сложить те же исходники не в /ar71xx, а в /generic, построив, таким образом, драйвер под все платформы?
Более того, подобный usb дисплей является неплохим решением для, скажем, домашних серверов, NAS, всяких аудиосерверов, систем видеонаблюдения и умных домов. ИМХО, такую вещь можно бы и продвинуть в сам «большой» линукс, не только в openwrt.
Можно и в дженерик, просто у меня других плат под OpenWRT нет пока, вот и пихнул в платформ-специфик.
На большой можно продвинуть, но только не через дженерик, т.к. это дерево исходников для сборки OpenWRT билдрутом, для кросс-компиляции — для десктопа можно без всех этих ухищрений просто кинуть исходник сразу в /drivers/video, добавить пару строк в Kconfig и Makefile и компилять напрямую.
Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux