Перейти к содержанию
    

Igor68

Участник
  • Постов

    249
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Igor68

  • Звание
    Местный
    Местный
  • День рождения 24.01.1968

Посетители профиля

3 629 просмотров профиля
  1. Доброго времени суток! Скажу прямо: с USB практически не знаком. Но при создании устройства (на at91sam7s256, которое подключается к малине) возникли проблемы с чтением из этого самого устройства. В устройство записываю без проблем, но чтение из него совсем никак. Скажу честно книга Агурова по USB в наличии... но как я ни крутил не понятно производить чтение. Сами конечные точки в устройстве: ... /* Endpoint, HID Interrupt In */ USB_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ USB_ENDPOINT_IN(1), /* bEndpointAddress */ //USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */ USB_ENDPOINT_TYPE_BULK, WBVAL(_sz_report), /* wMaxPacketSize (было 4 стало 64*/ 0x0, /* 32ms */ /* bInterval */ /* Endpoint, HID Interrupt Out */ USB_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ USB_ENDPOINT_OUT(2), /* bEndpointAddress */ //USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */ USB_ENDPOINT_TYPE_BULK, WBVAL(_sz_report), /* wMaxPacketSize (было 4 стало 64*/ 0x0, /* 32ms */ /* bInterval */ ... т.е. не USB_ENDPOINT_TYPE_INTERRUPT, а USB_ENDPOINT_TYPE_BULK! Так вон не могу понять (наверное я глуп) последовательность действий со стороны устройства. Уже месяц крвыряюсь. Что надо сдерать и в какой последовательности, тобы драйвер на основе usb-skeleton.c активировал: void USB_EndPoint1 (DWORD event) { //GetInReport(); USB_WriteEP(USB_ENDPOINT_IN(1), &InReport[0], sizeof(_sz_report)); //!!! use !!! - глупые опыты //USB_SetStallEP(1) - глупые опыты pSetStallEP = 0; в то время как : void USB_EndPoint2 (DWORD event) { DWORD cnt = 0; cnt = USB_ReadEP(USB_ENDPOINT_OUT(2), &OutReport[0]); if(cnt > 0) memcpy(MyInBuf, OutReport, cnt);//SetOutReport(cnt); } отрабатывает - точка остановки нормально отрабатывает. Заранее благодарен!
  2. / # uname -a Linux (none) 2.6.29 #1 Thu Apr 2 22:47:58 CDT 2009 armv5tejl unknown / # / # ftp ftpget ftpput никакие порты не подняы. Пока голова болит о другом (я про usb модули - тема рядом) - надо, сильно надо!
  3. вот испытание с изменением "ПРОБА" - тут сделана вставка для пробы и выход: tatic ssize_t samhid_read(struct file *file, char *buffer, size_t count, loff_t *ppos) { struct usb_samhid *dev; int rv; bool ongoing_io; uint8_t buf[64]; int actual_size; struct usb_device* udev; dev = file->private_data; //struct usb_endpoint_descriptor *endpoint; if(count > dev->bulk_in_size) count = dev->bulk_in_size; #if (_debug > 0) printk( KERN_INFO "\nФункция: samhid_read..\n" ); printk( KERN_INFO "samhid_read : step 1\n" ); printk( KERN_INFO "samhid_read : bulk_in_size=%d\n", dev->bulk_in_size ); printk( KERN_INFO "samhid_read : bulk_in_endpointAddr=%d\n", (dev->bulk_in_endpointAddr & 0x0F) ); printk( KERN_INFO "samhid_read : count=%d\n", count ); #endif //!!! - ПРОБА из примера //if(count > dev->bulk_in_size) count = dev->bulk_in_size; udev = interface_to_usbdev(dev->interface); rv = usb_bulk_msg(udev, usb_rcvbulkpipe(udev, 1), buf, 64, &actual_size, HZ); printk( KERN_INFO "\nФункция: samhid_read !!! : rv=%d\n", rv ); printk( KERN_INFO "samhid_read : count=%d\n", count ); printk( KERN_INFO "samhid_read : dev-..>bulk_in_wait=%d\n", dev->bulk_in_wait ); return rv; вот консоль отладки(одноимённая с модулем прграмма теста): root@pi01:/home/igor/sdb/MOUNT_RPI4/coding/codelite/samhid/samhid/samhid/Release# ./samhid --default --testrd Starting samhid... Test чтения из устройства (/dev/samhid0): открытие... Test чтения из устройства : открытие res=0 Test чтения из устройства : чтение... Test чтения из устройства : чтение res=0 Test чтения из устройства : закрытие root@pi01:/home/igor/sdb/MOUNT_RPI4/coding/codelite/samhid/samhid/samhid/Release# вот dmesg: ункция: samhid_open.. [28164.562863] Функция: samhid_read.. [28164.562877] samhid_read : step 1 [28164.562886] samhid_read : bulk_in_size=64 [28164.562895] samhid_read : bulk_in_endpointAddr=1 [28164.562904] samhid_read : count=64 [28164.670824] Функция: samhid_read !!! : rv=-110 [28164.670844] samhid_read : count=64 [28164.670854] samhid_read : dev->bulk_in_wait=0 [28164.671048] Функция: samhid_flush.. [28164.671063] Функция: samhid_draw_down.. [28164.671083] Функция: samhid_release.. igor@pi01:~ $ вот уже неделю пилю - чтение ну совыем никак - что за код ошибки -110 для PS: может какой-то Endpoint (у меня для чтения №1) на плате - может на at91sam7s256 где - то косяк. Свободный остался №3 - может поменять чтение на 3. №2 работает на запись. В даташмте конечных точел четыре.
  4. Устройство должно подключаться по USB к raspberry 3. Для платы(at91sam7s256 от olimex). Драйвер боьирается на основе usb-skeleton.c на самой малине. Загружается, регистрируется устройство, работает запись в устройство (оно в /dev есть при подключении), но вот чтение не работает. Для доступа к устройству написан тест на Си. Всё запускается. Но вот точка отстановки на чтение в Keil не активируется ни тут: ни тут: между тем lsusb на малине(вроде нормально - устройство т.е. дескрипторы сделаны по аналогии от USB-WIFI): Вот дескриптор(ы) устройства в Keil: Косоль тестовой прграммы: вот dmesg (на малинее - в драйвере я намусорил для отладки): драйвер samhid.ko собран на сонове usb-skeleton.c. Если с записью в /dev/samhid0 всё нормально, то чтение - беда. Если надо подробнее - попробую через yndex.disk
  5. Система взята из коробки. Не хотел через образ, а имел намерения иметь единый диск как для заливки (испытание) внутри системы QEMU.
  6. Доброго времени суток! Собственно вопрос в теме. Есть ли возможность получить доступ из qemu-system-arm (точнее запущенной там системы) к какой-нибудь директории хоста (Debian). Пытал всякое... но результата нет. Конечно устройство (флешку) смог примонтировать как устрйство /dev/sda( в qemu-system-arm), но это совсем не то. По SMB не вышло (пока... наверное пока). И вообще есть ли такой вариант? Если не сложно подскажите где искать. Откладывал и откладывал... со съёмной флешкой конечно можно, но не то... совсем не то. PS: Система, что запускается на qemu-system-arm не умеет smb. Для меня это всё - одни из первых шагов. Заранее благодарен!
  7. root, точнее su ???

    Простите! Сегодня дома испытаю. я всё-таки не гуру... и вообще я в самом начале, хоть относительно давно, но в начале. Спасибо!
  8. root, точнее su ???

    Извините ради бога, но дополнение: При входе от ползователя символ $ и при входе после этого по su символ не меняется: $ export export EDITOR='/bin/vi' export HOME='/home/test' export LOGNAME='test' export PATH='/bin:/sbin:/usr/bin:/usr/sbin' export PS1='$ ' export PWD='/' export SHELL='/bin/sh' export SHLVL='1' export TERM='vt100' export USER='test' $ $ su Password: $ $ export export EDITOR='/bin/vi' export HOME='/root' export LOGNAME='test' export PATH='/bin:/sbin:/usr/bin:/usr/sbin' export PS1='$ ' export PWD='/' export SHELL='/bin/sh' export SHLVL='2' export TERM='vt100' export USER='test' $ но при входе вместо su командой login root становится # как и положено. Разрешения испытано редактированием пробного файла /etc/test сохранить разрешается только при root, как и положено. К сожалению bash в rootfs нет почему-то. Тоесть привелегии вроде как работают, но export показывает что-то непонятное. Буду пилить... И простите за назойливость.
  9. root, точнее su ???

    Всё... я кажется скис. Теперь не скоро. Если бы я смог настроить QEMU (qemu-system-arm под это устройство), то смог бы что-то и на работе. Он есть на карманном сервере (raspberry pi 4 8Гб ram) и работает, но не могу настроить внешний диск доступный как для хоста, так и qemu. Всё равно спасибо за помощ! Хотел только не с разрешениями, а с железом сегодня быть занятым. Что касается SUDO, то пока не знаю - не хочется признавать ничего кроме SU.
  10. root, точнее su ???

    Посдедний наверное вопрос: теперь все пользовтели имеют ROOT права. Так нельзя!!!
  11. root, точнее su ???

    сейчас пробую, то что успел сделать вчера: chmod 4755 /bin/su вход по su удачный! Перезвапуск - пройден! Надеюсь удалось. Спасибо огромное за подсказку! Хотел конечно SD/MMC заняться, но думаю что не впустую день потратил. СПАСИБО!!!
  12. root, точнее su ???

    Почему не отвечаю?! Пересобрал, но скопировал только busybox в /bin. Сейчас ответ таков: [email protected]'s password: $ su Password: su: can't set groups: Operation not permitted $ Вообще-то сам виноват (да и многого не знаю...). Веддь ROOTFS собрана на USB-FLASH и претыкается то в устройство, то в ПК. И всякие разрешения летят в трубу. Сборка шаблона... а понимания в тонкостях с гулькин нос.
  13. root, точнее su ???

    в buildroot в buildroot-2021.02.3/package/busybox: в файле busybox.config : ... #CONFIG_INSTALL_NO_USR is not set CONFIG_FEATURE_SUID=y # CONFIG_FEATURE_SUID_CONFIG is not set # CONFIG_FEATURE_SUID_CONFIG_QUIET is not set ... Это то? Пересобиру... как надо? Выключить и пересобрать?
  14. root, точнее su ???

    Мжет кто-нибудь покажет пример файла /etc/bysybox.conf или его надо взять: https://elixir.bootlin.com/busybox/latest/source/Config.in а это (что значит тип bool - вместо (yes и no) надо нецензурные выпражения&?): как есть и только изменить нужные параметры. Или достаточно создать файл /etc/busybox.conf с одержанием наподобие этого: [SUID] su = ssx root.root если su это приложение(функция), то ssx - не понятно, root.root - думаю пользователь и группа (не понятно только: при запуске пользователь станговится как root или сама команда доступна только из root) Время уже 14:44, а с 09:00 никаких результатов... завтра подъём в 5:30 и время будеть наверное только на следующие выходные - а проблем тьма тьмущая PS: поиски описаний приводят только к ссылкам на некий шаблонный файл (он то и не понятен хоть бы увидеть) и призывы к развязыванию торговых отношений (благо хоть, что не интимных) Busybox как и все файлы rootfs собраны помощью buildroot специальных разрешений я не делал. Включение FEATURE_SUID и FEATURE_SUID_CONFIG надо в buildroot??? Собрать rootfs ещё раз???
  15. root, точнее su ???

    В консоли: # which su /bin/su # # ls -l /bin/su lrwxrwxrwx 1 root root 7 Dec 10 2022 /bin/su -> busybox # # после исправления /etc/busybox.conf: [SUID] su = ssx root.root а при входе от пользователя по SSH: $ su su: must be suid to work properly $ повторно перезапускаю и сразу по SSH: igor@Irpi4:~ $ ssh [email protected] [email protected]'s password: $ su su: must be suid to work properly $ аналогично и в консоли: at91sam9260 login: igor Password: $ su su: must be suid to work properly $ ...значения /etc/busybox.conf, как и все правила мне не ведомы (надюсь, что пока не ведомы)
×
×
  • Создать...