lunes, 12 de marzo de 2012

Sistemas Integrados

Un sistema embebido o empotrado es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general (como por ejemplo una computadora personal o PC) que están diseñados para cubrir un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la mayoría de los componentes se encuentran incluidos en la placa base (la tarjeta de vídeo, audio, módem, etc.) y muchas veces los dispositivos resultantes no tienen el aspecto de lo que se suele asociar a una computadora. Algunos ejemplos de sistemas embebidos podrían ser dispositivos como un taximetro, un sistema de control de acceso, la electrónica que controla una máquina expendedora o el sistema de control de una fotocopiadora entre otras múltiples aplicaciones.

Por lo general los sistemas embebidos se pueden programar directamente en el lenguaje ensamblador del microcontrolador o microprocesador incorporado sobre el mismo, o tambien, utilizando los compiladores específicos, pueden utilizarse lenguajes como C o C++; en algunos casos, cuando el tiempo de respuesta de la aplicación no es un factor crítico, tambien pueden usarse lenguajes interpretados como JAVA.

Puesto que los sistemas embebidos se pueden fabricar por decenas de millares o por millones de unidades, una de las principales preocupaciones es reducir los costes. Los sistemas embebidos suelen usar un procesador relativamente pequeño y una memoria pequeña para ello. Los primeros equipos embebidos que se desarrollaron fueron elaborados por IBM en los años 1980. Los programas de sistemas embebidos se enfrentan normalmente a tareas de procesamiento en tiempo real.
Un sistema de gestión que integra todos los sistemas y procesos en una estructura completa permitiendole trabajar como una sola unidad con los mismos objetivos. La gestión integrada proporciona una imagen clara de todos los aspectos de la organización, su interrelación y los riesgos relacionados. También significa minimizar la duplicación y facilitar la adopción de nuevos sistemas en el futuro.

Componentes de un sistema integrado 

En la parte central se encuentra el microprocesador, microcontrolador, DSP, etc. Es decir, la CPU o unidad que aporta capacidad de cómputo al sistema, pudiendo incluir memoria interna o externa, un micro con arquitectura específica según requisitos.

La comunicación adquiere gran importancia en los sistemas embebidos. Lo normal es que el sistema pueda comunicarse mediante interfaces estándar de cable o inalámbricas. Así un SI normalmente incorporará puertos de comunicaciones del tipo RS-232, RS-485, SPI, I²C, CAN, USB, IP, Wi-Fi, GSM, GPRS, DSRC, etc. 

El subsistema de presentación tipo suele ser una pantalla gráfica, táctil, LCD, alfanumérico, etc. 

Se denominan actuadores a los posibles elementos electrónicos que el sistema se encarga de controlar. Puede ser un motor eléctrico, un conmutador tipo relé etc. El más habitual puede ser una salida de señal PWM para control de la velocidad en motores de corriente continua. 

El módulo de E/S analógicas y digitales suele emplearse para digitalizar señales analógicas procedentes de sensores, activar diodos LED, reconocer el estado abierto cerrado de un conmutador o pulsador, etc. 

El módulo de reloj es el encargado de generar las diferentes señales de reloj a partir de un único oscilador principal. El tipo de oscilador es importante por varios aspectos: por la frecuencia necesaria, por la estabilidad necesaria y por el consumo de corriente requerido. El oscilador con mejores características en cuanto a estabilidad y coste son los basados en resonador de cristal de cuarzo, mientras que los que requieren menor consumo son los RC. Mediante sistemas PLL se obtienen otras frecuencias con la misma estabilidad que el oscilador patrón. 

El módulo de energía (power) se encarga de generar las diferentes tensiones y corrientes necesarias para alimentar los diferentes circuitos del SE. Usualmente se trabaja con un rango de posibles tensiones de entrada que mediante conversores ac/dc o dc/dc se obtienen las diferentes tensiones necesarias para alimentar los diversos componentes activos del circuito. 

Además de los conversores ac/dc y dc/dc, otros módulos típicos, filtros, circuitos integrados supervisores de alimentación, etc. 

El consumo de energía puede ser determinante en el desarrollo de algunos sistemas embebidos que necesariamente se alimentan con baterías, con lo que el tiempo de uso del SE suele ser la duración de la carga de las baterías. 

Aplicaciones de un sistema integrado 

