Sama5d3 fast ADC

1

Estoy usando Ubuntu 14.04 y el compilador arm-linux-gnueabihf-gcc para compilar proyectos para el tablero explicado sama5d3 y usar minicom y zmodem para transferir el código fuente compilado de la máquina ubuntu al tablero de desarrollo. La placa sama5 viene con Poky, la compilación de referencia de yocto linux. Mi objetivo final es acceder y leer los registros de los dispositivos ADC y SPI.

Le he dado una buena lectura a la hoja de datos aquí , en la página 1664, detalla el Registro de estado del canal ADC; en la ubicación de memoria 0xF8018018. Linux obviamente proporciona un fallo de segmentación cuando intento recuperar el valor allí. Un tutorial detallado sobre cómo usar mmap para las IO asignadas en memoria también sería bueno, ya que he escuchado que esto puede ser una alternativa.

El motivo de esto es para que pueda leer el ADC a 100 ksamples / seg. Acceder a las direcciones de memoria desde el espacio de usuario probablemente no sea posible, si lo fuera, sería muy apreciado que me haga saber cómo. Si no, me gustaría saber cómo crearía una aplicación completa que me permitiera hacerlo. Atmel tiene un paquete de software GNU que incluye controladores ADC para el compilador arm-none-eabi-gcc. ¿Cómo haría para configurar esto para compilar y ejecutar programas en este foro?

Para condensar todo esto abajo:

Tengo:

  • Un escritorio con Ubuntu 14.04

  • la placa de desarrollo sama5d3-xplained

Las preguntas son:

  • ¿Se puede acceder al ADC a velocidades > = 100 ksamples / sec

  • ¿Hay alguna forma de acceder a los registros desde una ubicación de memoria (como el registro de estado del canal ADC en la ubicación de memoria 0xF8018018) desde el espacio del usuario?

  • ¿Cómo podría desarrollar una aplicación completa si la respuesta a la pregunta anterior es negativa?

Gracias por su ayuda y tiempo.

    
pregunta Zachary Baltzer

1 respuesta

1

Puede usar el Controlador de dispositivo Linux AT91 ADC pero probablemente esto no cumple con sus requisitos de velocidad (consulte también Uso del controlador AT91 ADC ).

Otra solución podría ser buscar en la transferencia DMA para los registros de ADC en alguna memoria de espacio de usuario. Esto también podría ser lo suficientemente rápido para satisfacer 100 ksps. No he hecho tal cosa todavía, pero vale la pena echar un vistazo a esto: Guía de asignación dinámica de DMA .

    
respondido por el Stefan

Lea otras preguntas en las etiquetas