Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Използване на Linux драйвер в embedded устройства
http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=7809
Страница 1 от 1

Автор:  mndsl [ Вто Май 11, 2010 9:48 am ]
Заглавие:  Използване на Linux драйвер в embedded устройства

Здравейте.

Имам една развойна платка на атмел с avr32, на която върви линукс. Искам да вържа към нея температурен датчик примерно DS18B20.
Гледам в кернела има драйвери за 1-wire протокол, има драйвер и за тези темп. датчици. Не мога да разбера обаче как се ползват тези драйвери. Въобще не мога да разбера как се ползва кой да е драйвер. Единственото което разбрах е че се зареждаш с insmod и нищо повече. Как да укажа на драйвера къде е закачен датчика, след това как да го прочета..
Гугъл мълчи по въпроса, в документацията на кернела няма нито един пример, въобще пълно затъмнение.
Ще бъда благодарен на някой ако може да ми каже как се работи с този 1-wire драйвер и въобще с драйвери под линукс.

Автор:  tcsa35 [ Вто Май 11, 2010 10:36 am ]
Заглавие: 

Не ми се обяснява с подробности за това качвам 2 книжки които ще ти помогнат
да разбереш някой неща относно употребата и писането на драйвери

Прикачени файлове:
linux_books.tar.gz [4.48 MiB]
399 пъти

Автор:  mndsl [ Пет Май 14, 2010 8:12 pm ]
Заглавие: 

Благодаря за книжките, има много полезна информация в тях и със сигурност ще са ми от полза, пък и на всеки друг който се занимава с това.

Проблема при мен не беше толкова писането на драйвери, отколкото ползването на готови. Примери за драйвери има колкото искаш в нета. Когато си пишеш сам драйвер започваш от нула и всичко ти е ясно :) С готовите драйвери не е точно така. А аз опит с драйвери на линукс много много нямам, да не кажа че хич нямам.

В крайна сметка всичко тръгна, драйвера си намира сам датчика и мери температурата. Друг е въпроса, че този драйвер нещо ми тормози много процесора и под 0.4 не слиза, при положение че без него е почти на 0, но причината за това ще търся по-нататък.

Оказа се ( какво откритие :D ), че драйверите търсят точно определени структури за да работят. Структура от тип platform_device, която описва хардуера с който ще трябва да работи драйвера. Проблема при мен беше че нямаше дефинирана такава структура. Като я добавих и всичко тръгна. Просто 5 реда в init кода на платката, за 5 мин работа... ама това просто никъде не е описано.

Утре смятам да си поиграя с SPI и I2C, мисля че вече му хванах цаката :)

Автор:  radolin [ Пон Май 17, 2010 11:55 pm ]
Заглавие: 

platform_device се ползва често в embedded системите. Описват се устройства свързани директно на разни шини като i2c, spi и други при които няма стандартен начин за autodetect. Трябва да се изброят кои устройства на кои шини и адреси има за да се заредят коректните драйвери.

Документацията не винаги е блестяща, но в конкретния случай я има. Прегледай Documentation директорията която е в архива със изходния код на Линукс ядрото. За този случай по-точно /Documentation/driver-model/platform.txt. Ако там няма това, което те интересува търсиш из архивите на LKML или друг пощенски списък за конкретната подсистема или архитектура. Ако и там не успееш - четеш изходния код и коментарите в него.

Не знам какви книги е пратил колегата в архива, но за случая Linux Device Drivers, Linux Kernel development и един куп има още специално за embedded linux. Тук също има интересни неща - http://free-electrons.com/docs/

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/