2012-03-23 2 views
0

Чтобы использовать Beagleboard хт как HID периферией я планирую сделать следующее:omap_udc.c g_hid.c спрятал гаджет на BeagleBoard с ангстрем Linux

  1. Узнайте, как построить вещи с ангстрем.
  2. Получить исходный код ядра 2.6.32.
  3. Compile omap_udc и g_hid
  4. Вставьте эти модули в ядро ​​
  5. Компиляция пример из gadget_hid.txt
  6. команды
  7. Отправить клавиатура с hid_gadget_test/DEV/hidg0 клавиатуры

Это хороший способ делать то, что я хочу?

http://www.edaboard.com/thread145675.html является несколько связанным вопросом от '09.

Looking for Example Embedded Linux HID Device Code очень похоже.

ответ

1

Я решил, что я разместил это здесь, потому что я посмотрел и искал ответ, но безрезультатно, поэтому мне нужно было проявить творческий подход.

Первый Go здесь и получить ядро ​​ http://eewiki.net/display/linuxonarm/BeagleBone

Второй в Ядро/арка/рука/маш-omap2/доска-am335xevm.c

Добавить:

enter code here 
#include <linux/usb/g_hid.h> 

/* hid descriptor for a keyboard */ 
static struct hidg_func_descriptor my_hid_data = { 
.subclass  = 0, /* No subclass */ 
.protocol  = 1, /* Keyboard */ 
.report_length  = 8, 
.report_desc_length = 63, 
.report_desc  = { 
    0x05, 0x01, /* USAGE_PAGE (Generic Desktop)   */ 
    0x09, 0x06, /* USAGE (Keyboard)      */ 
    0xa1, 0x01, /* COLLECTION (Application)    */ 
    0x05, 0x07, /* USAGE_PAGE (Keyboard)    */ 
    0x19, 0xe0, /* USAGE_MINIMUM (Keyboard LeftControl) */ 
    0x29, 0xe7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ 
    0x15, 0x00, /* LOGICAL_MINIMUM (0)     */ 
    0x25, 0x01, /* LOGICAL_MAXIMUM (1)     */ 
    0x75, 0x01, /* REPORT_SIZE (1)      */ 
    0x95, 0x08, /* REPORT_COUNT (8)      */ 
    0x81, 0x02, /* INPUT (Data,Var,Abs)     */ 
    0x95, 0x01, /* REPORT_COUNT (1)      */ 
    0x75, 0x08, /* REPORT_SIZE (8)      */ 
    0x81, 0x03, /* INPUT (Cnst,Var,Abs)     */ 
    0x95, 0x05, /* REPORT_COUNT (5)      */ 
    0x75, 0x01, /* REPORT_SIZE (1)      */ 
    0x05, 0x08, /* USAGE_PAGE (LEDs)     */ 
    0x19, 0x01, /* USAGE_MINIMUM (Num Lock)    */ 
    0x29, 0x05, /* USAGE_MAXIMUM (Kana)     */ 
    0x91, 0x02, /* OUTPUT (Data,Var,Abs)    */ 
    0x95, 0x01, /* REPORT_COUNT (1)      */ 
    0x75, 0x03, /* REPORT_SIZE (3)      */ 
    0x91, 0x03, /* OUTPUT (Cnst,Var,Abs)    */ 
    0x95, 0x06, /* REPORT_COUNT (6)      */ 
    0x75, 0x08, /* REPORT_SIZE (8)      */ 
    0x15, 0x00, /* LOGICAL_MINIMUM (0)     */ 
    0x25, 0x65, /* LOGICAL_MAXIMUM (101)    */ 
    0x05, 0x07, /* USAGE_PAGE (Keyboard)    */ 
    0x19, 0x00, /* USAGE_MINIMUM (Reserved)    */ 
    0x29, 0x65, /* USAGE_MAXIMUM (Keyboard Application) */ 
    0x81, 0x00, /* INPUT (Data,Ary,Abs)     */ 
    0xc0  /* END_COLLECTION       */ 
} 
}; 

static struct platform_device my_hid = { 
.name   = "hidg", 
.id   = 0, 
.num_resources  = 0, 
.resource  = 0, 
.dev = { 
.platform_data = &my_hid_data, 
}, 
}; 

static void __init am33xx_hidg_init(void) 
{ 
int ret; 



ret = platform_device_register(&my_hid); 


if (ret) 
    printk("HID Gadget registration failed\n"); 

} 

В:

static void __init am335x_evm_init(void) 
{ 
am33xx_cpuidle_init(); 
am33xx_mux_init(board_mux); 
omap_serial_init(); 
am335x_rtc_init(); 
**am33xx_hidg_init();** 
clkout2_enable(); 
} 

Сборка ядра, следующего за Руководством, с более ранней версии В разделе конфигурации makemenu сборки ядра перейдите к драйверам устройств-> поддержка usb-> Поддержка USB-гаджета-> USB-драйверы гаджетов -> Скомпилируйте HID-Gadget как модуль (вы можете должны охотиться за это, но это вокруг этого раздела в пару несколько подразделов меню)

Возьмите секцию образец кода из документации ядра или эту страницу http://www.mjmwired.net/kernel/Documentation/usb/gadget_hid.txt

Compile с GCC

insmod в g_hid. ko драйвер , а затем запустить скомпилированный образец кода