Los lugares donde se pueden encontrar los sistemas embebidos son numerosos y de varias naturalezas. A continuación se exponen varios ejemplos para ilustrar las posibilidades de los mismos:
 
• En una fábrica, para controlar un proceso de montaje o producción. Una máquina que se encargue de una determinada tarea hoy en día contiene numerosos circuitos electrónicos y eléctricos para el control de motores, hornos, etc. que deben ser gobernados por un procesador, el cual ofrece un interfaz persona – máquina para ser dirigido por un operario e informarle al mismo de la marcha del proceso. 

• Puntos de servicio o venta (POS, Point Of Service). Las cajas donde se paga la compra en un supermercado son cada vez más completas, integrando teclados numéricos, lectores de códigos de barras mediante láser, lectores de tarjetas bancarias de banda magnética o chip, pantalla alfanumérica de cristal líquido, etc. El sistema embebido en este caso requiere numerosos conectores de entrada y salida y unas características robustas para la operación continuada.
• Puntos de información al ciudadano. En oficinas de turismo, grandes almacenes, bibliotecas, etc. existen equipos con una pantalla táctil donde se puede pulsar sobre la misma y elegir la consulta a realizar, obteniendo una respuesta personalizada en un entorno gráfico amigable.
• Decodificadores y set-top boxes para la recepción de televisión. Cada vez existe un mayor número de operadores de televisión que aprovechando las tecnologías vía satélite y de red de cable ofrecen un servicio de televisión de pago diferenciado del convencional. En primer lugar envían la señal en formato digital MPEG-2 con lo que es necesario un procesado para decodificarla y mandarla al televisor. Además viaja cifrada para evitar que la reciban en claro usuarios sin contrato, lo que requiere descifrarla en casa del abonado. También ofrecen un servicio de televisión interactiva o web-TV que necesita de un software específico para mostrar páginas web y con ello un sistema basado en procesador con salida de señal de televisión.
• Sistemas radar de aviones. El procesado de la señal recibida o reflejada del sistema radar embarcado en un avión requiere alta potencia de cálculo además de ocupar poco espacio, pesar poco y soportar condiciones extremas de funcionamiento (temperatura, presión atmosférica, vibraciones, etc.).
• Equipos de medicina en hospitales y ambulancias UVI – móvil.
• Máquinas de revelado automático de fotos.
• Cajeros automáticos.
• Pasarelas (Gateways) Internet-LAN.
• Y un sin fin de posibilidades aún por descubrir o en estado embrionario como son las neveras inteligentes que controlen su suministro vía Internet, PC de bolsillo, etc.

Los equipos industriales de medida y control tradicionales están basados en un microprocesador con un sistema operativo privativo o específico para la aplicación correspondiente. Dicha aplicación se programa en ensamblador para el microprocesador dado o en lenguaje C, realizando llamadas a las funciones básicas de ese sistema operativo que en ciertos casos ni siquiera llega a existir. Con los modernos sistemas PC embebida basados en microprocesadores i486 o i586 se llega a integrar el mundo del PC compatible con las aplicaciones industriales. Ello implica numerosas ventajas:
• Posibilidad de utilización de sistemas operativos potentes que ya realizan numerosas tareas: comunicaciones por redes de datos, soporte gráfico, concurrencia con lanzamiento de threads, etc. Estos sistemas operativos pueden ser los mismos que para PC compatibles (Linux, Windows, MS-DOS) con fuertes exigencias en hardware o bien ser una versión reducida de los mismos con características orientadas a los PC embebidos.
• Al utilizar dichos sistemas operativos se pueden encontrar fácilmente herramientas de desarrollo software potentes así como numerosos programadores que las dominan, dada la extensión mundial de las aplicaciones para PC compatibles.
• Reducción en el precio de los componentes hardware y software debido a la gran cantidad de PC en el mundo.


Bibliografias:

Lenguaje Basic.

BASIC es el acrónimo de Beginners All-purpose Symbolic Instruction Code (en español ‘código de instrucciones simbólicas de propósito general para principiantes’) y está ligado al nombre de un trabajo sin publicar del co inventor del lenguaje, Thomas Kurtz (el nombre no está relacionado con la serie de C. K. Ogden, Basic English).

