Programación de microcontroladores PIC en GNU/Linux

— [ edit | raw ] migrated from node/65
Cómo programar microcontroladores de la familia PIC de Microchip en GNU/Linux

Introducción

Si tienes un programador serie de la familia T20 o derivados estás de suerte. Ahora, con una mínima modificación en tu programador, puedes programar microcontroladores PIC utilizando la herramienta PICPROG que actualmente se encuentra en su versión 1.7 (y tu programador seguirá siendo compatible con icprog

Qué necesitamos

Hablaremos del software. Lo único que nos hace falta es tener instalado picprog. Bajamos el paquetito debian que vemos (a la hora de escribir éste documento es picprog-1.7-2_i386.deb Cuando tengamos el archivo, lo instalamos. Como root tecleamos
~# dpkg -i picprog-1.7-2_i386.deb
Después de la instalación ya estaremos listos para utilizarlo como se muestra a continuación.

Utilización

Borrado del microcontrolador

Para borrar por completo el microcontrolador escribimos:
~#  sudo picprog --erase --burn  -d pic16f84a --pic-serial-port /dev/ttyS0
Las opciones son las siguientes:
  • --erase Borra el chip.
  • --burn Si no utilizamos ésta opción, en realidad no haremos nada sobre el micro, tan solo simularemos la operación, lo cual nos sirve para verificar que la sintaxis ha sido correcta.
  • -d pic16f84 Microcontrolador sobre el que operar. Picprog es capaz de autodetectar gran cantidad de micros por si mismo, pero no está de mas ayudarle un poco.
  • -pic /dev/ttyS0 Puerto a utilizar para comunicarnos con el programador. Por defecto se utiliza /dev/ttyS0, pero tampoco está de mas indicárselo. No debemos olvidar dar los permisos necesarios a los puertos para poderlos utilizar.

Programación

Para programar el micro:
~# sudo picprog --input prjs/brujulaPIC/compas.hex --burn  -d pic16f84a --pic-serial-port /dev/ttyS0
La única opción nueva aquí es --input que como habremos imaginado sirve para indicar cual es el archivo con extensión .hex a utilizar.

Lectura

Por último como leer del micro:
~# picprog --output mi_archivo.hex --burn -d pic16f84 --pic-serial-port /dev/ttyS0
Con la opción --output le decimos a picprog dónde queremos que guarde los datos leídos.

Notas

  • Es útil indicar que se pueden realizar varias operaciones a la vez, como por ejemplo el borrado y la programación en una misma llamada, para ello solo hay que indicar las dos opciones a la vez y picprog borrará y después programará nuestro micro con el archivo que le indiquemos.
  • Para los menos versados en el tema que seguro que se preguntan que qué pasa con los fusibles, con la EEPROM, etc... Bueno, tanto los fusibles como el espacio de EEPROM pertenecen al espacio de direcciones de los micros, por lo que solo hay que buscar en la documentación de cada micro e indicarle al ensamblador con las directivas adecuadas qué valores hay que almacenar en cada dirección de memoria (usualmente suelen utilizarse directivas db para éso.

El hardware

Para poder utilizar el programador T20 con picprog (y aún así que sigua siendo compatible con icprog) deberemos hacer una pequeña modificación en el hardware. Ésta modificación consiste tan solo en cortar un par de pistas e introducir un transistor MOS 2N7000 o compatible. En el siguiente enlace sobre modificación del T20 podremos ver de forma gráfica éste proceso. Es muy sencillo, y si no nos atrevemos nosotros seguro que conocemos a alguien que se atreva a hacerlo por nosotros.

Enlaces

Instalar programas con STOW

— [ edit | raw ] migrated from node/67
Cómo utilizar el gestor de instalación de paquetes GNU stow

Introducción

stow es una pequeña herramienta que sirve para instalar paquetes (normalmente a partir de sus fuentes). Permite que los binarios, ficheros de cabecera y de ayuda del paquete estén accesibles; pero teniendo controlado dónde va a parar cada fichero, de modo que la desistalación elimina TODO lo instalado. En cualquier caso, siempre es preferible utilizar el sistema de paquetes de la distribución (deb, rpm,) pues suele permitir un mejor control del sistema.

Instalación de stow

Suele estar disponible como paquete en las distribuiciones de GNU/Linux más extendidas. En Debian GNU/Linux y distribuciones derivadas (como Ubuntu) es tan fácil como:
# apt-get install stow

Instalación de un paquete usando stow

Supongamos que vas a instalar un paquete a partir de sus fuentes, por ejemplo, gnome-commander-1.1.5.tar.gz. Primero se descomprime:
$ unp gnome-commander-1.1.5.tar.gz
$ cd gnome-commander-1.1.5/<br/>
A continuación "configuramos" el sistema de compilación. Con prefix se indica a configure el directorio en el que se va a instalar el programa. Lo más aconsejable es utilizar un subdirectorio que cuelgue de /usr/local/stow es un buen sitio. Si ese directorio no hay que crearlo. El grupo propietario del directorio stow debería ser staff. Resulte este punto puedes proceder:
$ ./configure --prefix=/usr/local/stow/gnome-commander
$ make
$ make install
Con esto, los binarios quedan instalados en el directorio indicado. Sin embargo, esos directorios no están en el PATH y el programa no se puede invocar a menos que se indique la ruta completa. Aquí es donde entra en juego stow. Una vez instalado hacemos lo siguiente. Es importante cambiar al directorio /usr/local/stow o de lo contrario habría que indicar las rutas explícitamente.
/usr/local/stow$ stow gnome-commander
stow crea enlaces a los ficheros de modo que son accesibles desde /usr/local/bin, /usr/local/lib, etc. Para poder hacer esto hay que ser root, o mejor, hacer que tu usuario pertenezca al grupo staff (el propietario del directorio).

Des-intalar un paquete gestionado con stow

Si quieres que stow elimine los enlaces que creó para un paquete concreto simplemente ejecuta:
/usr/local/stow$ stow -D gnome-commander
Después de esto puedes borrar el directorio /usr/local/stow/gnome-commander sin problema, y todo habrá quedado tan limpito como antes de instalarlo.

Referencias

Compartir ficheros con NFS

— [ edit | raw ] migrated from node/64
En esta receta explico como compartir ficheros entre dos o más máquinas mediante NFS (Network File System). Una de las máquinas tiene que hacer de servidor y la otra de cliente.

Ingredientes

Hay que tener instalados los paquetes:
  • nfs-kernel-server
  • nfs-common
  • portmap
portmap permitirá realizar conexiones RPC al servidor y es el encargado de permitir o no el acceso al servidor a equipos concretos. Para saber si tienes portmap instalado bastará con hacer:
 $ ps aux | grep portmap
Deberías obtener algo así:
daemon    1367  0.0  0.4  1612  564 ?        Ss   Oct24   0:00 /sbin/portmap
arturo    9096  0.0  0.5  2044  760 pts/0    S+   01:43   0:00 grep portmap
Para saber si NFS está en marcha haz una consulta al portmap para que te indique qué servicios tiene en marcha:
 $ rpcinfo -p
   programa vers proto   puerto
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs  <--
    100003    3   udp   2049  nfs  <--
    100003    4   udp   2049  nfs  <--
    100003    2   tcp   2049  nfs  <--
    100003    3   tcp   2049  nfs  <--
    100003    4   tcp   2049  nfs  <--
    100021    1   udp   1028  nlockmgr
    100021    3   udp   1028  nlockmgr
    100021    4   udp   1028  nlockmgr
    100021    1   tcp   1024  nlockmgr
    100021    3   tcp   1024  nlockmgr
    100021    4   tcp   1024  nlockmgr
    100005    1   udp    749  mountd
    100005    1   tcp    752  mountd
    100005    2   udp    749  mountd
    100005    2   tcp    752  mountd
    100005    3   udp    749  mountd
    100005    3   tcp    752  mountd
    100024    1   udp    762  status
    100024    1   tcp    765  status 
Fijate en las líneas marcadas con una flecha. Si el portmap no ofrece los servicios de NFS, es porque no se tiene instalado el servidor NFS.

Directorios compartidos

Una vez hecho esto, tienes que decidir lo que quieres compartir. Para ello edita el fichero /etc/exports; y añade el directorio que quieras dejar accesible, los permisos y el equipo o equipos que van a acceder a él.
/home/arturo    192.168.0.4(rw)
/usr/local      192.168.0.0/24(rw)
Con esto indicas que vas exportar /home/arturo y /usr/local permitiendo acceso a tu rango de direcciones locales en modo de lectura/escritura. En el caso del primero se accede sólo desde el equipo 192.168.0.4 en modo lectura-escritura, y en segundo toda la red local puede acceder a /usr/local. Para tener un poco más de seguridad es necesario editar el fichero /etc/hosts.deny y añadir:
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
Y en /etc/hosts.allow añadir lo siguiente:
portmap:192.168.0.
lockd:192.168.0.
mountd:192.168.0.
rquotad:192.168.0.
statd:192.168.0.
Con esto la seguridad es suficiente, aunque siempre se puede configurar de una forma más individualizada. Si has cambiado el fichero /etc/exports después de iniciar el servicio NFS debes indicar al sistema que vuelva a leer el fichero y active los cambios. Esto lo puedes hacer reiniciando el demonio:
 # /etc/init.d/nfs-kernel-server restart
O bien:
 # exportfs -ra

Configurando el cliente

Ahora que ya tienes el servidor funcionando, prueba el acceso al directorio compartido desde la máquina cliente. Por ejemplo:
 # mount 192.168.0.1:/home/arturo /mnt/nfs
Esto montaría el directorio /home/arturo del servidor en /mnt/nfs del cliente. Hay que tener en cuenta que el directorio /mnt/nfs debe tener los permisos pertinentes. Sino se monta, debes revisar los ficheros de configuración del servidor y comprobar que son correctos.

Montando desde /etc/fstab

Si quieres que el sistema de ficheros NFS se monte al arrancar debes añadir una entrada en el fichero /etc/fstab:
192.168.0.1:/home/arturo /mnt/nfs nfs rw,hard,intr,user,defaults 0 0

Enlaces

¿Servidor de RDP o algo parecido para GNU/Linux?

— [ edit | raw ] migrated from node/57
Hola amiguetes, como diría aquel otro Os iba yo a preguntar, ya que le pregunté a Cleto y su respuesta no me ha funcionado ... ¿algún servidor así potente de rdp o algo similar para poder manejar una máquina conectada vía wifi desde otro PC en local? Me refiero a algo en plan gráfico, para aprovechar la velocidad de la conexión, y no un simple ssh, que ya conseguí hacerlo funcionar

Configuracion wifi de la UCLM en Ubuntu 5.10

— [ edit | raw ]
migrated from node/58
Alguien me puede decir como puedo configurar la wifi de la universidad, tengo todos los datos de la conexion y no tengo problemas con la tarjeta wireless, solo que tampoco está configurada. Gracias por adelantado.

apt-get y dpkg

— [ edit | raw ] migrated from node/59

Algunas posibilidades de las herramientas apt-get y dpkg de Debian GNU/Linux

Listar todos los ficheros de un paquete

$ dpkg -L nombre_paquete

Instalar un paquete de una release concreta

# apt-get install -t unstable nombre_paquete

Bloquear (hold) un paquete para que no se actualice en los upgrades

# echo nombre_paquete hold | dpkg --set-selections

Quitar el bloqueo a un paquete

# echo nombre_paquete install | dpkg --set-selections

Ver la versión de un paquete instalado

$ apt-cache policy nombre_paquete | grep Installed

Listar los paquetes que contienen cierta cadena en su nombre

$ COLUMNS=120 dpkg -l | grep string

Obtener el estado(hold, purge) de un paquete

$ dpkg --get-selections nombre_paquete

Eliminar un paquete y sus ficheros de configuración

# dpkg --purge nombre_paquete

Ver las dependencias de un paquete y su descripción

$ apt-cache showpkg nombre_paquete

Buscar paquetes relacionados con un término

$ apt-cache search string

Posibles problemas

Al instalar un paquete, puede ocurrir que su script de post-instalación falle por alguna razón, lo cual impide que el paquete se instale correctamente. Si eso ocurre puedes editar su script correspondiente en /var/lib/dpkg/info/nombre_paquete.postinst e intentar arreglarlo. Después simplemente ejecuta:

 # dpkg --configure -a

Reinstalar todos los paquetes instalados

Útil para limpiar los binarios si el sistema ha sido infectado con un virus o un rootkit. USAR CON PRECAUCIÓN.

# for i in $(dpkg --get-selections | grep -v deinstall | awk '{print $1}'); do apt-get install -y --reinstall $i; done

Enlaces

¡Usuarios Ubuntu!, ¿quereis Howto's?

— [ edit | raw ] migrated from node/50
¡Pues tomad Howto's! :-) Es para la versión Hoary pero hay ciertas cosas que no dependen ni de que sea Hoary, ni que de sea Ubuntu. Muy chulo y muy completo. AQUÍ LO TENEIS. Un saludo!

Recuperar fotos y videos borrados de una cámara digital

— [ edit | raw ] migrated from node/49
Cómo recuperar las fotos y videos borrados por accidente de una tarjeta de memoria o la memoria interna de una cámara digital.

Entre la gran cantidad de software que existe para poder recuperar fotos y videos, he encontrado uno libre y que funciona bastante bien. Se trata de Photorec.

Instalación

Si utilizas Debian, Ubuntu o similar es tan fácil como:

# apt-get install testdisk

Uso

Enchufa tu cámara o disco extraible y ejecuta photorec. Para que funcione correctamente, debes tener la ventana de la consola lo suficientemente grande como para que Photorec se ejecute con normalidad. De todos modos, el programita advierte de esta cuestión.

Aparecerá una lista con los dispositivos que tengas enchufados y, si pulsas INTRO sobre el correspondiente, comenzará el escaneo. Conforme va avanzando, Photorec informa de los archivos encontrados y tardará más o menos en función del tamaño del disco (evidentemente).

Una vez finalizado, las fotos o los videos se encuentran en un directorio que crea Photorec llamado recup_dir.*; siendo * el número de fiheros recuperados.

OJO! Este directorio creado pertenece al root. Tienes que utilizar chown para cambiar de propietario, o bien darle permisos con chmod para que tu usuario pueda ver su contenido sin problemas.

Referencias

Java Blackdown en Debian

— [ edit | raw ] migrated from node/52

Cómo instalar la máquina virtual Java de Blackdown en Debian GNU/Linux

ATI y libGL.so.1

— [ edit | raw ]
migrated from node/53
Puesto que me encuentro como tantos otros dandole vueltas a la dichosa aceleracion 3d con ATI en Ubuntu, segui un tutorial que recomendaba la eliminacion de todo lo referente al modulo fglrx que viene en los repostiorios, segui dicho tutorial y parece ser que la cosa funciona mas o menos, dmesg no me lanza ningun error relacionando con el driver ni nada por el estilo, pero cuanod ejecuto glxgears: