Комментарии 32
То, чем вы занимаетесь, можно охарактеризовать одним словом: Офигенно!
В новом году желаю Вам новых достижений и успехов! И радуйте нас чаще такими статьями :)
Одного не понимаю: зачем каждый раз заливать драйвер на роутер, когда можно тестировать его под десктопным линуксом, при этом пересобирая только сам модуль?
Хм, версии ядра могут отличаться и разная архитектура, разве нет?
Если драйвер написан хорошо, то его можно будет собрать для разных версий ядер и архетиктур без проблем.
2.4, 2.6 и т.д. имеют несколько разный подход к модулям? не такли
Я лично сталкивался с тем, что на целевой машине у меня 2.6, а на компе 3.2
И? Между 2.6.38 и 3.0 не было никаких принципиальных изменений кроме системы нумерации версий.
В принципе можно и под десктопом, однако, хотелось проверять на целевой машине, т.к. могли быть кое-какие проблемы.
Например, контроллер USB-хоста в этом роутере не очень дружит с Full Speed устройствами. И совсем не дружит с Low Speed.
Дык тут уже по-моему прошивку устройства надо было бы допиливать, а не драйвер ядра.
Зубило по кремнию в руки, это аппаратное ограничение)
Неужели нельзя заставить STM32 работать только в одном из режимов? Не верю.
В каком одном из? 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. Короче, используй все доступные источники текста и речи. Не забывай о том, что на английский язык тоже нужно тратить время. Ты талантливый парень (читал твои статьи в «Хакере» и не только), но ты же электронику не за два дня освоил? (:
Если же устройство было занято (DeviceFree = 0), проверка сделает DeviceFree = 1 и вернет false.

я правильно понимаю, что здесь должно быть "-1"? Декремент ведь.
Отлично! Спасибо, продолжаете провоцировать на превращение стокового 500го асуса в сервер с астериском и прочим…
Очень круто! Осталось придумать как бы это использовать в мирных целях.
Удачи в Новом Году и новых интересных статей.
Вы маньяк:) Кажется, я уже говорил это в личной переписке:)
У меня такой вопрос — что мешает сложить те же исходники не в /ar71xx, а в /generic, построив, таким образом, драйвер под все платформы?
Более того, подобный usb дисплей является неплохим решением для, скажем, домашних серверов, NAS, всяких аудиосерверов, систем видеонаблюдения и умных домов. ИМХО, такую вещь можно бы и продвинуть в сам «большой» линукс, не только в openwrt.
Можно и в дженерик, просто у меня других плат под OpenWRT нет пока, вот и пихнул в платформ-специфик.
На большой можно продвинуть, но только не через дженерик, т.к. это дерево исходников для сборки OpenWRT билдрутом, для кросс-компиляции — для десктопа можно без всех этих ухищрений просто кинуть исходник сразу в /drivers/video, добавить пару строк в Kconfig и Makefile и компилять напрямую.
А есть видео?, интересно с какой скоростью экран успевает обновлять и что по нагрузке системы.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.