Es simple aunque no es común escuchar sobre esto.
La diferencia entre uno y otro es el orden en que los datos son guardados en las celdas de memoria.
Para ayudar a entender la diferencia entre Big Endian y Little Endian, veremos más de cerca cómo se almacenan los datos en la memoria.
Almacenamiento de datos-Sistema Little Endian
Los procesadores Intel x86,DEC alpha,VAX,AMD siguen este sistema al alamcenar datos en memoria.
Sistema Little Endian |
Almacenamiento de datos-Sistema Big Endian
Los procesadores MIPS, Sparc,Motorola 6800/68k,IBM 360/370 siguen este sistema al alamcenar datos en memoria.
Sistema Big Endian |
Almacenamiento en AVR-Sistema Little Endian
Tabla de datos con Word(.DB-Data Byte)
Si deseamos guardar el dato 0x3F06 a la memoria, y como el valor está en una tabla tipo .DB(Data Byte-cada entrada es de 1 byte) como almaceno el datos en dirección que es de tamaño de una palabra??, pues el proceso es el siguiente:
Almacencamiento en AVR- |
Donde 06 es el byte menos significativo del dato,06 es guardado en el byte más alto de la dirección y 3F que es el byte mas significativo del dato se guarda en el byte mas bajo de la dirección . Como se puede ver el almacenamiento de los datos sigue al modelo de sistema Little Endian.
Cada dirección de memoria esta formado puede almacenar 1 palabra(16 bits) se puede mandar a guardar por cada byte(.DB) o se puede mandar a guardar por cada palabra(.DW)
Tabla de datos con Word(.DW-Data Word)
- Si mandamos el dato 0x0400(word) este dato se divide en 2 byte y se guarda en 27D como 00 04.
- Si mandamos el dato 0x1000(word) este dato se divide en 2 byte y se guarda en 27E como 00 10.
- Si mandamos el dato 0x0D01(word) este dato se divide en 2 byte y se guarda en 27F como 01 0D.
- Si mandamos el dato 0x0802(word) este dato se divide en 2 byte y se guarda en 280 como 02 08.
- Si mandamos el dato 0x0104(word) este dato se divide en 2 byte y se guarda en 281 como 04 01.
.....
Y así se van guardando los datos en la memoria, la forma de almacenamiento es porque el AVR sigue el modelo de Little Endian.
Tabla .DW(Data Word) |
Pero para que necesitamos saber esto??????.
Pues es bueno saber que orden sigue nuestros datos en nuestro avr, sabiendo esto sabremos como recuperar nuestros datos guardados y otras ventajas más que iremos descubriendo.
Tienes alguna duda de este tema, o ¿de qué otros temas quieres que hablemos?, puedes escribirnos a nuestro grupo de Telegram
Leyendo este apartado, las letras rojas destacadas en fondo blanco, deben decir que el byte menos significativo de la palabra se ubican en posiciones de memoria de menor cuantia, o sea 06 del ejemplo es el byte LSB y se almacena en la posición de memoria mas baja y 3F que es el byte MSB se ubica en la posicion mas alta, o sea si tomo-> table: .DW 0x3f06 ; siempre tengo que pensar que primero se almacena 06 y luego el 3f en la flash. Saludos
ResponderEliminar