Tesis Final de Máster
Diseño de interfaz entre una placa Beaglebone y periféricos mediante el bus GPMC ____________ __________________ ___________ ____________ ____________ ____________ ____________ ____________ ____________ ____________ ________ _
por
Eugenia Surez !icente Director" Manuel Dom#nguez Pumar
30 ECTs de la titulación de Máster en Ingeniería Electrónica e Ingeniería Electrónica en Telecomunicaciones en: Escola Tècnica d'Enginyeria de Telecomunicació de arcelona
$ni%ersitat Polit&cnica de Catalunya
arcelona! mayo "0#$
1
Resumen El propósito de este trabajo es proporcionar una primera versión de interfaz funcional entre un periférico de uno o varios tipos de memoria externa y una Beaglebone soportando una distribución de Linux diferente a la que sostenía por defecto. El proyecto forma parte del desarrollo de un sistema lo cost para ser empleado durante las pr!cticas de la asignatura DSX y formar parte de su contenido . El objetivo es obtener las se"ales de control del protocolo de acceso a dic#a memoria$ como también lo es conocer las peculiaridades y diferencias m!s significativas entre estos tipos de memoria %&'( y &)&*+. Beagle BeagleBon Bonee es una de las plataf plataform ormas as de sistem sistemas as embebi embebidos dos del mercad mercadoo conoci conocidas das como como minicromput minicromputadora adoras. s. ,e caracteri caracterizan zan por su bajo coste$ coste$ portabilid portabilidad$ ad$ potencia potencia de procesamien procesamiento$ to$ conjuntos de -' e$ incluso$ ampliabilidad. *ebido a que )ngstrom$ distribución de ', actual$ deja de tener soporte oficial$ el dise"o deber! ser adaptado a la de /buntu. El desarrollo se compone de un dise"o #ardare$ para el elemento periférico y otra de programación del driver 0123$ en el lado de la 31/. ,e puede resumir en 4 fases5 preparación del entorno de desarrollo %incluída migración de ',+$ dise"o de circuito impreso 13B %integración de periférico+$ programación del driver 0123 e integración de todos los elementos %comprobación de la interfaz+. 6ras los resultados$ se comentar!n las limitaciones y las perspectivas que suscita.
2
Resumen El propósito de este trabajo es proporcionar una primera versión de interfaz funcional entre un periférico de uno o varios tipos de memoria externa y una Beaglebone soportando una distribución de Linux diferente a la que sostenía por defecto. El proyecto forma parte del desarrollo de un sistema lo cost para ser empleado durante las pr!cticas de la asignatura DSX y formar parte de su contenido . El objetivo es obtener las se"ales de control del protocolo de acceso a dic#a memoria$ como también lo es conocer las peculiaridades y diferencias m!s significativas entre estos tipos de memoria %&'( y &)&*+. Beagle BeagleBon Bonee es una de las plataf plataform ormas as de sistem sistemas as embebi embebidos dos del mercad mercadoo conoci conocidas das como como minicromput minicromputadora adoras. s. ,e caracteri caracterizan zan por su bajo coste$ coste$ portabilid portabilidad$ ad$ potencia potencia de procesamien procesamiento$ to$ conjuntos de -' e$ incluso$ ampliabilidad. *ebido a que )ngstrom$ distribución de ', actual$ deja de tener soporte oficial$ el dise"o deber! ser adaptado a la de /buntu. El desarrollo se compone de un dise"o #ardare$ para el elemento periférico y otra de programación del driver 0123$ en el lado de la 31/. ,e puede resumir en 4 fases5 preparación del entorno de desarrollo %incluída migración de ',+$ dise"o de circuito impreso 13B %integración de periférico+$ programación del driver 0123 e integración de todos los elementos %comprobación de la interfaz+. 6ras los resultados$ se comentar!n las limitaciones y las perspectivas que suscita.
2
Dedic edico o este este traba rabajo jo a mis ama amados dos padr padres es por por la responsabili responsabilidad dad y papel que tienen tienen tanto su apoyo, como perseverancia, sacrificio y esfuerzos en todas las facetas de mi vida y en que este trabajo haya visto la luz.
Agradecimientos Agradecimientos ) 2anuel por darme la oportunidad de participar en este proyecto$ mejorar mi bagaje y ampliar mi experiencia aprendiendo todo lo que #e aprendido realizando este trabajo. ) 7uan por sus consejos y disponibilidad cuando m!s dudas tuve. ) (ubén$ por sus !nimos$ paciencia$ dedicación y diligencia a la #ora de ofrecer desinteresadamente su soporte. 1or la calidad #umana y comprensión que #an a"adido a su labor quiero #acer mención especial a5 al person personal al de secret secretarí aríaa por su atenci atención ón y asesor asesorami amient entoo prestado$ al equ equipo ipo enca encarrgado gado de los los lab laborat orator orio ioss del del sóta sótan no$ especialmente a 2anel y 8icente$ que #an tenido una gran peso en disponer del entorno de trabajo m!s apropiado y afín a mis intereses académicos$ ,andra Bermejo por su asesoramiento$ consejos y !nimos. ) compa"eros como 3arlos$ siempre dispuesto a debatir y comentar cualquier dilema electrónico. 6odos #an influido y contribuido en cierta medida a facilitar el trabajo. ) toda mi familia de sangre y a mi otra familia$ la de los amigos por su apoyo incondicional$ paciencia impagable y esperanza en que este momento llegara. ) personas como -sabel$ 0isela$ 2arta y )lmudena por su #ospitalidad durante este trabajo cuando m!s me #izo falta. ) todos aquellos seres queridos que #an aguardado pacientemente mi asuencia durante toda mi formación y no les #e perdido.
0racias
3
Índice Resumen....................................................................................................................................................... 9 Agradecimientos...................................................................................................................................... : Índice............................................................................................................................................................. 4 Lista de figuras.......................................................................................................................................... ; List de tablas.............................................................................................................................................. < 1.
Introducción ...............................................................................................................................................................
=
1.
Contexto ............................................................................................................................................... .=
2.
Objetivos y especificaciones.........................................................................................................!
3.
"rabajo reali#ado anteriormente..............................................................................................
4.
$istemas embebidos........................................................................................................................%
&. 'emorias flas() tecnolog*a +OR vs +A+, en sistemas embebidos................................-
. /us 01'C............................................................................................................................................& 9. 2stado del arte y motivaciones para la elección de la tecnolog*a empleada......................3 1.
'inicomputers..................................................................................................................................3 . Intel 2dison.........................................................................................................................3 %. Raspberry............................................................................................................................3 -. O,ROI,4C%..........................................................................................................................5 6. Arduino ...............................................................................................................................5 &. /eaglebone 7(ite............................................................................................................%! . /eaglebone /lac8.............................................................................................................% 9. 'odelo empleado ............................................................................................................% . CA124/O+24""!:...................................................................................................% %. CA12 01'C interface...............................................................................................%%
%. ,ispositivos ;las( +and.................................................................................................................%% 1.
$oluciones para conectar una +A+, a un procesador RI$C..............................%6
%. 1rincipales fabricantes y productos anali#ados....................................................%& . $pansion
4
1.
Ar>uitectura y funcionamiento..........................................................................%5
9. /us en alta impedancia..........................................................................................- 3.
'etodolog*a y desarrollo......................................................................................................................-% . 1reparación del entorno de desarrollo..................................................................................-% %. ,ise?o de circuito impreso 1C/.................................................................................................-& 1.
2leccion de soft@are CA, de diseno 1C/........................................................................-&
2.
;amiliari#ación con el soft cad..............................................................................................-&
3.
Restricciones y criterios de fabricacion.......................................................................... -3 1.
,educción de valor de Rpull up..................................................................................-5
%. ;iltro de acoplo.................................................................................................................6! 6. Lista de componentes para adaptación de dispositivo...............................................6! &. ,iseno final 1C/) cara top cara bottom...........................................................................6! . 0eneracion de fic(eros 02R/2R para la fabricacion...................................................6% 9. Comprobacion continuidad de las pistas tra#adas......................................................6-. 1rogramación del driver 01'C..................................................................................................66 . 'emory $lideB C(ip de memoria +A+, '"%5;60A/A,A71.............................66 . Consideraciones ..............................................................................................................66 %. $incronismo de control de la memoria segn su fabricante............................6& %. =ost ,river $ide.......................................................................................................................&4.
Integración de los elementos de la interfa#........................................................................... 63
4. Resultados ................................................................................................................................................5
. Comprobacion del modulo 01'C...............................................................................................5 . Iniciali#acion del driver y dispositivo periferico.........................................................9! %. Operacion de escritura..........................................................................................................9 -. Operacion de lectura..............................................................................................................9% %. Integración........................................................................................................................................9% . Lectura de I,.............................................................................................................................9&. Conclusiones............................................................................................................................................96 . /ibliografia...............................................................................................................................................99 9. Anexos........................................................................................................................................................95 3. 0losario.......................................................................................................................................................59
5
Lista de figuras >ig. ?5 Beaglebone y componente periférico a comunicar..........................................................................................?@ >ig 95 3omparación de arquitecturas entre ambas tecnologías...............................................................................?4 >ig :5 3uadro resumen de &'( vs &)&*...........................................................................................................................?A >ig 4 5 (elación de capacidades y tiempos en función de la tecnología.................................................................?A >ig A5 a+ -ntegración del driver 0123 en el u1$ b+ interfaz 0123 memoria sync$ c+ 0123 &)&*....?; >ig ;5 ,e"ales de control del bus 0123...............................................................................................................................?C >ig C5 -lustración de la 3)1EDB'&ED66@?8?....................................................................................................................99 >ig <5 Evolución de la demanda de &)&* >las# del mercado..................................................................................9: >ig =5 'rganización de una matriz &)&* de 9 0B..........................................................................................................9: >ig ?@5 Ejemplo de una operación de lectura de p!gina multiplexación en tiempo del bus -'...............94 >ig ??5 3omparativo entre interfaz (o y e223...........................................................................................................94 >ig ?95 3uota de mercado mundial por fabricantes de memoria &)&* >las# %9@?@ 9@?A+....................9A >ig ?:5 1etición de operación &)&*.....................................................................................................................................9= >ig ?45 )rquitectura del dispositivo empleado................................................................................................................:@ >ig ?A5 6ransferencia de datos en lecturaescritura de una p!gina.......................................................................:@ >ig. ?;5 Buffer triestado..............................................................................................................................................................:? >ig.?C5 -nterfaz (a.....................................................................................................................................................................:9 >ig ?<5 )rc#ivo configuración et#ernet en #ost port!til..............................................................................................:: >ig ?=5 6razado autom!tico de signals................................................................................................................................:A >ig 9@5 3abeceras y contacto....................................................................................................................................................:; fig 9?5 1uenteo F1 y 833 en la 3apeDboneD66@?v.........................................................................................................:< >ig 995 3orrespondencia de pines 3&? &)&*..............................................................................................................:< >ig 9:5 3ircuito en drenador abierto de la se"al (B......................................................................................................:= >ig 945tiempo de caída y de subida de (B en t3 y t3 en función de (pull up.....................................................4@ >ig 9A5 caras top y bottom del dise"o final.......................................................................................................................4? >ig 9;5 generacion de arc#ivo de la capa bottom............................................................................................................49 >ig 9C5 a+ Línea de comando para generar taladros......................................................................................................4: b+ directorio de arc#ivos de fabricación generados >ig 9<5 a+ ciclo de command latc#$ b+ ciclo de address latc#......................................................................................4A >ig 9=5 a+ ciclos de escritura$ b+ ciclos de lectura............................................................................................................4; >ig :@5 Lanzamiento comando (E,E6.................................................................................................................................4< >ig :?5 'peración comando read status..............................................................................................................................4<
6
>ig :95 ,incronismo de lectura de -*....................................................................................................................................A@ >ig ::5 ,incronismo de activación de una lectura de p!gina.....................................................................................A@ >ig :45 ,incronismo de borrado de bloque........................................................................................................................A? >ig :A5 ,incronismo de una operación de programación de p!gina.......................................................................A9 >ig :;5 >ases de programación para implementar driver flas# 0123..................................................................A4 >ig :C5 *eclaración de las dos variables struct................................................................................................................AA >ig. :<5 2apeo del grupo de registros 32G1E( %del mapa de memoria de la interfaz de periféricos L4GFH/1+.........................................................................................................................................................................................A; >ig :=5 'ffset de registros del grupo 32G1E(...................................................................................................................AC >ig. 4@5 2apeo y baseaddress del 3ontrol 2odule.........................................................................................................AC >ig 4?5 2apeo de los registros 0123 en L:......................................................................................................................AC >ig 495 L: 0123 memory map5 espacio reservado para acceso a memoria externa......................................AC >ig 4:5 >ormas de onda 0123 para el ciclo de comando............................................................................................A< >ig. 445 >ormas de onda 0123 para un ciclo de dirección..........................................................................................A= >ig 4A5 3iclo escritura datos.....................................................................................................................................................A= >ig. 4;5 3iclo lectura datos........................................................................................................................................................;@ >ig. 4C5 bits ;5@ del registro confGImoduleJGIpinJ K...................................................................................................;A >ig. 4<5 a+ cara bottom %inferor+$ b+ cara top %superior+..............................................................................................;< >ig. 4=5 (elación 3&9 con se"ales analizador digital.....................................................................................................;= >ig. A@5 Comportamiento del driver cuando no se ha cargado en el sistema...................................................70 >ig. A?5 Carga del driver..................................................................................................................................C@ >ig. A95 Zoom de la imagen anterior: secuencia de inicialización del driver..................................................C@ >ig. A:5secuencia completa de una escritura de página...................................................................................70 >ig. A45secuencia completa de una lectura de página......................................................................................C? >ig. AA5 ,ecuencia de accesos en la interfaz para leer -* de la &)&* ........................................................C9
7
Lista de tablasB 6abla ?5 resumen características Intel Edison..................................................................................................1 6abla 95 resumen características !asp "i #$...................................................................................................1 6abla :.resumen características !asp "i %.......................................................................................................?= 6abla 45 resumen características &'!&I'(C)................................................................................................?= 6abla A5 resumen características *rduino+no.................................................................................................)0 6abla ;5 resumen características *rduino ,un................................................................................................)0 6abla C5 resumen características *rduino 'ue................................................................................................)0 6abla <5 resumen características #eagle-one hite........................................................................................)1 6abla =51artición de dirección completa en direcciones parciales en una memoria de 90B......................94 6abla ?@5/amilia *' cpress....................................................................................................................)2 6abla ??5 3ipos de *' 3oshi-a.................................................................................................................)7 6abla ?95 4ama de *' 5icron..................................................................................................................) 6abla ?:5 E6emplos de modelos 8C...............................................................................................................) 6abla ?45 &rCad 9s. Eagle light Ed................................................................................................................% 6abla ?A5 ,eguimiento de se"ales entre BB %1<$ 1=+ y la 3apeDboneD66@?v?...................................................:C 6abla ?;5 lista de componentes de;initiva..............................................................................................................................4@ 6abla ?C5 3iempos de setup de hold para comandos....................................................................................<2 6abla ?<5 3iempos para la escritura de dirección............................................................................................<7 6abla ?=5 3iempos del comando de reset........................................................................................................< 6abla 9@5 "arámetros temporales para la lectura de estado.............................................................................<= 6abla 9?5 igni;icado de los campos del registro de estado de la memoria....................................................<= 6abla 995 3iempos de una lecura de página >...............................................................................................0 6abla 9:5 6iempos de una escritura de p!gina................................................................................................................A9 6abla 945 !esumen de las etapas de la operación de escritura de lectura ?ue el host de-e implentar K......A: 6abla 9A5 8ista de los registros de con;iguración del driver 4"5C...............................................................< 6abla 9;5 "asos de solución avanzada 9s. solución -ásica K.........................................................................................A; 6abla 9C5 "arámetros de sincronismo en los % tipos de ciclos de escritura..................................................... 6abla 9<5 "arámetros de sincronismo de la lectura.........................................................................................20 6abla 9=5 !elación de operaciones internas cuando se e6ecuta acceso a un registro de datos........................2) 3a-la %0: 8ista de comandos implementados en la versión del driver actual..................................................27
6abla :?5 9alor de la dirección ?ue se asigna desde el código.......................................................................27 6abla :95 'ireccionamiento *': !epresentación num@rica de los valores del -us durante los ciclos dedireccionamiento de la imagen anterior A Borizontal #its del -us de datos 9ertical nDmero de ciclo......71
8
.4 Introducción La familia de Beagleboards forma parte de una oferta de placas consideradas en buena parte como placas de entrenamiento5 arduino$ (aspberry$ 'range 1i$ -ntel Edison$ etc. 3omo tales$ constituyen una #erramienta de desarrollo muy eficaz entre dise"adores y de aprendizaje fundamental en el !mbito docente. Beaglebone F#ite es una tarjeta de tama"o reducido basada en un procesador )(2 de la familia ,itara que #a sido suministrada con una preinstalación del ,' )ngtrom. *ispone de un surtido módulos para ampliar su conectividad llamados 3)1Es. Esta placa forma parte del material de pr!cticas de una asignatura Digital Systems Using Embedded inu! "DSX# impartida en la universidad /13 a cargo del departamento de -ngeniería Electrónica. En las sesiones pr!cticas se provee al alumnado con una 3)1E usando un softare y aplicaciones particulares para obtener su funcionalidad$ junto con la placa. /no de los est!ndares de comunicación con periféricos implementados en la placa es el bus 0123$ que gracias a la 3)1E y a la programación de su driver se puede interconectar a un dispositivo de memoria externo compatible. Este es uno de los objetivos del plan de la asignatura. asta a#ora$ las comunicaciones a través de este est!ndar estaban orientadas al acceso de una memoria emulada en el #ardare de una >10)$ debido a la flexibilidad que permite trabajar describiendo #ardare. ,in embargo$ la 3)1E presenta un conector adaptado para las comunicaciones &'(. )unque no es difícil readaptar el conector a un acceso &)&*$ la complejidad de una descripción de #arare de una memoria &)&* se eleva exponencialmente y$ por lo tanto$ la viabilidad de esta vía dentro de los m!rgenes de tiempo restante resulta incierta.
..4 ContextoB La motivación de este trabajo es la de ampliar la gama de periféricos accesibles desde la Beagleboard en el contexto de las pr!cticas de la asignatura. 1artiendo de un driver adaptado al nuevo sistema se desarrollor! un controlador para flas# &)&* Dque sólo puede ser asíncrona y secuencialD y una alternativa para flas# &'(. *ebido a la ausencia de soporte técnico actual sobre el sistema preinstalado se determinó reemplazar ,' )ngstrom por el ,' /buntu y una adaptación del softare de las 3)1Es al mismo$ verificado en un trabajo anterior. *e modo que el primer paso para iniciar el desarrollo del presente trabajo consta en seguir las indicaciones sugeridas para una correcta migración #acia dic#o sistema %se validar! probando aplicaciones ya adaptadas y verificadas+. ) partir de a#í se continuar! con la instalación del entorno de trabajo. ,e desarrollar!n los códigos en 35 adaptación del código del driver 0123 para manejar accesos flas# &)&* y un sencillo algoritmo que permita al usuario demandar estas operaciones al driver. En paralelo se proceder! a una valoración de las familias de memorias flas# &)&* del mercado y elección del fabricante y modelo. /na vez seleccionado$ se dise"ar! un esquem!tico con las indicaciones y sugerencias del fabricante. El siguiente paso es realizar el dise"o de la 13B mediante una #erramienta 3)*$ que m!s se adapte a las necesidades y cumpla los requisitos mínimos del trabajo. Las memorias >las# &)&* y >las# &'( son dos tecnologías basadas en el principio flas# %matriz de puertas lógicas negadas+ pero diametralmente opuestas en varios aspectos. asta a#ora$ debido a su naturaleza$ esas diferencias$ #an dividido el uso de las dos tecnologías en dos campos de aplicaciones. El acceso &'( es aleatorio %random+ y el acceso &)&* es secuencial y en streaming. 1or lo que &'( solía ser la m!s empleada en almacenamiento de memoria de programa$ mientras que &)&* estaba siendo idónea para almacenamiento de dispositivos que capturan r!fagas de grandes de datos de forma compacta. ,in embargo los avances tecnológicos permiten emplear una memoria &)&* en modo boot$ en lugar de &'(. El proceso es algo m!s complejo$ pero se obtienen las ventajas de una memoria &)&*. &o obstante la diferencia trasciende de su aplicación. El direccionamiento y los accesos de estos dos tipos de memoria son muy diferente y debe ser cuidadosamente definidos en el softare de control. *isponer de las dos alternativas en el material de la asignatura es una propuesta
9
completa y enriquecedora. )cadémicamente$ merece la pena conocerlas y tener contacto no sólo teórico sino pr!ctico con sus diferencias Dy similitudesD. >inalmente se ofrecer! un interesante rango de posibilidades de maduración de la interfaz que brindaría la incorporación de este material Den un punto de partida mejorableD a la asignatura. 6ambién se expondr!n las limitaciones que el contexto de este proyecto propició. El manual técnico de referencia del procesador$ un )2::Axx de 6exas instruments y su foro oficial disponen la información sobre cómo programar el driver 0123 en el apartado dedicado al sistema de memoria. El manual refiere a una serie de registros de configuración cuyos campos deben completarse con los valores apriopiadamente definidos$ sobretodo las temporizaciones de las se"ales de control$ en el lado 31/ %#ostbeaglebone+ de la interfaz a crear. 2ientras que la otra gran parte de información requerida se consultar! en el datas#eet del modelo de memoria seleccionada que ayudar! a deducir estos timings$ el direccionamiento y las fases necesarias para completar las operaciones de acceso.
.%4 Objetivos y especificacionesB El objetivo es obtener una interfaz funcional capaz de dar una solución a la comunicación de la Beagbleone y su 3)1E %a través del conector del bus 0123 existente en la 3)1E+ con un modelo de flas# &)&* específico.
+
Bea!e"one #$%te "oar&
Conector GPMC CAPE PCB
NAND TSOP
Fig. 1: $eaglebone y componente perif%rico a comunicar.
,e dispone de un 13 como #erramienta de trabajo con una partición de /buntu instalada. ,e modifica su Hernel para actualizar el compilador cruzado y adaptar los fic#eros generados de la compilación al nuevo sistema embebido de la beaglebone #ite )ngstromg. El compilador cruzado instalado en un arquitectura de 13 se emplea para generar los arc#ivos binarios necesarios a ejecutar en la arquitectura )2::Axx. Es decir$ se escribe código fuente en 3$ se guardan con la extensión .c en cualquier directorio del sistema$ se compilan y generan en el computador personal %a través de su maMefile que #abr! que adaptar también+ para ser interpretados y ejecutados en la placa$ dispositivo externo e independiente del ordenador. En otras palabras$ aunque se compilen en el ordenador$ las sus apps de la beaglebone no se pueden ejecutar en el 13. )sí pues$ el entorno de trabajo para desarrollo del apartado de softare es un 13 con /buntu ;4 bits versión ?4.@4 para generar arc#ivos$ establecer conexión con la placa y comunicarse con ella para acceder a su sistema de fic#eros$ etc. Entre otras cosas el 13 brindar! la i nterfaz gr!fica para visualizar el terminal de acceso al sistema de fic#eros de la placa. En general$ cuando una aplicación de usuario demanda una operación que requiere un acceso a un periférico es el controlador quién gestiona la orden y la traduce en operaciones de accesos al #ardare. Este toma el dato requerido por la aplicación y se lo devuelve a la aplicación o lo conduce
10
#asta el #ardare en función de si se trata de lecturas o escrituras. 1or tanto$ se precisa del dise"o de una app que active estas peticiones al driver y active las operaciones pertinentes para las que se #a programado. *ado que trabajar a nivel de Mernel implica escribir valores o leer bits en registros$ el código fuente ser! implementado en 3 incluyendo librerías y cabeceras. Na se #a comentado anteriormente que la configuración de accesos &)&* es muc#o m!s compleja y laboriosa que un acceso &'($ adem!s es un tipo de memoria proclibe a fallos de operación por bloques defectuosos. El driver de accesos &)&* tiene unas configuraciones mínimas obligatorias. El resto son opcionales$ pero optimizan y mejoran la calidad de los accesos. El presente trabajo requiere desarrollo de softare y #ardare. El objetivo principal es obtener una interfaz integrada funcional para poder realizar futuros desarrollos m!s complejos$ avanzados y sofisticados que pueden optimizar los accesos o permitir jugar con otras funciones. 1or lo tanto$ se realizar! una versión del driver bastante b!sica. El mero intento de tratar de gestionar el control de errores puede dar lugar a un trabajo de a"os de programación para un profesional sin experiencia suficiente. Los profesionales acostumbran a trabajar a niveles superiores de desarrollo dejando este nivel de abstracción a sus proveedores de librerías. ,in tener en cuenta el #ardare a dise"ar$ el softare se puede realizar y comprobar como bloque Onico. Esto permite trabajar en paralelo con el desarrollo de la placa de circuito impreso sin que interfieran etre sí. )mbos son bloques independientes #asta el momento de testar el comportamiento del driver mediante la observación del comportamiento de sus se"ales con el analizador digital. 'bservar las se"ales lanzando operaciones de acceso. ,i no se cumple se proceder! a reajustar los par!metros temporales. /na vez obtenidos los resultados esperados se procede a la integración de la 3)1E de la Beaglebone$ 13B con dispositivo de memoria &)&* y softare5 conexión y ejecucicón de la app. ,e proceder! a una petición de operaciones sencillas como lanzamiento de (E,E6$ lectura de estado$ lectura de -* a la memoria$ etc las cuales verificarían la funcionalidad tanto del #ardare como de la interfaz. )unque estas indican peticiones de lectura en &)&* todas las peticiones posibles se realizan mediante activación de operaciones de escritura de comandos previas. 1or lo tanto$ en caso de que la lectura otorgue el resultado previsto a la aplicación ejecutada en /buntu embebdido puede darse por cumplido el objetivo principal. -mplica que las se"ales de escritura y lectura est!n cumpliendo con lo establecido$ llegando sin deteriorarse a los pines del c#ip de memoria. En caso contrario #abría que ajustar los valores de los componentes smd empleados (s de pull up$ (s jumper$ 3s de desacoplo y de filtrado de armónicos$ etc.
.-.4 "rabajo reali#ado anteriormenteB 3omo se #a citado anteriomente se #an seguido una serie de pasos sugeridos por un trabajo anterior para la instalación del nuevo ',. ,e proporciona una imagen del nuevo sistema como parte del material necesario para obtener una migración •
BeagleBone/
[email protected] imagen del sistema operativo a instalar en la BB$ en concreto en la flas# card. (equerir! alguna #erramienta que permita grabar la imagen en ,* card.
Los desarrollos anteriores sobre la realización de un módulo 3)1E para la asignatura y en concreto$ la comunicación a través de su bus 0123$ pueden encontrarse en el apartado correspondiente del trabajo PDesign of a dedicated cape board for an embedded system lab course using$eagle$one Q de (aOl 1érez López para )ngstrom ',. La versión original del driver entregada es un template con la estructura de un driver típico para Linux que accede al registro -* del u1$ realizado para la asignatura. Los desarrollos se van a basar en él para las posteriores versiones5 &)&*. El material proporcionado para cargar el driver en el sistema consta de un set de fic#eros .c y .# distribuidos del siguiente modo5
11
•
carpeta lmG?? R directorio principal ◦
◦
carpeta application ▪
fic#ero main.c R aplicación
▪
fic#ero maMefile para la app
carpeta module ▪
fic#ero module.c R driver para linux
▪
fic#ero maMefile para el driver
▪
carpeta de includes •
fic#eros.# R varios fic#eros cabecera5 algunas modificaciones leves van a ser necesarias en estas cabeceras. ,e indicar!n en el apartado de metodología.
: elementos son imprescindibles para desarrollar la interfaz5 un sistema embebido$ una memoria flas# &)&* y un #ost para crear una red local y acceder remotamente al sistema embebido.
.6.4 $istemas embebidosB Los sistemas embebidos son sistemas de computación altamente integrados que ocupan p oco espacio$ bajo coste y tienen un consumo muy reducido. *ic#os sistemas suelen estar dise"ados para una o varias aplicaciones muy específicas. /na característica de todo sistema embebido es que la mayoría de los componentes se encuentran incluidos en una placa y muc#as veces los dispositivos resultantes no tienen el aspecto de lo que se puede considerar la típica computadora. /n ordenador de propósito general est! dise"ado para cubrir un amplio rango de necesidades. 2ientras que un sistemas embebido se dise"a para cubrir necesidades específicas$ pudiendo dar una respuesta en tiempo real. ,u nOcleo puede ser programado en ensamblador y 33SS. ,i los requisitos temporales no son exigentes ni críticos pueden incluso emplearse lenguajes como 7ava. Los sistemas embedded juegan cada día un papel m!s importante en los dispositivos electrónicos que nos rodean cotidianamente$ sobretodo con la incipiente irrupción del internet de las cosas %-o6+. ,istemas embedded los #ay de varios niveles de complejidad. *esde la electrónica que gobierna el funcionamiento de un enrutador$ reproductor *8*$ #asta los de m!s alta complejidad como por ejemplo un smartp#one debido a la gran cantidad de funciones y prestaciones que aportan. 6ípicamente los procesadores de un sistema embebido m!s complejo suelen venir acompa"ados de mOltiples periféricos integrados en el propio encapsulado$ sobretodo memoria. ,e les denomina microcontroladores. ,on empleados para aplicaciones de propósitos específico en muc#os sistemas embebidos. En términos de arquitectura lo que diferencia un ordenador de sobremesa o port!til y un sistema embebido es la arquitectura del procesador 3-,3 vs microprocesador )(2 (-,3. Los 3-,3 pertenecen a la primera corriente de construcción de procesadores$ antes del desarrollo de los (-,3. Los microprocesadores 3-,3 tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas. Este tipo de arquitectura dificulta el paralelismo entre instrucciones$ por lo que$ en la actualidad$ la mayoría de los sistemas 3-,3 de alto rendimiento implementan un sistema que convierte dic#as instrucciones complejas en varias instrucciones simples del tipo (-,3. 6oda la familia -ntel x<; o )2* x<;D;4 usada en la mayoría de las 3omputadoras 1ersonales actuales son 3-,3. )(2 es una arquitectura de set de instrucciones de :9b y ;4b m!s ampliamente utilizado en la actualidad por la mayoría de procesadores y microcontroladores para mejorar su rendimiento. &ecesitan una cantidad menor de transistores que los procreadores x<; 3-,3 lo que lleva a una reducción de costes$ calor y consumo. >ue concebida por el fabricante )corn Business 3omputers %)B3+ que cobra por licencia de uso en cada procesador que se utiliza esta arquitectura. 3'(6ET es una de las familias de procesadores )(2 de alto rendimiento.
12
El !rea de los minicomputadores #a sido una de las !reas en las que la competencia #a dado respuesta m!s r!pido desde su irrupción. El mercado de ordenadores de mínimo coste #a estado r!pido presentando alternativas. 1uede d!rsele un uso en la robótica$ automatización domótica$ centro multimedia doméstico$ computador de propósito general para navegación eb$ #erramienta escolar$ gaming$ trabajo de oficina$ dispositivo de prototipado para #ardare$ estación de desarrollo de softare$ entre muc#as. )rduino$ BE)0LEB'&E$ (aspberry forman parte de la nueva generación de minicomputadores basados en procesadores 3'(6ET. ,on placas de desarrollo conocidas como open #ardare que se utiliza con fines educativos e industriales. Estas placas realzan y potencian las ventajas del openD #ardare y softare de código abierto ya que permiten realizar y mejorar gran variedad de funcionalidades. BeagleBone es la placa de Beagleboard de bajo costo enfocada una alta expansibilidad usando un procesador )(2 3ortex )< lo cost ,itara )2::Ax de 6exas -nstruments. La versión de Beaglebone empleada durante el proyecto es la (evision );B cuyo procesador es concretamente un )2::A
.&.4 'emorias flas() tecnolog*a +OR vs +A+, en sistemas embebidos La memoria flas# es un tipo de dispositivo no vol!til %no es necesario que esté conectado a la corriente para que siga almacenando la información+. El inventor del tipo de memoria flas# fue >ujio 2asuoMa en ?=<4. Es una evolución de las memorias EE1('2 %tipo de memoria ('2 que puede ser programada$ borrada y reprogramada eléctricamente+$ pero con una gran mejora tanto en el aspecto económico como en el físico$ ya que son m!s peque"as y por lo tanto f!ciles de transportar$ borrar y programar. Las EE1('2 necesitan un dispositivo especial llamado lector de 1('2. ,in embargo flas# permite #acerlo desde el ordenador. )dem!s la velocidad es muc#o mayor con respecto a las otras memorias existentes debido a su capacidad de borrar y escribir en una misma operación. En la actualidad el desarrollo de las memorias flas# es muc#o m!s r!pido en comparación con otras memorias. Esto es posible gracias al uso personal que se dan a estas memorias que permite seguir invirtiendo en el desarrollo de tecnología para las memorias flas#. La memoria >las# &)&* se inventó después de la memoria >las# &'(. >las# &'( es excelente en aplicaciones donde los datos se recuperan o se escriben de manera aleatoria. 1or ello &'( se encuentra m!s frecuentemente integrada en sistemas para almacenar firmare o el programa de la B-', de arranque de un computador. 3ada acceso adesde &)&* #a de ser precedido de varios ciclos de escritura indicando la operación y la dirección cosa que &'( no requiere. 3ada fabricante dispone de un set de comandos para su modelo &)&*. Las operaciones son activadas por comandos y se"ales de control. 2ientras que a &'( le basta con la se"alización de control para interpretar e iniciar sus accesos. El tipo &'( permite una escritura m!s lenta que &)&*$ pero procesa muy r!pido las rutas de acceso aleatorias. Esto #ace que &'( sea una solución óptima para la ejecución y almacenamiento de instrucciones de programa$ mientras que &)&* es m!s indicado para el almacenamiento masivo de datos. &)&* puede almacenar m!s datos en un espacio de silicio m!s peque"o$ lo que a#orra el coste por bit. En el pasado$ cuando el almacenamiento de datos era m!s bajo$ &'( tuvo mayor influencia en el mercado. 6radicionalmente los sistemas embebidos #an estado empleando &'( para memoria no vol!til. Las eficiencias &)&* son debidas en parte al menor numero de contactos met!licos requeridos. El tama"o es considerablemente menor$ a razón de 4>V9 por celda &)&* y ?@>V9 %>WFxL+ por celda &'($ ya que requieren contactos met!licos separados por cada celda.
13
;ig. %B &omparaci'n de arquitecturas entre ambas tecnolog(as 2!s diferencias a nivel estructural es la cuenta de pines &'( >las# necesita 44 -' pines para ?;Dbit mientras que &)&* emplea sólo 94 pins. &)&* activa su petición de operación mediante envío de comandos$ direcciones y transacciones en dos sentidos de datos por el mismo bus de datos. Esto permite migrar #acia dispositivos de diferentes densidades y anc#o de datos sin necesidad de rectificar el resto del #ardare de la 13B en la que se integra. &)&* >las# es la m!s apta para arc#ivos de datos y aplicaciones de datos secuenciales. &'( >las# es una tecnología m!s adecuada para accesos random. &)&* proporciona operaciones de borrado y escritura m!s r!pido. ,in embargo &'( es la m!s eficiente para el acceso aleatorio y escrituras de un byte. 0racias a ello$ a &'( posee la funcionalidad Ti1 %executeDinDplace+ requisito indispensable para arrancar el sistema desde ese c#ip de memoria. )unque cabe decir que cada vez #ay m!s procesadores que incoporan una interfaz directa #acia la &)&* para poder iniciar el boot desde la memoria &)&*. 1ero sin duda$ la principal desventaja de esta memoria es la lentitud de sus accesos random$ motivo por el cual se #a desaconsedo tradicionalmente su empleo para dic#o modo de operaciones. 1or contra &'( tiene tiempos de escritura y borrado muc#o m!s lentos. ,i bien algunas memorias &'( pueden leer mientras escriben$ &)&* no puede. ,ólo es posible realizarlo a nivel de sistema usando métodos de sombreado %s#adoing+. Es un método que no es desconocido ni novedoso$ ya que es el mismo que se viene empleando desde #ace a"os para cargar la B-', desde ('2, m!s lentas #acia ()2s m!s r!pidas en el campo de los computadores. Esta técnica permitiría realizar accesos aleatorios %a nivel de sistema ocultando datos a la ()2 y requiere ()2 adicional+. 'tra característica de las memorias &)&* es que son m!s susceptibles a los fallos. 1or ello la mayoría son compatibes con diferentes técnicas y algoritmos que permiten detectar y bloquear el acceso a bloques corruptos. Es recomendable trabajar con estas técnicas #abilitadas para aumentar garantías frente a los fallos. *e no activar ningOn mecanismo aumentaría el riesgo de accesos fallidos. 'tros algoritmos balancean el uso desigual en nX de veces que unas zonas son accedidas y otras no$ para que todas las zonas tengan el mismo nX de usos en promedio. 6ienen un ciclo de vida mayor que las &'($ #asta diez órdenes m!s. &o obstante el uso de &'( est! generalizada en la industria porque ofrece una interfaz m!s sencilla y adem!s puede ejecutar código. 1or su arquitectura consiste en un buen arreglo #asta los pocos 2B. 'frece un alto rendimiento para las lecturas pero muc#o peores tiempos para la escritura. Yptimo para las aplicaciones con accesos sólo lectura. ,e desaconseja para almacenamiento de datos. Las evoluciones &)&* cada vez suponen m!s una buena solución para combinar ambas cosas5 reservar una zona para programa y otra para datos con mayor capacidades que &'( a precios m!s económicos.
14
Fig. 3: &uadro resumen de )*+ vs ))D.
(esumiendo$ para &)&*5 •
La interfaz %serie+ y dise"o softare del control es muc#o m!s complejo que &'(.
•
2apeo -' de &)&*5 direccionable por bus de datos. ◦
&'(5 mapeo completo de sus direcciones.
•
Los accesos random implican una técnica llamada s#adoing y unos tiempos muc#o mayores.
•
)ccesos secuenciales y en r!fagas5 borrados por bloques$ escrituras y lecturas por p!ginas.
•
&)&* es legible y escribible. )unque para escribir$ primero #ay que borrar %sólo escribe Z@Zs+. ◦
•
&'( tiene una escritura menos eficiente5 aplicaciones mayoritariamente sólo lectura.
Yptima para almacenamiento de datos de alta densidad y capturas de datos que requieren mejores tiempos.
•
2!s económica y menos espaciosa %mayor densidad+.
•
Los tiempos de escritura son menores.
La siguiente gr!fica ilustra de forma concisa los principales campos de aplicación óptimos para estas 9 tecnolog!s.
Fig. 4: +elaci'n de capacidades y tiempos en funci'n de la tecnolog(a.
..4 /us 01'C 0123 %controladores de memoria y de uso general+ es un controlador de memoria unificada para conectar dispositivos de memoria externos como &)&*$ &'($ ,()2 asíncrona etc.
15
6iene una m!xima capacidad de direccionamiento de A?92B que puede ser dividido en siete c#ip de memoria controlados por 3, con el tama"o del banco programable y de dirección base de ?; 2B$ :92B$ ;42B$ ?9<2B o 9A;2B independientemente. 3ada 3, tiene unos par!metros tiempos de #old y setup que pueden ser programados asociados a las se"ales de control. *eben fijarse en los registros del bus$ bas!ndose en los requisitos de los par!metros de la memoria con un factor de escala temporal del reloj de la interfaz slo L:. 3uyo reloj >3LH proporciona una velocidad m!xima de ?@@2#z %?@ns por ciclo+. 2ediante la programación de sus registros$ una aplicación puede ser capaz de acceder al mencionado tipo de dispositivo a través del bus 0123. 0123 posee el motor de código de corrección de errores %E33+. ,oporta distintos algoritmos de E33 como código de amming$ B3 4$ < y ?; bits. 6iene otras dos funciones avanzadas opcionales que aumentan la velocidad de las operaciones5 1refetc# y rite posting engine. 1uede ser utilizado leer o escribir en modo buffer. 6ambién 0123 proporciona acceso *2) que se puede utilizar junto con el prefetc# para aumentar el rendimiento &)&* para leer escribir$ entre otras características que pueden #allarse en el capítulo introductorio del manual de referencia de la 31/.
Fig. 5: a# -ntegraci'n del driver /0& en el u/, b# interfaz /0& 1 memoria sync, c# /0& 1 ))D
) partir de los campos de bits de configuración programados y almacenados en los registros de 0123$ el #ost 0123 es capaz de generar todas las se"ales de control de temporización segOn el dispositivo y tipo de acceso necesario. *ada la decodificación de selección de c#ip y sus registros de configuración asociados$ 0123 selecciona el tipo de dispositivo de control de se"ales de temporización apropiada.
16
Fig. 6: Se2ales de control del bus /0&
17
%.4 2stado del arte y motivaciones para la elección de la tecnolog*a empleada. %..4 'inicomputers Estas plataformas de desarrollo est!n detr!s de la ingeniería encontrada en los dispositivos m!s innovadores de la actualidad$ sobretodo el -o6 y los dispositivos PearablesQ. ,on #erramientas f!cilmente localizable en todo laboratorio como origen de la creación de los prototipos. &o #ay que olvidar la importante labor de este tipo de plataformas en los entornos docentes. 1or lo tanto se presenta una lista de los modelos m!s conocidos y empleados en la industria 5
%...4Intel 2dison 1laca con ,o3 de doble nOcleo de -ntel )tom que tiene integrado FiD>i$ Bluetoot# LE y un conector de C@ pines que permite a los usuarios conectar una variedad de periféricos. ,oporta Nocto Linux$ )rduino$ 1yt#on$ &ode.js y Folfram$ así que es tan flexible como potente. 6iene un bajo consumo de energía y su dise"o en miniatura convierten a la -ntel Edison en una excelente opción para los dise"os sensibles al tama"o e integrados. ,e realiza con compatibilidad con )rduino. Existen otras placas que la proveen de mayor funcionalidad y se emplean para conectar con otras placas. CLE
I
A@@ 2#z x9 3ore
C@
:,,
'emoria
-5 :.?A8
()25 ?0B
Core )6'2 /15 )(2??C;7U>D,
2ax5 4.A8
17'
Interfaces
4 %-'+
/,B
:9b
-93
'5 ?.<8
Et#ernet u,* 01-'s FiDfi ,1/)(6 B6 4.? 223
Tabla 1: resumen características Intel Edison
%..%.4Raspberry 1i Las aplicaciones en el (aspberry 1i pueden ser f!cilmente construidas y probadas usando 1yt#on$ que es el lenguaje de programación principal destinada a este tablero. 'tros lenguajes como 3$ 3 SS$ 7ava y 1erl también son factibles para desarrollar aplicaciones en el (aspberry 1i. 0racias a su slot para micro,*$ la (aspberry 1i BSpuede manejar cualquier sistema operativo desde una distribución Linux #asta Findos ?@. 3on 4 puertos /,B$ salida *2-$ 2icro /,B y un (74A Et#ernet ?@?@@$ #erramienta totalmente abierta. >amilia de (asp 1i por orden de lanzamiento5 (aspberry 1i ? 2odelo )$ 2odelo B$ 2odelo BS$ modelo 9$ 2odelo :.
Rasp 1I /DB Es el modelo de la gama que representa el primer cambio significante desde el primer dispositivo. a aumentado la cantidad de memoria ()2 a ? 0B$ aunque se mantiene el )(2?? de coma flotante. ,í se #a mejorado en cambio el consumo$ gasta entre @.A y ? F menos de energía. 6ambién mejora la calidad del audio al tener fuente propia. BS also incluye el mismo puerto para el módulo de c!mara de las versiones anteriores y es compatible con los mismos sistemas opeativos %(aspian$ 'penELE3$ ',23$ etc.+. CLE
I
C@@ 2#z
4@
:,,
I,C
'emoria
A8
Av5 ;@@m)
()25 A?9 2B
:$:8
-':.:85A@m)
Core B329<:A /15 )(2??C;7U>D, :9b
17'
Interfaces
: %-'+
4 /,B -93 Et#ernet u,* 3,-%3!mara+ *,-%*isplay+ ,1/)(6 L*2>ull L*
Tabla 2: resumen caracter(sticas +asp /i $3
18
Rasp 1I -B Los desarrolladores aseguran que el nuevo procesador es diez veces m!s potente que el de la (aspberry original y un A@[ m!s r!pida que la segunda (aspberry. >unciona a ?$90z y es de ;4 bits. La memoria ()2 se mantiene en ?0B. Es la evolución m!s importante en potencia y posibilidades$ al incorporar conectividad FiD>i$ Bluetoot# lo energy y un nuevo procesador de 6 bits con cuatro nOcleos %)(2 3ortexD)A:+. 3ompatibilidad completa con it# (aspberry 1i ? and 9. Because it #as an )(2vC processor$ it can run t#e full range of )(2 0&/Linux distributions$ including ,nappy /buntu 3ore$ as ell as 2icrosoft Findos ?@. CLE ?.9 0#z 4 3ore
I
:,, A8
I,C <@@m)
'emoria ()25 ?0B
Core B329<:C u15 )(2D)A:
Interfaces 4 /,B
*2)
;4b
-93 Et#ernet FiDfi u,* 3,-%3!mara+ *,-%*isplay+ ,1/)(6 L*2-
Tabla 3: resumen caracter(sticas +asp /i 4
%..-.4O,ROI,4C% /na de las placas de desarrollo de ;4b m!s económicas en el sector de los )(2. Es una solución asequible que mejora en algunos aspectos a 1i :. 'frecen un equipo que es m!s r!pido que (aspberry 1i :$ adem!s de doblarlo en memoria. Est! un paso por detr!s en conectividad inal!mbrica5 no cuenta con soporte Fi>i$ tampoco Bluetoot#. 6ambién dispone cuatro puertos /,B 9.@$ un receptor para infrarrojos$ y una salida *2- 9.@ que permite sacar una salida 4H;@z$ con soporte .9;A.9;4. El c#ipset que lleva la placa 39 es un )mlogic ,=@A$ que tiene un procesador de cuatro nOcleos funcionando a 90z$ con un tipo de nOcleo )(2 )A:$ también. )lgunos de los sistemas operativos m!s modernos que pueden cargarse en '*('-*D39 son /buntu$ )ndroid$ )(3Linux$ *ebian$ con miles de paquetes open source disponibles. Los 4@ pines 01-' en un '*('-*D39 son una forma de interactuar con los dispositivos físicos como los botones y los LE* utilizando un controlador sencillo de Linux. 1ara desarrollos 3 3 SS o 1yt#on$ #ay la biblioteca Firing1i es muy Otil para interactuar con los pines. CLE 9 0#z 4 3ore
I
:,, A8
I,C A@@m)
'emoria ()25 9 0B
Core )mlogic ,=@A$ u15 )(2D)A:
Interfaces 4 /,B
;4b
-93 Et#ernet u,* 3!mara /,B C9@ p (ecept infrarojos ,1/)(6 L*2- %audio \ video 1F2
Tabla 4: resumen caracter(sticas *D+*-D5&6
%..6.4Arduino )rduino es una compa"ía de#ardare libre$ la cual desarrolla placas de desarrollo que integran un microcontrolador y un entorno de desarrollo %-*E+ basado en el entorno de 1rocessing y un lenguaje de programación basado en Firing$ así como en el bootloader que es ejecutado en la placa. -ncluye soporte a una versión simplificada de 3 y 3SS. El #ardare consiste en una placa de circuito impreso con un microcontrolador$ usualmente )tmel )8($ puertos digitales y analógicos de entradasalida 4 los cuales pueden conectarse a placas de expansión %s#ields+ que expanden las características de funcionamiento de la placa arduino.
19
)rduino ofrece una gran variedad de productos entre placas$ s#ields y otros complementos. Las frecuencias de reloj entre las que oscilan sus modelos son los < 2#z y los <;2#z$ )rduino *ue. La gama de placas )rduino son5 /&'$ ?@?$ 1(' $ 2E0)$ UE('$ */E$ N]& y A modelos Fearables m!s.
Arduino FnoB )rduino /no ,2* (: es una placa basada en el u3 )tmega:9<. 3on ?4 inputoutput pins digitales$ ; inputs analógicos$ un oscilador de ?; 2z$ con conexión /,B$ un jacM para alimentación$ una cabecera -3,1 %programación en circuito+ y botón reset. 3ontiene todos los componentes para soportar el u3$ se conecta a la computadora vía /,B o se alimenta por medio del adaptador )3*3. 1inout5 incluye pines ,*) y ,3L para la comunicación 6F- próxima al pin )(E> y otros dos m!s cerca del pin (E,E6$ -'(E> permite a los s#ields adaptarse al voltaje provisto desde la placa. CLE ?;2#z
:,, A8
I,C x pin -'5 4@m)
'emoria ,()25 9HB
)nal5 ;
C?98
:.:v5 A@m)
EE1('25 ?HB
-93
>jas#5 :9HB$ @$AHB para boot
-3,1
2ax5 9@8
Core 35 )6mega:9<
17'
I
; %-'+
estHndars /,B
Tabla 5: resumen caracter(sticas rduinoUno
Arduino GunB )rduino Nun es un miembro de una nueva línea innovadora de productos Fi>i que combinan el poder de Linux con la facilidad de uso de )rduino. El )rduino Nun es la combinación de un cl!sico )rduino Leonardo %basado en el procesador )tmega:9/4+ con un sistema de Fi>i onDc#ip funcionando con 'penFrtDNun %una distribución 0&/ Linux basada en 'penFrt+. Es una m!quina Linux embebida directamente en la 13B de la )rduino Leonardo. 1ero se conectan los dos para que a partir de )rduino sea muy f!cil de ejecutar comandos en el lado de Linux y utilizarlo como una interfaz Et#ernet y FiD>i. CLE ?;2#z
I
:,, A8
I,C x pin -'5 4@m)
)nal5 ?9
2ax5 A8
:.:v5 A@m)
'emoria ,()25 9.A HB
Core u35 )tmega:9u4
17' C %-'+
EE1('25 ?HB
estHndars /,B -93
>las#5 :9HB$ 4HB para boot
Et#ernet u,*
Tabla 6: resumen caracter(sticas rduino 7un
Arduino ,ueB El )rduino *ue es una placa electronica basada en la 31/ )tmel ,)2:T
I
:,, I,C x pin :.:8 -'5 ?:@ m) CD?98 :.:v$ Av5 <@@m) 2ax5 ; D?;8
'emoria ,()25 =; HB >las#5 A?9 HB *2)
Core u35 )6=?,)2:T
17' ?9 %-'+
estHndars /,B -93 Et#ernet u,* ,1/)(6
Tabla :resumen caracter(sticas rduino Due
%..&.4/eaglebone 7(ite Es un mini ordenador Linux del tama"o de una tarjeta de crédito$ con un coste de ^ <=$ que se conecta a -nternet y ejecuta el softare como )ndroid 4.@ y /buntu. 1roporciona gran cantidad de E , dos conectores de expansión de 4; pines y la potencia de procesamiento para el an!lisis en tiempo real proporcionada por un procesador ,itara )(2 3ortex )< de C9@2z )2::Ax$ 9A; 2B de ()2$ Et#ernet en el c#ip$ una ranura micro,*$ un puerto /,B #ost y puerto del dispositivo multifuncional
20
que incluye control en serie de bajo nivel y conexiones 76)0 de depuración de #ardare$ por lo que no se requiere ningOn emulador 76)0. /n nOmero de estas 3)1Es se #an publicado recientemente. CLE C9@2#z
I
:,, -'5 A8 '5 :.:8
I,C x pin A85 A@@m)
'emoria ()25 9A;2B
Core u15 )(2 )< :9b
17' < %-'+
estHndars /,B 4x/)(6 Et#ernet 0123 u,* 0rap# :* 3)& 223 -93 ,1L3* 4xLE*s
Tabla !: resumen caracter(sticas $eaglebone 8hite
%... 4 /eagle/one /lac8 El modelo blac9 de BE)0LEB'&E es un tablero bajo costo de gran alcance que es el sucesor del modelo :hite de BE)0LEB'&E. ,e proporciona un procesador m!s r!pido$ que es un )(2 3ortex )< a ?0z. La memoria ()2 también se #a mejorado$ proporcionando A?92B **(:. /na mejora importante en comparación con el modelo :hite es que incluye una interfaz *2- micro$ lo que sumado a su poder #ace esta placa ideal para aplicaciones multimedia. Esta placa puede obtenerse por ;@ _ aproximadamente.
%..94 'odelo empleado La BeagleBone viene dotada de dos conectores %#eaders+ de expansión 1= y 1<$ usados frecuentemente para conectar las 3)1Es. Estos conectores son dos columnas de 4; pins dispuestos en columnas de 9x9: pines cada una. *e forma que ofrece un set de ;A 01-'s y otras interfaces. /na 3)1E 13B es el nombre de una placa de expansión para BB. /na 3)1E es el mismo concepto que los ,-EL*s para )rduino. Estas placas de expansión pueden ser adquiridas comercialmente o dise"adas de forma autónoma e independiente por un usuario. /na 3)1E puede tener una variedad de periféricos controlables por el procesador. ' bien$ pueden implementar la interfaz de un Onico periférico. 1or otro lado una 3)1E requiere una EE1('2 con información concreta para que el sistema reconozca y cargar la correcta descripción del #ardare. La EE1('2 que est! en la cape almacena diferentes par!metros de información$ como un usuario$ nOmero de serie$ nOmero de parte$ la información de revisión y otros. La Onica información que el gestor de la cape requiere es el nOmero identificador y la revisión. La arquitectura del nOcleo es compatible con sistemas operativos embebidos como *ebian$ /buntu$ )ndroid o )rc#.
%..9..4 Lab Cape ""!v 6al como se adelanté en otro apartado esta cape fue desarrollada en un proyecto anterior para conectarla a la BB y ser empleada en la asignatura. >ue dise"ada para trabajar usando un cape manager bajo el Mernel :.<. En el arranque$ el Mernel carga el fic#ero *6B$ am--&x4bone.dtb. /n *evice 6ree Blob %*6B+ es un fic#ero binario describiendo el #ardare del sistema completo. El arc#ivo ser! cargado por el bootloader en el momento boot y analizado por el Mernel. 2ientras un *6B se refiere a ser analizado cada momento de arranque$ las 3)1Es no son est!ticas. Esto lleva a que diferentes 3)1Es deben ser conectadas cada vez que la placa arranca y la Onica forma de reconocer qué tipo de 3)1E est! conectada ser! consultando la EE1('2 en cada 3)1E. El arc#ivo que puede cargar din!micamente en el Mernel en ejecución es capeDboneD66@?v?D @@)@.dtbo y es gestionado por el 3)1E manager. 2!s all! del :.< estos dos conceptos desaparecen. *e otro modo a"adir la descripción al Hernel parece que puede ser un proceso tedioso #asta que un
21
nuevo método m!s flexible aparezca$ como todo indica que va a suceder con próximas ramas de Mernel. /n dtbo aplica los cambios a la representación interna del dispositivo en el Mernel y activa los cambios que la acción implica. abilitar y suprimir un nodo de dispositivo se traduce en cargar y eliminar un dispositivo. La capeDboneD66@?v? es un desarrollo #ardare destinado a propósitos educativos. Esta 3ape es compatible con ambas versiones de BeagleBone5 BeagleBone F#ite y BlacM. Esta 3ape se acopla sobre la BB usando 1< y 1=. -ntegra varios dispositivos e interfaces a través de los cuales pueden llevarse a cabo experimentos durante las sesiones de laboratorio. ) continuación$ una lista de interfaces que agrupa esta 3ape5 •
Cape 221RO'
•
Cape L2,s
•
Cape pus( button
•
Cape analog input
•
Cape rotary encoder
•
Cape +;C
•
Cape CA+ bus
01'C C+% C+
Fig. : -lustraci'n de la &/E5$*)E5;;<=>=
%..9.%.4 Cape 01'C interface 6#e 0eneral 1urpose 2emory 3ontroller %0123+ is a memory controller aimed to interface external memory devices5 •
)sync#ronous ,()2DliMe memories and ),-3 devices
•
)sync#ronous$ sync#ronous$ and page mode burst &'( flas# devices
•
&)&* >las#
•
1seudoD,()2 devices
/n set de se"ales 0123 disponibles procedentes desde los pines de 1< y 1= son llevados a las cabeceras 3&? and 3&9 situados la 3ape 66@? en un recuadro azul de la imagen precedente. Esto permite comunicación con unos tipos concretos de dispositivos de memoria externa. 3&9 se implementa para permitir una conexión f!cil con el analizador lógico y #acer lecturas del comportamiento de estas se"ales antes de conectar con el periférido de memoria. 3&? #a sido dise"ado para conectar con un dispositivo$ como una placa )ltera *E9 basada en >10)$ por su puerto 0123 e incorpora otras se"ales como las del est!ndar ,1-.
%.%.4 ,ispositivos ;las( +and oy$ con el gran incremento de la necesidad de capturar y almacenar m!s datos$ en el mercado de consumo de dispositivos electrónicos$ &)&* #a superado de lejos a &'($ debido al aprovec#amiento de su alta densidad %equivale a mayor nX de bits en menos espacio+ y representar una solución de bajo coste para aplicaciones de altas prestaciones5 menos consumo$ menor tama"o$ ligero$ robusto$ etc.. La demanda de bajo consumo y tendencia a la miniaturización de dispositivos #a llevado a &)&* flas# a convertirse en la opción de almacenamiento líder para una amplia gama de aplicaciones. asta los pocos 0B pueden satisfacer con creces los requisitos de almacenamiento gr!fico de un disco duro.
22
Fig. !: Evolución de la demanda de NAND Flash del mercado
En la actualidad existen dos tipos de &)&* en cuanto al factor de densidad ,L3 y 2L3. 3ada celda equivale a ? bit en los tipos ,L3 %dispositivos single level+$ pero existen modelos 2L3 %multilevel+ de m!s alta densidad &)&*s que aumentan su densidad almacenando m!s de un bit por celda. 3ada bloque tiene una media de ?@@@@@ ciclos de escritura y borrado de vida. *os técnicas como el manejo de badDblocMs y ear leveling maximizar!n sus ciclos de vida. /na memoria de 9 0B %9A;2Bytes+ se divide en varios bloques$ los cuales pueden alcanzar los ?9
>#Z %es lógica negada+. /na estructura típica para una matriz de 9 0B &)&* puede constar de 9@4< bloques$ ;4 p!ginas por bloque y 9??9 bytes por p!gina si su interfaz es de < bits. ,i fuesen ?; bits podrían ser ?@A; bytes. Existe una zona reservada %,para )rea+ para escribir y guardar bits de las dos técnicas mencionadas anteriormente. 8a siguiente ;igura muestra de una ;orma mu grá;ica la estructura por -lo?ues de una matriz *' como la ?ue ha sido descrita más arri-a:
Fig. ": *rganizaci'n de una matriz ))D de 6 $
'tro denominador comOn en la interfaz es la multiplexación de bus da datos para direccionamiento y petición de accesos. 6eniendo en cuenta que cada ciclo de acceso equivale a un acceso de palabra de interfaz$ una operación de lectura de p!gina requiere una secuencia de5 un ciclo de esritura del comando$ una media de 4A ciclos de escritura con dirección de columna y dirección de fila %bloque y p!gina+$ un ciclo de fin de comando y a continuación sus ciclos de lectura necesarios para capturar todas las palabras de la p!gina con el bus en modo salida.
23
Fig.1#: Ejemplo de una operaci'n de lectura de p?gina@ multiple!aci'n en tiempo del bus -A*.
En el direccionamiento típico &)&* suelen usarse sólo < bits por ciclo$ indpendientemente del anc#o de su interfaz5
Tabla ": /artici'n de direcci'n completa en direcciones parciales en una memoria de 6$
3on esta introducción sobre la organización comOn en típica de una memoria &)&* se analizar!n los principales fabricantes del mercado y su surtido de modelos &)&*. ,e valorar!n las apuestas m!s adaptadas a las necesidades de la interfaz a desarrollar y se seleccionar! la mejor candidata.
%.%..4 $oluciones para conectar una +A+, a un procesador RI$C ) la #ora de conectar una memoria externa al procesadorcontrolador #ost existen dos posibilidades una es la solución ()F &)&* y la otra es e223. Esta Oltima es una alternativa m!s cómoda que requiere una interfaz 223. (a &)&* requiere un controlador #ost que soporte una interfaz directa de un )(2 contra un dispositivo &)&* flas#$ a su vez las técnicas de gestión de bloques y ear laveling deben ser manejadas por softare en el controlador. e`223 por otro lado integra el controlador y el array &)&* flas# en su mismo encapsulado. El dise"o de una interfaz con este tipo de dispositivos suprime gran parte del desarrollo softare de control. Bastaría con un sencillo driver como softare del #ost controlador. )ctualmente es ofertado mayoritariamente en un Onico formato$ B0) %pines de bolas en la base del c#ip+.
Fig. 11: &omparativo entre interfaz +o: y e00&
La primera opción puede parecer m!s cómoda$ eficiente y menos costosa temporal y económicamente cuando se trata de controlar varios dispositivos &)&*. 1ero del otro modo se tiene la ventaja de personalizar la solución y crear un driver a medida.
24
&o obstante$ por a#ora$ la asignatura enfoca el acceso a memoria externa al bus 0123 en su docencia adem!s de que la 3)1E desarrollada en trabajos previos dispone una interfaz para trabajar con este bus. 8arios son los motivos por los que la solución e223 se descarta5 •
•
•
1ara seguir la línea y trayectoria del material docente. 1or el nivel de abstracción académica del que es objeto la asignatura$ e223 no encaja$ ya que este encapsula la interfaz 0123. 1ara interconectar la otra alternativa de interfaz debería modificarse la 3)1E o bien realizar un nuevo dise"o 3)1E para controlador e223. ,obretodo el tipo de encapsulado en que se presenta este dispositivo que convierte en pro#ibitivo el proceso de soldadura para un primer prototipo.
El procesador )2::A
%.%.%.4 1rincipales fabricantes y productos anali#ados Esta estadística muestra los ; principales fabricantes de memoria &)&* >las# en todo el mundo y su cuota de mercado desde el primer trimestre de 9@?@ al cuarto trimestre de 9@?A. 'cupando ,amsung el primer lugar$ le sigue 6os#iba experimentando una reducción de cuota en los Oltimos a"os que coincide con la irrupción de san*isM$ tercero en el ranMing.
Fig. 12: &uota de mercado mundial por fabricantes de memoria ))D Blash "6<=< 5 6<=C#
) partir de esta gr!fica se decide centrar el an!lis en la oferta &)&* de los 4 primeras marcas de la lista.
%.%.%..4 $pansion
25
industria )utomotiva$ instrumentación$ electrónica de consumo y equipos de comunicación. 'frece otra familia ,L de productos ,ecure&)&*62$ destinada a aplicaciones m!s sensibles a los errores como es la ejecución de código de arranque$ aplicaciones y almacenamiento de firmare$ tipo ,L. 3aracterísticas típicas de las familias 2, y 2L de la gama ,L35 *ensities5 ?0b to ?;0b 8oltages5 : 8 and ?.< 8 options Endurance5 ?@@$@@@ 1E cycles %typical+ *ata (etention5 ?@ years %typical+ E33 (equirements5 ?Dbit or 4Dbit options Bus Fidt#5 x< or x?; options 1acMages5 4las# -nterface %'&>-+ ?.@ compliant •
• •
• • • •
• •
• •
'frece varias familias5
'L
9Ans$ :.:8$ ?@@$@@@ ciclos de vida con ?Dbit %4Tnm+ E33 %error correction code+ o 4DBit E33 %:T nm+. ,L3 &)&* soluciones seguras y eficiente para almacenamiento embebdido. 6ama"o de p!gina 5 %9@4< S ;4 spare+ bytes. ?0b a <0b y ?0b a ?;0b
'$
4Ans$ ?.<8$ ?@@$@@@ ciclos de vida con ?Dbit %4Tnm+ E33 %error correction code+. ,L3 &)&* soluciones seguras y eficiente para almacenamiento embebdido. 6ama"o de p!gina5 %9@4< S ;4 spare+ bytes. *e ?0b a 40b y de ? a ?;0b
$L
4$ 9 y ?0b. :.:8$ 9A ns. ,ólo con contactos de bola. &o producción todavía. Tabla 1#: Bamilia ))D cypress
%.%.%.%.4 "os(iba 6os#iba ofrece productos de memoria flas# &)&* ,L3 con una amplia gama de capacidades y tipos de encapsulado. 6ecnología de alto rendimiento y resistencia de los grabados. )mplio rango de aplicaciones. 'frece dos líneas de nand flas#5 •
con controlador integrado e22c$ etc.
•
,L3 ◦
◦
•
•
94 nm$ el nodo de la tecnología m!s avanzada para ,L3 &)&*5 capacidades de ?$ 9$ 4 y < 0b disponible sólo en cantidades de producción. )mplia gama de capacidades.
BE&)&* ◦
-ncorpora la lógica E33
◦
94nm
◦
&)&* con interfaz de serie.
3on ,1◦
3ompatible con el modo @ y el modo : de la interfaz periférica de serie %,1-+.
◦
-ncorpora la lógica E33.
26
◦
Elimina la necesidad de un procesador #ost que realice la E33 y se puede configurar para proporcionar la información de corrección de E33 necesaria para administrar la memoria.
◦
El proceso ,L3 &)&* de 94 nm m!s reciente.
◦
)mplia gama de capacidades.
◦
*isponible en cantidades de producción con capacidades de ?$ 9 y 4 0b
◦
*isponible en peque"os encapsulados5 F,'& de ; x < mm$ ,'1 de ?@$: x C$A mm$ B0)%+ de ; x < mm
$in 2CC Jse (ace desde el (ostK
/2+A+, con 2CC incorporado Con $1I Jsólo 6 bits y tsop K
A?92B5 63A<*82=9)A6)x@
?0bit5 63A
?0Bit563A<&80@,:6)x@
9gbit5 63A
90Bit563A<&80?,:6)x@
4gbit 563A
90B5 63A<3N09,@)-E
40Bit 63A<&809,@6)x@ Tabla 11: ;ipos de ))D ;oshiba
%.%.%.-.4 =ynix Est! lanzando la ? generación :* &)&* del 9@?4. En 9@?A$ la segunda generación :* &)&*. Emplea tecnología de vanguardia en :* &)&* con la que pretende abrir nuevos espectros y posibilidades a todas las aplicaciones de almacenamiento. 3ada a"o presenta una nueva generación de productos y se especializa cada vez m!s en este tipo de soluciones5 :*$ almacenamiento masivo compacto ,,* y e223. 1ara acceder a información de su cat!logo y datas#eets es preciso ponerse en contacto con la entidad.
%.%.%.6.4 $amsung Lo mismo ocurre con ,amsung la Onica información sobre sus soluciones nand (a se centran en una tecnología llamada 8D&)&*. ,amsung #a revolucionado la industria de almacenamiento &)&* desplazando la estructura plana a una estructura vertical. ,amsung tecnología 8D&)&* cuenta con un dise"o Onico que apila 4< capas una encima de otra en lugar de tratar de reducir el tama"o de paso de las células. ,amsung utiliza 3#annel ole 6ec#nology para permitir a las células conectar verticalmente uno con el otro a través de un canal cilíndrico que se extiende a través de células apiladas. La tecnología ,amsung 8D&)&* supera las limitaciones de capacidad de la tecnología tradicional 9* &)&* con su dise"o vertical revolucionario. En 8D&)&* también se aplica la tecnología innovadora de 3#arge 6rap >las# que previene la corrupción de datos causada por la interferencia de célula a célula. La sinergia de ambas innovaciones estructurales y materiales conduce a una mayor velocidad$ eficiencia energética y resistencia.
%.%.%.&.4 'icron ,i una aplicación necesita velocidad y la resistencia por encima de todo$ ,L3 &)&* es la mejor opción. )lto rendimiento$ aplicaciones de alta resistencia$ cumple con las demandas de misión crítica. 'frece una amplia cartera de productos con distintas características$ funcionalidades y el rendimientos5
27
0ama
,escripción
$LC
asta ?@@.@@@ 1 E de resistencia de ciclo$ m!s r!pido rendimiento que otras tecnologías &)&* 2L3 y 6L3$ compatibles con la interfaz síncrona '&>i. *ensidades desde ?9
'LC
,ólido rendimiento y la resistencia es dos veces la densidad de &)&* ,L3 a un menor costo por bit. 3ompatibilidad con la interfaz síncrona '&>i.
"LC
/na mayor densidad en el mismo espacio$ a un costo m!s bajo que ,L3 o 2L3 &)&*
$2RI2
1ermite a las grandes subsistemas de memoria y aumentar la eficiencia de energía de alto rendimiento$ bajo consumo de energía y mayor anc#o de banda.
-,
3apacidades m!s altas. 2ayor anc#o de banda de lectura escritura y la E ,$ velocidades de consumo de energía reducido en modo de espera Tabla 12: ama de ))D 0icron
2emorias ,L3 que usan típicamente en el foro de 6exas -nstrument y en las placas basadas en )2::A< de 6exas y 3ircuit3o %Beaglebone+5 <0 40 90
269=><0@<)B)B)F1 40@<)B)E)F1 ?b y 4b E33 269=>90@<)B)E)F1
Tabla 13: Ejemplos de modelos S&
'frece r!pidas velocidades de lectura y escritura capacidades$ excelente resistencia y algoritmos relativamente simples E33.
%.%.-.4 2lección del modelo /no de los factores determinantes es la apuesta por 2icron que 6exas -nstruments y circuit3o %fabricante de beaglebone+ y la confianza que depositan en este fabricante para integrar su modelo en sus placas de desarrollo basadas en )2::Axx. Este #ec#o nos aporta unas ciertas garantías de compatibilidad. ) la vez$ existen profesionales de la marca dando soporte en el espacio virtual de consulta que texas instruments ofrece a los usuarios registrados de forma gratuita. 1or lo tanto$ es m!s f!cil #allar información y resolver cuestiones relacionadas con este modelo de memoria junto con las dudas sobre el bus 0123. 2icron cuenta con un canal de distribución internacional importante$ una gran flota de distribuidores oficiales %)8&E6$ )rro$ *ijiHey$ etc..+ reconocidos disponen de este modelo en stocM sin venderlo al pormayor y con unos plazos de entrega de : días. 'tro factor importante es la inteligibilidad e información detallada gr!ficamente y descriptivamente en su das#eet. Las operaciones$ organización y funcionamieno del dispositivo est!n exaustivamente descritos y argumentados. ,e efectua el pedido del modelo '"%5;60A/A,A71 $ cuya estructura y funcionamiento se describe a continuación. 6odas las operaciones &)&* son iniciadas disponiendo un ciclo de comando$ ciclo de direcciones y lectura o escritura de datos$ tantos bytes como el comando enviado especifique. Existe un circuito de control de -' que recibe estos datos. ,u datas#eet ofrece una descripción gr!fica completa y unas descripciones detalladas de cómo debe ser una transacción de todos sus comandos y dirección en nX de ciclos necesarios del modelo en cuestión5
28
Fig. 13: /etici'n de operaci'n ))D
La memoria seleccionada se basa en un dispositivo asíncrono ,L3 de 40B %A?92bytes+. La unidad mínima a la que un sólo c#ip enable puede acceder es una unidad lógica equivalente a un nand flas# PdieQ %L/&+. 1or cada 3E tenemos un L/&$ por lo tanto nuestro c#ip es un L/&. ,us características y par!metros pueden variar respecto de dispositivos de mayores densidades. El arreglomatriz de esta memoria se agrupa en 9 planos de series de bloques %que son la unidad m!s peque"a borrable dentro de una &)&*+. Borrar un bloque deja todos sus bits a Z?Z %>>..+. 1ara cambiar el valor de Z?Z a Z@Z se precisa la acción de programación. La m!s peque"a entidad que puede ser programada de una vez es un byte. La interfaz de datos multiplexada ofrece un pinout consistente para todos los modelos actuales y densidades. Este pinout permite a los dise"adores usardensidades inferiores y migrar a mayores densidades sin necesidad de cambios en el #ardare donde se tiene integrado la nand. ,e tienen otras dos se"ales %F1 y (B+ que controlan el #ardare de protección de escritura y monitoreo del estado de dispositivo. 6oda esta interfaz #ardare crea un dispositivo con un pinout est!ndar que se mantienen independientemente de la densidad. abilitando posibles migraciones a superiores densidades sin la necesidad de redise"os en la placa.
%.%.-..4 Ar>uitectura y funcionamiento ,i se atiende al siguiente esquema sobre la arquitectura del dispositivo$ los comandos$ son pasados al registro de comandos. Luego$ el comando pasa al circuito de control lógico que activa las se"ales apropiadas para controlar las operaciones de forma interna. Las direcciones son pasadas al registro de direcciones y enviado al decodificador de columnas o de filas. ,in embargo$ los datos pasan #acia o desde la memoria %palabra a palabra+ a través de dos registros5 datos y cac#e. *atos y cac#é formar!n un Onico registro cuando se den operaciones de p!gina. 1ero ser!n registros independientes con las operaciones cac#é. 6ambién se cuenta con un registro de status que informa de los estados de las operaciones del dispositivo. Estos registros y circuitos de control no forman parte del array en sí. ,in embargo los decodificadores y los registros de datos y cac#é$ sí.
29
Fig. 14: rquitectura del dispositivo empleado
En la operación de escritura el dato a ser programado es registrado en el registro de datos en el flanco de subida de la se"al FE. En la operación de lectura el dato es extraído del registro de datos de forma parecida pero con la se"al (E$ responsable de extraer la actual dato e incrementar #acia siguiente posición. 3omandos especiales son usados para acceso random o mover datos para #acer el acceso aleatorio posible durante la escritura. Los tiempos de FE y (E pueden alcanzar una velocidad de transferencia de 9A ns %por cada una+. 3uando (E o %3E+ no est!n activadas %nivel bajo+$ los buffers de salida est!n en triDestado. /na memoria &)&* se programa y se lee por p!ginas. 1ero se borra por bloque. En este modelo un bloque tiene ;4HFord %9x;4HB+. En un plano #ay 9@4< bloques %9 planos en la memoria entera+. Los 40Bit est!n organizados en bloques de 9@4< con ;4 pagsbloque. 3ada p!gina adem!s contiene 9??9 bytes$ que en realidad consiste en un !rea de 9@4
Fig. 15: ;ransferencia de datos en lecturaAescritura de una p?gina.
30
%.%.-.%.4 /us en alta impedanciaB La utilidad del tercer estado %iDU+ es suprimir la influencia de un dispositivo del resto del circuito. ,i m!s de un dispositivo est! conectado$ poner una salida en iDU se usa para que en un mismo bus no #aya dos se"ales diferentes$ es decir$ una con valor ? y otra con valor @. 1orque si ambas se"ales circularan por la misma línea$ no podríamos determinar el valor que est! circulando en la misma. Los buffer triestado también se usan para implementa multiplezores nte aquellos con un gran nOmero de entradas. Las funciones del buffer triestado suelen ser Otiles$ principalmente para el dise"o de componentes electrónicos con una cierta funcionalidad controlada internamente$ como puede ser la implementación de un bus multiplexado$ el cual puede usar buffer triestado para dejar activa solo una de sus entradas y anular las otras de forma que no interfieran en la salida. 6ambién se pueden usar los buffer triestado para dotar a los dispositivos de funcionalidad controlada externamente$ es decir el usuario puede controlar esos buffer triestado para controlar el dispositivo. Este tipo de dispositivos tienen posibilidad de #abilitación o des#abilitación de lectura$ escritura o incluso del propio dispositivo. 3uando la salida del triestado est!n en estado de alta impedancia$ su influencia en el resto del circuito es eliminada pero también su valor binario se vueve desconocido. ,i ningOn otro elemento del circuito manda una se"al #acia ese nodo$ el bus permanecer! en alta impedencia con valor desconocido. 1ara evitar esto$ los dise"adores de circuitos usualmente utilizar!n resistencias pull up o pullDdon %normalmente en el rango de ? a ?@@H '#mios+ para determinar el valor en la salida del triestado$ cuando éste est! en iDU$ es decir$ estas resistencias asignan el valor ? ó @ a la salida del triestado cuando est! en alta impedancia. El driver 0123 permite tener en cuenta estas resistencias #abilitando las resistencias internas de pullup y pulldon de cada uno de los pines del bus.
Fig. 16: $uffer triestado
,e puede ver un buffer triestado como un interruptor. Es decir cuando en B #ay un ?$ funciona como si el interruptor estuviera activado$ mientras que si #ay un @$ actOa como si estuviera desactivado y el nodo ) queda desconectado de 3. 3uando una de las dos se"ales no est! activada$ 3E and (E se activan los buffers de salida$ #abilitando a &)&* >las# para compartir el bus de datos con otros tipos de memoria. ay memorias que necesitan 3E activado todo el ciclo y otros que no$ se pueden compartir con accesos a otras memorias cuando se da la situación de c#ip donZt care %otros dispositivos conectados a este bus pueden ser accedidos mientras la memoria nand esté ocupada con sus operaciones internas+. Esta propiedad es aprovec#able y Otil en dise"os que necesiten mOltiples dispositivos en el mismo bus. 3osa que en este dise"o inicial no tendr! lugar. 1ero abre la posibilidad a ampliar el sistema en un futuro ampliando y mejorando las funcionalidades del driver desarrollado en este trabajo.
31
-.4 'etodolog*a y desarrollo ,e #a anunciado en anteriores apartados que el esquema de interfaz aplicado es ()F &)&*$ que implica un desarrollo softare m!s laborioso pero también m!s personalizado. ,i se tiene presente el esquema de la figura se observa que el dise"o del softare controlador puede implementar$ adem!s del driver propiamente dic#o$ los métodos de control de bloques fallidos y balanceo de uso de bloques.
Fig.1: -nterfaz +a:
) pesar de ser todos métodos implementables$ no son bloques obligatorios para realizar transacciones entre el periférico y el u1u3$ aunque sí altamente recomendables. *e #ec#o$ en soluciones avanzadas de otros autores son opciones que pueden #abilitarse y des#abilitarse pero se desaconseja omitir su uso. El presente trabajo pretende desarrollar un driver b!sico$ con las mínimas prestaciones necesarias para acceder a la memoria mediante una aplicación sencilla y poco exigente si se compara con el verdadero campo de aplicaciones para el que las prestaciones flas# son una necesidad. La aplicación de prueba no forma parte de un sistema crítico$ ni exigente en términos de volumen de demandas de operaciones ni de comandos complejos. /na lectura o escritura fallida por accesos a bloques defectuosos no controlados$ todavía no supondría una consecuencia grave en ninguna parte del sistema ni del entorno en el que se integra. ,e #a desarrollado Onicamente el código del bloque *(-8E($ es decir5 una versión limitada pero ampliable. El softare queda abierto a mejoras y puede ampliarse para trabajar con requisitos m!s exigentes. 6al como se #a adelantado anteriormente$ el presente trabajo requiere desarrollo de softare y #ardare. La planificación del proyecto #a seguido una secuencia de fases cronológicamente dispuestas$ ya que de seguir otro orden no #abría sido realizable. )unque algunas de ellas pueden llevarse a cabo de forma concurrente$ como es el caso de #ardare y softare ya que son bloques independientes y pueden testearse por separado en fases previas a su integración.
-..4 preparación del entorno de desarrollo a+ >amiliarización con entorno original a través de la realización de algunas aplicaciones sencillas a modo de tutorial de entrenamiento para entender el funcionamiento de los elementos y deducir una sistem!tica de trabajo lo m!s eficiente posible5 •
Beaglebone F#ite
•
)cceso remoto por terminal Lnux %Linux s#ell5 /buntu y )nstrong+
•
3)1EDB'&ED66@?8?
•
,oftare5 compilador y arc#ivos maMefile
b+ 2igración de ', )ngstrom a /buntu embedded. ,e recuerda que el siguiente material es brindado5
32
•
•
/eagle/oneFbuntu60/:!&.rar: la imagen de la ##. 7in-%,is8Imager4!.5.&4binaryB programa para instalar desde Findos la imagen que se puede obtener gratuitamente desde la siguiente ubicación #ttps5sourceforge.netprojectsin:9disMimager
ecuencia de pasos para instalar la nueva versión +-ntu em-edded en la #eagle#one:
?. *escomprimir /eagle/oneFbuntu60/:!&.ra r 9. *escomprimir 7in-%,is8Imager :. acerse con una micro,* de al menos 40B e insertarla en el 13 4. )brir la aplicación Fin:9*isM-mager. A. ,eleccionar la imagen /eagle/oneFbuntu60/:!&.iso como arc#ivo de origen en Fin:9*isM-mager ;. ,eleccionar la micro,* como disco destino en Fin:9*isM-mager C. 1ulsar el botón rite. )l cabo de unos minutos queda restaurada la imagen original. 1ara finalizar se extrae la micro,* del 13 y se inserta en la BB. ,e arranca el port!til y se activa el arranque con /buntu. )l conectar la BB al port!til esta arrancar! desde la flas# con el nuevo sistema instalado y lista para ser accedida desde un terminal %siempre que se conecte a través del cable de red y la comunicación se establezca previamente+. /na de las cosas que cabe tener en cuenta es que la -1 asignada es ?=9.?;<.9.?@@ y que la configuración de netorM de /buntu ya que puede dar lugar a problemas de conexión entre los dos #osts. Existen varias formas de proceder se edita mediante la terminal en modo root el arc#ivo interfaces. •
etc J netorM J interfaces gedit interfaces
•
asignar los siguientes valores de la imagen y guardar5
Fig. 1!: rchivo configuraci'n ethernet en host port?til •
en la terminal lanzar las siguientes órdenes para restaurar los valores5 ifconfig et#@ don ifconfig et#@ up
3am-i@n es necesaria una clonación en +-untu la versión de Fernel usada para compilar con el nuevo compilador arm-linux-gnueabihf-gcc ?ue permite generar los archivos -inarios para la nueva plata;orma de la ##. 8a versión anterior compila-a para Fernel de *ngstrom %.).<) +-untu en el e?uipo portátil para instalar emplear el compilador cruzado. 8a instalación del ,*H completo con el fin de construir
aplicaciones y el sistema BE)0LEB'&E no ser! necesaria. ,ólo la cadena de #erramientas %tool c#ain+ compilador cruzado es suficiente con el fin de #acerlo. El compilador 033 utilizado para este trabajo
33
es proporcionado por Linaro. Linaro es organización de ingeniería sin fines de lucro que trabaja con el código abierto y el softare libre. ,u actividad se especializa en el nOcleo de Linux y 0&/ 3ompiler 3ollection$ entre otros. 3reación de los nuevos maMefiles5 Los arc#ivos en los que se basa cualquier proyecto de este ,*H constan del código fuente de la app y los includes de librerías y cabeceras que sea necesario incluir. 3uando alguna de las aplicaciones requiere que el sistema reconozca un driver$ como en el presente proyecto ocurre$ se debe a"adir el código fuente del driver a esa lista de arc#ivos. Los maMefiles son arc#ivos que permiten al compilador generar los arc#ivos binarios ejecutables a partir de sus códigos fuente. 1or lo tanto un maMefile debe estar destinado a compilar la app$ otro para compilar el módulo con su carpeta de inlcudes. 'pcionalmente$ y por comodidad$ puede crearse otro en el directorio principal para ejecutar los otros dos. Estos : maMefiles se mostrar!n en el apartado de anexos. d+ 'perando con el entorno en modo red local. /na vez$ se dispone de los ejecutables llega el momento de transferirlos a la BB para ser gestionados y ejectudos por su sistema. La pauta que se #a definido es5 ?. conectarse a la BB a través del comando ,, en una nueva terminal con permisos root5 ss# ubuntu?=9.?;<.9.?@@ ◦
logearse con la 1F5 ubuntu
◦
crear una carpeta en el directorio raíz p ej5 carpeta&ame %carpeta&ame?+ cd mMdir carpeta&ame? mMdir carpeta&ame9
9. en otro terminal ir al directorio del orMspace donde se encuentra los códigos fuente en 13 ◦
◦
compilar5 se generan los arc#ivos .Mo %si #ay que incluir un driver+ y el ejecutable de la app pasarlos a la BB a través del comando scp5 scp nombre)rc#ivoEjecutable ubuntu?=9.?;<.9.?@@5 carpeta&ame? scp nombre2odulo.Mo ubuntu?=9.?;<.9.?@@5carpeta&ame9
:. ,i el proyecto incluye driver$ una vez en la BB de nuevo acceder a carpeta&ame9 con permisos root %sudo 5s y p5 ubuntu+ cargar el driver5 insmod nombre2odulo.Mo ◦
◦
comprobar que se #a cargado mediante comando5 lsmod para suprimir el driver aplicar el comando5 rmmod nombre2odulo.Mo5 realizar este paso antes de cargar una nueva versión del driver ,-E21(E.
4. desde la carpeta que contiene el ejecutable de la app ejecutar la app5 .nombre)rc#ivoEjecutable e+ 6est5 generación de fic#eros y ejecución de aplicación de prueba. 6ras cargar el módulo module.Mo y ejecutar la aplicación app del material de pr!cticas$ efectivamente se obtiene el resultado esperado. ueda validada la migración #acia el nuevo sistema y el entorno de desarrollo dise"ado en el trabajo en apartados anteriores mencionado.
34
-.%.4 dise?o de circuito impreso 1C/ -.%..4 2lección de soft@are CA, de dise?o 1C/. ,e requiere de un entorno de desarrollo que permita generar los arc#ivos necesarios para iniciar su fabricación. 1asa por instalar un softare de dise"o que facilite la edición de piezas ,2* y pistas con precisión$ que procese la información y lo traduzca en arc#ivos compatibles con la maquinaria de fabricación. Los formatos de arc#ivo m!s extendidos en la industria de la producción de 13Bs son los conocidos como 0E(BE( y sus variantes. La elección se disputa entre dos marcas propietarias or3)* e Eagle lig#t Edition C.A.@.
1untos fuertes del orCA,B
1untos fuertes 2agle lig(t 2dition 9.&.!
,oftare de los m!s empleados y 6ambién es un conocido en la industria conocidos en el !mbito docente y comercial *ispone de una versión gratuita
6iene una versión gratuita con limitaciones
La unidad de la universidad que allar documentación oficial y guías r!pidas intuitivas interpreta y traduce los dise"os %castellano e inglés+ no es complicado trabaja con esta #erramienta de >arnell o *ijy Hey$ proporcionan paquetes para Eagle con los dise"o 13B símbolos de gran variedad de dispositivos y componentes de su cat!logo 0ran cantidad de componentes en la librería Empleado de forma m!s reciente por el desarrollador Tabla 14: *r&ad >s. Eagle light Ed.
La suma de factores puede a#orrar una cantidad importante del costo temporal. La familiarización con el modo de empleo de este programa no supondría un punto de partida excesivamente novedoso como puede ser con el caso de or3)* para el desarrollador. La versión gratuita brinda las siguientes posibilidades de dise"o5 ?. hrea m!xima5 ?@x< cm 9. &X de capas m!ximo5 9 %top y bottom+ :. &o puede emplearse para usos comerciales ni fines lucrativos.
-.%.%.4;amiliari#ación con el soft cad >amiliarización siguiendo tutoriales muy intuitivos y detallados$ con ejemplos sencillos que permiten reconocer las #erramientas necesarias del softare. ,e #a trabajado con la creación de food prints de componentes y asociarlos a sus símbolos esquem!ticos$ a"adir valores y nombres$ propiedades a los pines %in$ out$ bot#+$ escoger la escala del grid %importante+$ traducir el dise"o de esquem!tico a 13B$ etc. -nicialmente se realizó el equema pero se observa que resulta m!s f!cil y menos confuso iniciar el dise"o directamente en modo 13B. Las conexiones se establecen autom!ticamente mediante unos #ilos de color amarillo D llamados signal D cuando se aplica la traducción$ partiendo de un circuito esquem!tico.
Fig. 1": ;razado autom?tico de signals
35
,egOn la orientación y ubicación del foodprint del c#ip de memoria puede implicar un ruteo m!s o menos complicado. Este #ec#o #a llevado a iniciar diferentes propuestas #asta #allar la disposición por la que el trazado sea m!s óptimo y menos problem!tico %menor nX de cruces de pistas y vías+. Lo que #a llevado a determinar que era positivo conectar los componentes mediante las signals %#ilos amarillos+ de forma manual en el modo 13B$ en lugar de #acerlo de forma previa mediante un esquem!tico %modo esquema+. Este softare$ como la mayoría$ dispone de un autorute y detección de errores. 1ueden automatizarse las restricciones de fabricación para obtener los avisos pertinentes. El presente dise"o tiene sus propias restricciones teóricas y las de fabricación. &o obstante$ la experiencia recomienda que teniendo una cantidad de espacio suficiente con un nX de elementos relativamente mínimo el ruteo y seguimiento de restricciones se realice de forma manual porque es m!s efectivo. c+ definición de conexionado entre pinaje de la beaglebone y dispositivo. ,e revisa el conexionado entre las se"ales de los #eaders 1= y 1< de la BB y los conectores de la 3)1EDB'&ED66@?8? para detectar posibles inco#erencias. P9
CN2
CN1
Fig. 2#: &abeceras y contactos
,e comprueba la disponibilidad de todas las se"ales que el acceso &)&* y &'( necesitan %en conector 3&?+. 3&9 es un conector 3&? que facilita medidas con un analizador lógico. 3&? es un conector mac#o por el que se conecta el bus 0123 de la BB con una placa de desarrollo )ltera *E9 basada en >10). 6eóricamente las se"ales 0123 en 1< y 1= son llevadas a los conectores 3&? y 3&9 por el trazado de pistas de esta 3ape. 1ero se debe corroborar la presencia de todas las se"ales y su correspondencia con el pinaje del modelo &)&* para tomar medidas oportunas antes de iniciar el dise"o. La siguiente lista de correspondencias se #an obtenido en este punto.
36
C1
SG Cape BB SG P9 P8 O"'er(ac%one' 38 GND GND 37 SP)1*CS1 SP)1*CS1 42 36 SP)1*c'0+SP) SP)1*'*C- 28 Do' 'e/a!e' &%erente' 35 GND GND 34 SP)1Mo'% SP)1Mo'% 30 33 GND GND 32 4 BE1 BE1 12 30 2 GND GND NC NC 29 CC3.3 SP)0*SC- 22 )nco$erenc%a 2 'e/a!e' &%erente' 28 6 CSN2 CSN2 20 27 3 #P #0 11 )nco$erenc%a en rea!%&a& e' #0 26 8 CSN0 CSN0 26 25 5 AD8 AD8 19 24 10 AD1 AD1 24 23 7 AD0 AD0 25 22 14 AD5 AD5 22 21 9 AD4 AD4 23 20 16 C- C- 18 19 13 CS1N CS1N 21 18 GND GND NC NC 17 15 AD11 AD11 17 16 17 AD15 AD15 15 15 18 AD14 AD14 16 14 19 AD9 AD9 13 13 20 AD10 AD10 14 12 GND GND NC NC 11 CC5.5 NC NC No e%'te cone%n con P8+P9 10 21 AD13 AD13 11 9 22 AD12 AD12 12 8 25 BE0N+C-E BE0*C-E 9 7 26 #EN #EN 10 6 27 A-E A-E 7 5 28 OEN OEN 8 4 29 AD2 AD2 5 3 30 AD3 AD3 6 2 31 AD6 AD6 3 1 32 AD7 AD7 4 11 * * #P #P 13 No 'a!%&a en Cae. So!c%n conector con $%!o 39** CC3.3 CC3.3 34 No 'a!%&a en Cae. So!c%n conector con $%!o 40 34 GND GND 12 12Conecta&o a !ano &e a'a Cae. C2
Tabla 15: Seguimiento de se2ales entre $$ "/, /# y la &ape5bone5;;<=v=
El tramo de casillas violeta de la tabla %de la :: a la :<+ no son empleadas en la interfaz &)&*. ?? y := son se"ales que no se proporcionan en el conector 3&?$ 9C se indica como se"al F1 cuando en realidad proviene del pin ait@. 3&? tiene algunos pines sin conectar y se usar!n para llevar las se"ales de las dos se"ales ?? y := mediante un puenteo provisional5
37
Fig.21: /uenteo 8/ y >&& en la &ape5bone5;;<=v=
3onexionado entre el conector 3&? %al otro lado de las líneas discontinuas de la imagen+ de la 3apeD boneD66@?v? y el pinaje del dispositivo &)&* empleado. Las se"ales en violeta no son fuente de preocupación puesto que$ así$ ya se puede formar el bus 0123 para &)&*.
Fig. 22: &orrespondencia de pines &)= 5 ))D
3abe decir que el pinaje del conector 3&? se replican en el conector #embra de la placa 13B fabricada. En lugar de 3,9$ se #an empleado 3,? y 3,@ para #abilitar el dispositivo de memoria. El pin 3LH no se emplea al tratarse de una memoria asíncrona. ,in embargo$ este c#ip necesita una se"al F1 y una alimentación de :.:8 que no se encuentra replicada en el conector porque la placa *E9 tiene su propia alimentación. *ebido a ello se realiza el puente comentado anteriormente desde 1=.
-.%.-.4 Restricciones y criterios de fabricaciónB ?. *istancia entre pistas no puede superar los @.9 mm$ es la m!xima resolución de la fresadora 9. Los agujeros no est!n metalizados$ deben rellenarse de esta"o5 no pueden ir componentes sobre las vías :. ,ólo se puede usar cara top y cara bottom 4. &o pueden usarse planos de masa ni de alimentación A. 4 líneas de alimentación5 se necesitan 4 desacoplos para filtrar picos de corriente e interferencias procedentes de los armónicos irradiados por las conmutaciones presentes en la placa.
38
;. (esistencias pull up para se"ales de control negadas C. 3ondensadores cer!micos conectados directamente a los pines de alimentación <. >ormar filtros con (s %J?@ '#m+ con el pin de alimentación y condensadores. =. ( jumper es una (s de valor reducido$ ayuda a favorecer el filtrado con los condensadores en pines 833 sensibles al ruido. )yuda a mejorar %atenuar+ el pico de resonancia %factor + provocado por la inductancia par!sita que pueda producir la impedancia de una capacidad a partir de una determinada frecuencia %U3 tiende incrementar su inductancia+. )unque en e ste caso$ tal vez no sea necesario no #ar! mal prevenir. ◦
>resonancia W ?9pi%E,L3+V?9
◦
%factor de calidad de un filtro+ mide el pico de resonancia y puede medirse W %9piL+( ▪
/na forma de reducir dic#a es incluir una (s en la línea alimentación lo m!s cerca posible y lo m!s peque"a posible.
?@. 3ondensadores de desacoplo lo m!s cerca posible de los pines de alimentación5 los m!s grandes primero y los menores en parelelo para mejorar anc#o de banda. ,obretodo con pistas equidistants. 6ípicamente5 uno de ?@u> y una batería de @$?u> cuanta m!s cantidad de condensadores mejor el anc#o de banda ser!. ??. 3rear !reas de baja impedancia$ como polígonos de masa y alimentación$ o reducir el trazado de las pistas por las que conectan los condensadores de desacoplo p ara reducir la inductancia. 6ratar de no realizar pistas en forma de espiral. ?9. 1ara evitar el cruce de pistas$ las pistas de una cara de la 13B seguir!n una #orientación y las de la otra cara la orientación perpendicular.
-.%.-..4 ,educción de Rpull up ,on usadas normalmente en electrónica digital para asegurarnos que los niveles lógicos que tenemos a las entradas de los dispositivos son correctos. ,i no conect!ramos las entradas del circuito en 1ullD /p$ estas entradas quedarían en un nivel lógico indeterminado$ sobretodo cuando una de las se"ales procede de un pin en drenador abierto. El propio fabricante ofrece explícitas instrucciones de insertar una (pull up para el correcto funcionamiento.
Fig. 23: &ircuito en drenador abierto de la se2al +$.
3uando (B transiciona a estado L'F %ocupado+$ el driver de la se"al #abilita la salida (B negada a ser influida por una '(. Na que$ (B suele estar conectada a un pin de interrupción del #ost controlador. La combinación de (p y la capacidad de carga del circuito determinar! su tiempo de subida %tcW3x(+. El valor de (p depender! de los requisitos del sistema porque valores elevados de (p pueden causar retardos considerables en la se"al.
39
Fig. 24: tiempo de ca(da y de subida de +$ en t& y t& en funci'n de +pull up •
,i tfW a 9 6c W ?@ns$ 6c W Ans.
•
3on (p W %AH'#m 5?@H'#m+ R 6c W %Ans 5?@ns+ ◦
(p W ?@M'#m es un valor típico.
-.%.-.%.4;iltros de acoplo. •
La capacidad equivalente de una batería de 4 3 de @$?u> S ?3 de ?@u> W 9An>.
•
La frecuencia de corte de cada filtro de desacoplo5 (3 W ?%9pi3fc+ R fcW?92#z ◦
,uprime los armónicos producidos por ondas cuadradas de 4@2#z -.%.6.4
lista de
componentes para adaptación de dispositivoB (E* DES,G-'),+(S
P'()
C
1010
:
101;
:<
0:
C
0.16.3
Conector
Po't Soc,et S
PCB *++)P(,-)
805
DESC(,P),+-
M '-
P'() .
C*. CE, #04F #0) '() 050(
T%&
C"0#"'()#*#0$+
,esistor #0&o-m #6#$7 (8 00"
,o-m
MC,0#M+./#03
,esistor +ero o-m /umper 00"
'ageo
,C00"/,1020,
Capacitor 09#uF #$) #08 00" :2,
&e me t
C00"C#0&,* CT
402
402
402
2.54 :ecetor 40 :A Satec Tabla 16: lista de componentes definitiva
SS#>120>02>G>D>:A
-.%.&.4 dise?o final 1C/) cara top cara bottomB •
top5 rojo
•
bottom5 azul
40
Fig.25: caras top y bottom del dise2o final
41
-.%..4 0eneración de fic(eros 02R/2R para la fabricaciónB /na vez se tiene el dise"o final se procede a la generación de arc#ivos 0E(BE( para iniciar su fabricación. El programa permite generar varios formatos para alcanzar la mayor compatibilidad con los diferentes modelos de fresadora. En concreto$ el staff de fabricación del centro docente sugiere que se seleccione el formato apto para 0E(BE(G(,9C4T. *e otro modo el fabricante podría no visualizar correctamente el dise"o y por lo tanto sería incapaz de reproducirlo. En la carpeta del proyecto del dise"o activa se accede a la #erramienta 3)2 y se abrir! una ventana5
Fig. 26: generacion de archivo de la capa bottom
,e repetir! este procedimiento para generar los arc#ivos de la capa 6op$ Bottom y de las dimensiones. Lo cual se indicar! en cada caso en el campo P,ectionQ y se asociar! con la capa en cuestión del menO desplegable PlayerQ. )#í se escoger!n las capas que se deseen incluir en dic#a sección$ como información para el fabricante. : elementos de información son suficientes5 capa$ 1ads y 8ías. En la sección de dimensiones bastar! con incuir la capa 9@ P*imensionQ. [&.btl es el arc#ivo resultante con su extensión correspondiente. 3ada sección se ir! a"adiendo mediante )** para que consten cuando se procesen estos datos. 6ras la capa de dimensiones se pueden generar sus arc#ivos5 P1rocess 7obQ. )l cerrar esta ventana se puede guardar el arc#ivo 3)2 en el directorio del proyecto para reutilizarlo o prescindir de #acerlo. En todo caso no es necesario el arc#ivo para la fabricación$ tan sólo los arc#ivos resultantes de procesar el conjunto de secciones. El siguiente dato$ imprescindible para el fabricante$ es la ubucación y tama"os de todos los taladros que ir!n en la placa. El proceso difiere en algunos puntos del primero y por ello es preciso abrir un nuevo 3)25 camJfileJneJjob. )lgunos tutoriales recomiendan escoger el fic#ero 3)2 %Pcam processor job fileQ+5 excellon.cam. Este paso llevar! a abrir una ventana similar a la imagen anterior. El device destino debe ser Pexcellon racMQ. Este solicita un fic#ero origen$ porque dic#a información la obtiene de un arc#ivo cuya extensión es P.drlQ. *e otro modo no puede interpretar la información origen. 1or lo tanto$ es el propio usuario quién debe ofrecer este arc#ivo. /na forma de obtenerlo es mediante el intérprete de comandos y scripts que Eagle nos brinda. La línea de comandos se encuentra en la parte superior de la ventana del esquem!tico o de la placa$ tal como se puede apreciar en la primera de las im!genes$ escribiendo5 run drillcfg . ,e recomienda escoger la unidad de medida
42
que el fabricante utiliza. En el caso actual$ se guardar!n las medidas en pulgadas. 1or comodidad y seguridad se guardan todos los arc#ivos generados en la carpeta del proyecto. *esde la ventana del trabajo 3)2 se asocia el arc#ivo .drl anterior y se selecciona la capa de PdrillsQ y P#oleQ en el menO PlayerQ. ,e procesa el trabajo y así se obtiene el Oltimo de los fic#eros necesarios. En la segunda imagen$ se puede observar toda la lista de arc#ivos generados dentro de la carpeta del proyecto$ la cual ser! entregada al fabricante$ íntegramente.
Fig. 2: a# (nea de comando para generar taladros, b# directorio de archivos de fabricaci'n generados
-.%.9.4 Comprobación continuidad de las pistas tra#adasB Las dimensiones de los componentes del tipo de encapsulado ,2* #a requerido precisión microscópica %empleo de microscopio+. El proceso de fabricación y soldadura ,2* se #a desarrollado con éxito y la continuidad #a sido verificada mediante téster en modo diodo contactando con un polo en los pines de origen %cabeceras 1< y 1= de la 3)1E+ y destino %contactos de la placa desarrollada+. En este punto la placa est! lista para conectarse en la interfaz de la 3)1E$ #acer pruebas de transferencias de datos desde la Beaglebone y ajustar los componentes de adaptación de se"ales si fuese necesario. 'bservar Anexo con im!genes del resultado de fabricación.
43
-.-.4 1rogramación del driver 01'C Este bloque es uno de los puntos fuertes y nOcleo del desarrollo del conjunto del sistema. 3onstituye el softare que controla la interfaz. Este reto se puede dividir en dos aristas$ en controlador y elemento controlado$ origen y destino o 0123 #ost y lado del periférico &)&*. ,e citan a continuación los rasgos m!s relevantes y requisitos del lado 0123$ driver 0123. a sido preciso un estudio exaustivo de la configuración del 0123 de la beaglebone para acceso &)&* a partir de 6(2 del )2::Axx ,itara para comprender el funcionamiento de estos est!ndares antes de proponer un plan de dise"o de código fuente. /n dispositivo &)&* requiere mOltiples etapas de programación de direcciones y uno o m!s comandos. La programación de las etapas de comandos y fases de dirección del driver 0123 se realizan mediante operaciones de escritura a las ubicaciones de los registros 0123G&)&*G3'22)&*Gi y 0123G&)&*G)**(E,,Gi con los valores correctos de comando y dirección en cada ciclo. Estas posiciones de memoria est!n mapeadas en la región del 3, asociada con el registro. El control de temporización del c#ip select deben ser programadas de acuerdo con las especificaciones del fabricante del c#ip. La unidad 21/$ es responsable de lanzar el nX de comandos y direcciones mediante una correcta programación del softare driver$ acorde con el set y el esquema de direccionamiento del modelo escogido. 1or lo tanto$ se procede a tomar nota de las indicaciones y especificaciones del fabricante para deducir los valores y par!metros relacionados con el timing de las se"ales de control con los que programar el driver.
-.-..4 'emory $ideB C(ip de memoria +A+, '"%5;60A/A,A71 Estudio del protocolo de acceso flas# &)&* específico del modelo de memoria empleado a partir de su datas#eet. En este apartado se muestra cómo son las secuencias de operaciones que requiere cada tipo de acceso y los timings de las se"ales de control. 3omandos$ direcciones y datos son registrados en la nand en el flanco alto de reloj de FE. -0 3LE indica que un ciclo de comandos est! teniendo lugar. -0 )LE significa que un ciclo de )**(E,, -&1/6 est! teniendo lugar. 6oda operación se inicia con un ciclo de comandos. /na secuencia de comando consiste en un ciclo de latc# del comando$ varios ciclos de address input y uno o m!s ciclos de datos %en modo escritura o lectura+. El ciclo de comando asíncrono se realiza llevando el comando a la parte baja del bus -' %C5@+. El comando se escribe desde el bus #acia el registro de comandos durante el flanco ascendente de FE$ con 3E a nivel bajo y 3LE a nivel alto %)LE bajo y (E alto+. 2ientras que los ciclos de escritura de dirección se escribe desde el bus -'C5@k al registro de dirección en flanco ascendente de FE cuando 3E es bajo$ )LE alto %3LE bajo y (E alto+. El dato se escribe desde el bus -'?A5@k #asta el registro cac#e de la L/& %unidad de memoria gestionada por un 3,+ en el flanco ascendente de FE cuando 3E es bajo %)LE bajo$ 3LE bajo y (E alto+. El dato puede ser extraído desde el registro cac#e de una L/& #acia el bus -' en el flanco descendiente de (E cuando 3E es bajo$ )LE es bajo$ 3LE es bajo y FE alto. El dato puede ser leído %extraído+ desde el L/& si la memoria se encuentra en estado (E)*N.
-.-...4 ConsideracionesB aK 71 ,i F1W@ R Borrar y programar W des#abilitadas. ,i F1W? R Borrar y programar W #abilitadas. *urante encendido se recomienda que F1 W @ #asta que 833 sea estable %unos ?A@us+ R previene programaciones y borrados involuntarios. El estado de F1 sólo puede transicionar5 •
3uando el dispositivo no est! no est! ocupado (*N %o (B+W ? ?. )ntes del inicio de una secuencia de comandos. 9. *espués de una secuencia de comando completada
44
*espués de experimentar un cambio en F1 el #ost tiene que dejar tFF antes de lanzar un nuevo comando.
bK R 4 R,G ,e puede determinar el status de la memoria en un momento concreto solicitando el estado consultando el registro de status %campobit (*N+ o monitoreando desde el #ost %0123 side+ la se"al #ardare directamente %(B+. •
(B W ? R (*NW? R dispositivo PlistoQ
•
(B W ? R @ R (*NW@ R dispositivo est! PocupadoQ.
cK Comportamiento de 7R
•
•
Las solicitudes de salida de datos suelen ser ignorados por una matriz %L/&+ si est! ocupada %(*N W @+5 los datos pueden emitirse desde un %L/&+ si se encuentra en un estado (E)*N. Los datos se escriben en el registro de datos en el flanco ascendente del dispositivo si no est! ocupado. La entrada de datos se ignora si 3,W? o (*N W @. Las direcciones y los comandos ser!n ignorados por el %L/&+ si est! ocupados %(*N W @+.
dK ,ireccionamientoB 2uc#os comandos requieren un nX de ciclos de dirección seguidos de un ciclo de comando. (E,E6 y (E)* ,6)6/, son la excepción ya que requieren menor nX de ciclos adem!s de que puede ser solicitados y ejecutados mientras el dispositivo esté ocupado$ cosa que el resto no. &uevos comandos no deben ser reclamados #asta que la memoria deje de estar ocupada en las transacciones pendientes. El direccionamiento sigue una serie de fases5 El primer y segundo ciclos %bytes+ especifican la dirección de columna$ que especifica el primer byte de la p!gina. ,i la Oltima columna es 9??9$ la dirección de esta Oltima posición ser! @<# en el segundo byte y :> en el primer byte. 1)A5@k especifica la dirección de p!gina dentro del bloque y las B) ?;5;k la dirección de bloque. La dirección completa de A bytes se lanzan para la mayoría de operaciones de escritura y lectura$ sólo dos ciclos %9bytes+ son necesarios para operaciones especiales que acceden al dato de forma aleatoria dentro de la p!gina.
-.-..%.4 $incronismo de control de la memoria segn su fabricanteB *os son los tipos de accesos que conforman una operación5 programación de comandos y dirección y la fase de datos %escritura y lectura+. ?.D latc# de comandos y un latc# de direcciones5
a?
"?
Fig. 2!: a# ciclo de command latch, b# ciclo de address latch
*urante un latc# de comandos y de direcciones todos los timings de las se"ales de control participantes toman como referencia el flanco ascendente de la se"al FE.
45
(elación de tiempos mínimos %ns+5
tCL$
?@ 6iem 6iempo po setu setup p 3LE 3LE para para su acti activa vaci ción ón.. En desa desact ctiv ivac ació ión n tiem tiempo po #ast #astaa flan flanco co ascendente FE
tCL=
&
tC$
?A tiempo tiempo setu setup p #asta #asta FE desd desdee la activ activaci ación ón de de 3E
tC=
&
t7C
9@ es el ciclo ciclo completo completo de un un ciclo ciclo de escri escritura tura %estado %estado bajo S alto+ alto+
t71
?@ 1uls 1ulsoo en en est estad adoo bajo bajo FE %de %de ffla lanc ncoo des desce cend ndie ient ntee a flan flanco co asce ascend nden ente te+5 +5 acti activa va escritura de dato en bus
t7=
C
tAL$
?@ 6iempo 6iempo setup setup )LE )LE antes antes de de activ activaci ación ón FE FE
tAL=
A
el tiempo de #old de comando que #a de pasar para desactivarse %o activarse+ después de tF1. 6iempo #old %desde F1 #ig#+ para la desactivación de 3E
1ulso en estado estado alto FE5 tiempo tiempo #asta #asta la la siguien siguiente te activac activación ión de FE FE %siguie %siguiente nte ciclo+ ciclo+ tiem tiempo po de #old #old )LE5 tiem tiempo po desde desde FE #ig# #ig# %tiem %tiempo po de desac desacti tiva vaci ción ón despu después és de validar dirección+$ Tabla 1: ;iempos de setup y de hold para comandos
9.D-nputoutput %F((*+ de datos5
a?
"?
Fig. 2": a# ciclos de escritura, b# ciclos de lectura
3uando la salida de dato se des#abilita o C2 se desactiva N -' flota en alta impedancia . *eben tenerse en cuenta los tiempos terminados en U.
46
(elación de tiempos mínimos %ns+5
tAL$
?@
6iempo 6iempo desde desde la desa desacti ctivac vación ión de )LE )LE %cicl %cicloo direcci direccione ones+ s+ #asta #asta ?er flan flancc asc FE por por dato en bus
tRC
9@
6iem 6iempo po que dura dura un ciclo ciclo (E (E de lectur lecturaa de un dato dato %ent %entre re dos dos flanco flancoss de bajad bajadaa seguidos+
tRR
9@
6iempo 6iempo entre entre flanco flanco subida subida (B y flanc flancoo de de baja bajada da de de (E (E
tR1
?@
6iem 6iempo po de pul pulso (E bajo bajo
tR2=
C
6iem 6iempo po entr entree fla flanc ncoo aasc scen ende dent ntee y desc descen endi dien ente te de (E (E
tR2A
?;
6iempo 6iempo de de acceso acceso %que %que tard tardaa el dato dato en estar estar prese presente nte en en el bus+ bus+ desde desde flanc flancoo desc desc (E
tR=
?@@ 6iempo 6iempo entre entre flanc flancoo ascenden ascendente te (E y bus en estado estado de alta U %fin de tiempo tiempo de dato+
tR=O= ?A
6iempo 6iempo de flanc flancoo ascend ascendent entee (E (E y tiemp tiempoo de #old #old de de modo modo outpu output. t.
tC2A
9A
6iempo 6iempo de de acceso acceso de de 3E %que %que tarda tarda en en aparec aparecer er el prim primer er dato+ dato+ desde desde 3E 3E desce descen. n.
tCO=
?A
6iem 6iempo po de flanc flancoo alto 3E 3E %desac %desacti tiva vaci ción ón de 3E+ #ast #astaa tiempo tiempo de #old #old del modo modo output.
tC=
A@
6iempo 6iempo de de flanc flancoo alto alto 3E #ast #astaa fin de de Oltimo Oltimo dato dato %ini %inicio cio del del bus bus en alta alta U+ U+ Tabla 1!: ;iempos para la escritura de direcci'n
La lectura se activa por flanco descendiente de (E$ aunque dependiendo de los tiempos escogidos puede darse en flanco ascendente o al siguiente pulso5 ?. El control controlador ador #ost #ost %nuestra %nuestra beagl beagle+ e+ que usa usa t(3 JW :@ns :@ns R el #ost puede puede registr registrar ar el dato dato en el flanco ascendente de (E. 9. ,i el control controlado adorr #ost usa un t(3 I :@ns R el #ost puede puede regist registrar rar el dato dato en el siguien siguiente te flanco descendiente de (E. ,e dispone de un set de comandos proporcionados por el fabricante con sus protocolos de petición. )lgunos requieren un nX menor de ciclos de escritura. 1or lo tanto se iniciar!n las primeras pruebas con los comandos m!s sencillos e imprescindibles para la inicialización del sistema. El primer lugar se programar! el driver 0123 del #ost. )cto seguido se comprobar!n las formas de onda de las se"ales de control y los datos del bus por el analizador lógico. >inalmente$ cuando las se"ales se comporten segOn lo esperado se conectar! el #ost al dispositivo &)&* de forma que comprobaremos si la interfaz opera correctamente. :.D 'peraciones de inicio5 1etición de (E,E6 y petición de estado del c#ip
aK 2l comando R2$2" 5 •
pone la memoria en una condición conocida y aborta el comando en progreso.
•
debe ser enviado a la memoria memo ria como el primer comando tras el encendido.
•
#ace que sea posible para abortar borrado y programación en proceso o bien vuelva a emitir el comando en un momento posterior.
*espués del reset5 ?. (B W @ durante durante t(,6 t(,6 %después %después de escribir escribir al registr registroo de comando comandos+ s+ ◦
1rimer reset t(,6 W ?ms
◦
1osteriores t(,6 W Aus
9. (E)*$ 1('0( 1('0()2 )2 y E(),E E(),E pueden ser abortad abortadas as mientras mientras el el dispositiv dispositivoo est! ocupado. ocupado.
47
:. El registr registroo de comandos comandos queda queda limpio limpio y preparado preparado para para el siguie siguiente nte comando comando.. 4. Los contenid contenidos os de los regist registros ros de datos datos y de cac#é cac#é quedan quedan marcad marcados os como inv!lido inv!lidos. s. A. El regi registr stroo de stat status us cont contien ienee el valo valor5 r5 ◦
,i F1 W -0 R E@# W ???@ @@@@
◦
,i F1 W L'F R ;@# W @??@ @@@@
Fig. 3#: anzamiento comando +ESE;
(elación de tiempos m!ximos en ns5
t7/
?@@
tiempo entre estado alto de FE a flanco alto de (B
tR$"
AD?@DA AD?@DA@@ @@ us
6iempo 6iempo de reset para para lectur lecturaDes aDescri critur turaDb aDborr orrado ado.. La duració duración n del ?er reset reset puede llegar a ?ms %?@@@us+ Tabla 1": ;iempos del comando de reset
bK R2A, $"A"F$ J9!(K puede ser atendido mientras el dispositivo se encuentra en PbusyQ. &o requiere ni ciclos de dirección ni comando de cierre. 3uando sólo se quiere conocer el estado del bit (*N el comando debe ser lanzado una sola vez. Este estado puede ser releído5 •
a+ emitiendo la sincro de (E
•
b+ manteniendo (E en estado bajo sin conmutar a estado alto
El comando (E)* ,6)6/, ofrece el estado de la se"al riteDprotect signal y fallocorrecto en operaciones de 1('0()2E(),E. 1('0()2E(),E. (E)* ,6)6/, %C@#+ retorna retorna el estado del %L/&+. 1ara 1ara acceder al registro de estado y leerlo$ primero #ay que #abilitar la salida %output+ del registro. El contenido del registro se escribir! en la salida -' en cada petición de lectura de datos. Los cambios en el registro son vistos en el bus -'%C5@+ tanto tiempo como 3E W (E W L'F. &o es necesario conmutar (E para ver una actualización del registro. 3onsultar el registro de estado sirve para determinar cuando la transferencia de un dato desde la memoria al registro de datos #a finalizado %t(+. 3uando la operación #a terminado$ si no se #a des#abilitado el modo Pstatus outuputQ$ el bus permanece ocupado por el valor de este registro. 1ara que el #ost pueda capturar los datos después de una lectura monitoreada se tiene que des#abilitar el registro de estado$ lanzando lanzando el comando (E)* 2'*E %@@#+. ay dos tipos de acceso a este registro$ avanzado o b!sico. *ado que sólo se dispone de una L/& bastar! con el modo b!sico5 C@#.
Fig. 31: *peraci'n comando read status
48
(elación de tiempos mínimos %ns+5
t7=R ;@
6iempo desde FE alto %latc# comando+ #asta (E bajo de la primera lectura después de la escritura comando %delay de lectura tras escritura+
tIR
@
'utput ig#DU to (E L'F
tR1
?@
1ulso %negado+ total de (E
tCLR
?@
*elay entre la desactivación de 3LE y la próxima activación de (E
tC2A
9A
6iempo m!ximo de acceso desde activación 3E a dato en bus -'
tR2A
?;
6iempo m!ximo desde (E lo #asta que aparece el dato en el bus. Tabla 2#: /ar?metros temporales para la lectura de estado
Las descripciones del significado de cada bit del registro ,6)6/, en : operaciones son5
$t. Reg.
1rogramación de pagLect de pagBorrado de bloque
C
@WF1$ ?Wno F1
;
@WBusy$ ?W(eady
A
@WBusy$ ?W(eady
:
%,ólo pag (*+ @Wnormalincorregible$ ?W P(eDFriteQ recomendable
?
@W3orrecto$ ?WError
@
@W3orrecto$ ?WError
(esto de bits
@donZt care
Tabla 21: Significado de los campos del registro de estado de la memoria
4.D 'peraciones de Lectura5 Lectura de -* y de p!gina
aK Comando read I, es un comando seguido de un sólo ciclo de dirección$ que pueden ser 95 •
@@#5 devuelve A bytes de identificador
•
9@#5 devuelve 4 segOn el est!ndar '&>-
6iempos m!ximos %ns+ ?@ *elay entre Oltimo )LE y primer (E tAR El comando @@# indica la activación de la salida de datos y el inicio de una operación de lectura.
bK 2l comando de lectura de pHgina es el comando @@#:@#. 3opia una p!gina de la matriz &)&* a su registro cac#é y #abilita la salida de datos. Los pasos para lanzar este comando y completar la lectura son5 ?. escribir @@# en el registro de comandos 9. escribir los A ciclos de dirección en el registro de dirección :. se produce una transferencia interna de los datos durante t(5 memoria ocupada 4. ,e puede determinar el progreso de la transferencia ◦
◦
consultando la se"al (B comando de estado5 C@# R implica que cuando el pin (*N W ?$ el #ost des#abilitar! la salida del estado y #abilitar! la salida de datos cuando se lance el comando @@#.
49
Fig. 32: Sincronismo de lectura de -D
A. /na vez el #ost inicia la captura del dato$ la salida de datos se iniciar! desde la columna de la p!gina del bloque especificada en la dirección enviada$ pasando los datos al bus. Este Oltimo paso sucede sólo si el #ost pide el dato mediante la lectura de su registro de datos$ ya que dic#a acción es la que activa el sincronismo de lectura.
Fig.33 : Sincronismo de activaci'n de una lectura de p?gina
6iempos mínimos en ns5 tR=7 ?@@ >lanco ascendente (E %Olt dato+ a primer FE flanco descendiente %?r comando+
tR
9Aus
6ransferencia de datos desde memoria a registro de datos %desde ultimo ciclo escritura FE W @ R ? #asta (B W @R?+
tRR
9@
*elay entre paso de busy a ready #asta primer flanco desc de (E
t7/
?@@
6iempo m!ximo entre Oltimo FE ascendente y a c#ip ocupado Tabla 22: ;iempos de una lecura de p?gina
A.D 'peraciones de Escritura5 Borrado de bloque y escritura de p!gina
aK 2l comando de borrado de blo>ue es ;@#D*@# y se usa para limpiar el contenido de todo un bloque antes de escribir en cualquiera de sus p!ginas borra el bloque entero. 1ara borrar un bloque deben seguirse estos pasos5 ?. Escribe ;@# en el registro de comandos. 9. Escribe : ciclos de direcciones de fila %bloque+5 las columnas y p!ginas son ignoradas.
50
:. Escribir *@# en registro de comandos para cerrar operación. 4. 1ermanecer! en estado busy %(*N W @+ durante tBE(, #asta que se #aya borrado. A. (evisar el progreso de la operación revisando el estado de (*N. ◦
consultando (B
◦
lanzando comando read ,tatus
;. 3uando (*N W ?$ revisar el estado del bit >)-L del registro ,6)6/,.
Fig. 34: Sincronismo de borrado de bloque
6iempos m!ximo en ms5 6iempo de operación de borrado t/2R$ : /na operación de programación mueve los datos desde su registro de datos yo cac#é #acia el array &)&*. El contenido de los registros de datos yo cac#é son modificados por el circuito de control lógico interno. 3uando se quiere programar una secuencia de p!ginas dentro de un mismo bloque el orden debe ser5 desde el nX de p!gina menos significativo #asta el mayor %@$ ?$ 9$ K..$ ;:+.
bK 2l comando de programar una pHgina es5 <@#D?@# y programa una p!gina desde el registro cac#e #acia una p!gina del array &)&*. El comando #abilita al #ost para introducir el dato en el registro cac#e y luego mueve el dato dsde el registro cac#e a la p!gina del bloque especificada en la dirección. )sí$ los pasos de esta operación pueden secuenciarse así5 ?. Escribir <@# en el registro de comandos5 limpia el contenido del registro cac#é de la L/& 9. Escribir A ciclos de dirección. :. ,e suceden varios ciclos de input de datos en serie5 se introducen a partir de la columna indicada en la dirección. 4. *espués del Oltimo dato se debe escribir el comando ?@#. A. La L/& permanecer! ocupada durante t 1('0 #asta que el dato es transferido.
51
;. 3uando la L/& ya est! en estado (E)*N %(*N W?+ el #ost debería comprobar el bit de >)-L del registro ,6)6/, para verificar si la operación se #a completado con éxito. ◦
consultando la se"al (B
◦
comando read ,6)6/,
Fig. 35: Sincronismo de una operaci'n de programaci'n de p?gina
6iempos mínimos en ns5
tA,L
C@
%tiempo entre dirección y dato+ en un ciclo de dirección tiempo entre la desactivación de FE %flanco subida+ y el primer flanco de subida de FE para la entrada de datos en el bus$ después de disponer y validar la dirección.
t1RO0
;@@us 2ax tiempo de programación de m!s del A@[ de las pags Tabla 23: ;iempos de una escritura de p?gina
;.D 'peraciones de inicialización5 ,e recomienda proteger de escritura el dispositivo después del encendido mientras 833 no se #aya estabilizado para evitar borradosescrituras indeseados. ,e indica que la alimentación es estable ?@@us después de alcanzar 833min en una rampa ascendente. F1 est! activo por defecto y el dispositivo se #abr! alimentado al conectarlo a 3&? tiempo antes de iniciar el driver. 1or seguridad se pausar! el sistema mientras transcurren 9@@us antes de activar F1 y lanzar el primer comando. 1ara llevar a cabo la etapa de encedido se seguir!n las siguientes fases5 ?. Esperar 9@@us con Fp activado por defecto %protección de escrituralectura+ 9. *esactivar Fp desde registro de 0123G3'&>-0 :. Lanzar solicitud de comando de (E,E6 4. Esperar un milisegundo. A. Lanzar solicitud de comando de lectura de estado (E)* ,6)6/,. ;. /na vez libre lanzar comando de recuperación de -*. 3uando se #a cargado el driver$ el dispositivo #a arrancado y se #a inicializado$ se puede empezar a escribir y leer una p!gina. 1ara llevar a cabo una etapa de escritura y de lectura deben seguirse las fases que se #an citado anteriormente.
52
(esumen5
1asos
2scritura
Lectura
Lanzar comando de inicio
Lanzar comando de inicio
%
A ciclos de dirección
A ciclos de dirección
-
Escribir datos %?;bDords x n posiciones de Escribir comando de cierre memoria de la pag+ en *)6) reg
6
Escribir comando de cierre
Esperar tFB
&
Esperar tFB
,ondear se"al (B #asta estar desactivada %estado alto+
,ondear se"al (B #asta quedar desactivada Leer datos %?;bDords x n posiciones de %estado alto+ memoria de la pag+ de *)6) reg
9
Lanzar comando (E)* ,6)6/, para saber si se #a producido un error Tabla 24: +esumen de las etapas de la operaci'n de escritura y de lectura que el host debe implentar.
-.-.%.4 =ost ,river $ide El driver 0123 en el lado del #ost se va a implementar para cargarse y gestionar el #ardare 0123 de la 31/ ,itara en el Mernel de Linux /buntu embedded versión :.< porque es la Oltima versión que incorpora el cape manager. 1or lo tanto$ es la Oltima recomendada si se trabaja con una 3)1E. En Linux$ los drivers sofare son conocidos y tratados como módulos. La extensión del fic#ero de un módulo compilado en Linux es .9o. 3ada #ardare es diferente de un fabricante a otro. 1ara que un sistema operativo se entienda con diferentes dispositivos existe el concepto de driver. /n driver soporta los programas que tienen contacto directo con el #ardare del sistema del que forman parte. Esto implica$ muc#as veces$ operaciones de escritura y lectura de los registros Dde control y de datosD del controlador de un determinado #ardare. ,us operaciones también cambian de un modelo a otro. La labor del driver es compatibilizar toda esa variedad y diferencias$ cuando emplean la misma interfaz física. El driver que pretende montarse en el sistema es el controlador del bloque #ardare 0123 de un )2::Ax$ de arquitectura )(2 y va a programarse siguiendo las especificaciones de su manual de referencia. El 0123 puede gestionar #asta C regiones de memoria independientes mediante las se"ales 3,i %@5;+. 3ada una de estas regiones tiene una serie de registros asociados a cada uno de forma independiente que permite configurar el protocolo de acceso asociado a dic#o 3,$ programando sus par!metros. La codificación del driver gira entorno a la escritura de valores desde el código a estos registros. Los campos de configuración del protocolo empleado se #allan agrupados en diferentes registros$ que son los siguientes con sus respectivas direcciones de base %los campos que los conforman con los valores posibles se #allan perfectamente detallados en el capítulo de registros del 6(2 de la 31/+.
53
@# 0123G(E8-,-'&
&o modificado %valor por defecto+
?@# 0123G,N,3'&>-0 ?4# 0123G,N,,6)6/, ?<# 0123G-(,6)6/,
&o modificado %valor por defecto+
?3# 0123G-(E&)BLE 4@# 0123G6-2E'/6G3'&6('L 44# 0123GE((G)**(E,,
&o modificado %valor por defecto+
4<# 0123GE((G6N1E
&o modificado %valor por defecto+
A@# 0123G3'&>-0 A4# 0123G,6)6/, ;@# 0123G3'&>-0?Gi
3omunes en los C 3,
;4# 0123G3'&>-09Gi ;<# 0123G3'&>-0:Gi ;3# 0123G3'&>-04Gi C@# 0123G3'&>-0AGi C4# 0123G3'&>-0;Gi C<# 0123G3'&>-0CGi C3# 0123G&)&*G3'22)&*Gi
,ólo se usan en protocolo &)&*.
<@# 0123G&)&*G)**(E,,Gi <4# 0123G&)&*G*)6)Gi Tabla 25: ista de los registros de configuraci'n del driver /0&
El manual de la 31/ propone el siguiente flujo de implementación del softare de control para el bus 0123 del u1$ cuando se trata de acceder a memorias tipo flas#.
Fig. 36: Bases de programaci'n para implementar driver flash /0&
54
aK $istema operativoB proceso para la programación de un driver. En Linux un driver es tratado como un fic#ero$ con algunas operaciones en comOn como read$ rite$ open$ etc.. 1ero igualmente usadas como llamadas al sistema. El código que se #a desarrollado pertir! al driver dar respuesta a las siguientes 4 necesidades5 ?. -nicialización5 configuración inicial del periférico después del arranque 9. Exit5 configuración del driver cuando el periférico #aya sido suprimido :. 'peraciones de fic#ero normales5 mencionadas en el par!grafo anterior 4. 'tras config5 desde la aplicación se cambia el valor de una variable del módulo La información Ddesde y #acia el driverD se traspasa y se entrega en dos variables struct de campos con las operaciones que dispone el dispositivo y otra con campos sobre la identidad del dispositivo que a su vez contiene la estructura anterior. La aplicación de usuario que llame a la función con el nombre de una de las operaciones definidas en las estructura de operaciones activar! la ejecución de la rutina indicada por el campo de su nombre. Esta ser! la primera parte del código del driver de la interfaz a desarrollar5
Fig. 3: Declaraci'n de las dos variables struct
*espués le seguir!n algunas de las funciones declaradas y empleadas por las funciones de la estructura sdFfops. En Oltimo lugar se implementar!n las funciones de operación del driver que se incluyen en la estructura y que son las llamadas de sistema. 3uando el usuario carga el módulo correspondiente al driver 0123 el código relacionado con las configuraciones de c#ipselect resolver!n la inicialización. 6ambién se tiene una serie de arc#ivos cabecera en los que se definen las direcciones de los registros tanto del driver 0123 como del microcontrolador )2::Ax. Estos arc#ivos se entregan como parte del material de la asignatura pero son típicamente incluidos en las propuestas profesionales m!s avanzadas que pueden encontrarse en 0it#ub. &o obstante$ se #an tenido que a"adir definiciones nuevas con las direcciones físicas que el manual de 6exas -. asocia con cada uno de los registros accesibles por el programador que no estaban presentes. Las definiciones de estas cabeceras$ adem!s facilitan el trabajo al evitar que el desarrollador opere de forma constante directamente con dic#os valores y en su lugar emplea denominaciones %macros+ que lo #acen m!s intuitivo. 1ero$ la utilidad principal de estas definiciones es la reservarle a estas direcciones físicas un espacio de memoria %virtual+ en el Mernel. 1ues el Mernel no trabaja directamente con memoria física. 'pera con espacio virtual por medio de la 22/ %del u1+$ un traductor de memoria virtual a física. La forma de escribir o leer los registros físicos de configuración del #ardare se realiza a través de este mapeo %punteros+ para acceder desde el código del driver al módulo 0123. Es importante tener en cuenta una serie funciones y sentencias en las que el dise"o se apoyar! para relizar operaciones b!sicas como apuntar a diferentes posiciones de memoria y acceder a ellas. Las funciones y técnicas m!s recurridas5 •
miscGregister%\sdGdevs+5 se registra el dispositivo en la categoría de miscelania de dispositivos
55
•
ioremap%arg?$ arg9+5 genera un puntero a la dirección física del arg? con tama"o arg9
•
#reg%+5 acceso a registros ◦
aux W #reg%+
◦
#reg%+ W aux
siendo aux R variable :9b almacenando valores #exadecimales
•
printM%+5 permite mandar mensajes a la consola de la beaglebone desde el Mernel
•
udelay%+5 a"ade un retardo a la ejecución del código
•
copyGtoGuser%+$ copyGfromGuser%+5 escribe dato desde origen en una posición de memoria reservada a la aplicación de usuario y viceversa. ,on complementarias. 1rogramación 0123 &)&* 1asos para programar el driver modo b!sico %requisitos mínimos obligatorios+
1asos para programar el driver modo avanzado
Iniciali#ación
Iniciali#ación
1
abilitar clMs
abilitar clMs
2
abilitar pads
abilitar pads
3
(eset 0123
(eset 0123
Configuración
Configuración
4
6ipo de memoria
6ipo de memoria
5
*es#abilitar 3,@ %sólo si se emplea 3,@+
*es#abilitar 3,@ %sólo si se emplea 3,@+
3onfiguración 3,
3onfiguración 3,
6
Frite %async+
Frite %async+
7
(ead %async+
(ead %async+
8
abilitar 3,
E33 engine
9
prefetc#rite posting engine
10
Fait 1in
11
abilitar 3, Tabla 26: /asos de soluci'n avanzada >s. soluci'n b?sica
El módulo 1(32 de esta 31/ basada en )(2D3ortex )< gestiona el reset$ la alimentación y el reloj de la 31/. Este bloque 1(32 junto con el bloque control module gestionan las desconexiones %gating+ y las #abilitaciones de los relojes de todos los módulos del dispositivo. /no de ellos es el reloj del módulo periférico 0123. 1ara programar los campos relacionados con el control del reloj funcional del bloque 0123 debe direccionarse al grupo de registros 32G1E( Dperteneciente al % cloc9 module del po:er, reset, and cloc9 management %1(32+ moduleD$ con el offset de la dirección del registro asociado al reloj del 0123.
Fig. 3!: 0apeo del grupo de registros &0F/E+ "del mapa de memoria de la interfaz de perif%ricos GF8HU/ $
56
Fig.3" : *ffset de registros del grupo &0F/E+
3ontrol module es otro grupo de registros destinados a controlar diferentes !reas de la 31/$ entre las cuales se encuentra el multiplexado funcional de los padspines de la 31/.
Fig. 4#: 0apeo y baseaddress del &ontrol 0odule
)lgunos pines de la 31/ est!n multiplexados. 1oseen diferentes funciones pero sólo pueden emplear una de ellas. 1or lo tanto debe programarse el modo de funcionamiento del pin es decir$ asignarle una de las funciones para las que se dispone. 'tros par!metros como el sentido %-$ '$ -'+ de las se"ales o #abilitación de pull updon internas son configurados programando estos campos5 1ad 3ontrol$ 2ode ,election$ 1ull ,election y (T )ctive. 1(32 sostiene dos niveles de gestión de reloj dependiendo del tipo de módulo al que gestiona su reloj5 protocolo esclavo y protocolo m!ster. El protocolo -*LE se basa en un #ardare que permite al 1(32 controlar el estado del módulo esclavo y le informa al esclavo mediante una petición de -*LE cuando su reloj funcional puede iniciar un cloc9 gating. El esclavo puede reconocer petición de mantener el clocM reposo y admitir que el módulo 1(32 desactive su >3LH. El registro 0123G,N,3'&>-0 permite al módulo descartar o aceptar las propuestas de cloc9 gating procedentes del gestor de reloj que lo controla. Este registro forma parte del grupo de registros 0123 mapeados en en el mapa de memoria de la interfaz L: con una dirección base de @xA@@@@@@@.
;ig. 6B 0apeo de los registros /0& en 4 ,e accede a él %y al resto de registros de configuración del grupo del bus 0123+ apuntando a la dirección de base de los registros 0123 m!s el offset del registro %@x?@+. *e acuerdo con el 2emory 2ap del manual de 6- el espacio de la 3/1 asignada al 0123 son los primeros A?92B de este mapa de espacio del )2::Ax. 1or lo tanto todas los accesos apuntados a las direcciones físicas inferiores a la frontera de dic#o espacio %@x?>>>>>>> S ? W @x9@@@@@@@+ ser!n dirigidos al 0123.
Fig. 42: 4 /0& memory mapI espacio reservado para acceso a memoria e!terna
Las direcciones #asta dic#a frontera se pueden construir combinando 9= líneas de bits$ dado que @x9@@@@@@@W9V9=. 1or el momento en una primera versión de la interfaz no se pretende acceder a m!s de una memoria externa. 3ada protocolo se implementar! en versiones distintas de driver 0123. Las memorias nand tienen la peculiaridad de no estar mapeadas y sólo se precisa tener en cuenta que el la dirección base de este espacio 0123 parte del valor @@?@@@@@#$ en lugar de @ dec$ porque los primeros @@@>>>>># est!n reservado. Es decir$ primer 2byte se pierde y se cuenta con A?? 2bytes a repartir entre C 3,. En el caso de acceso a un dispositivo &'( se accede a través de un puntero que apunta a la dirección de su región definida a partir de ET62E2GB),E %dirección física+ #asta ET62E2GB),E S ?@#ex %por
57
tanto un banco de ?; posiciones de < bits de memoria+. Esta es una de las principales diferencias entre un driver &)&* y otro &'(. La forma de transferir datos entre esas zonas y el driver se ver! traducido en el código adjuntado en el anexo. En &)&* este puntero no se usa. Este puntero y otros son definidos y asignados a sus valores de espacio físico en la función void pointersFinit"#. Es a través de esta definición que se acceder! a la posición de memoria que representa. En el caso de acceso a una memoria &)&* no se realiza así. &o se mapea. El protocolo de acceso &)&* requiere un direccionamiento por fases$ que se traducir! en varios accesos de escritura en el bus. 1ara ello el driver 0123 recibe la palabra de dirección en un registro de :9 bits del bus 0123. Es decir$ en términos del driver a implementar se accede a estos registros del mismo modo al que se acceden a los registros de configuración. *el manual se extrae que los registros de comando y de dirección son posiciones de memoria que no almacenan los valores que se les escribe durante el acceso. uiere decir que estos valores no se pueden capturar en forma de lectura. 1ero esto no implica que el driver ignore una petición de lectura de estos registros. La implementación del driver debe garantizar que no se programen lecturas de estos dos registros para evitar resultados indefinidos. ,ólo el registro de datos puede ser accedido con una lectura o escritura. /n dispositivo &)&* sólo emplea el bus de datos para compartir el traspaso de valores de comandos$ dirección y datos. Lo #ace de forma multiplexada$ como ya se #a avanzado en apartados anteriores. La discriminación de una fase de datos$ dirección o comandos se alcanza mediante la combinación apropiada de las se"ales de control %)LE y 3LE+. 3omo se #a dic#o al inicio del apartado un acceso requiere mOltiples fases de escritura previas y el manual del módulo 0123 de 6exas explica qué campos de los registros de configuración deben ser programados. ,e trata de trazar equivalencias de los timings del fabricante de la memoria con los del #ost %lado driver+ de las ilustraciones. 3on el fin de adaptar los valores de los par!metros Da guardar en los campos de los registros adecuadosD de los timings del fabricante$ debe entenderse su función.
bK "imings 01'C 3uando se realizan operaciones con fases de &)&* 3'22)&* 3N3LE$ &)&* )**(E,, 3N3LE y escritura de datos5 Señal
Parmetros Escritura GPMC C+MM'-D C/C0E
'DD(ESS C/C0E
,-P$) D')' C/C0E
Csn
C;<=TIME! C;7,
C;<=TIME! C;7,
C;<=TIME! C;7,
CE
*%)<=TIME! *%)7,
*%)<=TIME! *%)7,
%esacti>ada
*E
*%)<=TIME! *%)7,
*%)<=TIME! *%)7,
%esacti>ada
7E
7E<=TIME! 7E
7E<=TIME! 7E
7E<=TIME! 7E
Tabla 2: /ar?metros de sincronismo en los 4 tipos de ciclos de escritura
Fig. 43: Bormas de onda /0& para el ciclo de comando
58
Fig. 44: Bormas de onda /0& para un ciclo de direcci'n
72O+"I'2<72O;;"I'2B tiempo dentro del cual el dato es escrito en el registro %o dirección+ y el bus de datos queda fijado con )LE3LE desactivados. 1uede controlar tiempo de setup y de #old antes de la activación y después de la activación de FE respectivamente. A,:O+"I'2>6-2E debe ser superior al tiempo de activación de FE$ respetando su tiempo de #old y )*8'&6-2E inferior al tiempo de activación de FE C$O+"I'2B 6ípicamente usado para controlar los tiempos de setup de las se"ales )LE y 3LE antes de que esta se"al 3,n se active. Es un setup #asta la activación de )LE cuando escribe. Es un tiempo respecto del tiempo de inicio del ciclo de acceso. C$7RO;;"I'2B tiempo relativo al inicio de acceso que tarda en desactivarse 3,. 3ontrola el tiempo de #old de )LE y 3LE después de la desactivación de 3,. 6iempo de #old de 3sn después de desactivar FE %flanco ascendente+. 7RACC2$$"I'2B ,e inicia cuando 0123 genera un acceso de escritura. &o tiene sentido usarlo a menos que se #aga como valor de ventana de tiempo en estado Fait tras una operación que requiere un tiempo de espera indicado por el fabricante de la memoria. ,i se usa$ la forma correcta de usarlo es de forma que el pin ait@ %(B lado 0123+ se encuentre en un estado v!lido dos ciclos antes de que se cumpla el tiempo F()33E,,6-2E. ,ino este campo se mantiene con valor F()33E,,6-2E W @. 7RCGCL2"I'2B 2arca el final del acceso de escritura. *efinen los tiempos v!lidos del bus de direcciones y de datos para escribir. 3uando estos tiempos finalizan las se"ales de control ser!n desactivadas si no lo est!n %independientemente de los valores que les fueron asignados+.
Fig. 45: &iclo escritura datos
3,F('>>6-2E W )*8F('>>6-2E W F(3N3LE6-2E
59
'peraciones data inputoutput %operaciones que tienen lugar después de Oltimo ciclo de dirección excepto operaciones especiales+5 Señal
Parmetros 0ectura GPMC
Csn
C;<=TIME! C;7,
,En
Tabla 2!: /ar?metros de sincronismo de la lectura
Fig. 46: &iclo lectura datos
C$O+"I'2B Es el mismo que en escritura. ,e toma como instante de inicio de read access time. C$7RO;;"I'2B *esactivación de 3,n debe ser programado teniendo en cuenta el valor crítico de 3,nDtoDdataDvalid ya que suele ser marcadamente superior a (EnDtoDdataDvalid %t3E)Jt(E)+. )dem!s #ay que tener en cuenta los tiempos de #old y salida en alta impedancia tras el Oltimo ciclo de lectura. 2O+"I'2<2O;;"I'2B )ctivación y desactivación de 'En. Entre ambos tiempos tiene lugar la lectura de datos con )LE3LE desactivada. 3uando la se"al se activa %flanco descendiente+ la memoria deposita el dato en el bus de datos. *efine el tiempo de inicio del sincronismo de lectura y el final. R,ACC2$$"I'2B 6iempo de latc# de datos. Empieza cuando 0123 genera un acceso de lectura. 6iempo que toma a la memoria dejar el dato disponible en el bus de datos de salida. 6iempo desde el inicio de tiempo de acceso #asta el primer flanco ascendente de >3LH empleado para la captura de datos. (epresenta el tiempo que lleva al 0123 tomar el dato del bus. El valor debe ser programado redondeando por el valor m!ximo del )33E,,6-2E de lectura de la memoria. 6iempo en que el dato es leído de la dirección y puesto en el bus. El dato leído es mantenido en bus y con Fait %(*N+ puede controlarse el flanco efectivo del >3LH de la captura del dato en el acceso. ,e recomienda que este valor se ajuste a un tiempo posterior a la desactivación de 'En. R,ACC2$$"I'2 puede fijarse para que el dato sea capturado efectivamente después de la desactivación de (E para tomar ventaja valor de tiempo mínimo inv!lido entre (E alto y dato. R,CGCL2"I'2B 2arca el final de los accesos. *efinen los tiempos v!lidos del bus de direcciones y de datos para leer y escribir. 3uando estos tiempos finalizan las se"ales de control ser!n desactivadas si no lo est!n %independientemente de los valores que les fueron asignados+. El valor mínimo debe ser 3,(*'>>6-2E. CGCL2%CGCL2,2LAGB tiempo inactivo que se requiere respetar entre accesos consecutivos. Las se"ales de control son forzadas a sus respectivos valores de restauración durante el nX de ciclos 0123G>3LH definidos en este par!metro. ,uele ser neceario incluirlos entre un ciclo de escritura y otro de escritura. )lgunas consideraciones5 t'EU5 Al acabar el acceso 3,n y (En pasan a alta impedancia %Otil el campo de busturnaround+
60
7rite4to4read %tiempo de espera+5 &)&* necesita un mínimo$ sobretodo lectura de estado después de escritura de comando de read status. /n mínimo pulso de 3,n ser! necesario. /sar campos R 3N3LE93N3LE,)2E3,E& Csn4to4data4valid 5 t3E) es predominante y m!s lento que t(E) Ren4to4data4vaid 5 equivale a t(E) del fabricante de la &)&*. Read4to4@riteB latencia de busturnaround en dos accesos seguidos R t(F5 (E to FE lo W ?@@ns 3,@ R se #abilita por defecto tras cada reset y puesta en marc#a %0123+. Fait pin5 Especialmente en &)&* resulta imprescindible controlar la disponibilidad de los datos en el bus o bien si el dispositivo #a finalizado su operación en curso. El pin (B de una memoria &)&* se #a conectado al pin ait@ del bus 0123. Este pin se #a configurado durante la inicialización para ser activo bajo$ quiere decir que5 •
estado ready W ? R F)-6@ inactivo el dato ya es v!lido.
•
estado ait W @ R F)-6@ activo bus de datos inv!lido
,irve para indicar la disponibilidad del dato después de una apertura de bloquepag o que una programación del dato #a sido completada. ,e tienen dos formas de ontener esta información5 ?. 3onsultando el registro ,6)6/, del lado #ost %0123+ donde se refleja el estado del (B en el campo de :aitstatus. 9. 3onsultando el registro de estado del c#ip de memoria mediante comando (ead ,tatus. Este también devuelve el estado de las operaciones$ por lo que se emplea m!s para detectar errores. 3uando las operaciones tienen tiempos de esperaocupado cortos$ el método 9 puede paralizar el acceso$ por lo que se emplea el método ?. 1ara el resto de operaciones$ como el (E,E6$ con tiempos m!s altos$ se emplea el método 9. Es importante no caer en el error de tratar de acceder a las memorias mientras el dispositivo se encuentra ocupado y monitoreado porque el sistema puede agotar todo su tiempo de acceso. )nte estos riesgos se propone usar el método ?$ con la particularidad de des#abilitar los campos5 •
0123G3'&>-0?Gi9?k F)-6F(-6E2'&-6'(-&0 W @
•
0123G3'&>-0?Gi99k F)-6(E)*2'&-6'(-&0 bits W @
El pin de estado (B siempre es capturado en :ait< y tiene su copia en el bit :aitstatus del registro 0123G,6)6/,. 1ero el driver sólo puede consultarlo en un tiempo v!lido de la se"al. Es decir$ pasado el tiempo mínimo indicado por el fabricante$ después del Oltimo comando escrito en la memoria %tFB+. 0123G&)&*G3'22)&*Gi y 0123G&)&*G)**(E,,Gi son ubicaciones de :9Dbits$ implica que los accesos de :9 y ?; bits ser!n divididas en 4 ó 9 bytes si se tiene un dispositivo de
61
Respuesta al código para escribir un ciclo comandos
Respuesta al código para leer desde la memoria +A+,
a La 31/ escribe el dato en el registro de El 0123 realiza el ciclo de acceso físico #acia la comandosdireccióndatos memoria &)&*. b La palabra es llevada desde el registro al La memoria &)&* transfiere el dato desde su bus en el flanco de activación de escritura registro cac#é #acia el bus. FE c El 0123 realiza el acceso físico #acia la La palabra leída desde el bus es capturada por el memoria &)&*. registro de datos en el flanco de activación de la se"al #abilitador de lectura (E. d El dato pasa al registro de la memoria La 31/ lee el dato de su registro de datos %suele correspondiente %cac#é$ comando o emplear un valor típico de ?@@ns+. dirección+ Tabla 2": +elaci'n de operaciones internas cuando se ejecuta acceso a un registro de datos
cK Configuración del 01'C) valores de programación de los registrosB En este apartado se introduce un modelo de pasos para implementar la configuración de la interfaz 0123. 6eniendo en cuenta los requisitos del lado &)&*$ se #a establecido el siguiente orden de acciones y que cumple el diagrama de flujo para la inicialización del driver5 -nicialización %comOn en los dos tipos de protocolo &)&* y &'(+5 ?. )ctivación del clocM funcional del módulo 0123. 9. )ctivación de reset5 0123 se va a estado de reset y espera #asta que el driver salga de dic#o estado %comprobando en forma de bucle+. 3onfiguración global del 0123 %los valores dependen del protocolo y del dispositivo+5 :. *es#abilitar modo -*LE para no aceptar peticiones de reposo del clocM. 4. *es#abilitar contador de tiempo de espera$ timeoutcontrol. A. *es#abilitar interrupciones por m!scara. ;. ,eleccionar el pin ait para usar como entrada del estado de la se"al (B %ait@+. C. ,eleccionar la polaridad negada del pin ait@ %active lo R busy+. <. 1olaridad del pin de salida F1 por defecto active lo$ invertir para desproteger el dispositivo. 3onfiguración del 3,i %los valores dependen del protocolo y del dispositivo+5 =. En caso de trabajar con el 3,@ des#abilitarlo. El resto de 3,i por defecto ya lo est!n. ?@. ,eleccionar el factor de escala de la latencia de las se"ales %x? o x95 multiplica por dos los tiempos asignados a cada se"al de control+. ??. ,eleccionar tipo de dispositivo5 &)&* flas#. ?9. ,eleccionar tama"o del anc#o del bus de datos5 ?; Bit. ?:. ,eleccionar el protocolo de mux de datos y direcciones por el bus de datos5 nonDmultiplexed. ?4. ,eleccionar tipo de acceso de operaciones5 async. 3onfiguración de par!metros temporales %ontime$ offtime+ de las se"ales de control %depende de los datos del fabricante del dispositivo de memoria+5 ?A. >ijar timings de 3, ?;. >ijar timings )*8 ?C. >ijar timings de FE y 'E. ?<. >ijar los ciclos de (*F( %y (*)33E,,6-2EF()33E,,6-2E+. ?=. >ijar el tiempo de bus turn around %sólo entre dos accesos a diferentes 3,i+ 9@. >ijar tiempo de cycle to cycle entre dos ciclos consecutivos %riteDtoDread+. 9?. >ijar el valor de base address. 99. >ijar la masM address para la medida de la región del 3,. 3omOn en todos los tipos de acceso 9:. abilitar el 3, configurado. 94. 3onfiguración de todos los pines del bus5 1-&2/T config %función dedidaca a ello+. 9A. *esactivar F1
62
-mplementar las funciones de lanzamiento de comandos %varía segOn el tipo de dispositivo+5 9;. Lanzar (E,E6 9C. 2onitorear se"al (B %consultando registro 0123 ,6)6/,+ 9<. Lanzar (ead ,tatus de la memoria 9=. Lanzar (ead -* :@. Borrar un bloque :?. Lanzar la programación de una p!gina del bloque :9. Lanzar la lectura de una p!gina asta el nX 9:$ estos pasos se empaquetan en una Onica función initFmodule que ser! llamada cada vez que el módulo es cargado en el sistema operativo. ) partir de aquí ser!n implementados los comandos para realizar los accesos de lectura y escritura. ,e declaran e implementan las funciones encargadas de lanzar comandos como EraseBlocM$ read-*$ rite1age$ read1age$ read,tatuset desde las principales funciones de sistema. Estas funciones se basan en la adecuada secuencia de accesos con el valor de comando y direcciones correcta en los registros5 0123G&)&*G3'22)&*Gi y 0123G&)&*G)**(E,,Gi. En el anexo referente al código puede apreciarse la solución a este target m!s reciente. ,e #an a"adido los offset de las : se"ales empleadas en &)&* en la declaración de se"ales del arc#ivo cabecera driver.# y se #an configurado en la función pinmux. ,e define '/61/6GE& en arc#ivo driver.# para des#abilitar el receptor del pin$ es decir disponerlo en modo sólo salida R campo (xactive del registro pad control register declarado %socGpinGmuxGbase+ en arc#ivo )2:xx.#. En tal caso de asignar ese valor al pin se debería des#abilitar pullup interno R 1/LL/*E& W @. *ebe #abilitarse el clocM funcional del módulo si se quiere #abilitar el módulo 0123. El registro que permite configurar los campos relacionados con este reloj se encuentran en el registro 32G1E(G0123G3LHG36(L con la dirección de offset :@# dentro del bloque de registros 32G1E( controlado por el módulo 1(32 %registros del módulo de control de reloj+ cuya base address es socGprcmGregs W @x44E?G@@@@ 1ara acceder a este registro #ay que apuntar a su basseaddress m!s su offset y realizar una operación '( al contenido del registro para modificar Onicamente el bit que interesa dejando intactos el resto de bits. •
>ijar 32G1E(G0123G3LHG36(L %?5@+ R 3ampo 2'*/LE2'*E W @x@9
•
Leer 32G1E(G0123G3LHG36(L %?C5?;+ R 3ampo -*LE,6 W @x@:# #asta que -*LE,6 W @x@@
/na vez #abilitado es preciso resetear el módulo como primera operación antes de iniciarlo. El campo ,'>6(E,E6 del bus 0123G,N,3'&>-0 ofrece una forma de controlar por softare el reset del módulo 0123. El campo (E,E6*'&E del registro 0123G,N,6)6/, proporciona información del estado del reset. •
>ijar 0123G,N,3'&>-0 %?+ W ?
•
Leer 0123G,N,6)6/,%@+ R 3ampo (E,E6*'&E #asta que (E,E6*'&E W ?
/na vez restaurado el sistema la primera acción es suprimir las peticiones de clocM gating %-*LE+ procedentes del gestor del reloj >3LH. El módulo ignorar! las peticiones de -*LE$ no ser! el modo de mayor a#orro energético pero sí es la forma m!s segura de gestionar un reloj$ mantenerlo siempre activo5 •
>ijar 0123G,N,3'&>-0%45:+ R 3ampo ,-*LE2'*E W@x @?
6ras la restauración$ el estado -*LE est! activo por defecto %con un valor de @x@@+. La manera m!s segura de operar para modificar el estado es #acerlo de forma en que sólo se modifique una vez su valor y evitar iniciar la acción con valor del campo ,-*LE2'*EW@x@@$ por ejemplo$ almacenando el contenido del registro en una variable intermedia y modific!ndolo sobre ella. )sí5 •
0uardar en variable aux el valor del registro W 0123G,N,3'&>-0
63
•
)plicarle una and con m!scara W@x@@@??@@@ para obtener el contenido actual del campo ,-*LE2'*E
•
)plicarle una '( con una m!scara W @x@@@@?@@@ %estado no -*LE+
•
0uardar la variable en registro 0123G,N,3'&>-0 W variable aux
El dispositivo es muy r!pido y no se va a necesitar mantener en espera al #ost durante ningOn tiempo. 6imeout control es un contador descendiente de = bits que puede ser #abilitado y asignarle un valor entre A?? y @. •
6-2E'/6E&)BLE W @b
6ampoco se van a aceptar interrupciones. 1or lo tanto se des#abilitan todas5 •
0123G-(E&)BLE W @#
8a a #aber monitoreo de la se"al (B. *ebe escogerse el pin que la recibir!. *espués$ la polaridad. •
0123G3'&>-0?Gi %?C5?;+ R F)-61-&,ELE36 W @
•
0123G3'&>-0 %<+R F)-6@1-&1'L)(-6N W @ %por defecto+ R activeGlo
El dispositivo &)&* necesita protegerse de escrituras y borrados accidentales en sus arranques. Este modelo emplea F1. 1rimero5 •
F(-6E1('6E36W @ %valor de restauración+ R estado bajo %bloqueado+
*espués de encendido y arranque5 •
F(-6E1('6E36W ? R estado alto %#abilitado+
*ebido a que 3,@ est! #abilitado por defecto$ se recomienda des#abilitarlo antes de configurar el 3,$ para que tenga efecto. ,e recomienda #acerlo después de seleccionar la polaridad del F1 y antes de seleccionar la granularidad. *espués de la configuración se #abilitar! como recomienda el tutorial. ,i el dispositivo es lento se pueden alargar todos los par!metros temporales de las se"ales de control x9. En principio se usar! una granularidad de x? ya que la respuesta de la 31/ a algunas operaciones puede superar los tiempos de respuesta del dispositivo$ como la lectura. ,i #ubiera que ajustar se modificaría posteriormente. *el paso ?@ al ?4 van a programarse a la vez escribiendo porque los campos de granularidad$ protocolo$ anc#o de bus de dispositivo$ tipo de acceso$ modo mux del bus )* est!n en el mismo registro5 •
0123G3'&>-0%?:5?9+ R *E8-,-UE W @?b
•
0123G3'&>-0%??5?@+ R *E8-3E6N1E W ?@b
•
El resto de campos W @.
Los timings de 3, onoff5 activación y desactivación en registro 0123G3'&>-09Gi5 •
3,'&6-2E W ?
•
3,F('>>6-2EW@>#
•
3,(*'>>6-2EW@>#
•
El resto de campos W @.
Los timings de )*8 %)LE y 3LE+ onoff5 activación y desactivación en registro 0123G3'&>-0:Gi5 •
)*8'&6-2EW@:#
•
)*8F('>>6-2EW@:#
•
)*8(*'>>6-2EW@:#
•
El resto de campos W @.
Los timings de FE'E onoff5 activación y desactivación en registro 0123G3'&>-04Gi5
64
•
FE'&6-2EW?
•
FE'>>6-2EW9#
•
'E'&6-2EW?
•
'E'>>6-2EW9#
•
El resto de campos W @
Los timings de F(3N3LE6-2E y (*3N3LE6-2E$ en registro 0123G3'&>-0AGi5 •
F(3N3LE6-2EW@>#
•
(*3N3LE6-2EW@>#
•
(*)33E,,6-2EW@9#
•
El resto de campos W @
La activación del 3N3LE93N3LE*EL)N y los ciclos de busturnaround %sobretodo cuando se tienen accesos consecutivos a dos 3, diferentes+ se encuentran en 0123G3&>-0;Gi5 •
F()33E,,6-2EW@
•
3N3LE93N3LE,)2E3,E&W?
•
3N3LE93N3LE*EL)NW;
•
El resto de campos W @
Los campos de #abilitación del 3, y de direccionamiento se encuentran en el 0123G3'&>-0CGi . B),E)**(E,, W codificación de base address en ; bits %de :9 bits$ equivalen a los 9=594bits+. 2),H W m!scara 4 bits %tama"o de la región que 3, accede+. ,i se emplea sólo un 3,i para conectar una memoria &)&*$ como en esta primera versión del sistema$ el baseaddress ser! @x@@?@@@@@ y sólo se necesitar! el m!s peque"o tama"o$ ?;2B porque es una memoria no mapeada. &o se apunta a una dirección de memoria externa. )sí que no #ace falta m!s para accederla. Esto #ar! el espacio de direcciones del 3,@ ir desde @x@@?@G@@@@ a @x@?@>G>>>>. /na configuración apropiada sería 0123G3'&>-0CG@A5@k con los bits 9=594k de la dirección completa5 @x!!?@G@@@@ %:9 bits+$ por lo que A5@ se corresponde con el valor @@@@@@b y 0123G3'&>-0CG@??D
2),HW????b
•
B),E)**(E,, W @x@@
•
3,8)L-*W?
1ara acceder al registro de configuración de cada pin del bus 0123 debe direccionarse #acia esta dirección base del control module m!s el offset correspondiente a su pin. 3ada pin tiene asociado un registro %offsets del <@4# al <=3#+ con el siguiente nombre y campos5
Fig. 4: bits JI< del registro confFKmoduleLFKpinL •
*el bit :? al C son bits reservados y no se pueden modificar.
Las se"ales de control son tipo ' esencialmente pero programarlas como -' parece no estar creando problemas. Fait@ es sólo -. ,e configuran los bits ;5@ del registro asociado a cada pin conforme se desea una configuración en 2odo @$ #abilitación de -nput y pull up.
65
•
0123Gsignal1inG'ffsetW mode @ '( pull up '( fast '( receiverEnabled ◦
•
*esde )* @ #asta )* ?A y (B
0123Gsignal1inG'ffset W mode @ '( pull up '( fast '( receiver*isabled ◦
,e"ales de control
,e desactiva F1 llamando a la función desactivarF1%+$ que no retorna ningOn valor pero ejecuta una acción de cambio de polaridad en esta se"al de salida. 1or seguridad se aguardan 9@@ us al llamar a la función u*elay%+$ definida en la librería de Linux5 delay.#. ,e lanza un reset al llamar a la función reset&)&*%+$ definida y creada en el driver$ que escribe en el registro 3'22)&* una palabra #exadecimal de ?; bits con el valor del comando de reset5 •
#reg %socGgpmcGbase S 0123G&)&*G3'22)&*G@G0123G&)&*G3'22)&*Gi+ W x@@>>
,e revisa la se"al (B durante ?ms y cuando (B W ? %esté libre+ el #ilo sale de esta función de inicialización. asta aquí todos los pasos anteriores ocurren sin que la aplicación de usuario #aya sido ejecutada. En la aplicación de usuario existen dos llamadas al sistema que activar!n una secuencia de operaciones de borrado de bloque y escritura de p!gina o lectura de -*$ lectura de estado y lectura de p!gina. Estas operaciones son funciones creadas en el driver y que son llamadas desde la propias operaciones de sistema rite y read$ init$ etc. ,i las enumeramos por orden definición en el código son5 ?. int *esactivarF1%void+ 9. int )ctivarF1%void+ :. int (eset&)&*%void+ 4. int borrarBloque%void+ A. int escribir1ag%void+ ;. int read-*comand%void+ C. int read,tatus3om%void+ Las memorias mapeadas por puntero$ como es el caso &'($ pueden acceder a esas posiciones de memoria y escribir o leer en ellas directamente y de forma incremental. /sar una función copytouser con un buffer que incremente byte a byte su contenido es una solución viable. En cuanto a &)&*$ ocurre que el puntero no va a incrementar porque siempre va a escribir o leer desde el mismo registro. La función copyFtoFuser"# no #a resuelto el acceso a estos registros y se #a solventado accediendo directamente a ellos$ por el momento. La formas de escribir comandos$ direcciones o leer y escribir datos es5 •
u?; command
•
u:9 data$ address
•
#reg %socGgpmcGbase S 0123G&)&*G3'22)&*%i++ W command
•
#reg %socGgpmcGbase S 0123G&)&*G)**(E,,%i++ W address
•
#reg %socGgpmcGbase S 0123G&)&*G*)6)%i++ W data
66
•
variableLecturaW#reg %socGgpmcGbase S 0123G&)&*G*)6)G%i++
Los valores command que se #an programado5
Command
Inicio
Cierre
+P de Ciclos address
+P Ciclo datos
R2$2"
@x@@>>
D
@
@
R2A, I,
@x@@=@
D
?
%output+ 4 bytes
R2A, $"A"F"$
@x@@C@
D
@
%outuput+ ? byte
2RA$2 /LOCE
@x@@;@
@x@@*@
:
@
1A02 7RI"2
@x@@<@
@x@@?@
A
I?@94 ords %input+
1A02 R2A,
@x@@@@
@x@@:@
A
I?@94 ords %outp+
Tabla 3#: ista de comandos implementados en la versi'n del driver actual
La dirección fija de bloque y de p!gina son5
/yte
er
%P
-P
6P
&P
Erase
D
D
@x3>
@x@>
@x@@
Frite(ead
@x>E
@x@@
@x3>
@x@>
@x@@
Tabla 31: >alor de la direcci'n que se asigna desde el c'digo •
Bloque5 ;: W B?C5B;W @@???????
•
1!gina5W?AW1)A51)@W@@????
•
3olumna5 9A4 W 3)C5 3)@W @@@@@@@@???????@ con %3)??53)
La aplicación consiste en un código que permite la apertura del módulo al que trata como un fic#ero. Le sigue un bucle que alterna peticiones de lectura y escritura. Las cuales se traducir!n en el driver en borrado y escritura de una p!gina o lectura de la misma p!gina.
dK 2jecución del soft@are y comprobación de se?ales de control y bus de datos reali#ada con un anali#ador lógico. Llegados a este punto$ el código compila y se carga. &o se producen errores y se carga sin problemas. )ntes de proceder a la ejecución de la aplicación de usuario sencilla que permitir! activar las operaciones del driver$ se realiza una lectura de las se"ales del bus 0123 y se confirma que las fases de la inicialización ocurren tal como se esperaba. Lo mismo sucede con cada una de las operaciones que la aplicación activa. -ncluso$ se comprueban variaciones de configuración del driver que responden tal y como es esperado. ,e activan operaciones de escritura y lectura$ mediante el lanzamiento de comandos Dincluidos en el set de comandos del modelo seleccionadoD. ,e empieza por el comando m!s sencillo (E,E6 y se continua siguiendo el orden de menor a mayor complejidad. En el próximo apartado se mostrar!n y comentar!n los resultados de las operaciones programadas en el driver.
-.6.4 Integración de los elementos de la interfa# /na vez que el controlador del #ost es funcional porque activa las se"ales correctamente y se comporta como es esperado se puede proceder a la interconexión física. La siguiente fase es la interconexión de todos los elementos de la interfaz y la ejecución del softare tratando de acceder a la memoria de la 13B dise"ada. /na parte de trabajo basada en desarrollo #ardare suele requerir reajustes de algunos elementos. Los conflictos de funcionamiento pueden proceder de la distorsión de se"ales recibidas ocasionada por la influencia de interferencias par!sitas o un desajuste en los componentes de filtrado y acoplo. /n valor demasiado grande o demasiado peque"o de un 3 o ( puede implicar atenuaciones del componente frecuencial principal de la se"al o ralentizaciones indeseadas de los tiempos de subida y bajada de se"ales de control conmutando. 1ara este tipo de efectos se disponen unos pines de test en
67
la cara top$ que permitir!n conectar el analizador u osciloscopio con el fin de comprobar las formas de onda transferidas. 'tra fuente de error posible es un mal entendimiento de las especificaciones del driver. ,obretodo puede ser necesario un reajuste de los timings recomendados por el fabricante a base de prueba y error #asta obtener el resultado esperado. ,uele ser una fuente de error muy comOn. 1or supuesto$ puede superponerse m!s de una fuente de error.
a?
"?
Fig. 4!: a# cara bottom "inferor#, b# cara top "superior#
68
6.4 Resultados En este apartado se mostrar!n los resultados de las lecturas realizadas y medidas obtenidas que demostrar!n el funcionamiento del driver dise"ado cuando unas operaciones son demandadas por la aplicación de usuario. /na aplicación b!sica y sencilla llamada app demandar! operaciones de lectura y escritura que activar!n los envíos de comandos desde el driver.
6..4 Comprobación del módulo 01'C. La propuesta de valores inicial se #a ido ajustando conforme se realizaban m!s pruebas #asta obtener el patrón de tiempos estable y sin dilataciones indeseadas. ,obretodo los tiempos totales de acceso por ciclo$ que se #an visto incrementados #asta que las formas de ondas presentaban un aspecto #omogéneo y equilibrado. La respuesta del driver a algunas operaciones como la lectura$ Da nivel de ejecución de códigoD$ es m!s lenta que la duración mínima de los ciclos de la memoria$ a la vez que los tiempos de -*LE de la memoria entre operaciones se multiplican por diez en algunos casos.
Fig. 4": +elaci'n &)6 con se2ales analizador digital
El analizador sólo permite ver ?; canales$ por lo que sólo se tiene acceso a los < bits menos significativos del bus -' a la vez de las se"ales de control. El canal ?: no est! disponible y se #a cambiado por el nX C$ que estaba libre. El pin F1 no se encuentra en este conector pero se puede acceder a él por el conector 3&? usando el canal 4. ,e mostrar!n los resultados de las diferentes operaciones que se #an comentado en el apartado anterior. 6al como se informó el presente trabajo implementa una lista reducida de comandos$ respecto de toda la gama que ofrece el fabricante para este modelo de dispositivo. ,in embargo son suficientes para permitir operaciones de borrado$ escrituras y lecturas de p!gina. Las operaciones que implican recepción de bytes$ como el caso de lectura de p!gina$ de -* o de estado$ mostrar!n niveles de bus desconocidos %normalmente -0+ porque en esta sección no existe conexión con el #ardare todavía. 1ara estas pruebas$ se #an substituido los bucles de gestión de se"al (B %ait@+ por simples lecturas de los registros de estado en el código. )l ser una se"al de entrada$ las condiciones no se cumplirían nunca y se darían bucles infinitos$ pudiendo colgarse el sistema durante la carga del driver. ,e #abilitar!n los bucles condicionados durante las pruebas de acceso a la interfaz completa. 3uando el bus 0123 no est! configurado porque su driver no est! cargado$ la imagen de las formas de onda es la siguiente5
69
Fig. 5#: &omportamiento del driver cuando no se ha cargado en el sistema
6.%..4 Iniciali#ación del driver y dispositivo perifQricoB Los comandos como (E,E6$ leer -*$ leer ,6)6/, u acciones como desactivar F1 son propias de una secuencia de inicialización. 1or lo tanto$ pueden observarse cuando el driver se #a cargado$ sin que la aplicación llegue a ejecutarse.
Fig. 51: &arga del driver
,e observa el delay$ a partir del cual el controlador #ost permanece en espera antes de #abilitar el permiso de escritura y el primer comando permitido (E,E6 y el resto de comandos de inicialización de la memoria.
Fig. 52: Moom de la imagen anteriorI secuencia de inicializaci'n del driver
70
,e observa como F1 est! activada %lo+ cuando se inicia el driver. 1ero se desactiva insantes antes de lanzar el comando (E,E6 %C5@+. El time division es elevado y no se aprecia pero existe un tFF entorno a los ?@@ns. 'tro detalle que #ace falta mencionar es que todas los accesos que el driver #ace con cada ciclo de acceso son 9x?; bits. Los registros que emplea son espacios de :9b y captura y escribe su contenido completo dividiéndolo en dos accesos de ?;b. 1or eso$ el comando de (E,E6 se presenta con un ciclo de >># en el bus y otro @@# en segundo lugar. La línea : copia la se"al de 3LE de ciclo de comando correctamente. *espués aparece un delay de espera #asta que termine el tiempo t(,6 antes del siguiente envío de comando5 read -* con command W =@#$ address W @@# y 4 ciclos de lectura %4 palabras+ en estado alto porque aOn no se tiene feedbacM con el periférico. La línea ; copia FE y la línea A copia 'E con la sincronía de acceso correcta. La línea 9 marca la activación del ciclo de dirección$ )LE.
6.%.%.4 Operación de escrituraB La próxima sección comprobar! la capacidad de realizar la escritura correcta$ del módulo 01235
Fig. 53: secuencia completa de una escritura de p?gina
Esta secuencia refleja un comando de inicio de borrado %;@#+$ 4 bytes %: bytes Otiles y uno vacío+ de dirección de bloque y otro comando de cierre %*@#+. )cto seguido se aprecia un nuevo inicide comando W <@#$ seguido de A ciclos de dirección %A Otiles una vacía+ equivalentes a una dirección de columna$ de p!gina y de bloque con el siguiente orden de aparición en el bus5 ?A ?4
?:
?9
??
?@
=
<
C
;
A
4
:
9
?
@
1
@
@
@
@
@
@
@
@
?
?
?
?
?
?
?
@
%FE
2
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
%##
3
@
@
@
@
@
@
@
@
?
?
@
@
?
?
?
?
%&F
4
@
@
@
@
@
@
@
@
@
@
@
@
?
?
?
?
%#F
5
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
%##
Tabla 32: Direccionamiento ))DI +epresentaci'n num%rica de los valores del bus durante los ciclos de direccionamiento de la imagen anterior " Norizontal $its del bus de datosA >ertical nOmero de ciclo#
71
•
,in color5 @ obligatorio.
•
8erde5 3olumna WnX 9A4
•
(osa5 1!gina W nX ?A
•
)marillo5 Bloque WnX ;:
Le sigue una escritura de ?@ palabras. ,e #a acotado a diez para apreciar una secuencia completa en el analizador pero en realidad una escritura de p!gina equivale a ?@94 iteraciones accediendo al registro de datos del driver. 3uando esta escritura concluye le sigue el comando de cierre %?@#+. 6odo acceso de escritura de p!gina concluye con una revisión del estado del bit (B y del bit de estado de la operación %si se #abilita la función E33+$ por ello le sigue un comando %C@#+ de petición de estado y ? lectura para capturar el resultado. En Oltimo lugar se aprecia una escritura en registro de datos con el contenido del registro de estado a modo de depuración$ para comprobar en futuras pruebas el valor del registro$ por ende el estado de la se"al (B. Es una operación sin importancia que se cambiar! por una iteración condicionada a los cambios en dic#a se"al$ mientras se aguarda a que la operación interna de la &)&* concluya antes de seguir con nuevas operaciones. Las líneas ?A5< representan los bits menos significativos del bus -'.
6.%.-.4 Operación de lecturaB
Fig. 54: secuencia completa de una lectura de p?gina
3uando la aplicación solicita una lectura el módulo activa la secuencia de la imagen. 1or orden5 comando de lectura %@@#+$ ; ciclos de dirección %A de información Otil$ el sexto ser! ignorado+$ le sigue el comando de cierre%:@#+$ luego se activa el comando de petición de estado y se activa una lectura de datos con su estado %C@#+ antes de que se active (B %pues el dispositivo necesitar! un t( para realizar la operación internamente+. La siguiente acción es una serie de ?< accesos de lectura que representan la captura de los datos solicitados. Las se"ales de control se est!n comportado tal y como se espera. )LE y 3LE se activan y desactivan durante la activación de 3,$ como también #ace FE$ que se activa dentro de )LE3LE con los m!rgenes de setup y #old respetados. Lo propio se puede aplicar de (E. ,e aprecia el 3N3LE93N3LE*EL)N que permite respetar los tiempos entre accesos riteDtoDread y readDtoDrite.
6.%.4 Integración En esta sección se pretende testar la conexión e intercambio de datos con el periférico es decir se comprueba el #ardare dise"ado. )sí que para los intentos de acceso empieza con una petición de -*
72
al registro de la memoria. El driver se modifica y se anulan fragmentos del código. ,i se obtiene el nX de -*$ se prosigue con accesos cada vez m!s complejos y de mayor nX de ciclos.
6.%..4 Leer I,B ,e #an rectificado el código fuente de modulenand con los tiempos de delay reales y con c#equeo de la se"al (B. La Onica operación que puede activarse desde la app$ después de las operaciones necesarias de inicio$ es el comando read -*.
Fig. 55: Secuencia de accesos en la interfaz para leer -D de la ))D
)unque parezca que la secuencia de accesos se produzca dentro de lo esperado$ los datos recibidos distan de parecerse a 4 bytes de -* de 2icron$ ya que el primer byte bería ser W @ @ ? @ ? ? @ @ 93# %-* de la marca+$ el 9X bytes W ? ? @ @ ? ? @ @ 3c# %269=>40?;)B)*) 40b$ x?;$ :.:8 +$ etc si sigue leyendo la lista de par!metros que ofrece micron en su datas#eet. )dem!s de que la se"al (B permanece siempre libre$ esto da una pista sobre que puede no estar realizando operaciones internas o bien est! ignorando las peticiones. En este punto las causas son desconocidas. ,e necesitan m!s pruebas para descartar causas y seguir valorando posibles nuevos ajustes.
73
&.4 ConclusionesB *el presente trabajo se #a constatado que seguir las instrucciones del fabricante es un punto de partida para deducir los valores de los campos de configuración de timings en un driver 0123. ,on Otiles en una primera aproximación. ) partir de a#í existe un compromiso entre las dos partes$ 0123 y el dispositivo de memoria. En la pr!ctica los tiempos del fabricante no son Onicos ni exactos. 1or lo general el sincronismo se perfecciona y ajusta mediante un proceso de testeo posterior. 1or lo tanto$ existen diferentes combinaciones posibles y v!lidas$ mientras se respete la sincronía de se"ales dentro de sus m!ximos y mínimos. Es cierto que$ aunque unas soluciones son funcionales y correctas$ no significa que estas van a ser las m!s óptimas. *ar con ellas requiere de una dedicación pr!ctica exaustiva y un conocimiento previo importante del #ardare tanto del #ost como del periférico. ,e #a logrado una primera versión de interfaz softare funcional que adem!s$ ofrece la posibilidad de mejorarse$ ampliarse y optimizar sus timings en futuros desarrollos. &o obstante estamos satisfec#os con los resultados obtenidos ya que podemos reconocer en ellos los patrones de se"ales de un sincronismo correcto. Los comandos$ ciclos de dirección y de datos son activados con los tiempos de seguridad mínimos que exige el fabricante. La solución propuesta por este proyecto podría llevar a la apariencia estructural del #ost una combinación entre ()F y e223$ que emplea el bus 0123 en lugar de 223 para comunicarse con el #ost. En realidad$ la actual solución pretende dejar abierta la puerta a la posibilidad de incorporar en un futuro el tratamiento de estas dos técnicas. /na vez obtenida y verificada una interfaz funcional con un #ardare accesible Dobjetivo actualD$ en un futuro el desarrollador puede olvidarse de la problem!tica #ardare$ centrando sus trabajo y atención en el softare de control de errores %E33+$ accesos *2) o atención a las interrupciones$ por ejemplo. 'tro factor que se constata es la diferencia entre la programación de un protocolo &'( y un protocolo &)&* de un controlador 0123. )unque &'( puede tener una respuesta m!s r!pida y acceso de lecturaescritura m!s directo$ &)&* sigue siendo la solución adecuada frente al almacenamiento masivo y secuencial$ debido a su alta densidad. En contrapartida el lado de la memoria %#ardare+ todavía se encuentra en una fase de desarrollo en la que no presenta los resultados esperados y se sigue trabajando en ello. La idea es continuar ajustando los par!metros del circuito de desacoplo y las resistencias de 1ull up. 2ejor dic#o$ todo aquello que pueda estar retardando los tiempos de subida y bajada de las se"ales de control. *ic#o circuito se dise"ó con la idea de trabajar con una frecuencia de corte cercana a los 4@ 2z %6W9@ns+ ciclo de las se"ales de 'En y FEn cuando conmutan para #abilitar la captura y escritura del dato de ?;bits. )l #aber modificado los tiempos de acceso es posible que los valores de los componentes del circuito estén influyendo negativamente en las se"ales. )unque no es la Onica posible causa de error en el #ardare. Lo que est! claro es que la versión actual del #ardare debe seguir su proceso de adaptación. Este trabajo #a brindado la posibilidad de conocer las peculiaridades y diferencias entre la programación de código de una aplicación y la de desarrollar código Hernel para #ardare de una arquitectura concreta aOn empleando el mismo lenguaje. a permitido constatar la potencia del lenguaje 3. (ealizar un controlador softare para el #ardare de un sistema precisa un gran conocimiento de la tecnología subyacente y del espacio de memoria virtual por el cual la unidad 21/ Dde Linux en este casoD pretende accederle y configurar su comportamiento. )sí mismo este trabajo #a permitido conocer las ventajas y posibilidades que ofrece trabajar en un entorno opensource$ como este caso Linux$ ya que existen diferentes comunidades proporcionando y publicando sus códigos$ como5 •
#ttp5freeDelectrons.com
•
#ttps5git#ub.comopenDsource
•
#ttp5.linaro.org
74
0racias a que los requisitos de la aplicación no son exigentes$ el presente desarrollo sobre el protocolo &)&* da la respuesta suficiente a las necesidades planteadas5 borrado$ escritura y lectura de una p!gina de la memoria &)&*. La presente solución es un controlador de funciones b!sicas y sería ineficaz si la memoria estuviera integrada en un sistema embebdido con una finalidad m!s específica y funciones tan críticas como exigentes5 almacenamiento de gran volumen de datos$ tiempos de respuesta mínimos$ baja tasa de error %o nula+$ etc. 1ara ello #abría que incluir el desarrollo de un control de error E33 y de otras tecnologías de balanceo de accesos para evitar fallos internos$ maximizando así la vida Otil de la memoria. 3uantas m!s funciones se deseen atribuir al controlador de memoria #ost y mayores requisitos de la aplicación$ mayor grado de ampliación del driver ser! imprescible. La aplicación de la versión actual pretende ser la de una plataforma de desarrollo sobre la cual elaborar dise"os de driver para memoria flas# y comprobar su funcionamiento$ en contexto académico. 1or lo tanto$ la mejora y ampliación de funciones en el driver softare quedan dentro de las posibilidades de este nuevo entorno de trabajo realizado. a quedado totalmente aclarada la metodología de trabajo. Los pasos de configuración a seguir y la relación de acciones a tomar para modificar los par!metros de interés #an quedado guiados y documentados$ lo cual facilita su adaptación$ no sólo a este modelo concreto de memoria &)&* sino a otros. En cuanto al desarrollo de #ardare se observa que en su dise"o no sólo existen factores eléctricos y limitaciones dimensionales$ sino que la radiación es un aspecto a analizar concienzudamente$ sobretodo cuando se trata de transportar líneas de transmisión de datos. )unque$ en el trabajo actual no se opera con frecuencias superiores a los ?@@2#z$ lo cual reduce considerablemente estas influencias. En la pr!ctica pueden aparecer factores que no se #an tenido en cuenta en el dise"o original o no se #an determinado correctamente. La fases de prueba y error y reajuste es imprescindible. Los tiempos de subida y bajada pueden estar siendo afectados por la carga de entrada y salida del circuito. /na revisión de todos los elementos y consumos que influyen en estos nodos es imprescindible para determinar el margen de valores por los que estas se"ales pueden verse excesivamente ralentizadas. Este dispositivo adquirido permite corregir por softare dentro de unos m!rgenes las pendientes de sus se"ales. 1or lo que tal vez no sea necesario si quiera modificar los valores de las (pull up. ,obre el código del driver &)&* trascienden varias ideas para optimizar y mejorar la presente versión$ en etapas inmediatas$ antes de pensar en a"adir funcionalidades avanzadas. )ctualmente$ se sigue trabajando en ello también$ aunque por a#ora la versión no es lo suficiente madura. ,e espera que próximamente se obtengan resultados dando solución a los siguientes ítems$ por ejemplo5 •
ser capaz de pasar los datos a escribir desde la aplicación
•
ser capaz de devolver los datos leídos #acia la aplicación y mostrarlos por pantalla
•
activar comandos especiales de forma independiente desde la aplicación
•
#allar una forma alternativa y m!s flexible seleccionar la dirección
•
ampliar el nX de comandos implementados y experimentar con lecturasescrituras de bloques enteros
'tra posibilidad es5 •
•
a"adir un conector #embra a la 13B y replicar las se"ales de acceso &'($ de modo que pueda conectarse la >10) a la 13B %y por lo tanto a la BB+. -ntegrar los drivers &)&* y &'( en un Onico driver de modo que se gestionen ambos protocolos en lugar de #acerlo por separado y de forma independiente.
'tra es5 •
•
incorporar un código de detección de errores al driver &)&* 2ejorar los accesos desarrollando código para el trabajo en prefect# mode y realizar accesos *2)
75
•
aumentar el nivel de exigencia de la aplicación$ por ej5 captura de imagen y tratamiento de algOn sencillo algoritmo de procesado.
76
.4 /ibliograf*a ?k (. 1érez López. *esign of a dedicated cape board for an embedded system lab course using BeagleBone. 2.,. t#esis$ Electrical Engineering department$ 6ec#nical /niversity of 3atalonia %/13+$ Barcelona$ ,pain$ 9@?4 9k 8arios$ PBeagleBone BlacMQ$ beagleboard.org, 9@?A. 'nlinek *isponible5 #ttp5beagleboard.orgblacM )ccessed5 9@?;k. :k 0erald 3oley$ PBeagleBone ,ystem (eference 2anualQ$ $eaglebone.org$ (ev );.@.@ 1age$ (evision @.@ 2ay =$ 9@?9 4k 8arios$ P,istema embebidoQ$ 8i9ipedia$ 'nlinek *isponible5 #ttps5es.iMipedia.orgiMi,istemaGembebido )ccessed5 9@?;k. Ak 8arios$Qarquitectura )(2Q$ 8i9ipedia$ 'nlinek *isponible5 #ttps5es.iMipedia.orgiMi)rquitecturaG)(2 )ccessed5 9@?;k. ;k 8arious contributors$ PBeagleBone and t#e :.< MernelQ$ Embedded inu! 8i9i $ 9@?4. 'nlinek )vailable5 #ttp5elinux.orgBeagleBoneGandGt#eG:.las# memoryQ$ ;oshiba eading -nnovation, ,emiconductor 3atalog 2ar. 9@?; 'nlinek *isponible5 #ttps5.micron.comproductsnandDflas# )ccessed5 9@?;k. ?:k 8arios$ P8D&)&* 6ec#nology ,6)3H 3ELL )B'8E 3ELL,$ B/-L* 6E3&'L'0N )B'8E 6E3&'L'0-E,Q$ ,amsung ,emiconductor$ 9@?;$ 'nlinek *isponible5 #ttp5.samsung.comsemiconductorproductsflas#DstoragevDnand )ccessed5 9@?;k. ?4k 8arios$ P(a &andsQ$ ,Hynix$ 9@?A$ 'nlinek *isponible5 #ttps5.sM#ynix.comengproductnand(a.jsp )ccessed5 9@?;k. ?Ak 8arios$ P&)&* >las# 2emoryQ$ &ypress Embedded in ;omorro: $ 9@?A$ 'nlinek *isponible5 #ttp5.cypress.comproductsnandDflas#Dmemory )ccessed5 9@?;k. ?;k 8arios$ P*ecoupling tec#niquesQ$ nalog Devices, 26D?@?$ (ev.@$ @:@=$ FH. ?Ck . 6orresD'rtega$ P0uía de dise"o de 13B con E)0LE 5 introducción y recomendaciones generalesQ$ etpro erramientas 6ecnológicas 1rofesionales$ 9@?4 ?40?;)B &)&* flas# memory data s#eet$ 0icron ;echnology -nc$ 9@@=. ?=k 8arios$ P)n -ntroduction to &)&* >las# and o to *esign -t -n to Nour &ext 1roductQ$ 0icron ;echnology -nc$ 6ec#nical note$ 9@@;. 9@k 8arios$ P&)&* >las# 3ontrollerQ$ attice Semiconductor &orp $ (eference *esign (*?@AA$ november 9@@=
77
9?k 8arios$ P6- E9E comunityQ$ ;e!as instruments, 9@?;. 'nlinek *isponible5 #ttps5e9e.ti.comsupportarmsitaraGarmfC=? )ccessed5 9@?;k. 99k 8arios$ PEmbedded Linux development it# Buildroot trainingQ$ free electrons, 9@?;. 'nlinek )vailable5 #ttp5lxr.freeDelectrons.comsourceincludelinuxomapDgpmc.# )ccessed5 9@?;k. 9:k 8arios$ P6#e linux Mernel arc#ivesQ$ ;he linu! 9ernel organization $ 'nlinek *isponible5 #ttps5.Mernel.org )ccessed5 9@?;k. 94k 3orbet$ (ubini$ and Hroa#Dartman$ 'Z(eilly$ PLinux device drivers F#ere t#e Hernel 2eets t#e ardareQ$ :rd ed$ 3alifornia$ /sa$ 9@@A
78
9.4 A+2O$ Anexo
79
A+2O -B
"O1
/O""O'
80
A+2O 6 ARCH := arm CROSS_COMPILE := arm-linux-gnueabihfMAKEARCH := $MAKE! ARCH=$ARCH! CROSS_COMPILE=$CROSS_COMPILE!
P"#
:= $hell %&'!
'efaul(:
$MAKEARCH! -C $P"#!)m*'ule M=$P"#! $MAKEARCH! -C $P"#!)a%% M=$P"#!
+lean:
$MAKEARCH! -C $P"#!)m*'ule +lean $MAKEARCH! -C $P"#!)a%% +lean
81
A+2O & KSRC=)h*me)geni)&*r,%a+e)KEREL
ARCH := arm CROSS_COMPILE := arm-linux-gnueabihf-
MAKEARCH := $MAKE! ARCH=$ARCH! CROSS_COMPILE=$CROSS_COMPILE!
E./RA_C0LA1S := -I$P"#!)r+ -I$P"#!)in+lu'e
2*b3-m 4= m*'ule_a5n+6* 2*b3-m 4= m*'ule_5n+6* 2*b3-m 4= m*'ule_bur(76* *b3-m 4= m*'ulenan'6*
P"# := $hell %&'!
all: $MAKEARCH! -C $KSRC! M=$P"#! m*'ule +lean: $MAKEARCH! -C $KSRC! M=$P"#! +lean
82
A+2O 2 Em'e''e' Linux Ma,efile 2 Pr*3e+(: Hell* 2 8eri*n 96 9;)99)<9! 2 Pa(h f*r (hi %r*3e+( 2 6)
L*+a(i*n f*r Ma,efile an' final exe+u(able
2 6)r+
L*+a(i*n f*r *ur+e >6+> an' *b3e+( >6*> file
2 6)in+lu'e L*+a(i*n f*r in+lu'e >6h> hea'er file
2 /he f*ll*&ing (&* line are nee'e' (* genera(e +*'e 2 f*r (he ?eagle?*ne b*ar' 2 C*mmen( b*(h line (* genera(e +*'e f*r (he PC ARM=arm CROSS_COMPILE=arm-linux-gnueabihf-
P"#
:= $hell %&'!
2 1eneral 'efini(i*n CC=$CROSS_COMPILE!g++ C0LA1S=-+ -"all -O< $ICL@#E! 2L#0LA1S=-l%(hrea'
2 Pr*gram %e+ifi+ 'efini(i*n
2 SO@RCES mu( in+lu'e rela(ie %a(h (* ea+h C *ur+e 2 fr*m (he l*+a(i*n *f (he Ma,efile 2 I( i re+*mme'e' (* l*+a(e all (hi file in a r+ 2 'ire+(*r5 bel*& (he 'ire+(*r5 &here ma,efile i l*+a(e' SO@RCES=a%%6+
2 E.EC@/A?LE 'efine (he name *f (he final exe+u(able 2 In &ill be genera(e' *n (he l*+a(i*n &here (hi 2 Ma,efile i l*+a(e' E.EC@/A?LE=a%%
2 Ob3e+( file (* be genera(e'
83
2 /he5 &ill be l*+a(e' in (he ame %la+e a (he *ur+e file O?BEC/S=$SO@RCES:6+=6*!
2 In+lu'e file %a(h in+lu'e general >C> in+lu'e l*+a(i*n 2 an' (he >in+lu'e> 'ire+(*r5 bel*& (he l*+a(i*n &here 2 (hi ma,efile i l*+a(e' ICL@#E= -I6 -Iin+lu'e 2 Ma,e rule all: $SO@RCES! $E.EC@/A?LE! +lean: rm -f $P"#!)D6* $P"#!)$E.EC@/A?LE!
$E.EC@/A?LE!: $O?BEC/S! $CC! $L#0LA1S! $O?BEC/S! -* $ 6+6*: $CC! $C0LA1S! $F -* $
84
A+2O 9 )D--a%%-- fir( eri*n f*r 1PMC A# 'rier eri*n-Sube3+(: #S. Au(h*r: Eugenia SuGre 8i+en(e ear: <9J D)
2in+lu'e F('i*6h 2in+lu'e F('lib6h 2in+lu'e Funi('6h 2in+lu'e Ff+n(l6h 2in+lu'e Flinux)(5%e6h 2in+lu'e F5)i*+(l6h 2in+lu'e F(ring6h
)) (r+m%
(5%e'ef unigne' h*r( u9J (5%e'ef unigne' l*ng u< (5%e'ef unigne' h*r( u in( main! N
+*n( in( max = 9 ))%r*bam* +*n el %rimer elemen(* u< Mi+r*nI#buffermax ))u9J (a(u"*r'max ))u bufferC*mman'max +har 5en*< in( iQf f*r i= i F max i44! N Mi+r*nI#bufferi=unigne' l*ng! )D f*r i= i F max i44! N (a(u"*r'i=unigne' l*ng! f*ri= i F max i44! N bufferC*mman'i=unigne' l*ng!
D) if f=*%en>)'e)'rier_%*r(>Q O_R#"R!!F! N %err*r >)'e)'rier_%*r(> ! exi( E.I/_0AIL@RE ! '*N ))le+(ura +m' -- Q < 5 ; ))
i*+(lfQ9Q!
)) 'e+irle a &ri(e! ue n* a+(uali+e f_%* al a+abar
))i*+(lfQQ!
%rin(f>n leer %ag 5)n!Tn>!
85
+anf>U>Q 5en*! if (r+m%5en*Q>5>! == ! N ))+*m%ara la '* +a'ena f*r i= iFmax i44!N ))(*mam* *l* un b5(e I# -- +a%(ura 'e 7 b5(e 'el reg 'e 'a(* ifrea'fQ Mi+r*nI#bufferQ 7!F!N ))+*n +a'a le+(ura *b(eng* un bufer 'e < bi( %err*r >)'e)'rier_%*r(> ! exi( E.I/_0AIL@RE ! )) al final 'el f*r +*m%le(* una ma(ri 'e ; buffer ))
%rin(f>S#?L: mi+r*n i# = xUlxn>Q unigne' l*ng!Mi+r*nI#buffer!
%rin(f>leer %aginan>Q unigne' l*ng!Mi+r*nI#buffer! %rin(f>n e+ribir %agina 5)n!Tn>! +anf>U>Q 5en*! ))i*+(lfQ9Q!))e+ri(ura +m' -- 9Q 5 7 if (r+m%5en*Q>5>! == ! N ))+*m%ara la '* +a'ena ))Mi+r*nI#bufferi=xV
if &ri(efQMi+r*nI#bufferQ7!F! N
%err*r >)'e)'rier_%*r(> ! exi( E.I/_0AIL@RE ! )) al final 'el f*r +*m%le(* una ma(ri 'e ; buffer %rin(f>C*man'* l*ng!Mi+r*nI#buffer!
b*rra'*
5
rea'
%age
enia'*
xUlxn>Qunigne'
&hile (r+m%5en*Q>>! W=! +l*ef! re(urn E.I/_S@CCESS
86
A+2O )D--m*'ulenan'-- fir( 1PMC A# 'rier eri*n-Sube3+(: #S. Au(*r: Eugenia SuGre 8i+en(e ear: <9J D)
2in+lu'e Flinux)m*'ule6h 2in+lu'e Flinux)f6h 2in+lu'e Flinux)mi+'ei+e6h 2in+lu'e Flinux)g%i*6h 2in+lu'e Flinux)lab6h
))
,mall*+
2in+lu'e Flinux)ua++e6h 2in+lu'e Flinux)ema%h*re6h 2in+lu'e Flinux)'ela56h ))u'ela5 2in+lu'e Fam)i*6h
)) i*rema%
2in+lu'e >*+_AM;x6h> 2in+lu'e >amxx6h> 2in+lu'e >h&_+m_%er6h> 2in+lu'e >h&_g%m+6h> 2in+lu'e >'rier6h>
(a(i+ *i' __i*mem D*+_'ei+e_i' (a(i+ *i' __i*mem D*+_g%m+_bae (a(i+ *i' __i*mem D*+_%r+m_bae (a(i+ *i' __i*mem D*+_+m_'ei+e_bae ))(a(i+ *i' __i*mem D*+_ex(mem_bae (a(i+ *i' __i*mem D*+_%in_mux_bae
u< f_%*_alue= u< f_%*_%*_flag = u< f_%*_%*_alue = u< (&*_9J_&*r'= u
I#b5(e=
u
(a(uA#=
u ma, u9J +*mman'Q a''re uh*r( +um = ))uh*r( +um = < (a(i+ (ru+( file_*%era(i*n '_f*% = N &ri(e:
'_&ri(eQ
rea':
'_rea'Q
*%en:
'_*%enQ
releae:
'_releaeQ
87
unl*+,e'_i*+(l: '_i*+(lQ (a(i+ (ru+( mi+'ei+e '_'e = N min*r: MISC_#AMIC_MIORQ name:
#RI8ER_AMEQ
f*%:
X'_f*%
(ru+( ema%h*re m5em *i' %*in(er_ini(*i'! ) )+rea(e %*in(er ma%%ing %h5i+al a''re N ))*+_ex(mem_bae
=
i*rema%E./MEM_?ASEQ SY_9<K!
*+_g%m+_bae
=
i*rema%SOC_1PMC__RE1SQ SY_9JM!
*+_%r+m_bae
=
i*rema%SOC_PRCM_RE1SQx9<00!
*+_+m_'ei+e_bae
=
i*rema%SOC_CM_#E8ICE_RE1SQSY_<;J!
*+_%in_mux_bae
=
i*rema%AM.._C/RL_?ASEQ PA#_C/RL_SIYE!
*+_'ei+e_i'
=
i*rema%SOC_#E8ICE_I#_RE1SQ 7!
))1PMC - bae
)) 'a(ahee(
)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: g%m+_+*nfigura(i*n DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) uin( g%m+_+*nfigura(i*n*i'! N uin( (em% = ))enable +l*+, (* 1PMC m*'ule h®*+_%r+m_bae 4 CM_PER_1PMC_CLKC/RL ! Z=
CM_PER_1PMC_CLKC/RL_MO#@LEMO#E_EA?LE ))+he+, (* ee if enable' &hileh®*+_%r+m_bae 4 CM_PER_1PMC_CLKC/RL! X CM_PER_1PMC_CLKC/RL_I#LES/! W= CM_PER_1PMC_CLKC/RL_I#LES/_0@C FF CM_PER_1PMC_CLKC/RL_I#LES/_SHI0/!!
))ree( (he 1PMC m*'ule h®*+_g%m+_bae 4 1PMC_SSCO0I1 ! Z= 1PMC_SSCO0I1_SO0/RESE/ &hileh®*+_g%m+_bae 4 1PMC_SSS/A/@S! X 1PMC_SSS/A/@S_RESE/#OE! ==
1PMC_SSS/A/@S_RESE/#OE_RS/O1OI1! ))(*'* l* regi(r* ue'an +*n u al*re %*r 'efe+(*
))C*nfigure (* n* i'le - mane3* 'e energ[a 'el g%m+ (em% = h®*+_g%m+_bae 4 1PMC_SSCO0I1! (em% X= \1PMC_SSCO0I1_I#LEMO#E (em% Z= 1PMC_SSCO0I1_I#LEMO#E_OI#LE FF 1PMC_SSCO0I1_I#LEMO#E_SHI0/ ))(*'* l* +ambi* in(erme'i* en (em%Q n* en el regi(r* h®*+_g%m+_bae 4 1PMC_SSCO0I1! = (em% ))ir ma,e'
88
h®*+_g%m+_bae 4 1PMC_IR]EA?LE! = x ))'iable (ime*u( h®*+_g%m+_bae 4 1PMC_/IMEO@/_CO/ROL! = x ))ele+( &ai(%in=&ai(%*l = "P = h®*+_g%m+_bae 4 1PMC_CO0I1! Z= 1PMC_CO0I1_A#0ORCEPOS/E#"RI/E_0ORCEP"R FF 1PMC_CO0I1_A#0ORCEPOS/E#"RI/E_SHI0/! ))-- if a+(ia(e' %*( = %i%eline &ri(ebuffer ))'iable CS ))h®*+_g%m+_bae 4 1PMC_CO0I1^+um!! Z=
x FF 1PMC_CO0I1^__CS8ALI#_SHI0/!
))+*nfigure f*r A# an' granulari(5 x9))A# n*n mux enable 9Jb a++e* ain+ )) CO0I1 9 66 h®*+_g%m+_bae 4 1PMC_CO0I19+um!! = x Z 1PMC_CO0I19__#E8ICESIYE_SI./EE?I/S FF 1PMC_CO0I19__#E8ICESIYE_SHI0/ ! Z 9FF1PMC_CO0I19__/IMEPARA1RA@LARI/_SHI0/!Z )) 1PMC_CO0I19__#E8ICESIYE_EI1H/?I/S FF 1PMC_CO0I19__#E8ICESIYE_SHI0/ ! Z ))1PMC_CO0I19__A//ACHE##E8ICEPA1ELE1/H_0O@RFF 1PMC_CO0I19__A//ACHE##E8ICEPA1ELE1/H_SHI0/ ! Z 1PMC_CO0I19__#E8ICE/PE_A#LIKE FF 1PMC_CO0I19__#E8ICE/PE_SHI0/ !! )) (ar( (iming +*nfig )) +*nfig < 66 +hi% ele+( aer()'eaer( (ime h®*+_g%m+_bae 4 1PMC_CO0I1<+um!! = x Z x9! Z
))CS_O_/IME
x0 FF 1PMC_CO0I1<__CSR#O00/IME_SHI0/! Z (+ea 4 (rh - (+h! = 9
))CS_#EASSER/_R# (r% 4 (+*h 4 99 = (r% -(rea! 4
x0 FF 1PMC_CO0I1<__CS"RO00/IME_SHI0/!! ))CS_#EASSER/_"R
)) +*nfig 66 la(+h enable aer( an' 'e-aer( h®*+_g%m+_bae 4 1PMC_CO0I1+um!! = x Z 9 FF 1PMC_CO0I1__A#8O/IME_SHI0/! Z
))A#8_ASSER/
DDDDDDDDDDDDDDDDDDDDDD
x FF 1PMC_CO0I1__A#8R#O00/IME_SHI0/! Z
))A#8_#EASSER/_R# DDDDDDDDDDD
x FF 1PMC_CO0I1__A#8"RO00/IME_SHI0/!!
))A#8_#EASSER/_"RDDDDDD
)) +*nfig 7 66 *u(%u( enable ) rea' &ri(e enable aer( an' 'e-aer( h®*+_g%m+_bae 4 1PMC_CO0I17+um!! = x Z x9 FF 1PMC_CO0I17__OEO/IME_SHI0/! Z
))OE_ASSER/
x< FF 1PMC_CO0I17__OEO00/IME_SHI0/! Z
) )OE_#EASSER/DDDDDDDDDDDDDDDDDDD
x9 FF 1PMC_CO0I17__"EO/IME_SHI0/!Z
) )"E_ASSER/ DDDDDDDDDDDDDDDDDDDD
x< FF 1PMC_CO0I17__"EO00/IME_SHI0/!!
))"E_#EASSER/DDDDDDDDDDDDDDDDDDDDD
)) C*nfig ; - rea' an' &ri(e +5+le (ime h®*+_g%m+_bae 4 1PMC_CO0I1;+um!! = x Z x0 FF 1PMC_CO0I1;__R#CCLE/IME_SHI0/!Z x0 FF 1PMC_CO0I1;__"RCCLE/IME_SHI0/!Z
))C01_;_R#_CCLE_/IM ...DDDD ) )C01_;_"R_CCLE_/IM ...
x< FF 1PMC_CO0I1;__R#ACCESS/IME_SHI0/!! ))C01_;_R#_ACCESS_/IM ...DDDDD )) C*nfig J 66 bu (urnar*un' 'ela5Q e(+ h®*+_g%m+_bae 4 1PMC_CO0I1J+um!! = x Z FF 1PMC_CO0I1J__?@S/@RARO@#_SHI0/!Z
89
1PMC_CO0I1J__CCLE
1PMC_CO0I1J__CCLE
J FF 1PMC_CO0I1J__CCLE
))CC
FF 1PMC_CO0I1J__"R#A/AOA#M@.?@S_SHI0/!Z +*n mux 'a(abu FF 1PMC_CO0I1J__"RACCESS/IME_SHI0/!!
))"R_#A/A_O_A#M@. ... -- al*r 7 *riginalmen(e )) C01_J_"R_ACCESS_/IM
))AC/I8AR C
) )C01_^_?ASE_A##R
x9 FF 1PMC_CO0I1^__CS8ALI#_SHI0/! Z xf FF 1PMC_CO0I1^__MASKA##RESS_SHI0/!
))C01_^_MASK
h®*+_+m_'ei+e_bae4CM_CLKO@/_C/RL! = xA9 ) ) Sen' L +l*+,); = 7 Mh (* CLKO@/< re(urn
)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: %in_mux_+*nfigura(i*n DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) in( %in_mux_+*nfigura(i*n*i'! N h®*+_%in_mux_bae 4 1PMC_A#_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#9_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#<_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#7_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#;_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#J_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#^_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#V_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#9_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#99_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#9<_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#9_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#97_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#9;_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_CS<_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_A#8n_ALE_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_?En_CLE_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_?E9n_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_CLK_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
h®*+_%in_mux_bae 4 1PMC_OE_REn_O00SE/! h®*+_%in_mux_bae 4 1PMC_"En_O00SE/!
= OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P = OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P
90
))
h®*+_%in_mux_bae 4 1PMC_CS9_O00SE/! = OMAP_M@._MO#E Z AM.._IP@/_E Z
AM.._P@LL_@P))
h®*+_%in_mux_bae 4 1PMC_CS_O00SE/! = OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P h®*+_%in_mux_bae 4 1PMC_"_O00SE/! = OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P h®*+_%in_mux_bae 4 1PMC_"P_O00SE/! = OMAP_M@._MO#E Z AM.._IP@/_E Z AM.._P@LL_@P ))regi(r* en amxx6h 'e+lara'* ))(al e me3*r ha+er R. -- *u(%un_en en la eale ali'a
re(urn!
in( #ea+(iar"P*i'!N
h®*+_g%m+_bae 4 1PMC_CO0I1!Z= x9FF1PMC_CO0I1_"RI/EPRO/EC/_SHI0/! re(urn in( A+(iar"P*i'!N h®*+_g%m+_bae 4 1PMC_CO0I1!Z= xFF1PMC_CO0I1_"RI/EPRO/EC/_SHI0/! re(urn in( &ai(@n(ilRea'5*i'!N ))+*n(r*l 1PMC &ai( (a(u
&hileh®*+_%r+m_bae 4 1PMC_S/A/@S! X 1PMC_S/A/@S_"AI/S/A/@S! W= 1PMC_S/A/@S_"AI/S/A/@S_"AC/I8EH FF 1PMC_S/A/@S_"AI/S/A/@S_SHI0/!! ))if &ai( n* e = 9Q (ill l**%ing re(urn in( Ree(A#*i'!N ))+*man'=x00 h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! = x00 re(urn in( b*rrar?l*ue*i'!N h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! =xJ
))+*man'* erae bl*+, %g 9JQ bl*ue
J7 h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x0C0 ) )9J %ageQJ bl*+, -- %age a''re &ill be ign*re' b5 L@ h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x)) h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! =x# re(urn ! in( e+ribirPag*i'! N ))in( i h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! =x ))&ri(e %age h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x0E)) <;7 +*lumn h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x0C0))9J %ageQJ bl*+, h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x)) )D
91
f*r i= i F 9<7 i44!N h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =(&*_9J_&*r' D) ))ini 'a(* 'ea+(iar fragmen(* en %rueba reale h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000000))'a(a fr*m g%m+ (* bu h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x00090009 h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000<000< h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000000 h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x00070007 h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000;000; h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000J000J h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000^000^ h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000000 h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! =x000V000V ))fin 'a(* h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! =x9 re(urn ! in( leerPag*i'!N h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! =x ))erae bl*+, h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x0E)) <;7 +*lumn h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x0C0))9J %ageQJ bl*+, h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x)) h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! =x re(urn ! in( rea'I#+*man'*i'!N in( i I#b5(e= ))&hileh®*+_g%m+_bae 4 1PMC_S/A/@S! X 1PMC_S/A/@S_EMP/"RI/E?@00ERS/A/@S! == )) 1PMC_S/A/@S_EMP/"RI/E?@00ERS/A/@S_O/EMP/ FF 1PMC_S/A/@S_EMP/"RI/E?@00ERS/A/@S_SHI0/!! ))i el bufer e(G llen* e%eram* h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! =xV
)) rea' i' +*mman'
))aa'ir algun +*n(r*l 'e finalia+in 'e e+ri(ura en bu reiar +*n'i+i*n! ))&hileh®*+_g%m+_bae 4 1PMC_S/A/@S! X 1PMC_S/A/@S_EMP/"RI/E?@00ERS/A/@S! == )) 1PMC_S/A/@S_EMP/"RI/E?@00ERS/A/@S_O/EMP/ FF bufer e(G llen* e%eram*
1PMC_S/A/@S_EMP/"RI/E?@00ERS/A/@S_SHI0/!!))i el
h®*+_g%m+_bae 4 1PMC_A#_A##RESS+um!! =x e%e+ial 'el +*man'* rea'i'!
))a''re la(+h e+rib* 'ire++i*n
f*r i= i F < i44!) )
92
in( rea'S(a(uC*m*i'! N
(a(uA#= ))+*mman'=x^ ma,=x7 h®*+_g%m+_bae 4 1PMC_A#_COMMA#+um!! = x^ (a(uA# = h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! (a(uA# X= ma,
))&hile h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! X ma,!==!))&ai( un(il rea'5 en (e( final h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!!=(a(uA#
habili(ar
))(hi i n*( nee'e' a( final (e(ing
re(urn ! )DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: gm%+_ini( D /hi fun+(i*n &ill be +alle' ea+h (ime (he m*'ule i u%l*a'e'6 D I( mu( +*nfigure (he 1PMC regi(er +alling (he g%m+_+*nfigura(i*n! D r*u(ine! an'
i( al* ha (* a'eua(el5 +*nfigure (he %in mul(i%lexa(i*n
D *f (he 1PMC in(erfa+e6 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) in( g%m+_ini(*i'! N u< 'ei+e_fea(ure uin( (a(u1PMC )) uin( i ))re+*ger el al*r 'el reg 'e fea( 'i%*nible 'e nue(r* AM;xx 'ei+e_fea(ure = __ra&_rea'l*+_'ei+e_i'4#E8ICE_0EA/@RE! )) %69^7 'a(ahee( =
x<00 f*r (he AM;V x<00 f*r (he AM;
%rin(,KER_I0O >S#?L: Mi+r*%r*+e*r fea(ure referen+e AM;V =
Ulxn>
Qunigne' l*ng!'ei+e_fea(ure!
g%m+_+*nfigura(i*n!
%in_mux_+*nfigura(i*n!
u'ela59! ))<uS %rueba reale #ea+(iar"P!) )enable &ri(e *n nan' 'ei+e "P = high! n*& &e nee' &ai( f*r ("" bef*re nex( &e high (a(u1PMC=h®*+_%r+m_bae 4 1PMC_S/A/@S! ))&hen rea' a regi(er laun+he' i( (a,e ab*u( 9n Ree(A#! u'ela5! ))9u fir( ree( (a,e (a(u1PMC=h®*+_%r+m_bae 4 1PMC_S/A/@S! ))leer un reg 1PMC em%lea un* 9n rea'I#+*man'! ))+*men(ar 'uran(e (e( final 5 habili(ar en rea' &ai(@n(ilRea'5! re(urn )DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: '_*%en
93
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) (a(i+ in( '_*%en (ru+( in*'eD %In*'eQ (ru+( fileD %0ile ! N re(urn )DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: '_releae DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) (a(i+ in( '_releae (ru+( in*'eD %In*'eQ (ru+( fileD %0ile ! N re(urn )DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: '_i*+(l DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) (a(i+ l*ng '_i*+(l (ru+( fileD %0ileQ unigne' in( +m'Q unigne' l*ng alue! N if +m'==!N rea'S(a(uC*m! if +m'==9!N Ree(A#! if +m'==
94
re(urn -ERES/AR/SS u'ela59! ))rea'I#+*man'!)) en (e( final habili(ar leerPag! ))lanamien(* +*man'* le+(ura %ag - m*'* ali'a 'e 'a(* - 'a(* en +a+he e%eran'* h*( reue( ))u'ela59!))e%erar (R=<;u 5 +*m%r*bar e(a'* R#Q rea'S(a(uC*m! ))i n*Q +*m%arar ha(a ue rea'5 f*r i= i F 9 i44! ))eri*n 'e le+(ura a+*(a'a %ara (e( +*n analia'*r N le+(ura#a(aReg=h&re le+(ura#a(aReg=h®*+_g%m+ g*+_g%m+_bae _bae 4 1PMC_A#_#A/A+um 1PMC_A#_#A/A+um!! !! ))%a ))%aan an l* 'a(* 'a(* 'e' 'e'e e la +*lumna 'e la mem*ria al bu u% Xm5em! re(urnnumber! )D
f*r i i= i F 9 9<7 i4 i44! )) ))(e( final
N le+(ura#a(aReg=h®*+_g%m+_bae 4 1PMC_A#_#A/A+um!! u% Xm5em! re(urnnumber!D) )DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: '_&ri(e DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) (a(i+ ie_( '_&ri(e(ru+( file Dfil%Q +*n( +har __uer DbufferQ ie_( +*un(Q l*ff_( Df_%*! N in( number = uin( (a(u1PMC= if '*&n_in(erru%(ibleXm5em!! re(urn -ERES/AR/SS b*rrar?l*ue! u'ela5! ))("b 4 (?er =m en%rueba final rea'S(a(uC*m! ))+he+, R? an' +he, failure bi( ))
&ai( &a i(@n @n(i (ilR lRea ea'5 '5! !) ))& )&ai ai( ( f*r f*r re rea' a'5 5 a+( a+(i iar ar en %r %rue ueba ba fi fina nal l e+ribirPag! u'ela5! ))(Pr*g = Ju en %rueba final rea'S(a(uC*m! ))+he+, R? an' +he, failure bi( u% Xm5em! re(urn number!
)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: '_ini(_m*'ule DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) (a(i+ in( __ini( '_ini(_m*'ule *i' ! N %*in(er_ini(!
95
g%m+_ini(! ema_ini(Xm5e mQ 9! if mi+_regi(er X'_'e ! ! N %rin(, KER_"ARI1 #RI8ER_AME >: /he m*'ule +ann*( be regi(ere'n> ! re(urn -EO#E8! %rin(, KER_I0O >M*'ule m*'ule6,* u%l*a'e' DDDDDDn> !
re(urn!
)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D 0un+(i*n: '_+leanu%_m*'ule DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD) (a(i+ *i' __exi( '_+leanu%_m*'ule *i' ! N mi+_'eregi(er X'_'e ! %rin(, KER_I0O >M*'ule m*'ule6,* +leane' u% DDDDDDn> ! m*'ule_ini( '_ini(_m*'ule ! m*'ule_exi( '_+leanu%_m*'ule !
MO#@LE_LICESE >1PL> ! MO#@LE_A@/HOR>#igi(al S5(em uing Embe''e' Linux>!
96
3.4 0losario ',5 'perative system. 31/5 3entral 1rocessing /nit 35 Lenguaje 3 3s5 3apacitores (s5 (esistores ,*5 ,ecure *igital -o65 -nternet of 6#ings (-,35 (educed -nstruction ,et 3omputer 3-,35 3omplex -nstruction ,et 3omputer )(25 )dvanced (-,3 2ac#ines EE1('25 Electrically Erasable 1rogrammable (eadD'nly 2emory ('25 readDonly memory ()25 (andom )ccess 2emory ,()25 ,tatic (andom )ccess 2emory 0335 0&/ 3ompiler 3ollection D 01235 0eneralD1urpose 2emory 3ontroller E335 ErrorD3orrecting 3ode B35 cyclic errorDcorrecting code *2)5 *irect 2emory )ccess ,o35 ,ystemDonD3#ip /,B5 /niversal ,erial Bus ,2*5 ,urface 2ount *evice 0&/5 0&/ is &ot /nix >10)5 >ield 1rogrammable 0ate )rray BB5 Beaglebone 13B5 1rintet 3ircuit Board /)(65 /niversal )sync#ronous (eceiverD6ransmitter 1F25 1ulseDFidt# 2odulation 01-'5 0eneral 1urpose -nput'utput *6B5 *evice 6ree Blob %>lat *evice 6ree+ ,L35 ,ingle Level 3ell 2L35 2ultilevel 3ell 2235 2ulti2edia3ard L/&5logic units u35 2icro 3ontroller u15 2icro 1rocessor
97