Nacimiento y primeros años
El lenguaje BASIC original fue inventado en 1964 por John George Kemeny (1926-1993) y Thomas Eugene Kurtz (1928-) en el Dartmouth College. En los años subsiguientes, mientras que otros dialectos de BASIC aparecían, el BASIC original de Kemeny y Kurtz era conocido como BASIC Dartmouth.

BASIC fue diseñado para permitir a los estudiantes escribir programas usando terminales de computador de tiempo compartido. BASIC estaba intencionado para facilitar los problemas de complejidad de los lenguajes anteriores, con un nuevo lenguaje diseñado específicamente para la clase de usuarios que los sistemas de tiempo compartido permitían: un usuario más sencillo, a quien no le interesaba tanto la velocidad, sino el hecho de ser capaz de usar la máquina. Los diseñadores del lenguaje también querían que permaneciera en el dominio público, lo que contribuyó a que se diseminara.

Los ocho principios de diseño de BASIC fueron: 
1. Ser fácil de usar para los principiantes.
2. Ser un lenguaje de propósito general.
3. Permitir que los expertos añadieran características avanzadas, mientras que el lenguaje permanecía simple para los principiantes.
4. Ser interactivo.
5. Proveer mensajes de error claros y amigables.
6. Responder rápido a los programas pequeños.
7. No requerir un conocimiento del hardware de la computadora.
8. Proteger al usuario del sistema operativo.

El lenguaje fue en parte basado en FORTRAN II y parte en Algol 60, con adiciones para hacerlo apropiado en sistemas de tiempo compartido y con elementos que facilitaran la operación aritmética de matrices. BASIC fue implementado por primera vez para la mainframeGE-265, máquina que soportaba múltiples terminales.

En 1968 Edsger Dijkstra publicó un carta con una famosa crítica en la que consideraba que los lenguajes de programación que usaban sentencias GOTO para estructurar un programa eran nocivos para la productividad del programador, y para la calidad del código resultante. En este artículo no se menciona a ningún lenguaje de programación en particular; únicamente se indica que el uso excesivo de GOTO en lenguajes de alto nivel es algo no recomendable, y proporciona las razones técnicas por las que esto es así. Pero sí se observó, desde sus inicios, una marcada tendencia de los programadores a utilizar excesivamente el GOTO en BASIC, máxime en los noveles; hecho éste que fue decreciendo con la incorporación al lenguaje de otros recursos, tales como subrutinas parametradas, y posteriormente con la aparición de técnicas de programación estructurada.

Contrario a la creencia popular, BASIC inicialmente no era un lenguaje interpretado sino compilado. Casi inmediatamente después de su lanzamiento, los profesionales de computación comenzaron a alegar que BASIC era muy lento y simple. Tal argumento, hasta no hace mucho, fue un tema recurrente en la industria de las computadoras.

Aun así, BASIC se extendió hacia muchas máquinas y plataformas, y se popularizó moderadamente en las minicomputadoras como las de la serie DEC PDP y la Data General Nova. En estos casos, el lenguaje era implementado como intérprete, en vez de un compilador, o alternativamente, en ambas formas de funcionamiento.


Sintaxis

La sintaxis mínima de BASIC sólo necesita los comandos LET, INPUT, PRINT, IF y GOTO. Un intérprete que ejecuta programas con esta sintaxis mínima no necesita una pila. Algunas de las primeras implementaciones eran así de simples. Si se le agrega una pila, se pueden agregar también ciclos FOR anidados y el comando GOSUB. Un intérprete de BASIC con estas características necesita que el código tenga números de línea.

Los números de línea fueron un aspecto muy distintivo del BASIC clásico. Sin embargo, el uso de números de línea tiene la desventaja de requerir que el programador estime cuántas líneas ocupará la parte del programa que escribe. Este requerimiento se cumple generalmente incrementando los números de línea en un intervalo regular, como 10, pero esto lleva a problemas a la hora que el código después agregado exceda el espacio disponible entre las líneas originales. Para aliviar este problema de los primeros intérpretes de BASIC, los usuarios expertos pronto escribieron sus propios programas utilitarios para renumerar sus programas, después del ingreso inicial. Más tarde aparecieron intérpretes de BASIC que incluían un comando específico RENUMBER, el que permitía renumerar rápidamente (y las veces que se quisiera) todo el código nuevamente, con cualquier intervalo entre líneas indicado y a partir de un número entero dado; eliminando así el principal problema de la numeración de líneas obligatoria.


En los dialectos modernos de BASIC MIUN ya no es necesario incluir números de línea (aunque son permitidos), y la mayoría (o todos) han añadido control de flujo estructurado y los constructores de declaración de datos similares a los de otros lenguajes, tales como C y Pascal:
• do
• loop
• while
• until
• exit
• on... goto
• gosub
• select ... case

Casi todos los dialectos de BASIC incluyen el comando REM (remark), que posteriormente fue sustituído por el símbolo ´ (apóstrofo o comilla simple). Es un comando no ejecutable, se utiliza a los fines de incluir líneas y notas aclaratorias en el código fuente, para la mejor comprensión (y documentación) del programa.

Variantes recientes como Visual Basic han introducido algunas características orientadas a objetos, y hasta herencia en la última versión. La administración de memoria es más fácil que con muchos otros lenguajes de programación procedurales por el uso de un Recolector de basura (y a costas de la velocidad de ejecución).

Procedimientos y Control de Flujo 


BASIC no tiene una biblioteca externa estándar como otros lenguajes como C. En cambio, el intérprete (o compilador) contiene una biblioteca incorporada de procedimientos intrínsecos. Estos procedimientos incluyen la mayoría de las herramientas que un programador necesita para aprender a programar y escribir aplicaciones sencillas, así como funciones para realizar cálculos matemáticos, manejar cadenas, entrada desde la consola, gráficos y manipulación de archivos.

Viejos dialectos de BASIC no permitían a los programadores escribir sus propios procedimientos. Los programadores en cambio debían escribir sus programas con un gran número de enunciados GOTO para hacer las derivaciones de flujo y retorno del programa. Esto podía producir un código fuente muy confuso (la mayoría de las veces era así), comúnmente conocido como Código espagueti; el cual era sumamente difícil de mantener, mucho menos por programadores ajenos al desarrollo del software.

Con la inclusión posterior de enunciados GOSUB (Go-Subroutine) se ramificaba el programa a especies de subrutinas, sin parámetros o variables locales. Ellas proveen una forma de implementar una suerte de procedimientos (realmente no lo son, sencillamente es un "salto y retorno") y estructurar más el programa, evitando bastante la utilización de la dañina sentencia GOTO.

Tipos de Datos
BASIC es reconocido por tener muy buenas funciones para manipular cadenas de caracteres. Los primeros dialectos ya tenían un juego de funciones fundamentales (LEFT$, MID$, RIGHT$) para extraer y/o reemplazar subcadenas cadenas fácilmente. Como las cadenas son utilizadas en aplicaciones diarias, esta era una ventaja considerable sobre otros lenguajes al momento de su introducción.

El Dartmouth BASIC original soportaba únicamente datos de tipo numérico y cadenas. No había un tipo entero. Todas las variables numéricas eran de punto flotante. Las cadenas eran de tamaño dinámico. Soportaba arreglos de ambos, números y cadenas, en una o dos dimensiones.

Cada dialecto moderno de BASIC posee al menos los tipos de datos numérico y string (cadena). Estos tipos de datos se pueden distinguir usando un posfijo: los identificadores de cadenas terminan con $ (signo pesos, ejemplo la variable NOMBRE$), mientras que los numéricos sencillamente no llevan posfijo; a menos que se requiera indicar y forzar explícitamente qué tipo de numérico es, por ejemplo A% es entero, A! es real simple precisión y A# es real doble precisión.

En BASIC las variables no necesitan forzosamente ser declaradas antes de usarse, excepto los arreglos de más de 10 elementos; aunque versiones BASIC relativamente modernas poseen la opción (considerada buena práctica de programación) para obligar al programador a declarar toda variable antes de su uso (una directiva como OPTION EXPLICIT). La declaración de variables en BASIC se hace usando la palabra clave DIM.

Muchos dialectos también soportan tipos numéricos adicionales, como enteros de 16 y 32 bits (simple y long, respectivamente), además de sus números de punto flotante. Adicionalmente algunos permiten la utilización de tipos de datos definidos por el usuario, similar a los "records" de Pascal, o las "structs" de C.

Versiones modernas de BASIC (como VBA) soportan una gran variedad de tipos de datos primitivos (o intrínsecos), además de los definidos por el usuario.

La mayoría de los dialectos de BASIC soporta arreglos en todos sus tipos de datos; es común también el soporte para arreglos mulidimensionales.

 Disponibilidad y variantes del lenguaje


BASIC está disponible para casi todas las plataformas y sistemas operativos existentes. Una implementación gratuita que cumple con estándares y es multiplataforma es Bywater BASIC (bwBASIC). El intérprete está escrito en C y viene bajo la licencia GNU. Está diseñado para interfaz de texto o consola (no gráfica), no incluye soporte para crear interfaces gráficas de usuario (GUI's, Graphical User Interface). Hay un BASIC gratuito que si incluye soporte para GUI, es similar a Visual Basic y se ejecuta en Windows y GNU/Linux, es Phoenix Object BASIC.

Las versiones de intérpretes/compiladores más conocidos son la línea de productos Quick BASIC y QBASIC, éste último es sólo intérprete, ambos son de Microsoft. En la actualidad lo es el moderno Visual BASIC, que Microsoft ha tratado de mantener al menos mínimamente compatible con incluso las primeras versiones de sus BASIC (en realidad es escasamente compatible), si bien existe FreeBASIC que es un compilador libre, compatible en sintaxis con QBASIC/QuickBASIC.

Otras versiones comerciales incluyen PowerBASIC de PowerBASIC, PureBasic de Fantaisie Software, así como TrueBASIC de TrueBASIC, que cumple con los últimos estándares oficiales de BASIC. (True BASIC Inc. fue fundada por los creadores originales de Dartmouth BASIC.)

REALbasic es una variante disponible para Mac OS Classic, Mac OS X, Microsoft Windows y GNU/Linux, comercializada por los actuales propietarios de Rapid-Q, otra implementación inicialmente libre de BASIC actualmente abandonada. Una versión de un dialecto simple de BASIC para la parrot virtual machine, muestra cómo se implementa un intérprete de BASIC en un lenguaje similar al ensamblador.SmallBASIC es un dialecto que ejecuta en muchas plataformas (Win32, DOS, GNU/Linux y PalmOS) y viene bajo la licencia GNU (GPL).



Si desean saber algo mas de Basic en referencia a todo lo que puede usar esta pagina les ayudara:

Bibligrafias:

domingo, 11 de marzo de 2012

Simuladores electronicos

Existen diferentes tipos de simuladores electrónicos existentes que nos ayudan a construir diversos tipos de prototipos de circuitos electrónicos sencillo o con algún grado de dificultad.

Para esto existen diferentes tipos de herramientas en ubuntu:

Protoboard : Simulador de Circuitos Eléctricos


Esta herramienta nos simula como su nombre lo dice una placa de Protoboard con todos sus elemtos característico, y algo que hace novedoso de este simulador es que tiene integrado el uso de la placa arduino en conjunto para probar los diferentes tipos de proyectos.

Este programa es multiplataforma ya que se puede utilizar en Mac Ox, Linux y Windows

Liga de descarga para ubuntu: http://fritzing.org/download/0.3.1b/linux-32bit/fritzing.2009.06.02.linux.i386.tar.bz2

Ya descargado se descomprime y si inicia la interfaz ejecutando la aplicación de la siguiente manera en terminal: ./Fritzing.sh

Interfaz:



Oregano

Otro de los simuladores es Oregano este editor  mas famosos utilizado para la plataforma linux. Existen varias formas de instalarlo  una de las cuales la mas fácil es por terminal teclado lo siguiente:

sudo apt-get install oregano

Y ya esta instalado, por lo general no instala todos los paquetes y es recomendable instalarlo manualmente para que no exista algún problema.

Ejemplo de simulación:



Posteriormente checamos el resultado de la simulación




Ligas externas:
http://fritzing.org/

jueves, 1 de marzo de 2012

Simuladores, emuladores y herramientas de desarrollo

Qué es un Simulador?
Son objetos de aprendizaje que mediante un programa de software, intentan modelar parte de una réplica de los fenómenos de la realidad y su propósito es que el usuario construya conocimiento a partir del trabajo exploratorio, la inferencia y el aprendizaje por descubrimiento. Los simuladores se desarrollan en un entorno interactivo, que permite al usuario modificar parámetros y ver cómo reacciona el sistema ante el cambio producido. Un simulador es un aparato que permite la simulación de un sistema, reproduciendo su comportamiento. Los simuladores reproducen sensaciones que en realidad no están sucediendo.

Un simulador de computadora es un programa ejecutado en un ordenador con el fin de simular algún tipo de sistema, con el fin de obtener una mejor idea de cómo funciona el sistema. Un simulador de computadora también pueden ser utilizados para simular otro ordenador. Hay dos tipos principales: el completo simulador de sistema y el simulador de conjunto de instrucciones (ISS). Este tipo de simulador de computadora se utiliza a menudo para probar un nuevo software en una amplia gama de configuraciones de hardware, sin tener que utilizar los equipos físicos.

En su nivel más fundamental, se utiliza un simulador de computadora para recrear un la situación de la vida real donde las pruebas de muchos estados diferentes, no sería fácil ni segura. En este caso, utilizando un simulador de computadora ahorra una gran cantidad de tiempo y recursos, y de hecho puede permitir que para las pruebas en profundidad que sería físicamente imposible en el mundo real.

Que es un emulador?
Un emulador es un software que permite ejecutar programas o videojuegos en una plataforma (sea una arquitectura de hardware o un sistema operativo) diferente de aquella para la cual fueron escritos originalmente. A diferencia de un simulador, que sólo trata de reproducir el comportamiento del programa, un emulador trata de modelar de forma precisa el dispositivo de manera que este funcione como si estuviese siendo usado en el aparato original.


Típicamente, un emulador se divide en módulos que corresponden de forma precisa a los subsistemas del equipo emulado. Lo más común, es que un emulador este compuesto por los siguientes módulos:
  • Un emulador de la unidad central de procesamiento. 
  • Un módulo para el subsistema de memoria. 
  • Varios emuladores para los dispositivos de entrada y salida. 

Lo más común es que los buses no sean emulados, por razones de simplicidad y rendimiento, y para que los periféricos virtuales se comuniquen directamente con la UCP y los subsistemas de memoria.

El principal objetivo del emulador, es crear las condiciones necesarias para poder ejecutar un programa diseñado para otras plataformas distintas al PC, de modo que estos programas son utilizados ampliamente para las siguientes actividades:
  • Probar programas de plataformas informáticas diferentes. 
  • Ejecutar juegos de plataforma en un ordenador. 
  • Ejecutar programas de ordenadores antiguos. 

Como podemos ver, los emuladores son ampliamente utilizados para poder jugar juegos antiguos o de plataformas diversas desde la comodidad de nuestro ordenador, utilizando para ello un programa o archivo llamado ROM.

Algunos ejemplos de estos

EMULADOR DE ANDROID DE GOOGLE

Para aquellos de ustedes que quieren probar Android puede utilizar este emulador de Android, que está parchado para funcionar en un PC con Windows como una aplicación independiente, sin tener que descargar e instalar la completa y compleja SDK de Android, e incluso se puede instalar y probar Android aplicaciones compatibles en él.




Andorid sdk

El SDK de Android incluye un emulador de dispositivo móvil que simula todas las características de hardware y software de un dispositivo móvil normal (aunque sin las llamadas). Se ofrece una variedad de teclas de navegación y control, que se puede "presionar" con el ratón o el teclado para generar eventos para su aplicación. También ofrece una pantalla en la que se muestra su aplicación, junto con las otras aplicaciones de Android corriendo.





Iphoney

iPhoney le proporciona un entorno web de píxeles precisos de navegación - Desarrollado por Safari - que se puede utilizar en el desarrollo de sitios web para el iPhone. Es el perfecto de 320 por 480 píxeles de lona para el desarrollo de su iPhone.
iPhoney no es un simulador de iPhone, sino que está diseñado para desarrolladores web que deseen crear 320 por 480 (o 480 por 320) sitios web para su uso con el iPhone. Le da un lienzo en el que poner a prueba la calidad visual de sus diseños.
iPhoney sólo funcionará en Mac OS X 10.4.7 o posterior.

Simulador blackberry


Hay una gran variedad de simuladores de BlackBerry oficiales disponibles para emular la funcionalidad de los productos de BlackBerry real. Con cualquiera de los simuladores de dispositivos BlackBerry, se puede demostrar y probar cómo el software del dispositivo BlackBerry, pantalla, teclado y rueda de desplazamiento trabajará con su aplicación.Estos simuladores también simular el comportamiento en distintas condiciones de la red inalámbrica.

Existen muchos más, aquí les dejo el link donde vienen, además se pueden descargar.

http://eomblog.blogspot.com/2011/09/16-emuladores-para-desarrollo-de.html


Bibliografia:

http://lular.es/a/Internet/2011/09/Que-es-un-simulador-de-computadora.html

http://es.wikipedia.org/wiki/Emulador

http://culturacion.com/2011/10/que-es-un-emulador-y-para-que-se-utiliza/

Ensamblador tarea 1

GAS Sintaxis
GAS o GNU su sintaxis es una forma diferente de la sintaxis de los archivos en lenguaje ensamblador, también conocida como la sintaxis de AT & T. Es comúnmente usado por otras versiones de GAS para otras arquitecturas (es decir, no-x86).

Las diferencias
La sintaxis de GAS puede parecer extraño a alguien que esté familiarizado con la sintaxis de Intel.

Constantes son prefijadas con un "quot;, por lo mov eax, de 50 años se convierte en $ movl 50,% eax. Las constantes son decimal por defecto; constantes hexadecimales son, además, con el prefijo 0x, por ejemplo, "$ 0x50".

Códigos de operación no tienen los tamaños implícitas ni especifica el tamaño como una palabra separada. Por ejemplo, un movimiento de 32 bits con la sintaxis de Intel requiere el "dword" especificador cuando es ambiguo, mientras que la sintaxis de GAS utiliza sufijos. Véase más adelante.
Referencias de memoria a través de registro son en forma de "desplazamiento (base de registro, offset registro, escalar)". Así, la referencia a la memoria [eax + 4 + EDX * 2] se escribe como 4 (% eax,% edx, 2). Tenga en cuenta que los paréntesis se utilizan, NO entre corchetes.
Los nombres de símbolo requieren un "quot; para cargar la dirección, y sin prefijo para acceder a los contenidos. Así, el Intel / NASM sintaxis de la memoria de referencia mov dword eax, [símbolo] es el símbolo movl misma,% eax. Para cargar la dirección de "símbolo", a continuación, Intel / NASM usa la sintaxis de mov eax, símbolo, mientras que GAS utiliza movl símbolo $,% eax.

Los sufijos enteros
b - 8 bits byte. Ejemplo: movb $ 0x40,% al, mover 0x40 constantes en el registro al.
w - palabra de 16 bits. Ejemplo: hacha movw%,% bx, mover registro de hacha en BX.
l - 32 bits de largo. Ejemplo: movl% ecx,% eax, mover registro ECX en eax
q - 64 quadword poco. Ejemplo: (programas de 64 bits solamente) rax movq%, RDX%, se mueven en el registro de rax rdx

Los sufijos flotante (x87)
s - Corto (precisión simple, 32 bits). Ejemplo: FLDS (% eax), la carga de 32 bits "flotador" de la memoria.
l - Long (64 bits). Ejemplo: Sdl (% eax), la carga de 64 bits "doble" de la memoria.
t - Diez byte (80 bits). Ejemplo: fldt (% eax), cargue 80 bits "long double" de la memoria.


Registro
Función
Terminación 16-bits
8-bits
eax
Acumulador
ax
ah
abx
Base index
bx
bh
ecx
Contador
cx
ch
edx
Datos
dx
dh
edi
Destino del index
do
al
esi
Source index
si
bl
ebp
Frame pointer
bp
cl
esp
Stack to pointer
esp
dl


Ahora el codigo:
El codigo que se realizo es muy sencillo, lo que se hace es que te pide un arreglo de numeros y al final te pregunta que numero te gustaria saber cuantas veces se repite.

Codigo en C


Codgio corriendo en c:


Ahora para formar el codigo en ensamblador se uso la siguiente linea:
gcc -S nombre del archivo.c
y se genero el siguiente codigo:


Optimizando el codigo
Para optimizarlo se eliminaron las lineas que agrega gcc y que no sirven, como el nombre del programa e informacion general del compilador, tambien se eliminaron unas lineas que estaban relacionadas con la arquitectura de 64 bits, y se eliminaron las lineas relacionadas con el control de funcion.

El codigo optimizado es el siguiente: