Reloj de disco duro - persistencia de la visión (7 / 13 paso)

Paso 7: Arranque - deshacerse de PicKit

1. ¿por qué necesitamos un gestor de arranque?

Es necesario, sin embargo él que miente alrededor de nuestra área de trabajo con sin razón no es un PicKit alrededor. Inicialmente no quería complicar mi vida con bootloaders, pero más tarde me di cuenta la verdad: este proyecto es mejor sin el PicKit. Es agradable, especialmente si es un cable mini USB extremadamente común, que cada aficionado tiene un montón de tener un solo cable para la programación. Por suerte para mí, errores debían fijarse en ambos PCB así que había una buena oportunidad para añadir funcionalidades y hardware bootloader. La cabecera de cinco pines ICSP fue dejada fuera el diseño intencionalmente, y tuve que soldar cables de abrigo para flash el gestor de arranque. -Que el cableado no puede quedarse allí, lo lanzaría todo fuera de la mesa una vez que el rotor está girando - por suerte la ranura del USB es compacta y puede permanecer. Enchufe para la programación, enchufe hacia fuera cuando pruebas y spinning.


2. USB bootloader, simple y buena

Mirando la hoja de datos del procesador que me decidí a usar uno puede ver que existe UART y USB. Si escojo UART, necesito un USB-UART convertidor y un montón de hilos - en contra del propósito. Así que la opción mejor, más simple, más bonita es USB. Microchip ofrece todo tipo de muestras de código para las fotos, gestores de arranque también. Si usted descarga e instala "Librerías de Microchip para aplicaciones", habrá una carpeta completa sobre todo tipo de aplicaciones USB, bootloaders, herramientas y otras cosas útiles. En la subcarpeta "Bootloaders" escogió "USB HID Bootloader" y abrió en MPLAB X. Después de leer a través de ella un par de veces para entender su lógica, empecé a aplicar las modificaciones para adaptarse perfectamente a las placas que tenía la intención de usarlo para.


3. unas palabras sobre gestores de arranque

Un gestor de arranque es una sección especial del código que está escrito en microcontroladores una vez y proporciona una manera para cargar firmware sin necesidad de un programador (alto voltaje) especial, como el PicKit en nuestro caso. Desafortunadamente, no hay ninguna manera de evitar completamente el uso del PicKit, el gestor de arranque tiene que llegar de alguna manera en el PIC. La parte buena: usted puede pedir prestado un PicKit, ICD2 o cualquier interruptor intermitente de la foto de un amigo, y dar de nuevo una vez que el gestor de arranque está escrito en el microcontrolador. Después de - dependiendo de qué tipo de gestor de arranque tiene flasheada, puedes subir firmware a la memoria de programa a través de UART, USB, CAN o lo que sea.

Utilizar gestores de arranque es simple, pero viene con la desventaja de perder la memoria de programa precioso. Algunos gestores de arranque comen menos espacio, algunos comen más - que decidí usar es alrededor de 1K. Al inicio de cada PIC en la dirección 0 se enciende y comienza a ejecutar cualquier código el programador ha escrito allí. Si es el gestor de arranque = el PIC se ejecuta el gestor de arranque. Si es el código de usuario = la PIC se ejecuta el código de usuario. Bastante simple!

Para poder utilizarlos dos, tenemos que cambiar de alguna forma entre estos dos programas. Este cambio puede hacerse en base a una condición, evento o lo que sea - va a ser muy parecido a una declaración enorme "if". Elegí esta condición que el nivel de voltaje en un pin de entrada, RD3 IO del registro PORTD. Este pin es conectado al pin de 5V del conector USB a través de un resistor. Si el pasador está en 5V en el arranque, el PIC tiene que ejecutar la rama del gestor de arranque de la gran "si", si es 0V, el código de la aplicación de usuario tenía que ejecutar. Coloqué el código de usuario justo después del código de gestor de arranque, en la dirección 1000h. El PIC18F4550 verifica el pin RD3 repetidas veces, así que cuando se quita el cable USB y 5V desaparece del RD3, el PIC va saltar el código colocado en el 1000h, código de la aplicación de usuario. En el código de la aplicación de usuario verificar nuevamente el nivel de voltaje en el RD3, si el programa ve a 5V en él, el cable USB está conectado otra vez y el PIC tiene que saltar para el gestor de arranque. Hacer este salto al modo gestor de arranque con una instrucción de "RESET" de montaje en línea.

