Автор Тема: GuruPlug SP Usnap GPIO Char Driver  (Прочетена 3211 пъти)

bz1pp3d

  • Напреднали
  • *****
  • Публикации: 15
  • Distribution: Arch
  • Window Manager: openbox
    • Профил
GuruPlug SP Usnap GPIO Char Driver
« -: 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 .
 
Някъкви идеи?
Активен

ivo1204

  • Напреднали
  • *****
  • Публикации: 987
    • Профил
Re: GuruPlug SP Usnap GPIO Char Driver
« Отговор #1 -: 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(...)
Активен

bz1pp3d

  • Напреднали
  • *****
  • Публикации: 15
  • Distribution: Arch
  • Window Manager: openbox
    • Профил
Re: GuruPlug SP Usnap GPIO Char Driver
« Отговор #2 -: Sep 04, 2012, 22:24 »
Код:
WARNING: at drivers/gpio/gpiolib.c:102 gpio_ensure_requested+0x54/0x124()
autorequest GPIO-42
Modules linked in: gpiomod
[<c0034284>] (unwind_backtrace+0x0/0x168) from [<c00433b4>] (warn_slowpath_comm$
[<c00433b4>] (warn_slowpath_common+0x4c/0x64) from [<c0043408>] (warn_slowpath_$
[<c0043408>] (warn_slowpath_fmt+0x28/0x38) from [<c0250348>] (gpio_ensure_reque$
[<c0250348>] (gpio_ensure_requested+0x54/0x124) from [<c02504d8>] (gpio_directi$
[<c02504d8>] (gpio_direction_output+0xc0/0x180) from [<bf000030>] (gpiomod_open$
[<bf000030>] (gpiomod_open+0x1c/0x34 [gpiomod]) from [<c00b00f0>] (chrdev_open+$
[<c00b00f0>] (chrdev_open+0x124/0x204) from [<c00aaf04>] (__dentry_open.isra.18$
[<c00aaf04>] (__dentry_open.isra.18+0xf8/0x2a4) from [<c00b8bb0>] (do_filp_open$
[<c00b8bb0>] (do_filp_open+0x5e4/0x998) from [<c00ac030>] (do_sys_open+0x5c/0x1$
[<c00ac030>] (do_sys_open+0x5c/0x114) from [<c002e960>] (ret_fast_syscall+0x0/0$
---[ end trace 31564e9c57852f74 ]---
GPIO-42: chip request fail, -22
gpio_unexport: gpio42 status -22



Все още получавам този резултат от dmesg ... :/
Активен

ivo1204

  • Напреднали
  • *****
  • Публикации: 987
    • Профил
Re: GuruPlug SP Usnap GPIO Char Driver
« Отговор #3 -: Sep 04, 2012, 23:25 »
Вероятно процесора използва крачетата с няколко алтернативни функции. Теб ти тлябва да бъдат  конфигурирани като GPIO а не USNAP, гледам , като изходи входове
 http://www.newit.co.uk/forum/index.php?topic=401.0
 след това, теб просто ти трябват адресите и бита на крачето, даже и от юзер спейс може да пишеш и четеш  в тях. Иска ровене де... 
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
access to GPIO on bt878
Общ форум
nikomsj 1 1707 Последна публикация Dec 10, 2004, 22:57
от
Driver
Настройка на хардуер
LaMeP 7 5480 Последна публикация Jan 22, 2005, 10:49
от kamos
Ati 3D Driver и смяна ма монитор
Настройка на програми
hafte 2 3660 Последна публикация May 18, 2005, 12:32
от hafte
Driver Canon i560 Driver
Кошче
Arkadietz 4 5005 Последна публикация Feb 21, 2010, 16:58
от Acho
MySql - char() или varchar(), DYNAMIC или FIXED таблица?
Web development
Naka 14 12438 Последна публикация Aug 09, 2020, 16:27
от jet