Autor Tema: Controlando disco duro usb con un PIC  (Leído 1315 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Controlando disco duro usb con un PIC
« en: 03 de Abril de 2016, 16:43:49 »
hola a todos, tengo un disco duro usb de 500 gigas de marca TOCHIBA lo que me gustaria saber es como puedo controlarlo con el puerto usb de un PIC ya sea el 18F o si no el PIC32, es para leer y escribir datos en el disco duro.

tambien me pregunto si puedo hacer que el programa del pic se carge desde el disco duro con un bootloader, o sea como hacen los computadores normales que el programa lo tienen guardado en el disco duro pero lo ejecutan en el procesador

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re:Controlando disco duro usb con un PIC
« Respuesta #1 en: 03 de Abril de 2016, 17:59:53 »
Hola RodrigoAndres, no se cual sera el motivo de tu interes por conectar un disco duro a un PIC y tampoco estoy seguro que eso sea practico, aun en el caso de poderse hacer.
En primer lugar los PIC son MICROCONTROLADORES, no son MICROPROCESADORES, tienen muchas limitaciones sobre los microprocesadores y estan destinados a cosas muy concretas que es basicamente la automatizacion y gestion de ciertos dispositivos. Normalmente para esa funcion, basta con los recursos que contienen y en todo caso se pueden agregar otros dispositivos externos, sobretodo de tipo I2C, pero en todo caso no estan diseñados para manipular datos masivamente. Todo ello lleva a la conclusion de que conectar un disco duro de ese tamaño a un PIC no tiene mucho sentido. Y por supuesto todo ello en el caso de que se pueda realizar esa conexion, cosa que desconozco. Ten en cuenta que solo el protocolo de atencion y gestion de la lectura y escritura en el disco duro, seguramente sera muy superior en tamaño a la memoria de programa que tienen los PIC. Volviendo a lo de antes, suponiendo que has conseguido conectar el disco y acceder a el en lectura y escritura, ¿que harias ahora con los datos contenidos en el disco? o ¿de donde sacarias los datos que quieras escribir al disco?.
En fin todo esto es mi opinion, quizas haya alguien que te de argumentos mas concretos.

Saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Controlando disco duro usb con un PIC
« Respuesta #2 en: 03 de Abril de 2016, 20:21:46 »
Siguiendo lo de AcoranTf luego tenes otros problemas.

PIC18 creo que no pueden funcionar como Host, asi que te vas a tener que ir a un PIC32.
Y teniendo un PIC32 luego tenes que ver si es posible que pueda ejecutar codigo desde la RAM, por que reescribir la FLASH es algo imposible (quemarias el micro). Si aun asi todo esta correcto, un programa de 1Gb me pareec ridiculo. Incluso de algunos megas, En fin terminarias mejor con un flash externa que lo mas seguro es que algun PIC32 disponga de un medio para acceder a la misma y ejecutar codigo desde alli.

Si es por que tenes que almacenar muchos datos ahi te lo puedo comprender (aunque la solucion de una tarjeta SD pienso que es mas viable, hay que llenar 8Gb en datos ), pero eso no significa que vayas a ejecutar codigo. Si ese era tu objetivo realmente veria otras alternativas.

Ahora si tu objetivo es otro, como el de lograr hacerlo, entonces adelante.

Citar
tambien me pregunto si puedo hacer que el programa del pic se carge desde el disco duro con un bootloader, o sea como hacen los computadores normales que el programa lo tienen guardado en el disco duro pero lo ejecutan en el procesador

Como te dijeron ya eso no son microcontroladores, son procesadores, y ademas hay muchas mas complicaciones, si pusieras un procesdor que cargue las cosas directamente desde el disco duro seria muy lento. Para eso esta el sistema operativo que trae del disco duro a la RAM, luego tenes distintos niveles de Cache que van enviando  lo que necesitan de la RAM a los distintos niveles de Cache.
Nada simple de implementar de 0 y hay miles de cosas mas que pase por encima en solo esa explicacion, tambien tenes una flash (que actua como BIOS), a no ser que pongas realmente un OS seria una locura, Ahora con todo esto implementado realmente no se que es mas barato, tal ves comprar una PC en desuso y usarla que te va a salir mucho mas barato.

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re:Controlando disco duro usb con un PIC
« Respuesta #3 en: 03 de Abril de 2016, 20:44:41 »
lo que estaba pensando es que en disco duro seria mejor porque tienen mas velocidad de acceso que la memoria flash, pero bueno si no se puede entonces lo hare con una flash.

estube pensando mucho y parece que los pics no estan diseñados para algo tan complicado, o sea no pueden ejecutar codigo del mundo exterior porque se queman como dijiste o no funcionan bien.

pero si lo que hago es un interpretador como java? creo que asi es como funciona picaxe y es muy lento. este proyecto por donde lo vea no tiene mucho sentido hacerlo.

una ves vi un señor que con un atmel avr de 8 bits corriendo un emulador de nucleo ARM con MMU emulado  fue capas de correr LINUX utilizando una memoria ram de las viejas y una memoria flash y todo le salia super lentisimo, asi no sirve porque uno se cansa de esperar

gracias por la ayuda.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Controlando disco duro usb con un PIC
« Respuesta #4 en: 03 de Abril de 2016, 21:00:26 »
Citar
estube pensando mucho y parece que los pics no estan diseñados para algo tan complicado, o sea no pueden ejecutar codigo del mundo exterior porque se queman como dijiste o no funcionan bien.

Hay micros que poseen un puerto externo para que se le pueda anexar una flash y ejecutar instrucciones desde alli. NO recuerdo el modelo en especifico pero lo hay.

Citar
lo que estaba pensando es que en disco duro seria mejor porque tienen mas velocidad de acceso que la memoria flash, pero bueno si no se puede entonces lo hare con una flash.

Vos decis que el disco duro es mas rapido pero no por eso vas a ir mas rapido. Luego tenes el USB quien recorta esa velocidad, como si fuera poco luego tenes todo el programa del micro para poder enviar y recibir desde el USB ( por mas que sea por HW ), tenes que acomodar los datos en una porcion de RAM, mientras estas ejecutando esto pedir mas datos e ir rellenando otra porcion de RAM, basicamente estas usando tu RAM del micro como la RAM de una PC. Y como te decia tenes instrucciones de por medio, y bastantes para manejar el sistema de archivos ( si es que lo usas obviamente y creo que lo vas a querer usar para poder cargar los archivos desde una PC) incluso por mas que lo hagas con DMA el traspaso el USB a memoria. Seguis teniendo muchas instrucciones de por medio, que tal ves un micro con un puerto paralelo + flash externa termine siendo mas provechoso, aun asi que tarde 2/3/4 ciclos mas que acceder a la flash dentro del micro.
Finalmente lo unico que no dije y que es importante, es que el microcontrolador tiene una frecuencia maxima mucho menor que un procesador. Son distintos casos de aplicacion realmente.

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re:Controlando disco duro usb con un PIC
« Respuesta #5 en: 04 de Abril de 2016, 06:34:44 »
Como ya te dije, los PIC estan pensados para pequeños proyectos de automatizacion y control, no para el manejo masivo de datos, entre otras cosas porque no poseen buses externos y normalmente trabajan con los recursos integrados, RAM, FLASH, CONTADORES, TEMPORIZADORES, e IO.
Para lo que tu quieres, quizas te vaya bien una Rasp Berry Pi, u otro pequeño computador similar.
En este mismo foro hay subforos dedicados a esos dispositivos. Echales un vistazo.

Saludos.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re:Controlando disco duro usb con un PIC
« Respuesta #6 en: 04 de Abril de 2016, 09:17:12 »
Citar
Para lo que tu quieres, quizas te vaya bien una Rasp Berry Pi, u otro pequeño computador similar.

Solo añadir, que si es para un uso industrial, no se use una RBPI2, no esta pensado para eso, en su lugar hay que hacer un proyecto propio, o como dices otro sistema pero que si este pensado para uso industrial.

Un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Controlando disco duro usb con un PIC
« Respuesta #7 en: 04 de Abril de 2016, 09:33:02 »


Con un PIC no vas a poder cargar y arrancar programa desde fuera de la flash, salvo que borres las páginas correspondientes de la flash y grabes un nuevo programa, ese es un proceso lento y le resta mucho tiempo de vida a la flash (creo que eran 1000 ciclos de borrado/escritura), solo se emplea para hacer actualizaciones de firmware usando un bootloader.

Para hacer arranques desde fuera de la flash, podrías usar por ejemplo un STM32 que te permite hacer un Boot desde SRAM.

En cuanto a usar un disco duro, mala solución. En primer lugar porque todo lo que tiene partes mecánicas es más susceptible a las averías, aparte del  espacio que ocupan, el peso y el alto consumo en comparación con tarjetas SD o Pendrives USB. En cualquier caso tanto un disco duro, como un pendrive, como una tarjeta SD, se pueden manejar perfectamente desde un PIC usando la correspondiente librería para manejar particiones FAT/FAT32. Tienes muchos ejemplos de código fuente en la web de Microchip.

Intuyo que quieres hacer algo como un Datalogger, para eso mejor usa tarjetas SD o un Pendrive USB para almacenar los datos. Y si además quieres puntualmente actualizar el firmware, programa un bootloader, o usa un micro que permita arranques desde memoria externa, como los STM32 de ST.
« Última modificación: 04 de Abril de 2016, 09:36:46 por planeta9999 »