Archivo de la Categoría “Microprocesadores”
Hoy voy a hablar de un modulito nuevo de la casa Imsys. Realmente creo que tendría que haber comentado ya algo de esta casa pues que estoy seguro que va a crear cierto interés este tipo de módulos porque muchos de los lectores de blogElectronica.com son usuarios de los conocidos módulos TC65 y XT65 de Cinterion (de los que por cierto, dentro de muy poco, volveré a hablar con noticias agradables).
Como decía, os presento el nuevo módulo Snap Stamp de la casa Imsys. Lo primero de todo, una foto, para que os conozcáis:
Como véis es un modulito muy pequeño, de 29mm de lado (de ahí el nombre Stamp, del tamaño de un sello). Este módulo está basado, y aquí está lo importante, en el procesador JAVA IM3910. Es decir, de la misma forma que programamos los módulos Cinterion XT65, TC65i y terminales MTX65 en java (J2ME) se programan estos módulos. Es decir, si ya estás familiarizado con la programación java de los módulos Cinterion y MTX, ya sabes programar el módulo Snap Stamp. Esto, evidentemente, es una ventaja en time-to-market increíble para todos aquellos que tengan que iniciar un nuevo proyecto con un módulo procesador, por el know how y por el aprovechamiento del código y clases java que uno pueda ya tener desarrollado para los módulos Cinterion y terminales MTX. Es como con éstos últimos, compilas tu programa (en Eclipse o Netbeans) subes tu fichero .JAR al módulo (en este caso no por OBEX, sino por ethernet (ya sea local o remotamente) y a funcionar.
De la misma forma que con los módulos de Cinterion el Snap Stamp tiene un completo stack TCP/IP, pero además servidor web, ftp, telnet, gestor de I/O, …
Aquí están las características técnicas del módulo:
• High performance multi-threaded Java execution
• Certified J2ME-CLDC virtual machine
• Four channel A/D 16-bit 44 ksps converter with optional external reference voltage
• Two D/A 16-bit 44ksps converters
• 2* / 4* / 8 Mbytes Flash memory
• 8 / 32* Mbytes SDRAM
• 10/100Base-T Ethernet MAC and PHY
• Optional 2nd RMII interface
• TCP/IP stack, Web/FTP/Telnet server
• Three serial ports (3.3V levels, 4-wire, 920 kb/s)
• High-speed I2C bus and SPI
• Parallel 8-bit high speed data bus
• 8 to 53 General-purpose digital I/O ports
• MMC / SD card support
• Extensive I/O functions through Java APIs, including PPP, FTP, E-mail, GPIO, Timers
• Enhanced performance for special functions e.g. graphics, crypto, and floating point operations
• Rubus JOS RTOS with failsafe flash file system
• High I/O bandwidth (>650 Mbits/s DMA)
• Real time clock and calendar
• On board Temperature sensor
• 150 / 200* MHz oscillator frequency
• Commercial / Industrial* temp range
• Connection for Imsys JTAG Trace Adapter
• Reference designs available, complete with schematics and firmware for:
Dallas/Maxim 1-wire
CAN
TFT LCD, Touch panel
CD quality Audio
Donde pone * indica que es opcional, y se suministran así bajo un pedido mínimo de piezas.
Aquí tenéis también una pequeña comparativa entre el procesador Imsys y distintos procesadores.
Espero que encontréis el modulito de interés. Vamos, conociendo ya a muchos de los fieras que leen este blog estoy seguro que así será y que mañana ya tengo algún email preguntando.
Etiquetas: Imsys, j2me, java
2 Comentarios »
Hoy voy a hablar brevemente de un módulo de Digi que seguro si no lo conoces te va a sorprender, por su tamaño y prestaciones, a más de uno.
Se trata un módulo de Digi (distribuido en España por Matrix) de nombre Digi Connect Me. Es el que tenéis en la foto que os pongo a continuación. Podéis ver las medidas en centímetros entre paréntesis.
Como veis, el dispositivo es extraordinariamente pequeño. Ocupa poco más que un conector convencional de RJ45.
Está muy bien, ¿pero qué es?
Pues el dispositivo es un pequeño módulo embebido, basado en un ARM 7 de 32bits (concretamente el NS7520 a 55MHz). Está disponible en dos versiones, la versión estandard y la customizable.
Con la versión estandard no tenemos un módulo programable. Tenemos un completísimo gateway serie-ethernet de tamaño ultracompacto, que permite dar a los diseños que tengamos actualmente con conectividad serie capacidad ethernet de manera muy rápida y económica.
Toda la configuración del equipo se realiza mediante browser. Dispone de un sinfín de configuraciones posibles, permite configurarse como servidor TCP, como cliente TCP, podemos almacenar nuestra propia página web en su interior haciendo personalizable el equipo (es decir, poniendo tu logo, por si después tenemos pensado revender un equipo nuestro que incluya este dispositivo y así que el cliente vea nuestro logo ), podemos embeber también applets java, e incluso, si embebemos una página web con un applet, podemos controlar (leer y escribir) en las 5 GPIO de que dispone. También puede enviar alertas por email automáticamente si se detecta un cambio en una o varias GPIO que nosotros programemos …
Lee el resto de esta entrada »
22 Comentarios »
Probablemente muchos de vosotros conozcáis los módulos procesados de Digi, especialmente los modelos ConnectCore 7U (antiguamente llamado UNC20), el ConnectCore 9U (antiguamente llamado UNC90) o el ConnectCore9M. Como curiosidad deciros estos módulos cambiaron de nombre a raíz de que la empresa española Sistemas Embebidos, ubicada en Logroño, y creadora de estos módulos, fuera adquirida hace pocos años por la empresa estadounidense Digi (propietaria también de muchas otras empresas como Rabbit, de reciente adquisición, o de Maxstream).
Estos módulos han ido evolucionando y han ido apareciendo distintas familias de módulos. Tenemos ahora el ConnectCore 9C, ConnectCore Wi9C, ConnectCore 9P o el ConnectCore XP. Afortunadamente las herramientas de desarrollo también han ido evolucionando y ahora han aparecido los llamados Jumper Start Kits (kits de desarrollo de iniciación). Estos kits poco o nada tienen que ver con la complejidad que tiene trabajar con los modelos CC7U y CC9U. Además, la documentación y los ejemplos de programación suministrados es muy superior a las versiones precedentes. Pero que muy superior. En general en todos pero ha mejorado especialmente en los modelos que funcionan bajo Linux.
He tenido la oportunidad de probar bastantes de estos módulos y sus entornos de desarrollo y la verdad, hay un antes y un después en cuanto a sencillez de uso gracias a estos Jumper Start Kits. Los Jumper Start Kits están disponibles para los modelos ConnectCore 9P, ConnectCore 9C y ConnectCore Wi9C.
¿Y qué características tienen los modelos ConnectCore9C, ConnectCoreWi9C y ConnectCore9P?
Pues el ConnectCore 9C tiene un procesador de 32bits de NetSilicon (propiedad de Digi), concretamente el modelo NS9360 funcionando a una velocidad de reloj de 155MHz. Dispone de hasta 128MB de SDRAM y 256MB de memoria Flash . Tiene un rango de temperaturas extendido, de -40 a 85 grados, lo que le convierte en un candidato idóneo en entornos hostiles en temperatura. En cuanto a Entradas / Salidas dispone de ethernet 10/100, controlador integrado LCD para pantallas TFT/SNT (SVGA), 4 puertos serie de alta velocidad (921kbps), 55 GPIOs, SPI, I2C, 2 puertos USB 2.0 (host y esclavo).
El Connect Core Wi9C es básicamente idéntico al anterior, pero incorpora además del puerto ethernet un módulo Wifi. Las aplicaciones apropiadas para este módulo son evidentes, aplicaciones en las que se requiera el uso de comunicaciones Wifi.
Por último tenemos el Connect Core 9P. Este módulo también es gobernado por el procesador NS9360 pero trabajando a una velocidad de reloj lijeramente superior, 177MHz. Dispone de hasta 128MB de SDRAM y 128MB de memoria Flash y de 8KB de memoria EEProm para el almacenaje de variables. Como entradas / salidas tiene puerto ethernet 10/100, controlador integrado LCD para pantallas TFT/SNT (SVGA), 4 puertos serie de alta velocidad (921kbps), 55 GPIOs, SPI (de hasta 11.25Mbps), I2C (hasta 400Khz), puerto USB 2.0 (host y esclavo), 4 salidas PWM y RTC con batería de backup. ¿Aplicaciones? Pues las aplicaciones son similares a las del CC9C. Este es un dispositivo de menor tamaño que los anteriores y en ocasiones puede resultar más conveniente. También es un dispositivo que dispone de un consumo algo inferior y una capacidad de procesado algo mayor.
¿Y para qué sistemas operativos están disponibles estos Jumper Start Kits?
Dentro de los ConnectCore 9C,Wi9C y 9P pueden correr 3 sistemas operativos. Por un lado el Sistema operativo NetSilicon (un sistema operativo en tiempo real), ó el sistema operativo Linux embedded (Linux no es tiempo real) y por último el Sistema Operativo Windows CE 6.0 (El sistema operativo de Microsoft para sistemas embedded y que sí es tiempo real).
¿Qué sistema operativo elegir?
Pues la verdad es que esta es una buena pregunta. De los 3 sistemas operativos yo personalmente me quedo con 2, con los más conocidos, que son Linux embedded y Windows CE 6.0. Y de entre estos dos, esto ya es muy a nivel personal, que los Linuxeros no se enfaden (que blogElectronica.com está alojado en un server Linux), pero blogElectronica, para desarrollo embedded, se queda con el Sistema Operativo Windows CE 6.0. Aunque ambos tienen sus ventajas. Por un lado Linux es un sistema operativo libre, open source, y no hay que pagar licencias. Pero por otro lado WindowsCE 6.0 es un sistema operativo más amigable, con documentación más ordenada (msdn de Microsoft) y puedes programar las aplicaciones en el lenguaje que te encuentres más cómodo, como Visual C++, C# o Visual Basic .net. Realizar aplicaciones gráficas con Windows CE tampoco tiene rival, es muy sencillo. De hecho probablemente aunque no lo sepas ya sabes programar en cierta manera buena parte de estos dispositivos, pues se programan con Visual Studio 2005. Y sí … ya lo sé … hay que pagar licencia del Sistema Operativo por cada módulo … Pero bueno, tampoco es una barbaridad, el coste de una licencia de Windows CE (si compras un paquete de 100 licencias) es de unos 4 Euros (una sola licencia creo que son unos 7 Euros).
En fin, para elegir entre un sistema operativo u otro hay que poner en un lado de la balanza la comodidad, la sencillez de uso (para tener los menos dolores de cabeza posibles) y la velocidad de desarrollo para sacar un producto al mercado. En el otro lado de la balanza el coste de la licencia. A mi me pesa más lo primero, a otros, a lo mejor lo segundo. Como dije a principio, custión de gustos.
Si a alguien le interesa uno de estos equipos saber que el distribuidor oficial en España de Digi es Matrix Electrónica.
Espero que encuentres de interés estos módulos embebidos.
5 Comentarios »
Posiblemente en alguna ocasión tengamos la necesidad de incorporar a nuestros diseños capacidad de comunicación IP. Una solución muy utilizada hoy en día es utilizar pequeños módulos OEM conversores serie-ethernet, una manera extraordinariamente sencilla y rápida de incorporar capacidad de comunicaciones TCP/IP a nuestros equipos ya diseñados (es decir, equipos para los que no queremos rediseñar por completo su hardware o firmware).
Existen multitud de soluciones en el mercado. Destacan entre ellas los conversores serie-ethernet de Digi, especialmente el modelo Digi Connect-Me (un modelo del que hablaremos próximamente y del que puedo decir que es una auténtica maravilla), también destacan por precio los conversores de Artila (de los que hablé hace un tiempo en otro post y de los que algunos modelos se suministran en formato OEM (sin caja)), más económicos, aunque con algunas prestaciones menos.
Sin embargo, si tenemos cierta capacidad de desarrollo software, puede resultarnos también interesante, pues es bastante económico, utilizar algún módulo embebido de Rabbit. Lo único que tendríamos que hacer es una pequeña aplicación que haga de pasarela entre los puertos serie y el puerto ethernet. Una aplicación muy sencilla de la que incluso tenemos una parte hecha, pues en el SDK (Software Development Kit) ya viene un ejemplo, algo sencillo, pero que sirve de base para realizar dicha aplicación. Ahora mismo no lo tengo a mano, pero en unos días intentaré colgar un ejemplo básico de programita en C de conversión serie ethernet con estos dispositivos. Veréis que fácil es.
¿Ventajas?
Principalmente el precio, que dispondremos de varios puertos serie y que podremos diseñar la aplicación para que el gateway serie-ethernet funcione exactamente como nosotros deseamos.
¿Inconvenientes?
Esto resulta útil para aplicaciones sencillas. Hay que ser realistas, realizar un firmware tan completo como el implementado en el Digi Connect Me, con sus innumerables prestaciones, no es posible. Tendremos un gateway más limitado que algunos modelos comerciales ya finalizados, pero con suficientes prestaciones para la mayoría de los casos.
¿Qué modelo elegir?
Pues depende de la velocidad a la que queramos trabajar. Si las velocidades lo permiten yo aconsejo (es el que yo más utilizo) el modelo Rabbit RCM3710 (el que tenéis en la foto de arriba). Un pequeño dispositivo con 4 puertos serie y muy económico que lo hacen ideal para este tipo de diseños.
Mi amigo Javi, grandísimo conocedor de sistemas embebidos, me pasó hace algún tiempo una tabla muy útil para los procesadores de la familia 3000 de Rabbit. Con ella es facil escoger el módulo que debemos seleccionar en función de la velocidad de reloj de los micros para las velocidades serie que necesitemos. Seguro que la encontráis de utilidad en alguna ocasión.
Y bueno, si algún dia necesitáis alguno de estos dispositivos de Digi ó Rabbit (para quien no lo sepa le comento que Rabbit pertenece a Digi, pues fue adquirida por esta empresa Americana hace ya algún tiempo) que sepáis que son distribuidos en España por Matrix.
Espero que este post pueda resultaros de utilidad algún día
3 Comentarios »
Se acaban las vacaciones para todos. Muchos decimos, “ufff, vuelta a madrugar, vuelta a trabajar … a ver si tengo suerte y me toca la lotería … “. De hecho la recaudación por loterías aumenta siempre en Septiembre de forma cosiderable. Hoy me han enviado un email con un link a un flash de esos que no dejan indiferente. Lo podéis ver aquí. Tras ver ese flash uno puede darse cuenta realmente de la suerte que tiene por tener que madrugar, por tener que trabajar … en definitiva la suerte que tenemos de haber nacido donde hemos nacido y de lo insignificantes que realmente son la mayoría de nuestros problemas y pequeños sacrificios cotidianos en comparación con esa tragedia. Espero y deseo que algún día Internet pueda llevar el conocimiento gratuito a toda esa gente, que es la base imprescindible para poder prosperar.
En fin … volviendo al temas más mundanos, hoy voy a empezar una serie de artículos relacionados con módulos embebidos (o embedded modules) bajo Linux embbeded. Los iré alternando con otros artículos de temática diversa. Como hay que basarse en algo, lo voy a hacer en módulos embebidos de Digi, concretamente en los modelos ConnectCore9C, ConnectCore9P o ConnectCoreWi9C. A aquellos que vayan a utilizar otra marca creo que también les puede servir, pues los conceptos son muy parecidos. Evidentemente a quien use los módulos de Digi (de los que he de reconocer que ha mejorado mucho la documentación) les resultará más útil e interesantes todos estos post. De hecho para estos capítulos me voy a basar en la documentación oficial de Digi.
¿Qué diferencias hay entre aplicaciones para PC convencional o para sistemas embebidos?
No es lo mismo desarrollar aplicaciones para un PC convencional que para un sistema embebido. El desarrollo de aplicaciones para sistemas embebidos implica tocar bastantes elementos además de la propia aplicación, como son el Sistema Operativo y sus posibles personalizaciones, los drivers, el sistema de ficheros, entre otros. Como he dicho antes nos vamos a basar en el S.O. Linux Embedded, muy extendido hoy en día en este tipo de dispositivos debido a la propia naturaleza de Linux, disponible para muchas arquitecturas de hardware que lo hacen un buen candidato para estos menesteres. Veamos algunos conceptos.
Cross-compilation (compilación cruzada).
Siempre que desarrollemos el software para un dispositivo embebido en una plataforma con una arquitectura de procesador diferente, es necesario utilizar un entorno de desarrollo cruzado. Un compilador cruzado es un compilador que se ejecuta en el sistema de desarrollo, es decir, en nuestro PC portátil o de sobremesa (Intel x86, por ejemplo) donde desarrollamos la aplicación para el módulo embebido, pero que el código que genera se ejecuta en otro procesador. En nuestro caso de los módulos de Digi, en procesadores ARM.
Boot loader.
El boot loader es un pequeño software que se ejecuta justo al encender un ordenador. Si hablamos de nuestro PC de sobremesa, este pequeño programa que reside en el MBR (Master Boot Record) de nuestro disco duro, se ejecuta una vez que la BIOS del ordenador ha inicializado todo el sistema. El boot loader entonces pasa información del sistema al Kernel, es decir, la partición del disco duro donde se montará la root y finalmente se ejecuta el propio kernel.
Pero si hablamos de sistemas embebidos esto es más complicado, ya que estos sistemas NO tienen BIOS que inicialicen el sistema y la inicialización del microprocesador, de los controladores de memoria, y en definitiva de todo el hardware de la placa debe hacerlo el programita de la boot antes de que se ejecute el Kernel del sistema.
Como mínimo el boot loader debe inicializar el hardware, especialmente los controladores de memoria y arrancar el sistema operativo con los parámetros adecuados, aunque también puede tener funcionalidades adicionales, como la lectura y escritura en memoria, y todas aquellas funcionalidades que permiten poder actualizar el firmware (sistema operativo, aplicaciones, …) en la memoria flash del equipo vía serie o ethernet.
El Kernel
El Kernel es la parte fundamental del sistema operativo, el núcleo del sistema. Es el responsable de la gestión de los recursos y las comunicaciones entre el harware y el software, proporcionando una abstracción de hardware y proporcionando una manera segura de acceder al sistema de memoria. También es el responsable del control de las interrupciones y de todas las operaciones de E/S (Entrada/Salida).
Modulos del Kernel.
Los módulos del kernel son pequeños programitas que son cargados y descargados por el kernel del sistema en función de las necesidades. A modo de ejemplo, un driver de un dispositivo lo podéis ver como un módulo del kernel, el cual permite a dicho kernel poder acceder al hardware conectado al sistema. Si no hubiera módulos tendrían que implementarse en el propio kernel y éste sería terriblemente largo y poco abierto. De esta manera cuando modifiquemos un módulo no tendremos la necesidad de recompilarlo todo de nuevo.
Root File System.
Como sabéis los Sistemas Operativos manejan ficheros y directorios. El Root File System digamos que está en el techo del árbol de directorios y ficheros. Éste contiene ficheros y directorios críticos para las operaciones del sistema como pueden ser los programas de inicialización del sistema.
Aplicaciones.
Esto es lo que más conocéis todos, pues son los programas que utilizan los recursos de un procesador para realizar tareas. Las aplicaciones hacen uso de los dispositivos hardware, como hemos dicho a través de los drivers, los cuales son parte del kernel.
Espero que os haya resultado interesante esta primera introducción.
4 Comentarios »
En los próximos días voy a empezar a hablar de los módulos embebidos de Rabbit Semiconductor (distribuidos en España por Matrix Electrónica). De todos los módulos procesados embebidos que conozco éstos son, los que más me gustan (y con diferencia). ¿Por qué? Pues por su versatilidad, por su potencia, por la extraordinaria facilidad de uso y por los cientos y cientos de ejemplos que hay que hacen que casi para cualquier desarrollo que quieras hacer haya un ejemplo disponible, sino igual, bastante parecido, que siempre es un buen punto de partida. Todo ello permite implentaciones rápidas y sin dolores de cabeza.
No he comentado lo que es un módulo microprocesado embebido, y como tal vez algún lector no lo sepa, lo comento muy rápidamente. Un módulo microprocesado embebido (en este caso de Rabbit) consiste en una pequeña placa (PCB) donde está montado pricipalmente un microprocesador, las memorias (RAM, FLASH, …) y todos aquellos componentes necesarios para poder trabajar con el micro (como los relojes, y otra serie de componentes externos). Estas pequeñas placas cuentan con conectores (en el caso de Rabbit tienen 1 ó 2 conectores de inserción) para poder incorporarlos en nuestros diseños. Una explicación mucho más precisa de un sistema embebido la podéis encontrar aquí.
Pero antes de hablar de los módulos embebidos de Rabbit es necesario hablar de los microprocesadores que montan estos módulos. Hay que decir que normalmente los usuarios de Rabbit utilizan sus módulos, más que sus micros directamente, ya que los módulos embebidos son una solución acabada, probada y muy económica. Muy difícil es que diseñemos una placa similar a uno de sus módulos y que nos salga más económico, pues Rabbit vende cientos de miles de módulos al año, con lo que el precio lo tiene muy ajustado.
¿Y cuales son los modelos de micros de Rabbit?
Rabbit 2000
Este es el microprocesador de Rabbit de menores prestaciones. Es un microprocesador de 8 bits pero que supera en cuanto a prestaciones a muchos microprocesadores de 16. Trabaja a 5V a una velocidad máxima de reloj de 30Mhz. Dispone de 4 puertos serie de alta velocidad (hasta un maximo de la velocidad de 460800 bps) y un bus de direccionamiento de 20bits. Dispone de 40 pines I/O de proposito general, RTC, Watchdog y permite trabajar en bajo consumo (32KHz)
Rabbit 3000
Evolución de la familia Rabbit 2000. Es también un micro de 8bits de altísimas prestaciones. La tensión de trabajo es de 1.8-3.6V, pero es también tolerante a 5V (muy útil cuando trabajamos con otros compomentes que trabajan a este voltaje). La frecuencia máxima de reloj es de 55Mhz. Cuenta con 6 puertos serie de ata velocidad (hasta un maximo de 460800bps), un bus de direccionamiento de 20 bits (lo que le permite direccionar hasta 1MB), 10 timers de 8 bits y 1 timer de 10bits, RTC y 56 pines de I/O de propósito general. También es posible trabajar en modo bajo consumo (32Khz) y ultrabajo consumo (16,8,2 KHz).
Rabbit 4000
El último diseño de Rabbt, evolución del Rabbit 3000. Como características principales decir que sigue siendo un micro de 8 bits (pero de altísimas prestaciones). La tensión de trabajo es 1.8 voltios, aunque las I/O también pueden trabajar a 3.3 voltios (en este caso ya no es tolerante a 5v). La frecuencia de trabajo es de hasta 60Mhz y ya viene integrado con un controlador Ethernet (cosa que para los anteriores modelos es necesario utilizar un chip externo de Realtech). En este caso el bus de direcciones es de 24 bits (frente a los 20 de la serie 3000). También dispone de 12 timers (diez de 8 bits, uno de 10 bits y otro de 16bits), 8 canales DMA, 40GPIOs de propósito general y permite trabajar también en modo bajo consumo (32Khz) y ultrabajo consumo (16,8,2 KHz).
Si quereis más información la podéis encontrar en http://www.rabbitSemiconductor.com. Aunque desde hace unos meses también es posible acceder a la web a través de http://www.Rabbit.com. Como curiosidad os puedo decir que Rabbit desembolsó una importante cantidad de dinero para comprar ese dominio, antes ocupada por una web con otro tipo de contenidos, os lo podéis imaginar … (Por cierto, y aunque no tenga nada que ver con la electrónica, pero seguro que a más de uno (y de cien) le resulta muy interesante, os paso el siguiente link: http://www.archive.org/web/web.php . En él podréis ver el pasado de un dominio, es decir, qué había en una determinada web en una deteminada fecha. No tiene desperdicio, es un link para guardarlo en favoritos, como blogElectronica ).
Bueno, y volviendo al tema … en los siguientes posts publicaré algún artículo de módulos embebidos de Rabbit vistos en profundidad (especialmente de la serie 3000 que son los que más conozco. Seguramente será el modelo más usado, el RCM3700), así como también veremos el entorno de desarrollo que se utiliza con ellos (el Dinamyc C) del cual intentaré poner algún video para que lo veáis. Veréis lo amigable que resulta trabajar con estos módulos.
Espero que os resulte de interés este post
16 Comentarios »
|