Mostramos en este tutorial qué es el protocolo MESI y cómo funciona en pequeños sistemas con
multiprocesadores simétricos. Indicamos la optimización que supone el protocolo MESI en el caso de transferencia de caché a caché y algunos resultados de simulaciones en determinadas condiciones.
Mostrando entradas con la etiqueta memoria. Mostrar todas las entradas
Mostrando entradas con la etiqueta memoria. Mostrar todas las entradas
3/17/2015
10/22/2011
Cómo conectar un pendrive a Linux Ubuntu Server 11.04 manualmente
Cómo conectar un lápiz de memoria USB o pendrive a Linux Ubuntu Server 11.04 sin modo gráfico. Explicamos los pasos necesarios para poder usar un pendrive en un sistema operativo Linux
(válido para casi cualquier distribución) sin modo gráfico. Explicamos
también cómo desmontarlo cuando ya no sea necesario y cómo formatearlo.
- Montar un lápiz de memoria USB en Linux Ubuntu Server 11.04.
- Desmontar pendrive o lápiz de memoria USB en Linux Ubuntu.
- Formatear pendrive o lápiz de memoria USB en Linux Ubuntu Server.
- Artículos relacionados.
- Créditos.
Montar un lápiz de memoria USB en Linux Ubuntu Server 11.04
Os explicamos a continuación cómo montar un lápiz de memoria USB
(pendrive) en el sistema operativo Linux Ubuntu Server. Explicamos cómo
hacerlo de forma manual pues, normalmente, en distribuciones con modo
gráfico como Ubuntu, Kubuntu, Xubuntu, Suse, Fedora, Debian, Red Hat, Oracle Enterprise Linux, etc., al conectar un lápiz de memoria suele ser detectado y montado de forma automática.
Por lo tanto vamos a explicar cómo montar un pendrive de forma manual en Linux:
1. Ejecutar el siguiente comando Linux sin el pendrive conectado, este comando nos devolverá las particiones de las unidades de disco actuales:
sudo ls /dev/sd*En nuestro caso nos devolverá, sin el pendrive conectado:/dev/sda
/dev/sda1
/dev/sda2
/dev/sda5
2. También podremos comprobar los dispositivos USB actuales del sistema con el comando Linux:
lsusbEn nuestro caso, sin el pendrive conectado, nos devuelve:Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
3. Ahora conectaremos el pendrive o lápiz de memoria al puerto USB del equipo con Linux Ubuntu Server, es posible que en la ventana donde estemos conectados muestre los datos de la conexión del USB,
para cambiar a otra ventana de terminal y poder escribir comandos
pulsaremos las teclas Alt + F2, iniciaremos sesión y así podremos
ejecutar comandos y montar la unidad.
4. Tras conectar el pendrive al PC ejecutaremos ahora el comando Linux:
lsusbAhora nos devolverá una nueva línea, la referente al pendrive conectado:Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 005: ID 1199:6890 Sierra Wireless, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
5. Ejecutaremos de nuevo el comando anterior para
mostrar las unidades y particiones, veremos que aparece una nueva
correspondiente al pendrive:
sudo ls /dev/sd*En nuestro caso nos devolverá, con el pendrive conectado:/dev/sda
/dev/sda1
/dev/sda2
/dev/sda5
/dev/sdb
/dev/sdb1Como vemos, aparece el nuevo dispositivo, por un lado /dev/sdb correspondiente a la nueva unidad pendrive conectada y por otro /dev/sdb1 correspondiente a la partición de esta nueva unidad, ésta será la que usemos para montar el pendrive.
6. Si queremos obtener más datos sobre el pendrive
conectado, por ejemplo el tamaño de la partición o el sistema de
ficheros que actualmente tenga podremos ejecutar el siguiente comando Linux:
sudo fdisk /dev/sdb -lDisco /dev/sdb: 1007 MB, 1007681536 bytes
9 cabezas, 8 sectores/pista, 27335 cilindros
Unidades = cilindros de 72 * 512 = 36864 bytes
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
Identificador de disco: 0x00000000
Dispositivo Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 4 27336 983937+ 6 FAT16
Si no aparece en ninguna de las consultas anteriores
(lsusb, fdisk, ls) será porque Linux no ha podido cargar los drivers del
pendrive conectado, por lo tanto en este caso deberemos descargar el
paquete con el driver o controlador del lápiz de memoria y ejecutar el
siguiente comando Linux para instalarlo:
sudo dpkg -i /home/ajpdsoft/fichero_driver_pendrive
7. Crearemos una carpeta en el sistema, que será el
punto de montaje, para crear la carpeta (normalmente dentro de "media")
ejecutaremos el comando Linux:
sudo mkdir /media/lapiz
8. Ahora montaremos la unidad de memoria USB
para poder utilizarla de forma normal: copiar, eliminar, modificar y
crear ficheros y carpetas. Para montarla ejecutaremos el siguiente comando Linux:
sudo mount -t vfat /dev/sdb1 /media/lapizDonde "/dev/sdb1" será la partición del pendrive y "/media/lapiz" será el punto de montaje.
9. Podremos comprobar que el pendrive se ha montado correctamente con el comando Linux:
df -h
Ya tendremos disponible la nueva unidad en
/media/lapiz para usarla normalmente para lo que queramos. Para acceder
al pendrive ejecutaremos:
cd /media/lapiz
Desmontar pendrive o lápiz de memoria USB en Linux Ubuntu
Para desmontar una unidad de disco, en nuestro caso una unidad correspondiente a un pendrive o lápiz de memoria USB ejecutaremos el siguiente comando Linux:
sudo umount /media/lapizDonde "/media/lapiz" es el punto de montaje que hemos establecido para el pendrive.
Formatear pendrive o lápiz de memoria USB en Linux Ubuntu Server
Antes de formatear un pendrive en Linux debemos asegurarnos de que no esté montado, como mostramos aquí, si lo está lo desmontaremos como indicamos aquí.
Para formatear un pendrive, en primer lugar
comprobaremos qué unidad tiene asignada, como hemos explicado aquí, a
continuación ejecutaremos el siguiente comando Linux:
sudo mkfs.vfat /dev/sdb1Donde "vfat" será el sistema de ficheros con el que formatearemos y "/dev/sdb1" será la partición del pendrive.
Artículos relacionados
- Cómo crear un RAID lógico en Linux Ubuntu 8.04 Hardy Heron.
- Añadir una nueva unidad de disco (disco duro) a GNU Linux Ubuntu Server.
- Cómo arrancar un equipo con un pendrive y Linux Ubuntu 9.04 Live.
- Recuperación profesional avanzada de ficheros eliminados con PhotoRec.
- Instalar Ubuntu 11.04 Natty Narwhal con el nuevo Unity sustituyendo a GNOME .
- Configurar GRUB en Linux Ubuntu 8.10 con varios sistemas operativos.
- Restaurar GRUB2 en Linux Ubuntu 11.04 Natty Narwhal después de instalar Windows.
- Comandos Linux y ejemplos de utilización, comandos básicos GNU Linux.
- Instalación de Linux Ubuntu 8.04 Alpha (Hardy Heron).
- Instalar Linux Ubuntu 8.10.
- Instalar Linux Ubuntu Desktop 9.04 en un equipo con Windows Server 2003.
- Instalar Linux Ubuntu 9.04 Beta virtualizado con VMware Server 2.0.
- Instalar Linux Ubuntu Server 8.04.1.
- Instalar Linux Ubuntu 9.10 virtualizado con Sun VirtualBox 3.0.12.
- Instalar y testear Windows Server 2008 Enterprise Release Candidate.
- Cómo instalar GNU Linux Debian 5.0.7 virtualizado en VMware Workstation.
- Virtualizar en GNU Linux, instalar VirtualBox en GNU Linux Ubuntu 10.10 64 bits.
- Cómo crear una imagen de un disco duro con Clonezilla de forma gratuita free.
- Crear CD con imagen ISO con CDBurnerXP.
- Algunas opciones interesantes de la BIOS.
- Artículos, trucos, manuales del Proyecto AjpdSoft sobre Copias de Seguridad.
- Cómo instalar GNU Linux Debian 5.0.7 virtualizado en VMware Workstation.
- Instalación de Microsoft Windows 7 Ultimate virtualizado en VMware Server 2.0.1.
- Artículos, manuales y trucos sobre el sistema operativo GNU Linux.
- Instalación, configuración de Samba y Swat, compartir carpeta en Linux Ubuntu.
- Recuperar contraseña del usuario administrador en Microsoft Windows 7 y XP.
- Eliminar versiones kernel antiguas en Linux Debian y Ubuntu para liberar espacio.
Créditos
Artículo realizado íntegramente por Alonsojpd, fundador del Proyecto AjpdSoft.
10/13/2011
Tipos de memoria en el microcontrolador de Arduino
Explicamos los diferentes
tipos de memoria existentes en el microcontrolador usado por la placa
Arduino. Indicamos qué uso tiene cada uno de ellos y mostramos un
ejemplo de escritura y lectura de valores en la memoria no volátil
EEPROM. Mostramos algunas alternativas para ampliar el almacenamiento en
Arduino como EEPROM externa ó SD Card.
- Tipos de memoria en Arduino: Flash, SRAM y EEPROM.
- Escribir y leer en la memoria EEPROM de Arduino.
- Cómo ampliar las posibilidades de almacenamiento de Arduino.
- Artículos relacionados.
- Créditos.
Tipos de memoria en Arduino: Flash, SRAM y EEPROM
Existen tres tipos de memoria en los
microcontroladores utilizados por las placas Arduino (ATmega168,
ATmega328, ATmega1280, etc.): memoria Flash, memoria SRAM y memoria
EEPROM. A continuación indicamos las diferencias de cada una de ellas y
el uso que Arduino puede darles.
Memoria Flash (espacio del programa) en Arduino
La memoria Flash (espacio del programa) es donde Arduino almacena el sketch. Un sketch
es el nombre que usa Arduino para un programa. Es la unidad de código
que se sube y ejecuta en la placa Arduino. Esta memoria es no volátil,
si Arduino deja de ser alimentado eléctricamente los datos que haya en
esta memoria permanecerán.
El tamaño de la memoria Flash de Arduino puede variar
dependiendo del microcontrolador, aunque no es muy grande. Por ejemplo,
para el chip ATmega168 el tamaño de la memoria Flash es de 16
kilobytes, de los cuales 2 kilobytes son utilizados por el bootloader.
Para el caso del microcontrolador ATmega328 (como el que incorpora
Arduino UNO) el tamaño de la memoria Flash es de 32KB, de los cuales el
bootloader usa 0,5KB. Por lo que debemos desarrollar los programas de
forma muy optimizada, usando los tipos de variables que menos memoria
requieran, en la medida de lo posible. También debemos optimizar el
código fuente de la aplicación para no repetir líneas de código.
Memoria SRAM (Static Random Access Memory ó memoria estática de acceso aleatorio) en Arduino
La memoria SRAM (Static Random
Access Memory ó memoria estática de acceso aleatorio) es de tipo
volátil, es el espacio donde los sketches (programas) almacenan y
manipulan variables al ejecutarse. La información guardada en esta
memoria será eliminada cuando Arduino pierda la alimentación. Esta
memoria es de uso exclusivo para el programa en ejecución.
La memoria SRAM de Arduino es muy pequeña, por lo que
debemos optimizar nuestros programas al máximo y no abusar de variables
de tipo char muy grandes. Hay que tener en cuenta que cada carácter de una variable char
utiliza un byte. En el microcontrolador ATmega 168 el tamaño de la
memoria SRAM es de 1024 bytes, para el caso de un chip ATmega328 (como
el que incorpora Arduino UNO) el tamaño es de 2KB (2048 bytes).
Si la SRAM se queda sin espacio, el programa de
Arduino fallará de forma imprevista, aunque se compile y se suba a
Arduino correctamente la aplicación no se ejecutará o se ejecutara de
manera extraña.
A continuación mostramos algunos consejos para optimizar los programas y evitar que consuman toda la memoria SRAM disponible:
- Si el programa se comunica con una aplicación ejecutándose en un ordenador, se puede intentar trasladar los datos o cálculos al ordenador, reduciendo la carga en el Arduino.
- Si el programa usa tablas de referencia u otros arreglos de gran tamaño, es recomendable utilizar el tipo de datos más pequeño que se pueda para almacenar estos datos; por ejemplo, un int utliza 2 bytes, mientras que un byte utiliza solo 1 byte (pero puede almacenar un rango menor de datos).
- Si no se necesita modificar las cadenas o datos mientras el programa se ejecuta, se pueden almacenar en la memoria Flah (de programa) en vez de la SRAM; para esto, hay que utilizar el keyword PROGMEM.
Memoria EEPROM en Arduino
EEPROM es un espacio de memoria que
puede ser utilizado por los programadores para almacenar información a
largo plazo. Este tipo de memoria es no volátil, por lo que los datos
guardados en ella permanecerán aunque Arduino pierda la alimentación.
Esta memoria puede ser usada para guardar valores si es necesario. Más
adelante explicaremos cómo guardar y leer valores de esta memoria.
El tamaño de la EEPROM para un chip ATmega128 es de
512 bytes, para un chip ATmega328 es de 1KB (1024 bytes). Hay que tener
en cuenta que el tamaño de la memoria EEPROM interna de Arduino es
"pequeño" pero Arduino admite añadir módulos de memoria EEPROM externa
de mayor tamaño.
Escribir y leer en la memoria EEPROM de Arduino
A continuación mostramos un ejemplo de escritura y otro de lectura en la memoria EEPROM interna de Arduino UNO. Para el ejemplo necesitaremos conectar Arduino al PC y disponer del IDE de desarrollo de Arduino, todo ello lo explicamos en el siguiente artículo paso a paso:Escribir en la memoria EEPROM de Arduino
A continuación mostramos un sencillo ejemplo para escribir 1024 valores en la memoria EEPROM de Arduino UNO:
#include
void setup()
{
//usamos un bucle que se ejecutará 1024 veces
//en la posición i de la memoria EEPROM
//guardaremos el valor de i
for (int i = 0; i < 1024; i++)
if (i <= 255)
{
EEPROM.write(i, i);
}
else
{
EEPROM.write(i, i - 255);
}
}
void loop()
{
}
El ejemplo anterior se ejecutará una sola vez (no hemos usado "loop"). El bucle for se ejecutará 1024 veces y guardará en cada posición de la memoria el valor actual de i,
teniendo en cuenta que el valor máximo que se puede guardar en una
posición de memoria es de 255, por ello cuando llegamos a 255 guardamos
el valor de i menos 255.
Leer valores de la memoria EEPROM de Arduino
A continuación mostramos un sencillo ejemplo que lee y
envía por el puerto serie de Arduino todos los valores guardados en la
memoria EEPROM (de un Arduino UNO, que tiene 1024 valores):
#include
int posicionActual = 0;
int valorLeido;
void setup()
{
Serial.begin(9600);
}
void loop()
{
//obtenemos el valor de la posición "posicionActual" de la EEPROM
valorLeido = EEPROM.read(posicionActual);
//enviamos por el puerto serie la posición leída
Serial.print(posicionActual);
Serial.print(" ");
//enviamos por el puerto serie el valor leído de la posición
Serial.print(valorLeido);
Serial.println();
//incrementamos la posición actual, puesto que el programa se
//ejecuta indefinidamente leeremos todas las posiciones de memoria EEPROM
posicionActual = posicionActual + 1;
//puesto que el programa se ejecuta indefinidamente
//para evitar que dé error cuando nos excedamos de la última posición
//de la EEPROM, cuando lleguemos al máximo 1024 empezaremos de nuevo
if (posicionActual == 1024)
posicionActual = 0;
//esperamos un segundo
delay(1000);
}
En ambos casos usamos la librería EEPROM.h, necesaria para acceso a la memoria EEPROM de Arduino.
Cómo ampliar las posibilidades de almacenamiento de Arduino
Cómo hemos indicado, las diferentes memorias de los
chips de Arduino (Flash, SRAM y EEPROM) son demasiado limitadas para
determinadas funcionalidades. Por ejemplo, si conectamos una cámara de
fotos o de vídeo a Arduino y queremos guardar capturas de fotos o vídeos
no nos servirán estas memorias.
Ampliar con memoria EEPROM externa
Una posibilidad para ampliar la capacidad de memoria
de Arduino es usar memoria EEPROM externa, adquiriendo este tipo de
memoria (que no es muy cara) podremos disponer de más memoria EEPROM
para nuestro programa. Este tipo de memoria es no volátil. Por ejemplo,
una EEPROM 24LC64 puede costar unos 4 euros y tiene 64K de tamaño:
Obviamente, este tipo de memorias EEPROM no tienen un
gran tamaño, por ello, no serán útiles para proyectos con grandes
requerimientos de espacio.
Por supuesto existen librerías para trabajar con estas tarjetas en Arduino.
Ampliar memoria con SD Card
Si vamos a desarrollar un proyecto hardware con
Arduino que tenga grandes requerimientos de espacio (Megas, Gigas), por
ejemplo si queremos trabajar con audio, vídeo, fotos, almacenamiento de
datos, etc., la mejor opción es utilizar algún tipo de medio de
almacenamiento removible. La mayoría de los microcontroladores tienen
una capacidad de memoria interna extremadamente limitada, como ya hemos
comentado.
Para conseguir este almacenamiento extra utilizaremos
las tarjetas flash (SD, microSD). Estás tarjetas permiten almacenar
varios GBytes de datos en un espacio muy reducido.
En la imagen mostramos un módulo SD Card para Arduino, acoplable directamente:
En este otro ejemplo mostramos una SD Card para Arduino que tenemos que conectar manualmente, como se muestra en la imagen:
Por supuesto existen librerías para trabajar con estas tarjetas en Arduino.
Artículos relacionados
- Primer proyecto hardware con Arduino, encender un LED.
- Sensor de temperatura con Visual Studio y Delphi.
- AjpdSoft Sensor de Movimiento con WebCam - Código fuente Delphi.
- Realizar un alimentador eléctrico para un Asus EEE PC.
- Acceso a aplicaciones y al equipo con huella dactilar.
- Cómo enviar SMS desde un PC usando un módem GSM con Visual Basic .Net.
- Uno de nuestros miembros arreglando un portátil.
- AjpdSoft Puerto Paralelo Código Fuente Delphi.
- AjpdSoft Cálculo parámetros módulos fotovoltaicos.
- AjpdSoft Cálculo de los parámetros de radiación.
- Enviar y recibir faxes desde un equipo con Windows XP y un módem.
- Cómo conectar dos equipos en red por el puerto paralelo con Windows 98 y XP.
- Los pitidos (beep codes) del PC, su significado en caso de error de hardware.
- Cómo actualizar el firmware del teléfono móvil Nokia N96.
- Cómo actualizar el firmware de algunos dispositivos: routers, BIOS, etc.
- AjpdSoft Sensor de Movimiento con WebCam.
- Reparar equipo portátil averiado: al mover el monitor se apaga.
- Instalar impresoras en Active Directory, auditar impresoras.
- Mi primera aplicación Android con Eclipse en Linux, instalar Eclipse Ubuntu.
- Instalar Microsoft Windows 7 Ultimate virtualizado en VMware Server 2.0.1.
- Trucos, código C++.
Créditos
Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.
Suscribirse a:
Entradas (Atom)












