Como utilizar SDK en un micro? (AVR p.ej)

Hola a todos,
ANtes que nada indicar que soy principiante. Itento aclarar algunas dudas / conceptos sobre como funciona este mundillo de los microcontroladores.
Mi duda es la siguiente:
Supongamos que contruyo una placa con un microcontrolador AVR ( el que sea) , y esta placa se conecta mediante USB a una camara digital.
Si dispongo del SDK ( en lenguaje C)de desarrollo oficial del fabricante de la camara, puedo hacer programas en un PC para manejar la camara....PERO:

1.-Imagino que hay formas de "introducir" ese SDK ( o parte de el ) en el microcontrolador para dar a mi placa la capacidad de operar/manejar con la camara.
Y la duda es que formas hay de hacer esto? como cargo ese sdk en un microcontrolador AVR por ejemplo ?hay que cargarlo como si de un firmware se tratase?...o se almacena en una eeprom o ...
2.- Si esta placa esta dotada de , digamos, conexion wifi, el micro necesita tener disponible un micro stack TCP/IP o algo asi ¿?
como se hace esto a grandes trazos?

igual es ridicula la pregunta pero no lo tengo claro, asi que si alguien me saca de mi ignorancia se lo agradecere.

gracias de antemano
magoderi
 
Primero, los AVR (y los PIC) de 8 bits no están pensados para aplicaciones similares, así que hay que 'emigrar' a los AVR o PIC de 32 bits. Y estos suelen usar Linux, si bien puedes encontrar el WinCE o similar para el AVR32, pero entonces hay que pagar licencias ya tal.

En cualquier caso, nada sencillo. Son dos mundos totalmente diferentes.
 
Hola: Interesante el tema, pero me temo que sé menos que tu sobre él.
Se me ocurre una idea (solo una idea): por lo general las cámaras digitales poseen un puerto USB, sé que a traves de ese puerto accedes a la memoria de la cámara, lo que debes averiguar es si a traves del USB también puedes tener acceso a las demás funciones de la cámara (disparo, manejo del zoom, etc), si eso es posible, entonces puedes usar un micro con USB y escribir un programa para que el micro maneje la cámara, o podrías manejarla tú por control remoto (microcontrolador mediante).
Saludos.
Aqui hay algo: http://photopc.sourceforge.net/
 
1.-Imagino que hay formas de "introducir" ese SDK ( o parte de el ) en el microcontrolador para dar a mi placa la capacidad de operar/manejar con la camara.
Y la duda es que formas hay de hacer esto? como cargo ese sdk en un microcontrolador AVR por ejemplo ?hay que cargarlo como si de un firmware se tratase?...o se almacena en una eeprom o ...

Depende.... EL SDK no se carga en el micro... tu desarrollas el programa basandote en las rutinas de ejemplo del SDK y tu programa define desde donde correra... en el 99% de las aplicaciones corre desde la memoria del chip y se carga usando un programador convencional

2.- Si esta placa esta dotada de , digamos, conexion wifi, el micro necesita tener disponible un micro stack TCP/IP o algo asi ¿?
como se hace esto a grandes trazos?

sip... necesitas un stack TCP que te permita hacer la comunicacion, ya sea de algun fabricante o diseñado por ti.....
 
Bueno , ya voy viendo la luz...
La limitacion que veo es entonces la memoria del micro, ya que el sdk seguro que es enorme.
-Entonces desarrollo un programa en C para manejar el chip y sus funciones , I/O, etc y voy haciendo #includes de las librerias del SDK que me interesen . para poder llamar funciones nativas de la camara , es eso ?

-Bien, y una vez que tengo ese programa compilado para AVR (imagino que hay compilador especifico para ello ? , como lo "meto" en el Micro? Con el AVRStudio o algo asi?Se carga estilo firmware ?

- hay algun software para ver/cargar/extraer lo que ya esta en el micro y , por ejemplo revisarlo/modificarlo?

-La forma de utilizar el Stack tpc/ip es igual que el sdk, a base de includes supongo ?

De lo que he leido parece que funciona, asi pero busco confirmaciones de gente( seguramente como vosotros) que ya estais metidos en harina....
gracias a todos por ayudar
saludos
 
El AVRStudio, junto con el WinAVR son gratuitos y las herramientas preferidas para programar los AVR. Para 'programar' el micro en el sentido físico, necesitas un programador, como el AVRISP MkII, que cuesta alrededor de unos 30€, o un clónico del mismo (algo más barato), o un AVRDragon (quizás más conveniente, pues te permite depurar AVR's de menos de 32K), o un JTAGICE MkII, (unos 300€) que sirve para programar y depurar cualquier AVR.

Pero ojo, segú lo que pretendas hacer, un AVR (o cualquier otro micro de 8 bits) se queda realmente corto. También hay que destacar que los ATmegaUSB1287 te permiten usar el USB como maestro OTG, y hay librerías hechas para leer memorias externas (busca MyUSB, en inglés, de Dean Camera), pero el USB es algo complicado.

Me temo, por lo que puedo intuir (pero no te fies), que igual lo que tu necesitas en realidad es una BeagleBoard.
 
Cuando digo programar , me refiero a hacer que el micro ejecute el programa C que he hecho...supongo que no quedaba muy claro. Creo que lo que tu dices es hacerlo via Assembler o me equivoco ?
Entonces con el AVRstudio y WinAVR se puede cargar el programa C en el Micro?
Creo que la duda de base me viene porque no se si para arrancar el micro hay que cargarle algun programa o ya viene con un bootloader? y que lenguaje puede ejecutar el micro?

Al final me comprare un libro oye !! cuantas dudas.

He mirado la BeagleBoard , seguro que me iria bien pero la veo un poco avanzada para mis conocimientos ahora mismo.
Te explico:
Lo que pretendo hacer es un aparato similar al WFT-E1 de canon: Se acopla a la camara y envia las fotos a un punto de acceso wifi. El SDK de canon se puede conseguir bajo solicitud. Ademas habia pensado añadir un GPS en formato CompacFlash para añadir informacion extra de localizacion a las fotos.
La transferencia wifi es la unica que da ratios aceptables para transmitir fotos de 10 o 12 Mb, y pensaba aprovechar una tarjeta SD Wifi de sandisk que tengo aparcada.
Como ves mucha tela que cortar, pero la idea es que fuese "barato", asi que habia pensado en utilizar Arduino que lleva chip AVR.
A que te refieres con ".. te permiten usar el USB como maestro OTG,"??

veo que tienes experienca en micros, crees que es factible lo que pretendo montar o ....
saludos
 
Yo te recomendaria una computadora embebida ...... como esta:

http://www.embeddedarm.com/products/board-detail.php?product=TS-7500

Esta computadora embebida ejecuta Linux, tiene puertos USB, por donde puedes conectar el WiFi y la Camara. Para el GPS lo puedes hacer por puerto serial.

Ya solo seria cuestion de hacer el programa, lo mas recomendable seria en C. Al tener un sistema operativo, hay cosas que se facilitan bastante.

Para tu aplicación considero que el poder de computo de esta PC es suficiente. Y su precio es bastante competitivo.

Es probable que haya maneras de hacerlo con microcontroladores (tipo AVR) y controladores USB-Host, pero sin duda seria mas complicado y con un tiempo de desarrollo mas amplio.
 
Suscribo la opinión de eidtech. Yo te recomendaría usar la BeagleBoard que usa linux, lleva la pila TCP/IP (incluso hay unas que llevan el WiFi integrado en la placa), USB host con sus drivers, y quizás sólo tengas que modificar lo mínimo tu programa.

Hacer lo mismo con un micro es más difícil. Éstos sólo entienden el código máquina, que se compila (el WinAVR es un compilador de C grautito que se integra en el AVRStudio), sin sistema operativo ni nada similar, ni drivers, ni pila TCP/IP, etc. El programar es compilar el programa en C y luego 'descargarlo' sobre el micro. Esto último se puede hacer con Bootloader si el micro lo lleva (Arduino) o se debe hacer con un programador tal y como lo comento antes.

El tiempo de desarrollo para lo que propones es muuuuuuuy largo si hay que hacerlo en un AVR. Yo mismo tiraría por la BeagleBoard.
 
Entonces con el AVRstudio y WinAVR se puede cargar el programa C en el Micro?
Creo que la duda de base me viene porque no se si para arrancar el micro hay que cargarle algun programa o ya viene con un bootloader? y que lenguaje puede ejecutar el micro?

Cualquier microprocesador sea un 4004 o un intel core i7 solo pueden ejecutar instrucciones en ensamblador (codigo maquina).... lo que hace el compilador es traducir del lenguaje C al lenguaje maquina para que el micro pueda ejecutarlo

Asi que en tu caso especifico, creas el programa en C, despues lo compilas y a la salida obtendras un archivo en hexadecimal (.hex, .coff, o .obj) que es el que tienes que grabar en tu chip usando el programador...

Casi ningun chip sale de fabrica con bootloader cargado... generalmente se tiene que cargar aparte y ya con el bootloader puedes cargar tu codigo de manera mas simple sin usar programador como tal...
 
Atrás
Arriba