Desde el PIC comienza a ejecutar desde la dirección 0, lo más simple y más común es colocar el código de gestor de arranque allí y el código de usuario justo después el gestor de arranque. El código de gestor de arranque puede modificarse para comprobar si existe o no un firmware válido por escrito en la foto. Esto se hace comprobando el contenido de la memoria en dirección 1006-1007 horas. Después de cada programación, los insertos de bootloader "600D" (leet de 'bueno') en este lugar, lo que significa que el código se ha escrito en el PIC con éxito - esto es lo que consigue comprobar su validez. Debemos especificar en la configuración de proyecto de aplicación de usuario que esta ubicación no debe ser sobrescrito, ver las imágenes para ver cómo se hace (ROM gamas se especifican para saltar este lugar cuando se compila el código de la aplicación de usuario). No hacerlo resultará en errores muy difíciles de detectar más tarde. La sección donde las mentiras del gestor de arranque deben estar protegidas así: esto se hace por compensación el código de la aplicación de usuario todo por 1000h (código offset parámetro en las opciones del vinculador). Gestores de arranque son generalmente situados al principio o al final de la memoria de programa - debe tener cuidado de no sobreescribirlo!

Quería añadir alguna parametrización para este dispositivo, por eso la gama de 3000-3100 está protegida así. No necesitas eso, solo uno!

4. problemas llegué a trabajar con el gestor de arranque

Compilar el proyecto resultará en un archivo hexadecimal generado - esto tiene que ser flasheado en el PIC con un PicKit o lo que sea. Mina no quería empezar por un buen tiempo, la herramienta de gestor de arranque USB no podía detectar nada. Decidí hacer las mediciones en el pin VUSB del PIC de mi alcance y el momento que mencioné el perno con la sonda alcance el conocida USB sonido jugado y tiene reconocida la Junta! Pensé que el problema se fue, pero en cuanto me lo quitaron la sonda, la cosa dejó de funcionar otra vez. Me di cuenta de que todo funciona cuando la sonda alcance, incluso las escrituras, se restablece - el problema tuvo que ser algo que fija la sonda. Entonces pensé: ¿Qué tienen las puntas de prueba alcance? Capacitancia parásita. El condensador en el pin VUSB fue enorme en valor y no podía filtrar los ruidos de alta frecuencia. Se agregó un capacitor de 100nF en paralelo, y la junta fue reconocida inmediatamente. Problema resuelto!

Artículos Relacionados

Reciclado reloj de disco duro - FuneLab

Reciclado reloj de disco duro - FuneLab

Hola a todos!Este es mi quinto proyecto en Instructables y gracias todo el mundo le gustaba esto.¿Tiene un disco duro roto? ¿Ponerlo en la basura o vender en Ebay por unos pocos dólares? ¡ Oh no!Prepárese girar a su disco duro estrellado en un reloj
Reloj de disco duro: la manera más fácil!

Reloj de disco duro: la manera más fácil!

¿Quiero un reloj de disco duro en tu escritorio?¿No desea pasar horas haciéndolo?¿Tiene un reloj de bolsillo?Muy bien!!Paso 1: ya listo! OK, solo tienes un disco duro, un clip de papel y su reloj de bolsillo.¡ Listo!Visítame: www.nemo-geek-art.com
RELOJ de discos duros antiguos de pared

RELOJ de discos duros antiguos de pared

aquí está Instructable sobre cómo reciclar discos duros de computadora vieja en reloj de pared de aspecto muy original.Paso 1: Materiales y herramientas necesarias Las herramientas que necesita para este proyecto son:1. taladro - sugiero pequeño tala
Reloj de disco duro (HDD reloj con Arduino Uno)

Reloj de disco duro (HDD reloj con Arduino Uno)

Este es un proyecto que se puede hacer fácilmente y también barato. En este instructivo vamos a explicar paso a paso cómo hacer este bonito reloj POV.Material utilizado:Arduino Uno,Pequeño módulo RTC,ULN 2003,IR diodo y transistor IR (utilizado como
Reloj de disco duro Unidad simple

Reloj de disco duro Unidad simple

Bueno aqui les dejo mi primer Intructable. Hemos querido hacer un windbelt en una clase de escuela, así que tomamos aparte algunas unidades de disco duros. Conseguí los discos y había hecho un reloj!Mayor parte de esta era solo improvisación, pero el
Reloj conmemorativo disco duro

Reloj conmemorativo disco duro

este instructable fue inspirado por los relojes de lujo que parecen libros madera. Puedes abrirlos y ver una pequeña felicitación y un reloj. Este proyecto logra el mismo efecto pero con un disco duro muerto.Paso 1: partes Para la construcción de est
Reloj de disco duro reciclado artístico

Reloj de disco duro reciclado artístico

he visto muchos relojes reciclados hdd, pero pensé que puedo hacerla ver más artsy :) 
¿Desarmar un disco duro

¿Desarmar un disco duro

para que tengas un disco duro viejo que no puede almacenar información de cualquier mejor entonces un horno almacena frutas? Supongo que has reemplazado con uno nuevo, pero qué hacer con el viejo. No puede realizar es la función más básica, para alma
Cómo transformar disco duro viejo en el gadget de tiempo

Cómo transformar disco duro viejo en el gadget de tiempo

...Hola a todos!Así que, ¿qué vamos a reciclar hoy en día?Echemos un vistazo lo que tenemos en esa caja grande. Estoy seguro de que encontrará algo para comenzar con.Bueno, eso es disco duro... una más... dos más... mucho más; internos, externos, SCS
Disco duro Unidad de persistencia de la visión (HDPOV)

Disco duro Unidad de persistencia de la visión (HDPOV)

el plato de un disco duro gira más de sesenta veces por segundo. Si se cortó una ranura angosta en el plato para permitir que el LEDs brille a través de, podemos lograr la fusión del parpadeo y engañar el ojo viendo una imagen estable. Este fenómeno
De doble cara reloj de reciclarlos discos duros

De doble cara reloj de reciclarlos discos duros

¿Ha tenido alguna vez un disco duro falla en su computadora portátil? Qué estaba pensando, por supuesto tienes.¿Qué hizo usted con el pedazo inútil de metal después de que reemplazó? Probablemente sólo lo tiraron a la basura.Bien, ¿por qué no recicla
Disco duro NeoPixel 3D impreso reloj

Disco duro NeoPixel 3D impreso reloj

Se mostrará el reloj de la unidad de disco duroel tiempo a través de la NeoPixels se encuentran en la zona de plato de disco duro. Este proyecto está diseñado alrededor de utilizando un cuaderno descartado 2.5" disco duro de.El disco duro se monta en
KlockFun: De cuco reloj alarma de disco duro

KlockFun: De cuco reloj alarma de disco duro

Hola todos,Este es mi primer Instructable y es un cuco reloj alarma de disco duro: KlockFun.Me encanta relojes y quiero que comenzó a diseñar un reloj de alarma mejor de un viejo disco duro, las primeras pantallas de LED y un pájaro cuco. Quiero trae
Reutiliza un disco duro y conviértelo en reloj analógico.

Reutiliza un disco duro y conviértelo en reloj analógico.

En ocasiones tenemos discos duros de ordenadores portátiles dañados y no sabemos hacer con ellos, por lo general y como lo marca la obsolencia parte Terminans en la basura. Por lo tanto decidí crear ONU lejor analógico.Paso 1: Material necesario: -Va