Regularmente se requieren rutinas de retardo en las aplicaciones, y lo más rápido es hacerlas con loops tipo for o while . Aunque ello funciona la mayor parte de las veces, no se tiene el control de una temporización precisa ya que se desconoce exactamente cúanto transcurre en un ciclo del retardo (este valor puede medirse con un osciloscopio o un frecuencímetro), por lo que hay que jugar con los valores para llegar al tiempo deseado. Una forma un poco más elaborada pero más elegante de obtener retardos exactos es utilizar ensamblador en línea dentro del cuerpo de la función de retardo (o como un procedimiento completo en ensamblador si se encuentra en otro archivo y se enlaza junto con los archivos en C). Gracias al manual o al data-sheet de la CPU se conoce la cantidad ciclos de reloj que toma cada instrucción, por lo que de esta manera se puede calcular a-priori con casi certeza absoluta la cantidad de tiempo que tomará cada vuelta dentro del retardo. Un ejemplo en pseudocódigo se...
1. Instalar los siguientes paquetes: apt-get install ncurses*, bzip2, gcc*, make, libqt3* (opcional, para ser usado con xconfig) 1. Descargar la imagen del kernel desde: www.kernel.org 2. Descomprimirlo: tar jxvf .tar.bz2 3. Configurarlo make menuconfig 4. Generar el ejecutable make bzImage el ejecutable se encuentra en arch/i386/bzImage 5. Genera los módulos make modules 6. Instala los módulos (este paso hacerlo como SU) make modules_install 7. Instala el kernel en /boot make install 8. Genera un sistema de archivos en RAM para el arranque (creo que sólo es para Debian) mkinitramfs -o /boot/initrd.img- (checar que hay un espacio en blanco) 9. Agregar la nueva imagen para el boot vim /boot/grub/menu.lst 10. Reiniciar
Comentarios