Титла: GuruPlug SP Usnap GPIO Char Driver Публикувано от: bz1pp3d в Sep 04, 2012, 09:14 Здравейте! Наскоро ми попадна един от нашумелите plug computers GuruPlug Server Plus (http://www.globalscaletechnologies.com/t-guruplugdetails.aspx).
Реших да си напиша прост драйвър, използващ USNAP интерфейса за GPIO, чиято цел е да ми позволи да използвам определн пин за аутпут. Проблемът е, че когато с юзър-спейс програмка изпращам някъкви данни за писане, ядрото ми връща грешка 22 (Invalid argument). Ето го сорсът на драйвъра: http://pastebin.com/nuqPf5bG Ето и какво ми връща dmesg: http://pastebin.com/sDiL951h Кодът на юзър-спейс програмката: http://pastebin.com/LK0trAGR Малко пояснения: ядрото е версия 2.6.33.2, компилирано с gpio support; дивайсът се създава и в /dev посредством "mknod /dev/gpiomod c 222 0", като предварително е проверено, че този номер е свободен CPU Info: guruplug-debian:~# cat /proc/cpuinfo Processor : Feroceon 88FR131 rev 1 (v5l) BogoMIPS : 1192.75 Features : swp half thumb fastmult edsp CPU implementer : 0x56 CPU architecture: 5TE CPU variant : 0x2 CPU part : 0x131 CPU revision : 1 Hardware : Marvell GuruPlug Reference Board Revision : 0000 Serial : 0000000000000000 Модулът успешно се зарежда в ядрото. Всичкият код е компилиран с toolchain-a предоставен от http://www.mentor.com/embedded-software/codesourcery . Някъкви идеи? Титла: Re: GuruPlug SP Usnap GPIO Char Driver Публикувано от: ivo1204 в Sep 04, 2012, 17:32 int __init gpiomod_init(void)
{ /* register character major device number */ gpiomod_major = register_chrdev(0, DEVICE_NAME, &gpiomod_fops); if (gpiomod_major < 0) { printk(KERN_INFO "Registering the character device failed with %d\n", gpiomod_major); return gpiomod_major; } printk(KERN_INFO "Installing gpiomod driver; assigned major number %d\n", gpiomod_major); /* remind of need to make node if non-existent */ /* mknod -m 0666 /dev/gpiomod c xxx 0 */ printk(KERN_INFO "If you want to talk to the device driver,\n"); printk(KERN_INFO "you'll have to create a device file. \n"); printk(KERN_INFO "Manually -> mknod -m 0666 %s c %d 0\n", NODE_NAME, gpiomod_major); .. return 0; } put_user(...) get_user(...) Титла: Re: GuruPlug SP Usnap GPIO Char Driver Публикувано от: bz1pp3d в Sep 04, 2012, 22:24 Код: WARNING: at drivers/gpio/gpiolib.c:102 gpio_ensure_requested+0x54/0x124() Все още получавам този резултат от dmesg ... :/ Титла: Re: GuruPlug SP Usnap GPIO Char Driver Публикувано от: ivo1204 в Sep 04, 2012, 23:25 Вероятно процесора използва крачетата с няколко алтернативни функции. Теб ти тлябва да бъдат конфигурирани като GPIO а не USNAP, гледам , като изходи входове
http://www.newit.co.uk/forum/index.php?topic=401.0 след това, теб просто ти трябват адресите и бита на крачето, даже и от юзер спейс може да пишеш и четеш в тях. Иска ровене де... |