Autor Tema: para que sirve la string1 de usb_desc_cdc.h  (Leído 3067 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
para que sirve la string1 de usb_desc_cdc.h
« en: 12 de Enero de 2008, 13:48:54 »
Tengo otra duda repecto a las cadenas de los Descriptores.

un trozo de programa de usb_desc_cdc.h

Código: C
  1. //////////////////////////////////////////////////////////////////
  2. ///
  3. ///   start string descriptors
  4. ///   String 0 is a special language string, and must be defined.  People in U.S.A. can leave this alone.
  5. ///
  6. ///   You must define the length else get_next_string_character() will not see the string
  7. ///   Current code only supports 10 strings (0 thru 9)
  8. ///
  9. //////////////////////////////////////////////////////////////////
  10.  
  11. //the offset of the starting location of each string.  offset[0] is the start of string 0, offset[1] is the start of string 1, etc.
  12. char USB_STRING_DESC_OFFSET[]={0,4,12};
  13.  
  14. char const USB_STRING_DESC[]={
  15.    //string 0
  16.          4, //length of string index
  17.          USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
  18.          0x09,0x04,   //Microsoft Defined for US-English
  19.    //string 1
  20.          8, //length of string index
  21.          USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
  22.          'C',0,
  23.          'C',0,
  24.          'S',0,
  25.    //string 2
  26.          30, //length of string index
  27.          USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
  28.          'C',0,
  29.          'C',0,
  30.          'S',0,
  31.          ' ',0,
  32.          'R',0,
  33.          'S',0,
  34.          '2',0,
  35.          '3',0,
  36.          '2',0,
  37.          ' ',0,
  38.          'D',0,
  39.          'e',0,
  40.          'm',0,
  41.          'o',0

mi pregunta es sobre el string1

Código: C
  1. //string 1
  2.          8, //length of string index
  3.          USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
  4.          'C',0,
  5.          'C',0,
  6.          'S',0,


no le veo sentido colocar el string1, le he dado la vuelta al administrador de dispositivos, y no aparece por ningún lado, no tiene utilidad sino se va a mostrar. -digo yo-  :roll:

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #1 en: 12 de Enero de 2008, 14:47:06 »
Creo recordar que a través del mismo administrador de dispositivos,si entrabas en las diferentes secciones del controlador y tal,se llegaba a ver por algún sitio esa cadena,que supuestamente representa el nombre del fabricante.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #2 en: 12 de Enero de 2008, 14:57:32 »
En Ubuntu se puede ver en "Información del hardware"
Mi string1 es "Modulay" y mi string2 es "Modu Usb-Midi".Tengo 3 interfaces: 1 de AUDIO y 2 HID,y se puede ver en las 3


Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #3 en: 12 de Enero de 2008, 15:57:07 »
Gracias Modulay por responder.

umm... Creo que por lo de fabricante, el S.O. lo toma del archivo instalador.

ej:

el que trae microchip -> mchpusb.inf

...
[Strings]
ONEYSOFT="Walter Oney Software"
MFGNAME="Microchip Technology, Inc."   <- Fabricante
...



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #4 en: 12 de Enero de 2008, 16:27:48 »
Bueno,pero cuando no hay archivo instalador como es mi caso y el dispositivo es plug&play imagino que lo toma de ahí,no puede tomarlo de otro sitio.
No obstante,dependiendo de como esté estructurado tu dispositivo,puedes hacer el uso del descriptor de strings como mejor te convenga,y asignar cualquier cadena a cualquier elemento de tu/s interface/s

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #5 en: 12 de Enero de 2008, 16:35:53 »
Bueno,pero cuando no hay archivo instalador como es mi caso y el dispositivo es plug&play imagino que lo toma de ahí,no puede tomarlo de otro sitio.
...

no sabía que en linux se instalara así en forma directa, es decir, ¿no hay drivers para instalar dispositivos?



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #6 en: 12 de Enero de 2008, 17:04:29 »
No es algo exclusivo de linux.
Mi pic también tiene sus 3 interfaces funcionando en windows y no hubo necesidad de instalar driver ninguno ¿por qué? sencillo...
Los dispositivos usb se dividen en clases,y éstas a su vez,en subclases.
Está la clase UVC (vídeo: webcams,tarjetas editoras de vídeo,etc); la clase AUDIO (interfaces midi,tarjetas de sonido,etc); la clase HID(mouses,teclados,joysticks,etc); la clase CDC(Conversores usb-serie como el de FTDI o el de TEXAS); MSD (pendrives y demás); VENDOR DEFINED; y algunas más...
Cualquier dispositivo usb debe pertenecer al menos a una de esas clases,y digo al menos porque se pueden hacer dispositivos mixtos,como lo es el mío, que integra 2 interfaces de clase HID (un teclado y un mouse) y una de clase AUDIO (un interfaz midi).
Cada interfaz precisa de uno o más drivers para funcionar,dependiendo de su clase y de cuales sean sus características concretas.A la hora de diseñar tu dispositivo y dotarlo de dichas características puedes hacerlo siguiendo las especificaciones existentes en http://www.usb.org con el fin de que tu dispositivo sea "Class Compliant" y así no precise de driver externo.Sería el sistema operativo quien aportaría dicho driver (no estoy seguro,pero creo que las VENDOR DEFINED no pueden ser Compliant,o sea precisan de driver externo).
Un ejemplo claro son los pendrives.Imagino que tienes alguno ¿necesitaste instalarle driver para usarlo bajo XP? Seguro que no, precisamente porque tu pendrive es Mass Storage Device Compliant (clase MSD).
El secreto y la chicha de todo esto está en los descriptores.Dándoles la forma y contenido adecuados puedes implementar cualquier tipo de dispositivo,con múltiples interfaces,sin necesidad de desarrollar drivers.
« Última modificación: 12 de Enero de 2008, 17:07:11 por Modulay »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #7 en: 12 de Enero de 2008, 17:15:25 »
...Un ejemplo claro son los pendrives.Imagino que tienes alguno ¿necesitaste instalarle driver para usarlo bajo XP? Seguro que no, precisamente porque tu pendrive es Mass Storage Device Compliant (clase MSD).
El secreto y la chicha de todo esto está en los descriptores.Dándoles la forma y contenido adecuados puedes implementar cualquier tipo de dispositivo,con múltiples interfaces,sin necesidad de desarrollar drivers.

es que siempre existiran las instalaciones, lo que pasa es que el win ya los trae por defecto. y cuando se enchufa un pendriver el win va a buscar el archivo correspondiente para identificarlo y asignarle su clase al registro de configuraciones. Todo las tarjetas de video, el audio tiene su instalador.

Segun tengo entendido los descriptores estan para informarle al ordenador que clase de dispositivo necesita y los string es lo que usa para mostrar datos de identificación, los class number es para organizarlo en su base de datos de dispositivos.

mira que cuando conectas un pendriver aparece un mensaje en la barra de tareas, ese mensaje sospecho (por los ensayos que he hecho con los pics) viene de los descriptores que el pendrive le envía al host cuando pregunta, Luego viene la parte de configuración de la class, el Vid y los Pid.

los pid y vid "asumo" que son meramente para fines comerciales, porque las clases ya estan definidas según lo que mencionaste de la usb.org

por eso es que me extrañó que en linux no existiera archivos de instaladores.



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #8 en: 12 de Enero de 2008, 17:33:02 »
A ver,si el dispositivo es class compliant,no hay instalación ninguna de drivers,ya que el sistema operativo ya tiene instalados los drivers necesarios para comunicarse con el dispositivo (incluyendo windows).Al conectar el dispositivo al puerto,el host le pide los descriptores,en los cuales va la información necesaria para que el host sepa la/s clase/s del dispositivo,si es compliant o no,el vid_pid,el número de interfaces que tiene,los endpoints que manejará y que tipo de protocolo usan,etc..
Si el host no reconoce el vid_pid (no hay constancia de él en el registro),procede a realizar las gestiones relativas al driver,ya sea requiriendo al usuario un driver externo o ya sea seleccionando un driver genérico de su "colección" y cargándolo en memoria.Una vez hechas esas gestiones,se crea registro del vid_pid y del driver con el que se corresponde,el cual se cargará directamente en memoria en las sucesivas veces que se detecte la conexión al puerto del dispositivo con dicho vid_pid

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: para que sirve la string1 de usb_desc_cdc.h
« Respuesta #9 en: 15 de Enero de 2008, 19:18:23 »
Hola

si son ciertos tus comentarios Modulay, de todas maneras sigo con la duda para que sirve el string1, lo dejaré asi de momento.


La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything