Selección del microcontrolador / procesador C ++

2

Tengo problemas para seleccionar un microcontrolador / procesador para un proyecto de robótica en C ++. Tengo un programa que funciona en mi computadora que es 1.5+ KLOC y se basa en los datos de otros veinte archivos para funcionar, así que no sugiera que use otro idioma. Intenté traducirlo a C, pero no pude hacerlo funcionar, tal vez debido a la gran dependencia del programa en el flujo y las cadenas. El programa tiene aproximadamente 1 MB en mi computadora en este momento y ocupa 3 MB mientras se ejecuta, por lo que supongo que el microcontrolador / procesador debería ser capaz de soportar 4 MB de RAM si es von-Neumann / MHA y 1 MB Flash y 3 MB de ram para Harvard. Necesito PWM, SPI y UART / USART en el procesador para comunicarme con otros sensores, y planeo usar un disco duro para los otros archivos y un ram externo para el programa y sus datos. Necesitaré al menos 90 pines IO (40 IDE + 40 servos + sensores).

Resumen:

  • > 90 pines IO
  • PWM
  • SPI
  • UART / USART
  • si von-Neumann / MHA, es capaz de soportar > 4 MB de RAM
  • si Harvard, > 1 MB de programa flash y > 3 MB de RAM
  • admite C ++

¿Qué sugieres? También proporcione información sobre cómo programar el procesador, si es posible.

Hasta ahora, he encontrado i.mx25 de Freescale, pero no estoy seguro de cómo conectar este procesador a mi computadora para la programación, si usa C ++, o los detalles de cómo convertir mi programa de Windows .exe actual en un .hex compatible con este procesador.

@ m.Alin Estoy usando un disco duro porque comencé con AVR y encontré un tutorial que describe cómo comunicarse con un hdd desde un AVR. No pude encontrar un tutorial de tarjeta SD similar.

@ MikeJ-UK El programa se ejecuta actualmente en mi computadora portátil, un x86-64 Windows 7.

@darron

"1MB binario implica más de 1500 LOC" El programa es de 643 KB ahora, no 1 MB. Me disculpo por la confusión. Dije 1 MB porque todavía estoy trabajando y expandiendo el programa, por lo que el posible procesador tendrá que ser capaz de manejar su futuro tamaño más grande.

"agregue una placa periférica para los servos" "io que se descargan en un FPGA ..." No sé cómo hacer esto. Después de una búsqueda rápida, no pude encontrar ningún FPGA asequible. ¿Conoces algún > $ 50?

@Rocketmagnet 1500 líneas.

@vicatcu No creo que 8 pines sean suficientes.

@AndrejaKo En su mayor parte, no será necesario controlar los servos al mismo tiempo. Me gusta su opción de múltiples microcontroladores / demultiplexores, pero no entiendo qué tiene de malo usar un i.MX25 con Linux. Tiene 128 pines io.

    
pregunta vaxquis

2 respuestas

6

Esto suena como un trabajo para Linux embebido.

  1. Sistema de archivos persistente. Olvídate de IDE (ahórrate 40 pins) y ir a por un tablero que utiliza una tarjeta flash.
  2. Más RAM y Flash. Las placas de Linux embebidas típicas tienen RAM en     los megabytes.

En cuanto a los periféricos, conducir 40 servos podría ser una pregunta aquí sola. ¿Cómo estás haciendo esto ahora? Para el resto de sus requisitos periféricos, aquí hay una placa que parece encajar y que también tiene una buena comunidad:

enlace

La cadena de herramientas tiene un compilador de C ++, tiene SPI, UART e incluso un PWM. Al menos, esto es lo que se afirma en el PDF. Deberá asegurarse de que haya controladores para todos los periféricos disponibles en el nivel de la aplicación para cualquier distribución de Linux que instale. Esperemos que el que proporcionan tenga todo lo que necesitas.

Básicamente, si puedes portar lo que hayas escrito en una PC con Linux, hay una buena posibilidad de que puedas portarlo a un objetivo de Linux incorporado. Sin embargo, estoy dispuesto a apostar que si todo lo que está usando de C ++ es <fstream> y <string> , probablemente podría hacer una reescritura de C y ahorrar la sobrecarga de Linux.

    
respondido por el Jon L
4

Yo sugeriría obtener una PC pequeña y usar un expansor de E / S para darle sus 90 pines. Hay un número sorprendente de realmente pequeñas PCs por ahí. Ejecutan Linux, y puedes usar gcc y gpp para compilar el código para ellos. Aquí hay algunos:

<- Picotux 100

<- Cotton Candy PC

<- Gumstix

    
respondido por el Rocketmagnet

Lea otras preguntas en las etiquetas