• Save
Izquiams Martinez Evaluacion Optimizacion y Ampliacion Modulo FLIB de Continental AG
Upcoming SlideShare
Loading in...5
×
 

Izquiams Martinez Evaluacion Optimizacion y Ampliacion Modulo FLIB de Continental AG

on

  • 926 views

 

Statistics

Views

Total Views
926
Views on SlideShare
925
Embed Views
1

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Izquiams Martinez Evaluacion Optimizacion y Ampliacion Modulo FLIB de Continental AG Izquiams Martinez Evaluacion Optimizacion y Ampliacion Modulo FLIB de Continental AG Document Transcript

  •   UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE INGENIERÍA Y TECNOLOGÍA ELECTRÓNICAEVALUACIÓN, OPTIMIZACIÓN Y AMPLIACIÓN DEL CONTROLADOR DE BAJO NIVEL PARA MEMORIAS FLASH NOR PARALELAS (MÓDULO FLIB) DE LA EMPRESA CONTINENTAL AG EN BABENHAUSEN – ALEMANIA Por: Izquiams Javier Martínez Fajardo INFORME DE PASANTÍA Presentado ante la Ilustre Universidad Simón Bolívar como requisito parcial para optar al título de Ingeniero Electrónico Sartenejas, abril de 2011
  •   UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE INGENIERÍA Y TECNOLOGÍA ELECTRÓNICAEVALUACIÓN, OPTIMIZACIÓN Y AMPLIACIÓN DEL CONTROLADOR DE BAJO NIVEL PARA MEMORIAS FLASH NOR PARALELAS (MÓDULO FLIB) DE LA EMPRESA CONTINENTAL AG EN BABENHAUSEN – ALEMANIA Por: Izquiams Javier Martínez Fajardo Realizado con la asesoría de: Tutor Industrial: Ing. Holger Beilstein Tutor Académico: Prof. Juan Carlos Grieco INFORME DE PASANTÍA Presentado ante la Ilustre Universidad Simón Bolívar como requisito parcial para optar al título de Ingeniero Electrónico Sartenejas, abril de 2011
  •   UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE INGENIERÍA Y TECNOLOGÍA ELECTRÓNICA Evaluación, Optimización y Ampliación del Controlador de Bajo Nivel para Memorias Flash NOR Paralelas (Módulo FLIB) de la Empresa Continental AG en Babenhausen – Alemania INFORME DE PASANTÍA presentado por: Izquiams Javier Martínez Fajardo, 05-38479 Tutor Industrial: Ing. Holger Beilstein Tutor Académico: Prof. Juan Carlos Grieco RESUMEN En este trabajo se aborda la evaluación, optimización, ampliación y análisis de migración delcontrolador de bajo nivel para memorias Flash NOR paralelas llamado módulo FLIB (del inglésFlash Driver Library) que ofrece las funcionalidades para escribir y borrar datos en una memoriaFlash NOR paralela externa. Para la evaluación, optimización y ampliación del módulo FLIB seemplean dos paneles de instrumentos. Uno de ellos, tiene incorporado, entre otros dispositivoselectrónicos, un microcontrolador Toshiba TX4964FG-120 y una memoria Flash SpansionS29GL512-N. El otro posee un microcontrolador Fujitsu MB86R02 y una memoria FlashM29W128GH/GL. Se logra la optimización y ampliación del módulo FLIB mediante lamodificación del código del mismo e inclusión de 12 nuevas funciones, bajo las líneas directivasSMK (del inglés Software Method Kit) de la empresa Continental AG. Estas nuevas funcionesutilizan la mayoría de las capacidades que ofrecen las memorias antes mencionadas y aumentanla velocidad de borrado y escritura de datos en ellas. Se lleva a cabo un análisis de la tecnologíade la memoria Flash de Spansion actualmente utilizada; MirrorBit® y de la tecnología futuraMirrorBit Eclipse™. Finalmente, se dan recomendaciones acerca de los cambios que deben serrealizados para que el módulo FLIB opere con memorias Flash Eclipse™.Palabras Clave: Memoria Flash NOR Paralela, Controlador de bajo nivel, MirrorBit, MirrorBitEclipse. Sartenejas, abril de 2011 iv
  • DEDICATORIA Quisiera que las palabras más importantes de mi vida no se las lleve el viento y se pierdan en el tiempo.Me gustaría que permanezcan grabadas en estas líneas; que queden para la posteridad. Mis años deesfuerzo y sacrificio se los dedico a personas verdaderamente especiales. Personas que han marcado mivida de buena manera y me han dejado sabiduría. Cada cualidad y esencia de cada una de estas personases única, irrepetible e insustituible. Por ello, no hay necesidad de sentir celos por las cualidades de losdemás, más bien se debe sentir gozo por tener esas cualidades propias. Mi dedicatoria va en ordencronológico y no en orden de importancia, ya que todas estas personas especiales son importantes para míde igual manera. En fin, le dedico este trabajo a: mi madre, a quien le debo realmente mi vida. Su valor manifestado durante el crecimiento y formaciónde la semilla que dejó mi padre, dio vida a lo que soy hoy en día. ¡Más que una dedicatoria es unagradecimiento; es darte las gracias durante toda mi existencia! A mi abuela; mi segunda madre, quien con todas sus fuerzas, preocupaciones y ocupaciones procuraaliviar, hasta donde sus capacidades alcanza, mis necesidades y si no puede, sus fieles oraciones entran enacción. A mi tía Nancy, a quien considero como una madre. Sus palabras están grabadas en mi mente. Esperoque recuerdes frases como: “eres la luz del mundo” o “eres un diamante en bruto”. Mi niñez no pudo seraún más divertida; a tu lado todos los juegos eran interesantes, incluso monopolio. A mi tío Ivan, a quien considero como un padre. Sus palabras y crianza formaron en mí disciplina,fuerza mental y valor. No olvido las palabras del dramaturgo y poeta alemán Bertolt Brecht, las cuales seencontraban plasmadas en un recorte que me diste. Esa palabras eran: “hay hombres que luchan un día yson buenos. Hay otros que luchan un año y son mejores. Hay quienes luchan muchos años y son muybuenos. Pero hay los que luchan toda la vida: esos son los imprescindibles”. A mi tío Edgar, a quien también considero como un padre. Mi niñez no pudo estar aún más llena defantasía; sus regalos me abrieron puertas para pensar creativamente. No olvido sus palabras tales como:“haz las cosas con hambre; con pasión”. Su cariño hacia mí no puede ser demostrado mejor. Tampocoolvido las tardes de práctica de beisbol; esto además de haberme servido como distracción, formó en mídisciplina. A mi tía Neudis, a quien considero como madre a pesar que es también dos veces mi madrina. Suspalabras son fuentes de consejos sabios antes mis problemas. No olvido la frase “sin salud no hay nada”,la cual despertó en mí el cuidado de mi salud en todos los aspectos de mi vida. Contigo he aprendidotambién tanto el significado de los derechos y su puesta en práctica como el tener verdadera autoestima. A mi tío Juan, a quien considero también como un padre. Eres para mí el modelo para tomar el rol decabeza de familia, de fortaleza, de disciplina, de respeto, de cómo un buen padre debe comportarse. Lasnavidades y los cumpleaños siempre están llenas de sorpresas. No olvido la frase “no hay que cruzar el ríoantes de llegar a la orilla”, la cual es para mí fuente de paciencia. A mi primo Joan, a quien considero como un hermano. Durante mi niñez no puede estar mejoracompañado. No olvido las peleas simuladas estilo “Dragonball”. Tengo la certeza que será un excelenteeconomista. Y a mi pequeña hermana Franjalis, que aunque aún no tengas la pasión por los estudios sé que en algúnmomento la tendrás. v
  • AGRADECIMIENTOS Y RECONOCIMIENTOS Mis agradecimientos van dirigidos en primera línea a las personas más importantes en mi vida:a mi familia. Sin su apoyo no hubiese sido posible el logro de esta y otras muchas metas. ¡Austedes mis infinitas y calurosas gracias! También le doy las gracias a mis amigos alemanes que leyeron los esbozos de los capítulos deeste trabajo en su versión alemana; estas gracias van dirigidas especialmente a Katrin Lübbert. Deigual modo, le doy las gracias al Prof., Juan Carlos Grieco por las correcciones de estiloproporcionadas para la mejora de la comprensión de este trabajo. Quisiera agradecer a la Universidad Simón Bolívar, entre otros, por la oportunidad dada paraparticipar en el programa de intercambio académico internacional de estudiantes de pregrado dela U.S.B. Además, agradezco a la Universidad de Siegen por su amena acogida y trato agradable;han hecho que mi cariño por Alemania haya crecido aún más. Me gustaría dar un agradecimiento especial a Holger Beilstein, su compromiso y asesoríafueron factores claves para alcanzar con éxito los objetivos de este proyecto. De igual modo,quiero dar las gracias a Oliver Schmidt, su profundo conocimiento de los sistemas (software yhardware) desarrollados e implementados por el grupo Flash fueron de gran ayuda paracomprender el funcionamiento de los mismos. De igual forma, mis agradecimientos hacia DirkSauerbier y hacia Bernd Muntermann, quienes me ofrecieron un valioso apoyo durante laejecución de la pasantía. También dirijo mis agradecimientos a Andreína Landaez, Vanessa Weisshaar y a RobertoArmas. Fue un honor haber compartido con ustedes los mejores momentos del año deintercambio en Alemania. Igualmente le doy las gracias a Aaron Thoma y a Katrin Reul; ustedesme ofrecieron una gran amistad y un valioso apoyo en mi aprendizaje del idioma alemán. Deforma similar le doy las gracias a todos los amigos que conocí en Alemania (si listase susnombres, estas líneas serían muy largas); sin ustedes no hubiese sido tan cálido el año deintercambio. Finalmente, le doy las gracias a todos mis amigos que he conocido en la Universidad SimónBolívar; especialmente a Richard Gil y a Daniela Gil. Los mejores momentos durante misestudios de pregrado los he compartido con ustedes. vi
  • ÍNDICE GENERALRESUMEN .......................................................................................................................... ivDEDICATORIA ........................................................................................................................... vAGRADECIMIENTOS Y RECONOCIMIENTOS ....................................................................... viÍNDICE GENERAL ...................................................................................................................... viiÍNDICE DE TABLAS .................................................................................................................... xiÍNDICE DE FIGURAS ................................................................................................................. xiiLISTA DE ABREVIATURAS ..................................................................................................... xivINTRODUCCIÓN ........................................................................................................................... 1Continental AG. Descripción de la empresa ................................................................................... 2Interior ........................................................................................................................... 6Unidad de Negocio Instrumentación y Controlador de Interfaz Hombre-Máquina (ID) ................ 9Grupo Flash ......................................................................................................................... 12Antecedentes ......................................................................................................................... 13Motivación ......................................................................................................................... 15Objetivo general ......................................................................................................................... 16Objetivos específicos ..................................................................................................................... 16CAPITULO I: MARCO TEÓRICO........................................................................................ 181.1. Panel de Instrumentos ..................................................................................................... 181.2. Microcontrolador ............................................................................................................. 191.2.1. Microcontrolador Toshiba TX4964FG-120 .................................................................... 191.2.2. Microcontrolador Fujitsu MB86R02 ............................................................................... 201.3. Memoria Flash ................................................................................................................. 211.4. Arquitecturas de Memoria Flash ..................................................................................... 221.4.1. NOR ......................................................................................................................... 221.4.2. NAND ......................................................................................................................... 231.5. Memoria Flash Spansion ................................................................................................. 241.6. Memoria Flash Numonyx ................................................................................................ 261.7. SMK: Metodología para el Proceso de Desarrollo de Software...................................... 271.8. Flashloader ...................................................................................................................... 30 vii
  • 1.8.1. MAIN (Programa Principal) ............................................................................................ 311.8.2. FMAIN (Control Principal del Cargador Flash) ............................................................. 311.8.3. FIOL (Librería de Entrada y Salida del Cargador Flash) ................................................ 321.8.4. FLIB (Librería de Controlador Flash) ............................................................................. 33CAPITULO II: MARCO METODOLÓGICO......................................................................... 342.1 Ambiente de Desarrollo................................................................................................... 342.2 Depurador Green Hills Slingshot™ ................................................................................ 362.3 Analizador Lógico Intronix Logicport de 34 Canales ..................................................... 362.4 Microsoft Visual Basic .................................................................................................... 362.5 Metodología para la Medición del Desempeño de la Operación de Borrado y de Escritura del Módulo FLIB ............................................................................................. 372.6 Expansión de las Funcionalidades del Módulo FLIB ..................................................... 402.7 Módulo de Prueba FLIB .................................................................................................. 41CAPÍTULO III: MÓDULO FLIB. EVALUACIÓN, AMPLIACIÓN Y PRUEBAS ............... 453.1. Desempeño de las Operaciones de Borrado y de Escritura del Módulo FLIB ................ 453.2. Expansión del Módulo FLIB ........................................................................................... 503.2.1. Borrado de Múltiples Sectores ........................................................................................ 503.2.2. Suspensión y Reanudación de Escritura .......................................................................... 533.2.3. Suspensión y Reanudación de Borrado ........................................................................... 563.2.4. Modo Auto-selección ...................................................................................................... 583.2.5. Sector de Silicio Protegido .............................................................................................. 613.2.6. Escritura con Búfer Ampliado ......................................................................................... 623.2.7. Cambios en el Módulo FIOL........................................................................................... 653.3. Proceso de Prueba y de Validación ................................................................................. 673.3.1. Especificaciones de los Módulos .................................................................................... 673.3.2. Informe de las Pruebas en el Módulo FLIB .................................................................... 683.3.3. Revisión ......................................................................................................................... 68CAPÍTULO IV: ANÁLISIS PARA LA MIGRACIÓN DE LA TECNOLOGÍA MIRRORBIT® A MIRRORBIT ECLIPSE™ .......................................................................... 704.1. Tecnología MirrorBit® ................................................................................................... 704.2. Tecnología MirrorBit Eclipse™ ...................................................................................... 724.3. Comparación entre las Tecnologías MirrorBit® y MirrorBit Eclipse™ ......................... 734.4. Interés de la Empresa Continental AG para Migrar hacia la Tecnología MirrorBit Eclipse™ ......................................................................................................................... 74 viii
  • 4.5. Resultados del Análisis para el Logro de la Migración del Módulo FLIB hacia la Tecnología MirrorBit Eclipse™ ...................................................................................... 754.5.1. Densidad ......................................................................................................................... 764.5.2. Tamaño de Sector ............................................................................................................ 764.5.3. Tamaño de Datos ............................................................................................................. 764.5.4. Tamaño del Búfer de Escritura ........................................................................................ 764.5.5. Identificador del Dispositivo ........................................................................................... 774.5.6. Área OTP ......................................................................................................................... 774.5.7. Protección de Escritura .................................................................................................... 774.5.8. Protección de Lectura ...................................................................................................... 774.5.9. Unlock Bypass ................................................................................................................. 774.5.10. Borrado de Múltiples Sectores ........................................................................................ 784.5.11. Data Polling ..................................................................................................................... 784.5.12. Registro de Estado ........................................................................................................... 784.5.13. Escritura Simple de Palabra y Escritura Múltiple Pass con Búfer .................................. 794.5.14. Nuevos Comandos de Suspensión y de Reanudación ..................................................... 804.5.15. Comando de Comprobación Vacía.................................................................................. 814.5.16. Resumen del Estado de Compatibilidad del Módulo FLIB con la Migración hacia la Familia Eclipse™ ............................................................................................................ 81CONCLUSIONES Y RECOMENDACIONES ............................................................................ 83TRABAJOS FUTUROS ................................................................................................................ 87APORTES ......................................................................................................................... 88REFERENCIAS ......................................................................................................................... 89APÉNDICE A: Compuerta NOR y NAND .............................................................................. 92APÉNDICE B: Paneles de Instrumentos .................................................................................. 93APÉNDICE C: Figura de las interfaces Slingshot (izquierda) y del analizador lógico Intronix Logicport de 34 canales (derecha) .................................................................. 94APÉNDICE D: Medición del tiempo de borrado sector por sector con la memoria Flash previamente borrada........................................................................................ 95APÉNDICE E: Medición del tiempo de borrado sector por sector con la memoria Flash previamente escrita con 0x00.......................................................................... 97 ix
  • APÉNDICE F: Medición del tiempo requerido para escribir 128 Kbytes de datos (equivalente a un sector) ...................................................................................................... 99APÉNDICE G: Tiempo medido entre la señal RY/BY y la detección de la función FLIB_u8StatusCheck .................................................................................... 100APÉNDICE H: Simulación de la memoria Flash S29GL512N ............................................. 101APÉNDICE I: Portada de los documentos modificados y creados....................................... 102APÉNDICE J: Diagrama de flujo del uso del registro de estado en la familia Eclipse™ .... 104APÉNDICE K: GLOSARIO .................................................................................................. 105APÉNDICE L: Código del módulo de prueba para el módulo FLIB .................................... 107 x
  • ÍNDICE DE TABLASTabla 3.1. Rendimiento de las operaciones de borrado y de escritura de la memoria Flash S29GL512N dado por Spansion ................................................................................. 46Tabla 3.2. Rendimiento medido de las operaciones de borrado y de escritura del módulo FLIB; memoria Flash S29GL512N ....................................................................................... 46Tabla 4.1. Comparación entre memorias de la empresa Numonyx y Spansion (tecnologías MirrorBit® y MirrorBit Eclipse™) ............................................................................ 73Tabla 4.2. Definición del registro de estado de la familia Eclipse™ .......................................... 80 xi
  • ÍNDICE DE FIGURASFigura i.1. Logotipo del consorcio Continental AG .................................................................... 3Figura i.2. Localización de las sucursales de Continental AG a nivel mundial........................... 5Figura i.3. Organigrama del puesto de trabajo durante la pasantía ............................................ 17Figura 1.1. Aspecto de un panel de instrumentos típico ............................................................. 19Figura 1.2. Estructura básica de un microcontrolador ................................................................ 20Figura 1.3. Comparación entre una memoria Flash paralela y una serial ................................... 22Figura 1.4. Arquitectura del arreglo Flash NOR y NAND ......................................................... 24Figura 1.5. Diagrama de una memoria Flash S29GL512N de Spansion .................................... 26Figura 1.6. Diagrama de una memoria Flash M29W128GH/GL de Numonyx ......................... 27Figura 1.7. Proceso de prueba ..................................................................................................... 28Figura 1.8. Proceso de prueba para el desarrollo de software .................................................... 29Figura 1.9. Sistema de Flashloader ............................................................................................ 32Figura 2.1. Ambiente de desarrollo ............................................................................................ 35Figura 2.2. Diagrama del circuito de la comunicación CAN en el panel de instrumentos ......... 38Figura 2.3. Análisis de la secuencia de pulsos a través del programa Logicport ....................... 38Figura 2.4. Calculador de tiempo versión 2.2.0 para memoria Flash (Time Calculator V2.2.0) 40Figura 2.5. Foto de pantalla del depurador Green Hills bajo el soporte del paquete de programa Microsoft Visual C++® 6.0 durante la ejecución del módulo de prueba FLIB ...... 43Figura 3.1. Representación de la operación de borrado de varios sectores con respecto al tiempo .................................................................................................................................. 51Figura 3.2. Diagrama de flujo de la función FLIB_u8StartEraseMultipleSectors ..................... 54Figura 3.3. Diagrama de flujo de la función FLIB__u8ReadyEraseMultipleSectors ................. 54Figura 3.4. Diagrama temporal de la ejecución de una suspensión y reanudación de una operación de escritura ............................................................................................... 55Figura 3.5. Diagrama de flujo de la función FLIB_vProgramSuspend ...................................... 55Figura 3.6. Diagrama de flujo de la función FLIB_vProgramResume ....................................... 56 xii
  • Figura 3.7. Diagrama temporal de la ejecución de una suspensión y reanudación de una operación de borrado ................................................................................................ 57Figura 3.8. Diagrama de flujo de la función FLIB_vEraseSuspend ........................................... 58Figura 3.9. Diagrama de flujo de la función FLIB_vEraseResume............................................ 59Figura 3.10. Diagrama de flujo de la función FLIB_u8EnterAutoSelect ..................................... 59Figura 3.11. Diagrama de flujo de la función FLIB_u8GetAutoSelectInfo ................................. 60Figura 3.12. Diagrama de flujo de la función FLIB_u8ExitAutoSelect ....................................... 60Figura 3.13. Diagrama de flujo de la función FLIB_vEnterSecSiSectorMode ............................ 61Figura 3.14. Diagrama de flujo de la función FLIB_vExitSecSiSectorMode .............................. 62Figura 3.15. Escritura con búfer ampliado (Enhanced Buffered Write) ....................................... 63Figura 3.16. Diagrama de flujo de la función FLIB_u8StartWriteBuffer .................................... 64Figura 3.17. Diagrama de flujo de la función FLIB__u8ReadyWriteBuffer................................ 65Figura 3.18. Diagrama de flujo de la función FIOL_boEraseMultipleSectors ............................. 66Figura 4.1. Esquema estructural de la tecnología MirrorBit® ................................................... 71Figura 4.2. Beneficios de la implementación de la tecnología Eclipse™ en términos de costo 74Figura 4.3. Proyección hacia la migración de nuevas tecnologías de memorias Flash de Spansion ................................................................................................................... 75   xiii
  • LISTA DE ABREVIATURASAMD Advanced Micro Devices Inc.; empresa americanaASP Advanced Sector Protection; esp. Protección avanzada de sectorBIST Built-In Self Test; esp. Prueba propia integradaBus CAN Controller Area Network Bus; esp. Bus de red de área de controladorCap. CapítuloCFI Common Flash Memory Interface; esp. Interfaz común de memoria FlashECC Error Correction Code; esp. Código de corrección de error Electrically Erasable Programmable Read Only Memory; esp.EEPROM Memoria eléctricamente programable y borrable de sólo lecturaEOL End of (production) Line; esp. Final de línea (de producción) Erasable Programmable Read-Only Memory; esp.EPROM Memoria borrable y programable de sólo lecturaesp. EspañolFCS Flash Component System; esp. Sistema de componente flashfig. FiguraHMI Human Machine Interface; esp. Interfaz hombre máquinaI2 C Inter-Integrated Circuit; esp. Circuito inter-integrado Business Unit Instrumentation & Driver Human Machine Interface; esp.ID Unidad de negocio Instrumentación y Controlador de Interfaz Hombre-MáquinaIDE Integrated Development Environment; esp. Entorno de desarrollo integradoing. InglésK Kilo (en electrónica = 1024)LCD Liquid Crystal Display; esp. Pantalla de cristal líquidoLIN Local Interconnect Network; esp. Red de interconexión localLLD Low Level Driver; esp. Controlador de bajo nivelLSI Large Scale Integration; esp. Integración a muy gran escalaM Mega (en electrónica = 10242)NVM Non Volatile Memory; esp. Memoria no volátilOTC Over the Counter; esp. Negociación fuera de bolsap. PáginaRAM Random-Access Memory; esp. Memoria de acceso aleatorio xiv
  • Reduced Instruction Set Computer; esp.RISC Computador de conjunto de instrucciones reducidasRS232 Recommended Standard 232; esp. Estándar recomendado 232sec. Seccións.p. Sin páginaSPI Serial Peripheral Interface; esp. Interfaz periférica serialSRAM Static Random Access Memory; esp. Memoria de estática de acceso aleatorioTSOP Thin small-outline package; esp. Paquete fino de contorno pequeño Universal Asynchronous Receiver Transmitter; esp.UART Trasmisor y receptor asíncrono universalUSB Universal Serial Bus; esp. Bus serial universal xv
  • 1 INTRODUCCIÓN La aparición de la humanidad, hace aproximadamente 160.000 años, ha modificado el mundo,es decir, el medio ambiente de los seres humanos. Aunque el hombre desde entonces hacambiado biológicamente poco, ha mejorado sus posibilidades mediante el uso de su inteligencia.A estas mejoras pertenece el surgimiento de las civilizaciones que posteriormente mediante laciencia y la tecnología significó un avance para la vida de sus integrantes. Estas nuevascondiciones de vida fueron tan favorables que el número de seres humanos comenzó a crecerrápidamente. Este crecimiento significó la expansión de los asentamientos humanos, es decir, delas ciudades. Desde entonces apareció la necesidad de movilización a través de distanciasrelativamente largas. Para ello el hombre utilizó diversos medios de transporte, algunosprovenientes de la naturaleza, tales como: caballos, perros, elefantes, etc., otros provenientes desu propia creación; como bicicletas y ante todo automóviles. El auto significó para la humanidad la posibilidad de viajar sin que ésta emplee su propia fuerza(energía). Desde 1886 (creación del auto por el alemán Carl Benz) el automóvil ha sido mejoradopara hacer esta movilización más eficiente (mayor movilización por cantidad de energía). Por otra parte, el dominio del fenómeno eléctrico (electricidad) a partir del año 1882 significópara los hombres un gran avance en su técnica y ciencia y, por lo tanto, en sus condiciones devida. Este domino de la electricidad condujo la creación de dispositivos eléctricos y electrónicos.Entre estos dispositivos el más importante ha sido el transistor, el cual ha permitido la creación demaravillosos componentes tales como procesadores, microcontroladores, memorias, etc. Con la idea de hacer al auto un empleador eficiente de energía fueron integrados algunosdispositivos electrónicos en su estructura. Esto permitió el control eficiente y automático dealgunos de los procesos internos del automóvil. De este modo y para establecer una interfazhombre-auto fue creado el panel de instrumentos (en 1976 se vio por primera vez en un AstonMartin Lagonda; un auto de lujo con cuatro puertas). Desde 1929 la empresa VDO produjotacómetros; elementos principales de un panel de instrumentos. Esta empresa fue adquirida por la
  • 2multinacional Continental AG y hoy en día es ésta quien produce, entre otros instrumentos, estospaneles. Desde los años 70 gracias al avance en la tecnología de los circuitos integrados fue posibleproducir memorias semiconductoras. Desde entonces estos dispositivos han sido mejoradoscontinuamente. Hoy en día la memoria semiconductora más apreciada y empleada es la memoriaFlash. Ésta retiene información almacenada aún cuando no tenga alimentación eléctrica.Especialmente esta característica de las memorias Flash en combinación con las características delos microcontroladores para la automatización permiten hacer más eficientes y efectivos algunosde los procesos internos de un auto. Aplicaciones para ello son, entre otros, los paneles deinstrumentos fabricados por Continental AG. Para poder producir estos paneles la empresa debeemplear muchas disciplinas de la ciencia y de la técnica; el desarrollo de software es una de ellas.Ésta permite, por ejemplo, la creación de algoritmos para administrar y controlarautomáticamente las funciones de una memoria Flash directamente desde un microcontrolador.Continental AG. Descripción de la empresa El grupo Continental AG es una compañía que cotiza en bolsa perteneciente a la industriaautomotriz. Se posiciona entre los cinco primeros proveedores internacionales de componentespara vehículos y ocupa el segundo lugar en el mercado a nivel europeo. La empresa fue fundada en Hanóver, Alemania el 8 de octubre de 1871 como compañíaanónima bajo el nombre de “Compañía Continental Caotchouc y Gutta Percha”. ActualmenteContinental AG pertenece al “Grupo Schaeffler”, el cual es un consorcio alemán de construcciónde máquinas y proveedor para la industria automotriz. Es difícil no haber visto alguna vez en lavida el logotipo comercial de Continental AG mostrado en la figura i.1. El consorcio tiene (excluyendo a los pasantes) alrededor de 134.000 trabajadores, los cuales seencuentran empleados en más de 190 sucursales ubicadas en 39 países para producción,investigación y desarrollo. En el año 2009 la empresa obtuvo 20,096 millardos de euros con unpatrimonio de 4.061,7 millones de euros (Continental AG 2009b, p. U3).
  • 3 Figura i.1. Logotipo del consorcio Continental AG (Continental AG 2006, p. 1) La empresa Continental AG se posiciona en el primer lugar en el mundo en el área de latelemática y en la producción de sistemas de asistencia al conductor, sistemas de frenoshidráulicos, sistemas de suministro de combustible, dispositivos de control de bolsas de aire(Airbag), sistemas de suspensión neumática e instrumentación para vehículos (Continental AG2009b. p. 28). También la compañía se ubica tanto en el segundo lugar en la manufactura de sistemas defrenos electrónicos y de frenos de refuerzo como en el cuarto lugar en Europa en neumáticos paracamiones. En la industria de neumáticos es el líder del mercado europeo (Continental AG 2009b,p. 28). Además, los neumáticos para autos de Continental AG están en el puesto número cuatro anivel mundial y en Europa en el primer lugar. (Continental AG 2009b, p. 28). La visión del consorcio es hacer la movilidad individual más segura, más cómoda y mássostenible. Es decir, la empresa quiere mejorar junto con sus clientes a través de suscompetencias básicas, sus productos y sus servicios la seguridad, la comodidad de manejo y elplacer de conducir (Continental AG 2006, p. 4). La empresa se concentra en cinco puntos estratégicos claves (Continental AG 2010a, p. 5): 1. Desarrollo y fabricación de componentes, módulos y sistemas complejos. Para ello, ofrece servicios de ingeniería dependiendo de las necesidades del cliente. 2. Acción empresarial y gestión estricta de costos, incluso para las pequeñas unidades de negocios. 3. Compromiso con la protección del ambiente.
  • 4 4. Ocupación de posición de liderazgo por parte de las diversas áreas de negocio en sus mercados relevantes. 5. Limitar la dependencia del mercado automotor por medio de una ganancia de un 40 por ciento en sus ventas no provenientes de la industria automotriz. Continental AG adquirió el 10 de diciembre de 2007 la empresa Siemens VDO Automotive AGpor un precio de compra de 11,4 millardos de euros. Con esto el consorcio se ubicó dentro de lasprimeras cinco industrias de suministro automotriz (Continental AG 2010c, s.p.). Por otra parte,Continental AG fue en el 2006 y en el 2010 patrocinador de la FIFA™ (FédérationInternationale de Football Association esp. Federación Internacional de Fútbol Asociación) y enel 2008 de la UEFA (Union of European Football Associations esp. Unión de Asociaciones deFútbol Europeo) (Continental AG 2009b, p. 3). La empresa utiliza estas plataformas paraaumentar el grado de reconocimiento de su marca a nivel mundial. El consorcio se divide en dos áreas claves de negocio: Grupo de Productos de Caucho (RubberGroup) y Grupo Automotriz (Automotive Group). Éstas se descomponen en seis grandesdivisiones: El Grupo de Productos de Caucho en: - Passenger Car Tires (neumáticos para automóviles) - Commercial Vehicle Tires (neumáticos para camiones) - ContiTech AG (elastómeros técnicos) y el Grupo Automotriz en: - Chassis & Safety (chasis y seguridad) - Powertrain (línea de transmisión) - Interior (espacio interno). El Grupo Automotriz diseña y fabrica productos y sistemas innovadores para combinar lamovilidad individual y el placer de conducir con la seguridad de conducción, la responsabilidad
  • 5ambiental y la eficiencia económica. En el año 2009 el grupo obtuvo una facturación de 12.042,4millones de euros con 78.030 empleados (Continental AG 2009b, p. 29). El grupo está presente en aproximadamente 130 lugares. Los más importantes en Alemania son: - Ratisbona (sucursal central) - Schwalbach (desarrollo y administración) - Fráncfort del Meno - Villingen-Schwenningen - Karben - Babenhausen - Wetzlar - Bebra - Limbach-Oberfrohna - Dortmund También tiene sucursales en Austria, Suiza, República Checa, Rumania, Estados Unidos,México, Brasil, China, Corea, Singapur, Malasia, Tailandia, India y Australia. En la figura i.2 semuestra las localizaciones de Continental AG a nivel mundial. Figura i.2. Localización de las sucursales de Continental AG a nivel mundial (Wikipedia 2010, s.p.)
  • 6Interior La división Espacio Interno (Interior) se ocupa de la gestión de la información para unintercambio fluido de la misma entre las personas, vehículos, dispositivos móviles y el medioambiente. La división alcanzó en el año 2009 una facturación de 4,4 millardos de euros y tuvo26.710 empleados, los cuales laboraron en 60 sucursales en 22 países (Continental AG 2009b, p.34). La división está en la posición número uno del mundo en el segmento de automóviles por lasventas de instrumentos, sistemas telemáticos, sistemas de acceso y electrónica de carrocería.También es líder mundial en el sector de camiones por las ventas de tacógrafos, instrumentos yunidades a bordo aseguradas por satélite para el cobro de peaje. Además, la división ocupa en elsegmento de automóviles el segundo lugar a nivel mundial mediante ventas de pantallassecundarias y sistemas de monitoreo de presión de neumáticos (Continental AG 2010a, p. 24). La división manufactura los siguientes productos: - unidad completa de cabina de manejo - panel de instrumentos - sistemas de información al conductor - calefacción y control de aire acondicionado - tacógrafos - sistemas electrónicos de piloto automático - sistemas de peaje - sistemas de Infotainment (palabra compuesta: información y entretenimiento) y de telemática - sistemas de navegación y multimedia. Su visión se refleja en la frase “Always On” y consiste en crear el vehículo del futuro;(interconectado con la red de información), más amigable al usuario, más cómodo y másinteligente. Además, lograr cero emisiones de contaminación y cero accidentes mediante lagestión de información (Continental AG 2009c, p. 6). Para hacer esta visión realidad, la divisiónfacilita el control y optimización de los canales de información internos del vehículo a través dela integración de componentes en sistemas de orden superior. Provee nuevas funcionalidades yprestaciones de servicios mediante conexiones inteligentes y proporciona un manejo cómodo de
  • 7distintas informaciones. Especialmente es importante para la división la optimización de lagestión de la interfaz hombre-máquina. Su misión es crear en el vehículo la gestión de información para el conductor y losacompañantes. Para ello se deben llevar a cabo las siguientes actividades: - integración de componentes en sistemas para la gestión y optimización del flujo de información - oferta de nuevas funciones, las cuales corresponden a la conexión con el exterior y a nuevas prestaciones de servicios de procesamiento de comandos, prioridades y de presentación de información con HMIs (Human Machine Interface; esp. Interfaz Hombre-máquina) intuitivos y ergonómicos (Continental AG 2009c, p. 7). Su estrategia se encuentra en la frase: “nosotros le informamos, le conectamos al menor costo”y ésta se basa en las siguientes cuatro piedras angulares: - integración de componentes en sistemas de mayor orden para lograr ahorro de costos - oferta de una paleta de productos completa y amplia para la gestión de información en vehículos y así crear y ser un único punto de ventas como integrador de sistemas - oferta de comunicación inalámbrica o alámbrica así como de servicios adicionales para el conductor y pasajeros - desarrollo de HMIs más amigables al usuario, más ergonómicos y más seguros (Continental AG 2010g, s.p.). Sus sucursales en Alemania están en: Babenhausen, Dortmund, Ingolstadt, Karben, Nuremberg,Ratisbona y Villingen. Las sucursales europeas (sin incluir a Alemania) están: - En Reino Unido: Birmingham. - En República Checa: Brandýs y Frenštát. - En Hungría: Budapest. - En Francia: Hambach, Rambouillet y Toulouse. - En España: Rubí. - En Suiza: Rüthi.
  • 8 - En Rumania: Sibiu y Timişoara. - En la Federación Rusa: Chístopol.En América se encuentra la división espacio interior en: - Brasil: Gravataí, Guarulhos, Manaos, Resende y Sao Bernardo de Campo. - México: Guadalajara y Nogales. - Estados Unidos: Huntsville y Seguin.En Asia y Oceanía se encuentra en: - India: Bangalore, Manesar y Pune. - Australia: Campbell Field y Melbourne. - China: Changchun, Shanghái, Tianjin y Wuhu. - República Popular Democrática de Corea: Cheongwon e Inchon. - Malasia: Penang y Malasia Prai. - Filipinas: Manila (Continental AG 2009a, p. 88 f.).La división tiene como clientes principales las siguientes empresas automotrices: - General Motor (GM) - Fiat - Suzuki - Volkswagen (VW) - Bayerische Motoren Werke (BMW) - Daimler - Audi - Nissan International - Skoda - Seat - Entre otros (Continental AG 2008b, p. 9).
  • 9 Espacio Interno está dividida en las siguientes cuatro unidades de negocio (Business Units): - Business Unit Body & Security (Unidad de negocio Cuerpo y Seguridad) - Business Unit Commercial Vehicles & Aftermarket (Unidad de negocio Vehículos Comerciales y Mercado Secundario) - Business Unit Infotainment & Connectivity (Unidad de negocio de Info-Entretenimiento y Conectividad) - Business Unit Instrumentation & Driver Human Machine Interface (ID) (Unidad de negocio Instrumentación y Controlador de Interfaz Hombre-Máquina).Unidad de Negocio Instrumentación y Controlador de Interfaz Hombre-Máquina (ID) La unidad de negocio ID se ocupa de preparar la información en forma óptima y mediar entrelas necesidades del conductor y la situación (Continental AG 2010d, s.p.). Esta unidad de negocioes líder del mercado a nivel mundial en el área de panel de instrumentos y está en la segundaposición en el área de pantallas secundarias así como en el área de control de aire acondicionado.ID tiene más de 8.500 empleados, los cuales laboran en 26 sucursales distribuidos en todo elmundo. La sede principal de esta unidad de negocio se encuentra en Babenhausen, Alemania(Continental AG 2010b, p. 2). Los productos de la unidad de negocios son: - consola central integrada - panel de instrumentos - pantalla secundaria - placa frontal - controles en el techo - pantalla Head-Up - control de aire acondicionado - centro de conexión de dispositivos - módulo de cabina de vuelo (Continental AG 2010b, p. 3).
  • 10 La visión de la unidad de negocios ID es la de la división Espacio Interno; “Always On”. Sumisión está reflejada en la frase: “HMI en el vehículo orientado al usuario” y su estrategia escrear una ventaja competitiva sostenible a través de la producción de dispositivos innovadores,orientados al cliente, presencia regional y obtener resultados superiores en: - usabilidad (entrega de productos con HMI ergonómicos e intuitivos para la comodidad y seguridad) - innovación (con la ayuda de la más moderna tecnología y el establecimiento de tendencias) - integración (a través de la oferta de una cartera completa de productos y de soluciones integradas) - logro de capacidad competitiva (mediante la oferta de alta calidad con precios atractivos a nivel del mercado global) (Continental AG 2010b, p. 11). Esta unidad de negocio se fracciona en las siguientes ocho divisiones: - Sales & Portfolio (Ventas y Portafolio) - Research & Development (Investigación y Desarrollo) - Center of Competence (Centro de Competencia) - Manufacturing & Logistics (Manufactura y Logística) - Quality (Calidad) - Controlling (Control) - Purchasing (Compras) - Human Resources (Recursos Humanos). La división de Investigación y Desarrollo tiene como misión las siguientes: - asegurar el liderazgo tecnológico de la unidad de negocio ID a nivel mundial - maximizar las sinergias - utilizar los componentes comunes y reutilizarlos para reducir costos - minimizar el riesgo y el tiempo de desarrollo - optimizar las redes de computadoras de la división ID (Continental AG 2010e, s.p.).
  • 11 Investigación y Desarrollo está dividida en los siguientes ocho departamentos: - Application Development (Desarrollo de Aplicaciones) - Electronic Engineering (Ingeniería Electrónica) - Software (Software) - Electro Mechanics (Electro-mecánica) - Advanced Device Design (Diseño Avanzado de Dispositivo) - Display Center (Centro de Pantalla) - Sample Production (Producción de Prototipo) - Research & Development (Investigación y Desarrollo). La visión del departamento de Desarrollo de Software Básico, el cual pertenece aldepartamento de Software, es: - ser una autoridad central de tecnología de software para la unidad de negocio ID - asistir y mejorar el liderazgo tecnológico de la unidad ID a nivel mundial - lograr una alta calidad en software a nivel mundial (Continental AG 2010h, s.p.). Su misión es: - la entrega de marcos para el desarrollo de aplicaciones - el desarrollo de plataformas y de componentes comunes de software - el logro de desarrollo avanzado de nuevas tecnologías - la independencia mediante la utilización de tecnologías, herramientas y procesos para investigación y desarrollo - la formación y el apoyo a todas las sucursales a nivel mundial para la gestión autónoma de sus proyectos - la ejecución de gestión de calidad y seguridad (Continental AG 2010h, s.p.). El departamento de Desarrollo de Software Básico se divide a su vez en: - Quality Engineering (Ingeniería de Calidad) - Project Management & Diagnosis (Gerencia de Proyecto y Diagnóstico) - Operating System & Communications (Sistema Operativo y Comunicaciones) - Graphics & Architecture (Gráficos y Arquitectura).
  • 12 Gerencia de proyecto y Diagnóstico tiene como misión: - definir, supervisar y conducir los proyectos así como sus progresos - asumir responsabilidades de proyectos con respecto a sus plazos, presupuestos y resultados - responder a todas la preguntas de los clientes - definir paquetes de trabajo para el desarrollo y cumplimiento de plazos de terminación - gestión de riesgo y de crisis. Ésta se organiza en: - Grupo Flash - Grupo de Diagnóstico y Grupo de Prueba - Coordinación de la gerencia de proyecto.Grupo Flash El Grupo Flash se ocupa del desarrollo de software básico para distintas memorias Flash, esdecir, de la creación, desarrollo e implementación de sistemas Flashloader (cargador paramemorias Flash), módulos Flashloader no dependientes del hardware, controladores paramemorias no volátiles, controladores de datos (para EEPROM - Electrically ErasableProgrammable Read-Only Memory, esp. Memoria Eléctricamente Programable y Borrable deSólo Lectura – y para Flash) (vea sec.1.3), concepto de prueba para el final de la línea deproducción (ing. EOL ) y herramientas tanto Flash como EOL. Los productos antes mencionados se desarrollan para las siguientes plataformas: - NEC: V850 Dx3 / Fx3 / Dx4 - Fujitsu: MB91x467, MB90x360, MB91xxxx, JADE - Micronas: VMC, ARM - Toshiba: CAPM y CAPA. El objetivo principal del Grupo Flash es la creación de sistemas Flashloader, con los cuales sepuede reprogramar el Firmware (programa en firme) grabado en una memoria Flash de un
  • 13dispositivo de control. Principalmente se utilizan estos sistemas para la actualización del softwarede una memoria externa de un panel de instrumentos. Esta actualización se realiza en caso decambios o de presencia de errores en el Firmware. La actualización abarca el cambio de datosgráficos, datos de configuración, datos de programa y de aplicaciones. Los Flashloader se creantambién para ejecutar el reinicio del sistema y se almacenan en una región protegida de lamemoria Flash del panel de instrumentos.Antecedentes La empresa Continental AG posee un paquete de software o módulo llamado FLIB (FlashDriver Library, esp. Librería de Controlador Flash) (vea sec. 1.8.4) que se encarga del borrado yde la escritura de datos en memorias Flash NOR paralelas de la familia S29GL de la empresaSpansion (vea sec. 1.5) y de la familia M29W de la empresa Numonyx (vea sec. 1.6) ejecutadopor los microcontroladores TX4964FG-120 de Toshiba (vea sec. 1.2.1) y MB86R02 de Fujitsu(vea sec. 1.2.2). Este módulo fue creado por el Grupo Flash y su última actualización data del año2007 (último cambio: 3 de octubre de 2007). El paquete FLIB consta, hasta su últimaactualización, de esencialmente siete funciones externas: - FLIB_vInit - FLIB_u8StartEraseChip - FLIB_u8StartEraseSector - FLIB_u8StartWriteData - FLIB_u8StartWriteBuffer - FLIB_u8StatusCheck - FLIB_u8GetFlashType Esta última función es fundamental para el reconocimiento automático de cualquier memoriaFlash NOR paralela (en adelante memoria Flash) instalada en el hardware, es decir, en el panel deinstrumentos (vea sec. 1.1). Sin embargo, esta aplicación aún no está implementada.
  • 14 La función FLIB_vInit se encarga de la inicialización del módulo FLIB, es decir, delestablecimiento de variables y estados de control a valores iniciales y de la colocación de lamemoria Flash en estado de lectura. FLIB_u8StartEraseChip se ocupa de borrar todos los datos que se encuentran almacenados enla memoria Flash (borra todo el chip). FLIB_u8StartEraseSector borra el sector que es indicado por su dirección. Esta función sóloborra un sector por llamada. FLIB_u8StartWriteData escribe una palabra o word en una ubicación de la memoria Flashdeterminada mediante su dirección. Esta función escribe una palabra por llamada. FLIB_u8StartWriteBuffer es una mejora de la función anterior y se ocupa de la escritura de unconjunto de palabras contenidas en un búfer de longitud variable. Esta escritura se realiza a partirde una ubicación inicial en la memoria Flash determinada por su dirección. Esta función escribeun grupo de datos (limitado por la capacidad de almacenamiento en memoria RAM - RandomAccess Memory, esp. Memoria de acceso aleatorio) por llamada. En comparación con la funciónFLIB_u8StartWriteData la operación FLIB_u8StartWriteBuffer se realiza con mayor rapidez. FLIB_u8GetFlashType obtiene una porción de la información adicional que ofrece la memoriaFlash instalada (a través del Common Flash Memory Interface; esp. Interfaz común de memoriaFlash) para aplicaciones de autoreconocimiento de hardware. FLIB_u8StatusCheck entrega el estado actual de la operación inicializada (borrado de chip,borrado de sector, escritura de dato, escritura mediante búfer y obtención del tipo de memoriaFlash). Es la función más importante del módulo FLIB, ya que coordina las operaciones quepueden ser ejecutadas por la memoria Flash en un momento determinado y, además, controla lasoperaciones que no pueden ser ejecutadas en una sola llamada a los algoritmos embebidos de la
  • 15memoria Flash (vea sec. 1.5 y 1.6). Como ejemplo de estas operaciones se encuentra la escrituramediante búfer (FLIB_u8StartWriteBuffer). Entre los dos métodos de observación del estado de ejecución de las operaciones embebidas dela memoria Flash (“Toggle Bit I” o “DQ6” y “Data# Polling” o “DQ7”) (vea sec. 1.5 y 1.6) fueelegido el método “DQ6”, es decir, el módulo FLIB fue implementado con base al método“Toggle Bit I”. Sin embargo, el Grupo Flash no conocía con precisión el desempeño temporalreal de las operaciones de borrado y de escritura del módulo FLIB creado. Por ello, existía laincertidumbre acerca del método más rápido (¿“DQ6” o “DQ7”?) de ejecución de las operacionesde borrado y de escritura en la memoria Flash. Además, el Grupo Flash tenía presente que el módulo FLIB requería de una actualización paraque éste se adaptase a las mejoras y cambios tecnológicos presentes en los nuevos modelos dememoria Flash. Estas mejoras, entre otras, consisten en procedimientos más rápidos de borrado yde escritura de datos (borrado de múltiples sectores y escritura con búfer ampliado) y el añadidode operaciones más avanzadas, tales como suspensión y reanudación de escritura, suspensión yreanudación de borrado, modo de autoselección e implementación del sector de silicio asegurado.Motivación Para reducir los costos en la producción y para colocar los productos en el mercado en unmenor tiempo la empresa Continental AG requiere de la reducción de la duración de lareprogramación del Firmware (programa en firme) de sus dispositivos en la etapa final de la líneade producción. Además, el consorcio para mantenerse en una posición competitiva y resultarexitoso ante las fuerzas del mercado necesita de la adaptación y mejora de los controladoresexistentes para explotar las capacidades que ofrecen las nuevas tecnologías y familias dememorias Flash.
  • 16Objetivo general Evaluar, optimizar y ampliar el controlador de bajo nivel para memorias Flash NOR paralelas(módulo FLIB) de la empresa Continental AG en Babenhausen – Alemania.Objetivos específicos - Determinar los tiempos de ejecución de las operaciones de borrado y de escritura de la memoria Flash NOR paralela externa de un panel de instrumentos. - Reducir tanto el tiempo de ejecución de los procedimientos de borrado y de escritura así como reducir el tamaño de código de las funciones del módulo FLIB. - Crear e implementar nuevas funciones en el módulo FLIB de acuerdo con las capacidades de las memorias Flash NOR paralelas externas. - Adaptar las funciones existentes en el módulo FLIB y en módulos de orden superior según las nuevas funciones creadas e implementadas en el módulo FLIB. - Probar y validar las nuevas funciones creadas mediante el método propio de la empresa; el SMK (Software Method Kit; esp. Metodología para el Proceso de Desarrollo de Software). La pasantía se realizó en el Grupo Flash, el cual pertenece al departamento de Software de ladivisión de Investigación y Desarrollo y, a su vez, ésta última se encuentra en la Unidad deNegocio Instrumentación y Controlador de Interfaz Hombre-Máquina (vea fig. i.3). La pasantíatuvo una duración de 20 semanas, con 35 horas cada una, durante cinco días a la semana. En este informe de pasantía se presentan las actividades llevadas a cabo para lograr losobjetivos antes mencionados. De igual modo, se muestran los resultados de las medicionesrealizadas, así como las nuevas funciones creadas y, finalmente, se indican las compatibilidades ycambios necesarios para ejecutar la migración de la tecnología “MirrorBit®” a “MirrorBitEclipse™” según el plan de investigación y desarrollo del Grupo Flash para el año 2011.
  • 17 Este trabajo está dividido principalmente en cuatro bloques: - Fundamentos teóricos necesarios para entender las actividades llevadas a cabo durante la pasantía (Capítulo I: Marco Teórico). - Fundamentos metodológicos empleados para realizar las correspondientes mediciones y la creación de nuevas funciones (Capítulo II: Marco Metodológico). - Resultados y análisis de las mediciones de evaluación de funcionamiento, creación de nuevas funciones y proceso de prueba. (Capítulo III: Módulo FLIB. Evaluación, Ampliación y Pruebas). - Análisis para la migración desde una tecnología actual de memoria Flash hacia una más avanzada (Capítulo IV: Análisis para la Migración de la Tecnología MirrorBit® a MirrorBit Eclipse™). Figura i.3. Organigrama del puesto de trabajo durante la pasantía A continuación, el primer capítulo; necesario para entender las actividades realizadas durante lapasantía.
  • CAPITULO I MARCO TEÓRICO En este capítulo se explican los conceptos y definiciones utilizadas durante la ejecución de lapasantía, tales como: panel de instrumentos, microcontrolador, memoria Flash, arquitectura dememoria Flash, SMK (Software Method Kit; esp. Metodología para el Proceso de Desarrollo deSoftware) y Flashloader (cargador Flash). También se presentan las características decomponentes específicos, por ejemplo, de los microcontroladores de las empresas Toshiba yFujitsu, de las memorias Flash de las compañías Spansion y Numonyx y de los distintos móduloselementales para la creación de un Flashloader (MAIN, FMAIN, FIOL y FLIB).1.1. Panel de Instrumentos El Panel de Instrumentos es un bloque de instrumentos de un vehículo que normalmenteconsiste en una combinación de tacómetro, odómetro, velocímetro, indicador de combustible,medidor de la temperatura del material refrigerante, luces de control e indicador de las señales degiro. Hoy en día los indicadores de los paneles de instrumentos son eléctricos y para controlarlos esnecesario el uso de pequeñas computadoras. La introducción de microprocesadores ymicrocontroladores permite la adición de pantallas de cristal líquido, pantallas de vista frontal,presentaciones gráficas, funcionalidades de computador a bordo, posibilidad de salidas o señalesacústicas, inmovilizador en el panel de instrumentos así como la evaluación de información de lacarga del motor y de la distancia de recorrido para indicarle al conductor acerca el estado de unainspección pasada. El panel de instrumentos, como dispositivo de control, está conectado al Bus-CAN (Controller Area Network; esp. Controlador de Red de Área) del vehículo y recolecta coneste bus informaciones de los dispositivos de control conectados, tales como: control del
  • 19motor, sistema de antibloqueo y programa de estabilidad electrónico. La figura 1.1 muestra elaspecto de un panel de instrumentos típico. Figura 1.1. Aspecto de un panel de instrumentos típico (Daimler AG 2008, s.p.)1.2. Microcontrolador Según Brinkschulte y Ungerer un microcontrolador es “un microcomputador en un chip conperiféricos especiales para tareas de control o de comunicación a la medida” (Brinkschulte yUngerer 2007, p. 73, traducción del autor). Son semiconductores que contienen un procesador yal menos funciones periféricas en un chip. Normalmente se encuentra la memoria de trabajo y deprograma en parte o completamente en el mismo chip. Los microcontroladores modernosconsisten a menudo de funciones periféricas complejas como por ejemplo interfaz CAN, LIN(Local Interconnect Network; esp. Red de Interconexión Local), USB (Universal Serial Bus; esp.Bus Serial Universal), I2C (Inter-Integrated Circuit; esp. Circuito Inter-integrado), SPI (SerialPeripheral Interface; esp. Interfaz Periférica Serial), serial o Ethernet, salidas de modulación deancho de pulso, controlador LCD (Liquid Crystal Display; esp. Pantalla de Cristal Líquido) yfinalmente conversor analógico-digital (Roth 1998). La figura 1.2 ofrece una visión general de laestructura básica de un microcontrolador.1.2.1. Microcontrolador Toshiba TX4964FG-120 El TX4964FG-120 (corto TX4964) es un miembro de la familia del sistema de 64 bits RISC(Reduced Instruction Set Computer; esp. Computador de Conjunto de Instrucciones Reducidas)de Toshiba, el cual fue desarrollado para un amplio espectro de aplicaciones, por ejemplo para:
  • 20 - sistema de información al conductor - sistema de infotainment (información y entretenimiento) en el vehículo - sistema de navegación Figura 1.2. Estructura básica de un microcontrolador (modificada de Brinkschulte y Ungerer 2007, p. 74) TX4964 se basa sobre el núcleo TX49/L4 de Toshiba e incluye circuitos periféricos tales como:controlador gráfico para pantalla, memoria embebida, acelerador gráfico, digitalizador de video,controlador DMA (Direct Memory Access; esp. Acceso Directo a Memoria), varios puertos decomunicación serial, puerto de Bus-CAN, temporizador de intervalos, controlador de bus externo(para memoria Flash NOR; vea sec. 1.4.1 y SRAM; Static Random Access Memory, esp.Memoria Estática de Acceso Aleatorio) y puertos de entrada y de salida de propósito general(I/Os).1.2.2. Microcontrolador Fujitsu MB86R02 El MB86R02 “Jade D” es un “sistema en un chip”, el cual contiene un procesador centralARM926EJ-S y un controlador central de gráficos 2D/3D (dos dimensiones y tres dimensiones)de pantalla MB86296 (CORAL-PA). Jade D tiene una arquitectura LSI (Large Scale Integration,esp. Integración a muy gran escala), con el cual incluye en un sólo chip varios I/Os para
  • 21aplicación automotriz, por ejemplo CAN, MediaLB, etc., y un controlador de bus externo (paramemorias Flash NOR, vea sec. 1.4.1 y RAM; Random Access Memory, esp. Memoria de AccesoAleatorio). El sistema ofrece una variedad de soluciones para sistemas gráficos y un enlace“Gigabit Pixel” (nuevo estándar automotriz) para aplicaciones automovilísticas.1.3. Memoria Flash Las memorias Flash son chips de almacenamiento digital no volátil, es decir, mantienen losdatos aún cuando no se les apliquen una alimentación eléctrica. Están compuestas por un arreglode células de almacenamiento, las cuales están divididas en una serie de bloques consecutivos.Estos bloques se componen de una cierta cantidad de páginas (page) y cada página se consideracomo un grupo consecutivo de células de almacenamiento. Estos dispositivos son conocidostambién como EEPROM (Electrically Erasable Programmable Read-Only Memory, esp.Memoria Eléctricamente Programable y Borrable de Sólo Lectura) de borrado rápido debido aque pueden escribir (almacenar) y borrar datos en su interior eléctricamente y, además, elprocedimiento de borrado es mucho más rápido que el de los anteriores EPROMs (ErasableProgrammable Read-Only Memory, esp. Memoria Borrable y Programable de Sólo Lectura) y elde los EEPROMs. La operación de lectura y escritura de datos en estas memorias se realizadentro de páginas determinadas pero no es posible una sobre escritura de datos en una página.Para ello, es necesario primero borrar un bloque completo, en el cual se encuentra la página, yluego escribir en este bloque los nuevos datos. A menudo se utilizan las memorias Flash para elalmacenamiento permanente de Firmware (programa en firme) en los dispositivos conmicrocontrolador, por ejemplo, en sistemas embebidos, en los cuales se utilizan datos deconfiguración, de almacenamiento o programas. Estas memorias se dividen, según el tipo de acceso, en acceso aleatorio y secuencial. Lasmemorias Flash de acceso aleatorio permiten acceder a una determinada célula dealmacenamiento mediante su dirección de memoria. Comúnmente corresponde esta dirección conuna palabra (word) y no con una célula de almacenamiento, es decir, con un bit.
  • 22 Las memorias Flash secuenciales permiten una transmisión secuencial de datos, es decir, unbit después de otro en lugar de una emisión paralela de 8, 16 o 32 bits y un acceso a una direcciónde un área completo de memoria, en el cual se puede ejecutar una lectura o escritura. Estopermite tener menos conexiones y pines por chip. Con ello se simplifica el diseño, se reducen loscostos y factores de forma en distintas aplicaciones embebidas (Spansion LLC 2008c, p. 1). Lafigura 1.3 muestra una comparación entre las memorias Flash paralelas y seriales. Figura 1.3. Comparación entre una memoria Flash paralela y una serial (modificada de Spansion LLC 2008c, p. 1)1.4. Arquitecturas de Memoria Flash Las arquitecturas de memoria Flash de uso más frecuente son “NOR” y “NAND”, las cuales sepresentan en detalle en esta sección. La clasificación de las memorias Flash se realiza conrespecto al tipo de conexión interna de las células de almacenamiento y, además, a la densidad dealmacenamiento y a la velocidad de acceso.1.4.1. NOR NOR es una de las más importantes arquitecturas dominantes de memoria Flash. Es un tipo dearquitectura de memoria Flash que consta de un diseño de puerta NOR (vea fig. 1.4 y ApéndiceA). Con esta arquitectura es posible tener acceso directo a todos los bytes para la lectura o
  • 23escritura. Durante la escritura sólo se permite un cambio de bits del “uno” lógico al “cero”lógico. El procedimiento de borrado se aplica sólo para un bloque completo, es decir, todas lascélulas de almacenamiento se colocan, dentro de un bloque y a través de un solo comando deborrado, de “cero” lógico a “uno” lógico. El tamaño de un bloque varía de un dispositivo a otropero a veces varía aún dentro de un mismo dispositivo. Los sectores pequeños, que acompañan aotros sectores grandes dentro del dispositivo, son llamados sectores de “boot” y se ubicancomúnmente en la región inferior o superior del arreglo de memoria. NOR se utiliza típicamente para el almacenamiento y ejecución de código. Posee al momentode entrega del dispositivo el 100 por ciento de los bits en buen estado, permite la ejecución decódigo directamente desde la memoria Flash NOR y realiza más de 100.000 ciclos de borrado yescritura sin daño a las células de almacenamiento (Spansion LLC 2005a, p. 3).1.4.2. NAND NAND es también una de las arquitecturas de memoria Flash dominantes y describe un tipo dearquitectura de memoria Flash que consta de un diseño de puerta NAND (vea fig. 1.4 y ApéndiceA). Este tipo de memoria Flash se basa en una composición ordenada en serie de cada célula dealmacenamiento y se utiliza comúnmente para guardar grandes cantidades de datos. Como en elcaso de las memorias Flash de arquitectura NOR, las memorias Flash NAND se componentambién de páginas, las cuales están agrupadas en bloques. Para reescribir una página, es decir,colocar los bits de una página de “1” a “0” es necesario primero borrar el sector en el cual seencuentra la página. A menudo ocurre que al momento de la entrega del dispositivo existanbloques defectuosos llamados “Bad Blocks”. Estos deben ser considerados posteriormentemediante software controladores, es decir, estos errores deben ser al menos detectados y en loposible corregidos por vía de software. Sin embargo, se garantiza que en el primer bloque de lamemoria se realice una cantidad determinada de ciclos de lectura, escritura y borrado sin error.Esto permite el almacenamiento de datos importantes de inicialización en áreas fijas del primersector y los demás datos menos importantes mantenerlos en áreas variables.
  • 24 Esta arquitectura requiere de un acceso relativamente largo para la primera lectura delarreglo de la memoria. Posee al momento de la entrega del dispositivo un 98 por ciento de bits enbuen estado si la memoria es entregada con errores adicionales de bits. Debido a estos errores esnecesario el uso de mecanismos de corrección de errores (ECC; Error Correction Code, esp.Código de Corrección de Error). En comparación con la arquitectura NOR, la arquitectura NANDes mucho más rápida en los procedimientos de escritura y borrado y el costo por bit es muchomenor que el de la arquitectura NOR (Spansion LLC 2005a, p. 3). Figura 1.4. Arquitectura del arreglo Flash NOR y NAND (modificada de Nikkei Electronics Asia 2005, s.p.)1.5. Memoria Flash Spansion El dispositivo S29GL-N pertenece a la familia de memorias Flash que funcionan sólo con unaalimentación eléctrica de 3 V simple (monopolar) y son fabricados con la tecnología MirrorBit®de 110 nm (vea sec. 4.1). El S29GL512N es una memoria Flash de 512 Mbits, el cual estáorganizado en 32 Mwords o 64 Mbytes. El dispositivo tiene un bus de datos de 16 bits que puedeser usado como un bus de 8 bits mediante el pin “BYTE#” (vea fig. 1.5). La memoria Flash es
  • 25ofrecida en un paquete TSOP (Thin Small-Outline Package; esp. Paquete Fino de ContornoPequeño) de 56 pines y posee pines separados de control tales como: “Chip Enable” (CE#),“Write Enable” (WE#) y “Output Enable” (OE#) (vea fig. 1.5). El dispositivo es completamentecompatible con el conjunto de comando estándar para memoria Flash de alimentación simple“JEDEC” (original de Joint Electron Tube Engineering Council esp. Consejo de Ingeniería deDispositivo Electrónico de Juntura). Los comandos se envían en el ciclo de escritura estándar delmicrocontrolador a la memoria Flash. Durante el ciclo de escritura se retienen las direcciones,datos y comandos de operación de borrado, procedimientos embebidos de borrado y escritura.Éstos últimos se inician mediante secuencias de comando y son ejecutados por un controladorembebido en la memoria Flash. Una vez iniciado un proceso embebido de borrado y de escritura,el sistema anfitrión debe observar sólo los pines o bits de estado “DQ7” o “DQ6” o la salida (pin)“RY/BY#” para determinar si el proceso ha finalizado o no (vea fig. 1.5). La funcionalidad“Unlock Bypass Mode” reduce la secuencia de comandos para facilitar las operaciones. También el dispositivo posee la funcionalidad “Erase Suspend/Erase resume” (suspensión deborrado/reanudación de borrado). Ésta permite que el sistema anfitrión suspenda una operaciónde borrado para ejecutar un proceso de lectura o de escritura en los sectores no suspendidos paraluego continuar y finalizar con la operación de borrado. De modo semejante, la memoria Flashtiene la funcionalidad “Program Suspend/Program Resume” (suspensión deescritura/reanudación de escritura), la cual, análogo al caso anterior, suspende una operación deescritura para ejecutar una operación de lectura en los sectores no suspendidos y luego continuary terminar con la operación de escritura. Además, el dispositivo ofrece una región de sector desilicio protegido (Secured Silicon Sector Region), la cual posee una capacidad de almacenamientode 128 words/256 bytes, en donde se pueden proteger datos o código de manera permanente.También el dispositivo Flash posee el modo “auto-selección” (Autoselect), en el cual se ofrece laidentificación del fabricante, del dispositivo y de verificación de protección de grupo de sectoresa través de salida de código de reconocimiento en los pines DQ7-DQ0 (vea fig. 1.5). Esto es útilpara adaptar automáticamente un dispositivo Flash con su correspondiente algoritmo deprogramación.
  • 261.6. Memoria Flash Numonyx El M29W128GH/GL es una memoria Flash de 128 Mbits (8 Mbits en modo word o 16 Mbitsen modo byte). El dispositivo requiere de una alimentación eléctrica simple (monopolar) entre 2,7y 3,6 V. Como en el caso de Spansion, el arreglo de memoria está dividido en unidades debloques de 64 Kwords/128 Kbytes. También necesita de comandos para controlar susoperaciones, éstos son compatibles con los estándares JEDEC. Las señales “Chip Enable”,“Output Enable” y “Write Enable” (vea fig. 1.6) controlan la operación de bus del dispositivo.La memoria Flash utiliza la funcionalidad “write to buffer” (esp. escritura con búfer) paramejorar la velocidad de escritura a través de un búfer de 32 words/64 bytes. En contraposicióncon la memoria Flash de Spansion, esta memoria Flash de Numonyx tiene la funcionalidad“enhanced buffered program” (esp. escritura a través de búfer ampliado). Ésta permite acelerarla velocidad de escritura (sólo en modo word), con lo cual se pueden escribir 256 words en unasola operación de escritura con búfer ampliado. Figura 1.5. Diagrama de una memoria Flash S29GL512N de Spansion (Spansion LLC 2008a, p. 12) Este dispositivo posee también –análogo a la región de sector de silicio protegido (SecuredSilicon Sector Region) de Spansion – un bloque adicional llamado “bloque ampliado” con unacapacidad de almacenamiento de 128 words o 256 bytes. Esta memoria se ofrece en paquete
  • 27TSOP de 56 pines y también soporta tanto las funcionalidades “Erase suspend/Erase resume”y “Program suspend/Program resume” como los bits de estados “DQ7”, “DQ6”, supervisión delpin “RY/BY#”, modo “Unlock Bypass” y modo “Autoselect”. Figura 1.6. Diagrama de una memoria Flash M29W128GH/GL de Numonyx (Numonyx 2009, p. 9)1.7. SMK: Metodología para el Proceso de Desarrollo de Software SMK es una serie de métodos para el desarrollo de software que utiliza el consocio ContinentalAG. SMK da líneas directivas para el proceso de desarrollo de software y tiene como propósitotransformar un conjunto de requerimientos en un producto de software funcional o en un sistemabasado en software. El producto o sistema desarrollado debe satisfacer los requisitos dado por elcliente. Como resultado de una aplicación exitosa de este proceso: - se crea un sistema de software - se desarrolla productos intermedios de trabajo, los cuales muestran que el producto final satisface los requerimientos - se logra una correspondencia entre las especificaciones y el diseño - se demuestra (evidencia a través de pruebas) que el producto final satisface los requerimientos (Continental AG 2010f, s.p.).
  • 28 Para lograr estos objetivos se utiliza lo siguiente: - plantillas de documentos y aplicaciones UML (Unified Modeling Language, esp. Lenguaje Unificado de Modelación) - flujos de trabajo - directivas de calidad para creación y aplicación. Según el SMK, la documentación se basa sobre los requerimientos del software, a partir de loscuales se deriva un primer diseño de sistema de software. Este diseño se refina hasta el nivel demódulos para probar la exactitud y calidad de la solución. Una vez que el sistema y subsistemaslleguen a este nivel modular se debe crear la especificación del módulo de software. Al finalizarel código (programa) del módulo se publica la especificación del módulo de software y luego seprueba éste mediante el módulo de prueba correspondiente. Esta prueba comprende planificación,diseño, implementación, ejecución, mantenimiento, reutilización de pruebas, documentación depruebas y entorno de prueba. El propósito de estas pruebas es encontrar errores y verificar lacalidad pero no identifica la ausencia de errores ni tampoco se ocupa de la búsqueda yeliminación de errores (depuración) (Continental AG 2010f, s.p.). La figura 1.7 muestra cómo seejecuta el proceso de prueba en el consocio Continental AG. Figura 1.7. Proceso de prueba (modificada de Continental AG 2010f, s.p.) El proceso de prueba consta de cuatro niveles: - prueba de módulo - prueba de integración
  • 29 - prueba de sistema de software - validación de producto Este proceso debe ejecutarse paralelo al desarrollo de software como se muestra en la figura1.8, en la cual se muestra enmarcado en el recuadro rojo el nivel de prueba utilizado para elmódulo FLIB, vea la sección 1.8.4. Figura 1.8. Proceso de prueba para el desarrollo de software (modificada de Continental AG 2010f s.p.) El proceso de prueba debe ser sistemático, bien documentado y reproducible para obtenerresultados confiables (Continental AG 2010f, s.p.). Según el SMK se deben implementar para losniveles de prueba las siguientes líneas directivas: - una especificación de prueba debe ser creada con definiciones detalladas de cada caso de prueba - la calidad de los casos de prueba es más importante que la cantidad. El diseño de los casos de prueba determina la naturaleza, el alcance y la calidad de las mismas - se debe definir la configuración, las entradas de la prueba y los resultados esperados para cada una - se debe ejecutar una revisión de cada especificación de prueba
  • 30 - luego de la ejecución de las pruebas deben registrarse los resultados y, si es posible, el tiempo de preparación y ejecución de las mismas. Se debe medir también la cobertura estructural de la prueba - se debe comparar los resultados de las pruebas con los resultados esperados de las mismas - se debe reportar los resultados de las pruebas en el capítulo “resultados de pruebas” del informe de prueba.1.8. Flashloader Un Flashloader (cargador Flash) es una aplicación con la cual el cliente puede actualizar elFirmware de su dispositivo. Las actualizaciones de Firmware se realizan por diversas razonestales como: corrección de errores, modificaciones según los requerimientos del cliente oexpansiones de funcionalidades. En casos normales un Flashloader está compuesto de variosmódulos que dependen de proyectos específicos. En el grupo Flash de la unidad de negocio ID, elsistema de Flashloader se compone de los módulos FMAIN, FIOL y, para las memorias Flashparalelas NOR, del módulo FLIB (vea fig. 1.9, sec. 1.8.1, 1.8.2, 1.8.3 y 1.8.4). Esta estructuramodular permite rastrear los errores y deficiencias del sistema a módulos específico, lo quesignifica una limitación del alcance para una búsqueda detallada de un mensaje de error. El cargador Flash actualiza normalmente datos de programa, aplicaciones, datos gráficos, datosde configuración y también ejecuta el reinicio del sistema. El Flashloader se almacena en un áreaprotegido de la memoria Flash externa del instrumento y la transmisión de datos mediante elcargador Flash para el almacenamiento en la memoria Flash se realiza a través de un “Tester”(probador) o de otra herramienta computarizada. El sistema de Flashloader tiene una arquitectura de lazo sencillo y no se basa ni en un OSEK(Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug, esp. SistemaAbierto y su Interfaz para la Electrónica en el Vehículo) ni en interrupciones. Se construye apartir de un “FCS” (Flash Component System, esp. Sistema de Componente Flash), en donde el
  • 31FCS contiene un lazo sencillo de módulos de software. Los módulos de este sistemaFlashloader son: - controlador para memoria AMD (Advanced Micro Devices Inc.) / Spansion (tipos serial y paralelo) - controlador para memoria I2C (Inter-Integrated Circuit, esp. Circuito Inter-integrado) y para SPI-EEPROMs (EEPROM con interfaz periférica serial) - controlador CAN y UART (Universal Asynchronous Receiver Transmitter, esp. Trasmisor y Receptor Asíncrono Universal) - protocolos de comunicación - protocolos de datos - temporizador, gestión de versión y de partición - compresión y seguridad de datos. El sistema Flashloader completo se presenta en la figura 1.9. Allí se muestra tanto los módulosprincipales que se almacenan en la memoria externa del microcontrolador como la interfaz entreel nivel de hardware y software. Los módulos componentes del sistema Flashloader se presentanseguidamente.1.8.1. MAIN (Programa Principal) Este es el programa principal del sistema de software completo del panel de instrumentos. Esllamado una sola vez luego de un reinicio (reset). En casos normales no debe retornar ningúnvalor (return: void) y tampoco debe finalizar (lazo infinito). Es completamente configurable ypermite adaptar las actividades principales del sistema. Forma parte del proceso de arranque“boot” e inicia la operación del sistema mediante la función FMAIN_vMain.1.8.2. FMAIN (Control Principal del Cargador Flash) El módulo FMAIN (Flashloader Main Control, esp. Control Principal del Cargador Flash)contiene los procesos principales del Flashloader. En este módulo se ejecuta la inicialización yactivación de los distintos tipos de Loaders (cargadores).
  • 32 Figura 1.9. Sistema de Flashloader1.8.3. FIOL (Librería de Entrada y Salida del Cargador Flash) El módulo FIOL (Flashloader Input/Output Library, esp. Librería de Entrada y Salida delCargador Flash) ofrece interfaces para los controladores de cargador Flash. El objetivo de estemódulo es mantener el contexto de ejecución del Flashloader cuando la memoria se encuentraocupada (en ejecución de una operación embebida de memoria). Esto se realiza mediante unallamada cíclica a una aplicación de usuario dada en forma de apuntador a función. Con esto esposible, mientras los controladores están activos, enviar y recibir mensajes, desencadenar elwatchdog o mantener la marca de tiempo de temporizadores de software (Continental AG 2007,p. 6). Este módulo soporta los siguientes controladores con interfaces de lectura, escritura, borrado yde funciones avanzadas: - controlador Flash FLIB (trabaja con NVM - Non Volatile Memory, esp. Memoria No Volátil - externas)
  • 33 - controlador Flash SELFLIB (trabaja con NVM internas) - controlador Flash FSEF (trabaja con memorias NVM externas seriales) - controlador EEPROM FLEDS y FLEDI (trabaja con NVM externas) - calculador CRC (Cyclic Redundancy Check, esp. Comprobación de Redundancia Cíclica) - copia de memoria RAM (copiar de la memoria externa a RAM) - algoritmos de encriptación (Continental AG 2007, p. 6).1.8.4. FLIB (Librería de Controlador Flash) FLIB (Flash Driver Library, esp. Librería de Controlador Flash) es un módulo que ofrece lasfuncionalidades para escribir y borrar datos en una memoria Flash NOR paralela externa. Estasdos operaciones se ejecutan en segundo plano. Es necesario una verificación cíclica del estado dela memoria antes de iniciar una nueva operación. Esta verificación se realiza mediante unafunción llamada FLIB_u8StatusCheck. Adicionalmente, el módulo emplea en parte la interfazcomún de memoria Flash CFI (Common Flash Memory Interface) para acceder a las propiedadesde las memorias Flash. Estas corresponden, ente otras, a las cadenas de caracteres “QRY” y“PRI” del “Query Unique ASCII” (interrogante única ASCII), la capacidad de almacenamientodel dispositivo, la cantidad de regiones de bloques de borrado dentro del dispositivo einformación de cada región. El módulo requiere que éste sea ejecutado en RAM cuando la región,en la cual éste está grabado va a ser borrada. Cada operación de borrado o de escritura se puede ejecutar si el módulo FLIB es inicializado através de una llamada a la función FLIB_vInit (función de inicialización del módulo). Una vezque una operación se ha iniciado se puede verificar su progreso mediante llamadas cíclicas a lafunción FLIB_u8StatusCheck. Esta función determina el estado de la operación en ejecución ylleva a cabo los procedimientos necesarios para completarla y finalizarla. Esto se realiza debido aque no todas las operaciones del módulo FLIB pueden ejecutarse con una sola llamada en lamemoria Flash mediante sus algoritmos internos embebidos. En caso de ocurrir algún errordurante la ejecución de una operación, ésta se interrumpe inmediatamente y se envía un mensajede error. Si la operación finaliza exitosamente se envía un mensaje de éxito.
  • CAPITULO II MARCO METODOLÓGICO En este capítulo se explican detalladamente tanto los componentes del ambiente de desarrollo(dispositivo de depuración, analizador lógico y entorno de desarrollo integrado, ing. IDE;Integrated Development Environment) como la interacción de estos elementos, los objetivos delas tareas especificas para lograr los objetivos específicos de la pasantía y así alcanzar el objetivogeneral de la misma, los procedimientos de medidas y de recopilación de datos, las característicasde las memorias Flash utilizadas y los métodos de prueba y validación.2.1 Ambiente de Desarrollo Para llevar a cabo las actividades de desarrollo del módulo FLIB se emplearon los siguientesinstrumentos: - computador: para la expansión del módulo FLIB para memorias Flash NOR paralelas mediante los programas Microsoft Visual C++® 6.0 y Microsoft Visual Studio 2005 (vea sec. 2.4); para el desarrollo refinado del módulo mediante el depurador (debugger) Green Hills instalado en el computador (vea sec. 2.2) y para el almacenamiento del software en la memoria Flash externa integrada en el panel de instrumentos. - Green Hills Slingshot™: interfaz de comunicación física (eléctrica) entre el computador y el microcontrolador del panel de instrumentos (vea sec. 2.2). - Analizador lógico Intronix Logicport de 34 canales: un analizador lógico para observar y almacenar los valores lógicos de conexiones eléctricas específicas (pines) con respecto al tiempo. Con él se pudieron realizar análisis de la ejecución del módulo FLIB para la optimización (disminución) del tiempo de corrida de sus procedimientos de borrado y de escritura (vea sec. 2.3).
  • 35 En la figura 2.1 se presenta la interacción y conexión física (eléctrica) entre los instrumentosantes señalados. Allí también se puede observar la utilización de dos paneles de instrumentos; auno de ellos se conectó con el analizador lógico para poder determinar los tiempos de losprocedimientos de borrado y de escritura del módulo FLIB en una configuración típica, entreotros elementos, microcontrolador-memoria Flash externa. Al otro panel de instrumentos no seconectó con el analizador lógico ya que este panel fue diseñado en una configuraciónmicrocontrolador-memoria Flash externa más sencilla y al mismo tiempo más limitada y,además, el objetivo con este panel fue otro; implementar en el módulo FLIB la funcionalidad“Enhanced Buffered Write” esp. escritura a través de búfer ampliado (vea sec. 3.2.6). Figura 2.1. Ambiente de desarrollo
  • 362.2 Depurador Green Hills Slingshot™ El dispositivo Green Hills Slingshot™ fue empleado como depurador, de hecho, es unhardware depurador avanzado. Permite cargar códigos o programas al sistema objetivo medianteel Green Hills (depurador; software), controlarlos, depurarlos y probarlos (vea Apéndice C;imágenes a la izquierda). Este dispositivo es producido por la empresa Green Hills, la cualconstruye sistemas operativos y herramientas de desarrollo para sistemas embebidos.2.3 Analizador Lógico Intronix Logicport de 34 Canales Este analizador lógico ofrece 34 canales de muestreo, los cuales dos de ellos, según lanecesidad, se pueden utilizar tanto como entradas de reloj o como entradas de datos. Elanalizador requiere sólo de una conexión USB 1.1 o 2.0 con una PC. Por ello, resulta fácil suinstalación y puede ser trasladado en cualquier momento a cualquier lugar de trabajo (veaApéndice C; imagen derecha). El analizador lógico incluye una gran variedad de aplicaciones como por ejemplo Multi LevelTriggering (disparo multinivel), modo de estado calificado con tiempos instalación/esperaajustable, alcance de umbrales, interpretador embebido para protocolos CAN (Controller AreaNetwork; esp. Controlador de Red de Área), I2C (Inter-Integrated Circuit; esp. Circuito Inter-integrado), SPI (Serial Peripheral Interface; esp. Interfaz Periférica Serial) y RS232(Recommended Standard 232; esp. Estándar Recomendado 232). Además, ofrece un programa deaplicación llamado Logicport, con el cual se realizaron los diversos análisis de las señales lógicascaptadas para la medición de tiempos.2.4 Microsoft Visual Basic Microsoft Visual Basic es un leguaje de programación orientado a objetos diseñado para serusado en un ambiente de desarrollo integrado y, en general, se pueden crear con él programas enpoco tiempo. Es conveniente para el desarrollo rápido de aplicaciones (Rapid ApplicationDevelopment). De acuerdo con las líneas directivas de Continental AG fueron utilizados comoambiente de desarrollo integrado los programas Microsoft Visual C++® 6.0 y Microsoft Visual
  • 37Studio 2005 para la manipulación y expansión del módulo FLIB. Sin embargo, de acuerdo con lasmismas directivas de la empresa, en lugar de usar el compilador de Microsoft se utilizó el de laempresa Green Hills; el MULTI®.2.5 Metodología para la Medición del Desempeño de la Operación de Borrado y de Escritura del Módulo FLIB Para determinar el desempeño de la operación de borrado y de escritura del módulo FLIB serealizaron mediciones a través del analizador lógico Intronix Logicport de 34 canales (vea sec.2.3 y Apéndice B). Para ello se creó un código mediante Microsoft Visual C++® 6.0 (vea sec.2.4), con el cual se pudo borrar y escribir datos en un sector de la memoria Flash. Para laejecución de este código en el microcontrolador del panel de instrumentos (vea Apéndice C) fuealmacenado éste como procedimiento necesario y rutinario en la memoria Flash externa delpanel. El almacenamiento fue posible mediante un cargador Flash (Flashloader; software) creadoanteriormente por el grupo Flash. Este cargador utiliza la interfaz Slingshot™ (vea sec. 2.2 yApéndice B) y fue diseñado para almacenar (escribir) y borrar el Firmware en una memoria Flashexterna. El código, inmediatamente antes del inicio de una operación de borrado o de escritura de unsector, coloca, en primer lugar, en “1” lógico el pin “Enable Chip” (EN_CAN) (compare con lafig. 2.2; el pin EN_CAN está marcado en el rectángulo rojo) del chip de comunicación CANintegrado en el panel de instrumentos. Luego se ejecuta la operación correspondiente y cuandoésta finaliza se coloca nuevamente el pin EN_CAN en “0” lógico. De esta manera se puededetectar el inicio y fin de la ejecución de las operaciones de borrado y de escritura del móduloFLIB en sectores de la memoria Flash. Para medir los tiempos de borrado y de escritura se conectó un canal del analizador lógico conel pin EN_CAN (naturalmente fue necesario conectar la tierra del analizador lógico con la tierradel panel de instrumentos) y luego fue ejecutado el código creado para medición de tiempos.Mediante el programa de aplicación “Logicport” fue almacenada la correspondiente secuencia de
  • 38pulsos de “ceros” y “unos”, con los cuales se señala el inicio y fin de una operación de borrado desector o de escritura de datos en sectores (compare con la fig. 2.3). Figura 2.2. Diagrama del circuito de la comunicación CAN en el panel de instrumentos (modificada de Continental AG 2008a, p. 1) Figura 2.3. Análisis de la secuencia de pulsos a través del programa Logicport
  • 39 La figura 2.3 en su parte superior muestra el análisis de tiempo de una secuencia de pulsos querepresenta el borrado de 1 Mbyte de datos en ocho fragmentos cada uno de 128 Kbytes (con lafunción FIOL_boEraseSector existente anteriormente en el módulo FIOL). La línea roja muestrael registro de los “ceros” y “unos” lógicos, en donde “cero” significa no ejecución de operaciónde borrado y “uno” ejecución de operación de borrado. La línea verde representa la salida del pin“RY/BY#” de la memoria Flash NOR paralela de Spansion (compare con la fig. 1.5). En estecaso están invertidos los valores lógicos, es decir, “cero” significa ejecución de operación y“uno” no ejecución. La diferencia entre el reconocimiento del estado de la memoria Flash porparte del módulo FLIB y la señal directa de la memoria Flash mediante el pin “RY/BY#” es deaproximadamente 2,5 µs (vea tabla 3.2). La misma figura 2.3 en su parte inferior muestra la misma señal - medida del borrado de 1Mbytes de datos como en la figura superior – pero aquí fue ejecutada la operación de borrado conla nueva función creada función FIOL_boEraseMultipleSectors (vea sec. 3.2.7), en donde fueronborrados, en este ejemplo, ocho sectores con una sola llamada a esta función. En consecuenciaesta nueva función reduce el tiempo de ejecución de la operación de borrado en 51,38 µs (eltiempo medido entre cada ejecución de borrado de un sector fue de aproximadamente 7,34 µs.Existen siete intervalos entre sector para esta medición). Para validar los tiempos medidos se empleó un simulador llamado “Flash Time CalculatorV2.2.0” (esp. Calculador de Tiempo para Flash V2.2.0) creado por empresa Continental AG, ésteofrece los tiempos de borrado y de escritura teóricos correspondientes a diversos modelos dememoria Flash. La figura 2.4 muestra la simulación de la duración de una operación de escritura de 1 Mbyte dedatos en una memoria Flash de la familia S29GL. Con el simulador es posible hacer unacomparación entre los tiempos medidos y los tiempos teóricos para validar los resultadosexperimentales. Debido a que no existía el modelo específico de la memoria S29GL en elsimulador fueron validados los tiempos medidos mediante una ejecución directa de unasimulación de este modelo específico de memoria Flash por parte del creador del simulador (veaApéndice H).
  • 40 Figura 2.4. Calculador de tiempo versión 2.2.0 para memoria Flash (Time Calculator V2.2.0)2.6 Expansión de las Funcionalidades del Módulo FLIB Para llevar a cabo esta segunda etapa de la pasantía fueron utilizadas las memorias FlashS29GL512N (Spansion) y M29W128GH/GL (Numonyx) (vea sec. 1.5 y 1.6) junto con losmicrocontroladores TX4964FG-120 “Capricorn A” (Toshiba) y MB86R02 “Jade D” (Fujitsu)(vea sec. 1.2.1 y 1.2.2). Todos estos pares de componentes (microcontrolador-memoria Flashexterna) estuvieron previamente integrados en los correspondientes paneles de instrumentos dadopor el grupo Flash (vea Apéndice B). Igualmente para esta etapa se emplearon los paquetes de software Microsoft Visual C++® 6.0,Microsoft Visual Studio 2005 (vea sec. 2.4), la interfaz Green Hills Slingshot™ (vea sec. 2.2) -compatible para cada uno de los dos modelos utilizados de panel de instrumentos (vea Apéndice
  • 41C) - y el compilador MULTI® para la creación fácil y eficiente de nuevos códigos de programapara el módulo FIOL y fundamentalmente para el módulo FLIB. Tanto la memoria Flash de la empresa Spansion como la de Numonyx ofrecen las siguientesfuncionalidades, las cuales no estaban implementadas en el módulo FLIB antes de la realizaciónde la pasantía: - Multiple Sector Erase (Borrado de Múltiples Sectores) - Program Suspend/Resume (Suspensión y Reanudación de Escritura) - Erase Suspend/Resume (Suspensión y Reanudación de Borrado) - Autoselect Mode (Modo Auto-selección) - Secured Silicon Sector (Sector de Silicio Protegido). Adicionalmente sólo la memoria Flash de Numonyx ofrece la siguiente funcionalidad: - Enhanced Buffered Write (Escritura con Búfer Ampliado). Cada una de estas funcionalidades y su correspondiente aplicación en el módulo FLIB esexplicada en detalle en el siguiente capítulo. Además, se presentan los diagramas de flujocorrespondientes a la implementación de las mismas de acuerdo con las líneas directivas SMK deContinental AG (vea sec. 1.7).2.7 Módulo de Prueba FLIB Luego de crear la implementación de las funcionalidades anteriores fue elaborado un módulode prueba para el módulo FLIB (vea Apéndice L) según las líneas directivas SMK para elproceso “Módulo de prueba” (vea sec. 1.7 y fig. 1.7). En este módulo de prueba fueron definidos casos de prueba y el funcionamiento de los mismosfue documentado en la especificación del módulo de prueba (Test Module Specification) queforma parte de los documentos propiedad de la empresa Continental AG (vea Apéndice I). La
  • 42tarea este módulo consistió en probar el módulo FLIB; especialmente los siguientesrequerimientos: - funcionalidad según su especificación - comportamiento determinístico y reproducible - robustez en contra de valores de entrada inesperados - inicialización según como se indica en la especificación - configuración correcta - integración sencilla en el sistema - ausencia de efectos secundarios El principal objetivo fue encontrar errores a través de la corrida de los casos de prueba ycomparar el comportamiento del módulo FLIB con los resultados esperados según suespecificación. El módulo de prueba está compuesto principalmente por una estructura “switch” de 79 casos(con inclusión del caso por defecto; default) (vea Apéndice L). El módulo prueba: - la inicialización del módulo FLIB - los métodos de borrado y el comportamiento del borrado en la memoria Flash - los métodos de escritura y el comportamiento de la escritura en la memoria Flash - el método y comportamiento de la suspensión y reanudación de la operación de escritura en la memoria Flash - el método y comportamiento de la suspensión y reanudación de la operación de borrado en la memoria Flash - las funciones del modo auto-selección - las funciones en el sector de silicio protegido - la función para acceder a las informaciones del modo CFI (Common Flash Memory Interface; esp. Interfaz Común de Memoria Flash) - la función FLIB_u8StatusCheck - las condiciones de error de todos los procedimientos y funciones del módulo FLIB
  • 43 Para ejecutar este módulo fue utilizado tanto los software instalados en la computadora detrabajo Microsoft Visual C++® 6.0 y Microsoft Visual Studio 2005 (vea sec. 2.4) como lainterfaz Green Hills Slingshot™ (vea sec. 2.2). La figura 2.5 muestra el ambiente de trabajo conel software Microsoft Visual C++® 6.0. Figura 2.5. Foto de pantalla del depurador Green Hills bajo el soporte del paquete de programa Microsoft Visual C++® 6.0 durante la ejecución del módulo de prueba FLIB En la figura 2.5 se puede observar cuatro ventanas. La ventana superior derecha muestra loscomandos y códigos del módulo de prueba en ejecución. El depurador permite la ejecución decomandos línea por línea para un análisis detallado del módulo. Las dos ventanas superioresizquierdas en la figura muestran el valor de dos variables del módulo: el caso en ejecución y elcaso de prueba. Esto con el objetivo de encontrar e interpretar el origen de cualquier error. Laventana inferior izquierda muestra las direcciones y valores (datos) en la memoria Flash externa.La ventana inferior derecha presenta la consola (líneas de comando y mensajes), en la cual el
  • 44depurador ofrece información o mensajes importantes tales como: el estado actual del depurador,errores, resultados, etc. El método utilizado para probar el funcionamiento correcto del módulo de prueba FLIB se basóen la ejecución de cada uno de los casos de la estructura “switch” y en la observación de losvalores de dos variables: “TestCase” y “CurrentTestCase”, en donde “TestCase” muestra elcaso de prueba en ejecución y “CurrentTestCase” el caso de prueba ejecutado. Dos valores en elresultado de una prueba son: - 0: prueba fallida - 99: prueba exitosa Los valores de estas dos variables dan la información necesaria para encontrar el origen de laaparición de cualquier error. Para algunos casos de prueba es posible efectuar una observacióndetallada del arreglo de la memoria Flash externa; esto para verificar el funcionamiento correctode las operaciones de borrado y de escritura.
  • CAPÍTULO III MÓDULO FLIB. EVALUACIÓN, AMPLIACIÓN Y PRUEBAS En este capítulo se presentan los resultados de las mediciones del desempeño de las operacionesde borrado y de escritura de módulo FLIB, el análisis de éstos y la correspondiente conclusiónsubsecuente acerca del desempeño del módulo. Así mismo, se muestra la expansión del móduloFLIB y parte del módulo FIOL. Esta expansión corresponde a la creación de nuevas funcionespara implementar las funcionalidades de las memorias Flash NOR paralelas tales como: Borradode Múltiples Sectores, Suspensión y Reanudación de Escritura, Suspensión y Reanudación deBorrado, Modo Auto-selección, Sector de Silicio Protegido y Escritura con Búfer Ampliado. Porúltimo, se señalan los documentos resultantes del proceso de prueba y validación de estas nuevasfunciones. Estos documentos son: las especificaciones de los módulos, el informe de prueba y lanota de revisión.3.1. Desempeño de las Operaciones de Borrado y de Escritura del Módulo FLIB La primera tarea ejecutada en el grupo Flash tuvo los siguientes objetivos: 1. Determinar el desempeño de las operaciones de borrado y de escritura del módulo FLIB con respecto al tiempo. 2. Comparar los resultados obtenidos en el numeral anterior con los valores de desempeño teóricos dados por la empresa Spansion. 3. Analizar las posibilidades de optimización del rendimiento del módulo FLIB. La empresa Spansion señala que las memorias Flash NOR paralelas de la familia S29GL-Nofrecen un rendimiento en las operaciones de borrado y de escritura como se muestra en la tabla3.1.
  • 46 Tabla 3.1. Rendimiento de las operaciones de borrado y de escritura de la memoria Flash S29GL512N dado por Spansion (modificada de Spansion LLC 2008a, p. 81) Parámetro Típico Máximo Unidad Comentario Tiempo de borrado de sector 0,5 3,5 s Excluido escritura de Tiempo de borrado del chip 256 1024 s 0x00 antes de borrar. completo Tiempo completo de escritura 240 - µs con búfer Excluido encabezado a Tiempo de escritura del chip nivel de sistema* 492 - s completo* Encabezado a nivel de sistema es el tiempo necesario para ejecutar la secuencia de ciclo de bus de una operación dela memoria Flash. Mediante diez iteraciones de borrado en ocho sectores consecutivos cuando la memoria Flashse encuentra previamente borrada y a través de la metodología para la medición del desempeñodel módulo FLIB (vea sec. 2.5) se obtuvo el tiempo de borrado de sector cuando éste estápreviamente borrado. De igual manera, se determinó el tiempo de borrado de sector cuando ésteestá previamente escrito. Para la obtención del tiempo de escritura con búfer, y mediante lametodología de medición antes señalada, se realizaron diez iteraciones de escritura de 128 Kbyte(equivalente a un sector). Los resultados de las mediciones se presentan en la tabla 3.2. En losApéndice D, E, F y G se encuentran los resultados detallados de estas mediciones. Tabla 3.2. Rendimiento medido de las operaciones de borrado y de escritura del módulo FLIB; memoria Flash S29GL512N Parámetro Típico Unidad Comentario Excluido escritura de 0x00-antes de Tiempo de borrado de sector 636,250 ms borrar. (Vea Apéndice D) Escritura de 0x00 antes de borrar. Tiempo de borrado de sector 410,547 ms (Vea Apéndice E) Con encabezado a nivel de sistema. Tiempo completo de escritura 111 µs Escritura de 0x00. con búfer (Vea Apéndice F) Tiempo entre la señal del pin RY/BY# (compare con la fig. 1.5) y el reconocimiento del 2,4895 µs Vea Apéndice G. estado de la memoria Flash a través de la función FLIB_u8StatusCheck.
  • 47 Los resultados de la tabla 3.2 fueron comparados con los valores teóricos del simulador “FlashTime Calculator V2.2.0” (esp. Calculador de Tiempo para Flash V2.2.0) (vea fig. 2.4 y ApéndiceH); un programa creado por la empresa Continental AG. A partir de las tablas 3.1 y 3.2 se observa lo siguiente: 1. No hay una comparación directa entre los tiempos de borrado y de escritura del chip completo dado por Spansion y sus correspondientes medidas experimentales. Esto se debe a que a través del método de medición implementado no fue posible ejecutar un programa o código almacenado en la memoria Flash externa si éste, mediante una escritura o borrado completo del chip, se elimina o se sobrescribe con otros datos. Por lo tanto, no fue posible determinar experimentalmente estos tiempos mediante el método de medición empleado. 2. El tiempo medido en la ejecución del borrado de un sector fue 136,25 ms más largo que el tiempo correspondiente especificado por Spansion. Esto se debió probablemente por las condiciones externas de medición ya que la velocidad de borrado, entre otros factores, depende de la temperatura, de la tasa de borrado de cada célula de almacenamiento y del historial de borrado en la memoria (Spansion LLC 2005b, p. 2). Por otra parte, la duración de la operación de borrado depende sólo del controlador embebido en la memoria Flash. 3. El tiempo medido en la ejecución de la escritura con el búfer interno normal fue 129 µs menor que el tiempo correspondiente especificado por Spansion. También este resultado inesperado se debió probablemente a las condiciones externas de medición, ya que la duración de la operación de escritura también depende, entre otros factores, de la temperatura, de la tasa de escritura de cada célula de almacenamiento y del historial de escritura en la memoria (Spansion LLC 2005b, p. 2). En este caso fue registrado un mejor desempeño al esperado. 4. El tiempo entre el reconocimiento del estado de la memoria Flash a través de la función FLIB_u8StatusCheck (vea sec. 1.8.4) y la aparición del mismo fue de 2,4895
  • 48 µs (vea Apéndice G). Este valor puede considerarse como despreciable; al mismo tiempo se puede decir que la función FLIB_u8StatusCheck reconoce el estado de la memoria Flash casi de inmediato; tan pronto como éste esté disponible. Con base en estos resultados se concluye que la operación de borrado no se puede optimizar, yaque su duración depende sólo del controlador embebido de la memoria Flash externa. No haynecesidad de optimizar la operación de escritura debido a que se obtuvieron mejores resultadosexperimentales a los esperados. También se puede afirmar que la función FLIB_u8StatusChecktiene un retraso insignificante en la determinación del estado de una operación de la memoriaFlash. No obstante, se analizó la posibilidad para optimizar el funcionamiento de la funciónFLIB_u8StatusCheck ya que ésta determina la duración de la operación de escritura de cualquiercantidad de datos. Según la hoja de especificación de la memoria Flash de Spansion: “DQ7 yDQ6 ofrecen cada uno un método para determinar si una operación de borrado o de escritura hafinalizado o está en ejecución” (Spansion LLC 2008, p. 64, traducción del autor). (Compare conla fig. 1.5 para observar los pines “DQ7” y “DQ6”). El método que emplea el pin “DQ7” esllamado también “Data# Polling” (muestreo de dato inverso) y funciona de la siguiente manera(Spansion LLC 2008a p. 64): - Durante la ejecución del algoritmo embebido de escritura la memoria Flash coloca como valor de salida en el pin “DQ7” el complemento del dato escrito anteriormente en el mismo. Para obtener este valor, el sistema anfitrión debe dar la dirección de memoria en donde se almacenó el dato. - Mediante el algoritmo embebido de borrado se genera un “cero” lógico en el pin “DQ7” si la operación se ha completado. Pero si la memoria Flash cambia al modo suspendido de borrado (vea sec. 3.2.3) genera un “uno” lógico en el pin “DQ7”. Para leer esta información el sistema debe dar una dirección de memoria, la cual debe corresponder a un sector seleccionado para ser borrado. - Es posible que inmediatamente antes de la finalización de una operación de borrado o de escritura el valor del pin “DQ7” cambie asincrónicamente cuando “OE#” (compare con la fig. 1.5) se coloca en “cero” lógico. Esto significa que la memoria no informa acerca de su estado sino que puede entregar datos válidos en el pin “DQ7”.
  • 49 En contraposición con lo anterior, el método que emplea el pin “DQ6” llamado también“Toggle Bit I” (Bit I Conmutante) permite (Spansion LLC 2008a p. 65f): - obtener información sobre el estado de una operación sólo con la lectura de cualquier dirección de la memoria Flash. Esta información es válida antes de la ejecución de una operación de borrado o de escritura. - determinar si una operación está en ejecución o ha finalizado. Esto es posible mediante lecturas sucesivas en el pin “DQ6” a través del aporte de cualquier dirección de memoria independientemente del modo de operación de la misma. Si la operación está en ejecución, el valor del pin “DQ6” conmuta. Si la operación ha terminado, el valor del pin “DQ6” deja de conmutar; se mantiene en un mismo valor durante las lecturas sucesivas. Por estas razones anteriores, el método “Toggle Bit I” (DQ6) es más fácil de implementar,requiere de menos instrucciones (eficiencia en el tamaño de código) y de una lógica más sencillaen comparación con la requerida por el método “Data# Polling” (DQ7). Con la implementacióndel método “Toggle Bit I” se genera un código pequeño, funcional y eficiente. Así, mientras máspequeño sea el código mayor será la tasa de muestreo (Polling Rate) de la funciónFLIB_u8StatusCheck. Esto permite que la escritura de cualquier cantidad de datos puedaejecutarse rápidamente y, con ello, lograr un módulo óptimo con respecto a la duración de laoperación de escritura. En conclusión, se puede afirmar que el módulo FLIB se encontraba en un estado óptimo y porlo tanto no fue posible reducir más aún el tiempo de la operación de borrado y de escritura. Sinembargo, mediante las nuevas funciones FIOL_boEraseMultipleSectors,FLIB_u8StartWriteBuffer y FLIB__u8ReadyWriteBuffer (vea sec. 3.2.1 y 3.2.6) creadas eimplementadas como parte de las actividades de la pasantía se logra una reducción significativadel tiempo de las operaciones de borrado y de escritura.
  • 503.2. Expansión del Módulo FLIB En esta subsección se presentan las nuevas funciones creadas e implementadas en los módulosFIOL y FLIB.3.2.1. Borrado de Múltiples Sectores Tanto la memoria Flash de Spansion como la de Numonyx ofrecen la funcionalidad gestionadapor sus controladores embebidos para borrar una cantidad cualquiera de sectores mediante unsólo comando de borrado. Antes el módulo FLIB realizaba este procedimiento sector por sectormediante la función FIOL_boEraseSector, la cual borra un único sector por llamada. Para laimplementación del borrado de múltiples sectores (Multiple Sector Erase) fueron creadas tresnuevas funciones adicionales: - FIOL_boEraseMultipleSectors - FLIB_u8StartEraseMultipleSectors - FLIB__u8ReadyEraseMultipleSectors La última de estas tres funciones anteriores se ejecuta bajo el control de la funciónFLIB_u8StatusCheck (vea sec. 1.8.4). El módulo FLIB garantiza a todos los módulos de softwaresuperiores el cumplimiento de sus requerimientos, uno de ellos es el uso del microcontrolador porparte del módulo FLIB en intervalos de máximo 100 µs. En consecuencia, la ejecución completadel proceso de borrado se divide en intervalos de máximo 100 µs. La figura 3.1 muestra lo siguiente: cuando la función FIOL_boEraseMultipleSectors se ejecuta,ésta inicia la operación de borrado mediante una llamada a la funciónFLIB_u8StartEraseMultipleSectors. Esta función envía varios comandos de borrado de un sectora la memoria Flash para ejecutar la operación mediante su controlador embebido. El envíocompleto de estos comandos debe durar menos de 100 µs. Luego de esta emisión, el controladorejecuta otras tareas internas del panel de instrumentos. Reiteradamente se llama a la funciónFLIB_u8StatusCheck para determinar el avance de la operación de borrado. En caso que laoperación embebida de borrado no haya finalizado el microcontrolador continua ejecutando otras
  • 51actividades internas del panel de instrumentos. En caso que la operación de borrado hayafinalizado la función FLIB_u8StatusCheck llama a la función FLIB__u8ReadyMultipleSectorspara ejecutar el borrado de los sectores restantes. Esta llamada se repite tantas veces como seanecesario hasta que todos los sectores sean borrados. Figura 3.1. Representación de la operación de borrado de varios sectores con respecto al tiempo La figura 3.1 muestra la perspectiva conjunta de los módulos FIOL y FLIB. En ésta se observaque el proceso de borrado de varios sectores es iniciado por una sola función(FIOL_boEraseMultipleSectors). El módulo FIOL es responsable del control del proceso deborrado según el requerimiento de tiempo establecido por módulos superiores. Las líneascontinuas marcan la ejecución de la transmisión de comandos de operación embebida de borradoal microcontrolador. Las líneas punteadas representan la observación del estado de la memoriaFlash mediante la función FLIB_u8StatusCheck. Las líneas segmentadas simbolizan la ejecuciónde la operación embebida de borrado en la memoria Flash.
  • 52 La estructura de estas dos nuevas funciones se ilustra a través de los diagramas de flujo de lafigura 3.2 y 3.3. Figura 3.2. Diagrama de flujo de la función FLIB_u8StartEraseMultipleSectors
  • 53 Figura 3.3. Diagrama de flujo de la función FLIB__u8ReadyEraseMultipleSectors3.2.2. Suspensión y Reanudación de Escritura Suspensión y reanudación de escritura (Program Suspend/Resume) es una funcionalidad quepermite a la memoria Flash interrumpir una operación de escritura embebida y leer datos decualquier sector no suspendido, de la región de sector de silicio protegido y del modo auto-selección. Esta suspensión se puede realizar aún cuando en una interrupción de borrado se ejecuteuna operación de escritura. Luego del envío del comando de reanudación de escritura laoperación embebida suspendida se restablece. Otro comando de suspensión puede ser enviadopara ejecutar una nueva suspensión.
  • 54La implementación de esta funcionalidad en el módulo FLIB fue realizada a través de la creaciónde dos nuevas funciones: - FLIB_vProgramSuspend - FLIB_vProgramResume Estas dos funciones interactúan con la función FLIB_u8StatusCheck para asegurar el correctofuncionamiento de esta implementación. Mediante una llamada a la primera función, de las dosanteriormente presentadas, se puede suspender una operación de escritura del módulo FLIB.Luego de la pausa es posible leer los datos de las regiones suspendidas. Durante una suspensiónde escritura no se puede ejecutar una nueva operación de escritura o de borrado según laslimitaciones descritas en las especificaciones de las memorias Flash utilizadas. Una llamada a lafunción FLIB_vProgramResume durante una suspensión de escritura restablece la operación deescritura. La figura 3.4 muestra el mecanismo completo con respecto al tiempo. Figura 3.4. Diagrama temporal de la ejecución de una suspensión y reanudación de una operación de escritura
  • 55 En la figura 3.4 “Inicio” corresponde a una llamada a una operación de escritura. Luego de lallamada se ejecuta en el microcontrolador el envío de los comandos de escritura a la memoriaFlash para que el controlador embebido gestione la operación embebida de escritura. En esta fasese debe llamar a la función FLIB_u8StatusCheck reiteradamente para determinar el estado actualde la operación. Luego del inicio de la operación embebida la función FLIB_vProgramSuspendpuede ser llamada. Esta llamada suspende la operación en ejecución tanto a nivel embebido comoa nivel de módulo FLIB. A partir de la suspensión se puede acceder a los datos en los sectores nosuspendidos, en la región de sector de silicio protegido o en el modo auto-selección. Lareanudación de la operación de escritura tiene lugar a nivel modular y embebido mediante lallamada a la función FLIB_vProgramResume. A continuación se presentan los diagramas de flujo de las funciones FLIB_vProgramSuspend yFLIB_vProgramResume en las figuras 3.5 y 3.6 respectivamente. Figura 3.5. Diagrama de flujo de la función FLIB_vProgramSuspend
  • 56 Figura 3.6. Diagrama de flujo de la función FLIB_vProgramResume3.2.3. Suspensión y Reanudación de Borrado Las memorias Flash utilizadas ofrecen la funcionalidad de suspensión y reanudación de borrado(Erase Suspend/Resume), la cual una operación de borrado embebido de uno o más sectorespuede ser interrumpida para luego poder leer y/o escribir datos en cualquier sector no suspendido.Además, luego de la suspensión se pueden leer datos contenidos en el sector de silicio protegidoo desde el modo auto-selección. Si una operación de escritura para los sectores no suspendidos esiniciada, ésta puede ser interrumpida mediante la llamada a la función FLIB_vEraseSuspend (veasec. 3.2.2). Luego del envío del comando de reanudación de borrado se restablece la operación deborrado embebido. Un comando subsiguiente de suspensión de borrado puede ser enviado luegode la reanudación anterior. Esta funcionalidad fue implementada en el módulo FLIB a través de la creación de dos nuevasfunciones. Éstas son: - FLIB_vEraseSuspend - FLIB_vEraseResume
  • 57 Como en el caso anterior estas dos funciones interactúan con la función FLIB_u8StatusCheckpara garantizar la ejecución correcta de esta aplicación. Una llamada a la primera función duranteuna operación de borrado suspende la misma tanto a nivel embebido como a nivel de móduloFLIB. La suspensión permite que el usuario acceda a los datos en los sectores no suspendidos yen el modo auto-selección. Durante la pausa no es posible según las limitaciones descriptas en lasespecificaciones de las memorias Flash empleadas ejecutar una nueva operación de borrado. Parala reanudación de esta última tanto a nivel modular como a nivel embebido se debe llamar a lafunción FLIB_vEraseSuspend (compare con la fig. 3.7). Figura 3.7. Diagrama temporal de la ejecución de una suspensión y reanudación de una operación de borrado En la figura 3.7 “Inicio” corresponde a una llamada a una operación de borrado. Luego de lallamada se ejecuta en el microcontrolador el envío de los comandos de borrado a la memoriaFlash para que el controlador embebido gestione la operación embebida de borrado. En esta fasese debe llamar a la función FLIB_u8StatusCheck reiteradamente para determinar el estado actualde la operación. Luego del inicio de la operación embebida la función FLIB_vEraseSuspendpuede ser llamada. Esta llamada suspende la operación en ejecución tanto a nivel embebido como
  • 58a nivel de módulo FLIB. A partir de la suspensión se puede acceder a los datos en los sectores nosuspendidos, en la región de sector de silicio protegido o en el modo auto-selección. Lareanudación de la operación de borrado tiene lugar a nivel modular y embebido mediante lallamada a la función FLIB_vEraseResume. Los diagramas de flujo de las funciones FLIB_vEraseSuspend y FLIB_vEraseResume sepresentan en las figuras 3.8 y 3.9 respectivamente. Figura 3.8. Diagrama de flujo de la función FLIB_vEraseSuspend3.2.4. Modo Auto-selección Esta funcionalidad ofrece al usuario una identificación del fabricante de la memoria Flash ytambién la identificación del dispositivo. Así mismo, ofrece información sobre la protección degrupos de sectores y del sector de silicio protegido. Para la aplicación de esta prestación fueroncreadas tres nuevas funciones: - FLIB_u8EnterAutoselectMode - FLIB_u8GetAutoselectInfo - FLIB_vExitAutoselectMode
  • 59 Figura 3.9. Diagrama de flujo de la función FLIB_vEraseResume Para trabajar en este modo de operación de la memoria Flash se debe llamar a la primerafunción del grupo de nuevas funciones anteriormente señaladas. Luego es posible llamar a lasegunda función para leer las informaciones deseadas. Si la memoria Flash está ejecutando unaoperación de borrado o de escritura, el acceso a estas informaciones no se ejecutará. Para salir delmodo auto-selección se debe llamar a la tercera función del grupo antes mencionado. En las figuras 3.10, 3.11 y 3.12 se muestra la estructura de las funcionesFLIB_u8EnterAutoselectMode, FLIB_u8GetAutoselectInfo y FLIB_vExitAutoselectModerespectivamente. Figura 3.10. Diagrama de flujo de la función FLIB_u8EnterAutoSelect
  • 60Figura 3.11. Diagrama de flujo de la función FLIB_u8GetAutoSelectInfo Figura 3.12. Diagrama de flujo de la función FLIB_u8ExitAutoSelect
  • 613.2.5. Sector de Silicio Protegido Esta funcionalidad le ofrece al usuario un área de 128 words/256 bytes para la protección decódigo o de datos. Una vez que este sector se protege no es posible realizar posteriormentecambios en el mismo. Éste es un área de una única programación, es decir, se puede programaren él sólo una vez. Para aplicar esta funcionalidad en el módulo FLIB fueron creadas dos nuevasfunciones: - FLIB_vEnterSecSiSectorMode - FLIB_vExitSecSectorMode La primera función del grupo anteriormente señalado permite al usuario acceder a esta región.Una vez accedida, el usuario puede leer la información permanentemente guardada. Para salir deesta región se debe llamar a la segunda función arriba presentada. Se muestran seguidamente los diagramas de flujo de estas dos nuevas funciones en las figuras3.13 y 3.14. Figura 3.13. Diagrama de flujo de la función FLIB_vEnterSecSiSectorMode
  • 62 Figura 3.14. Diagrama de flujo de la función FLIB_vExitSecSiSectorMode3.2.6. Escritura con Búfer Ampliado Escritura con búfer ampliado (Enhanced Buffered Write) es una funcionalidad de la familiaM29W-GH/GL ofrecida por Numonyx y consiste en el uso de un búfer interno en la memoriaFlash de 256 words/512 bytes de capacidad para aumentar la velocidad en la operación deescritura. El uso de esta propiedad requiere que el usuario cargue un par dirección-dato en unorden incremental con respecto a la dirección. Es decir, desde la dirección (en bits) 00000000bhasta la dirección 11111111b. Además esta funcionalidad requiere que el búfer sea cargadocompletamente con datos. Es decir, toda su capacidad de 256 words debe ser completamenteutilizada. La escritura con búfer ampliado fue implementado mediante la expansión de dosfunciones anteriormente existentes en el módulo FLIB: - FLIB_u8StartWriteBuffer - FLIB__u8ReadyWriteBuffer Mediante la figura 3.15 puede observarse la aplicación de esta funcionalidad.
  • 63 Figura 3.15. Escritura con búfer ampliado (Enhanced Buffered Write) En la figura 3.15 se muestra el mecanismo de escritura del módulo FLIB mediante un búferinterno en la memoria Flash. Si memoria Flash es compatible con la funcionalidad de escrituracon búfer ampliado se usan los dos búferes: el normal (32 words) y el ampliado (256 words). Sepuede observar que en el proceso de escritura con búfer se realiza una alineación a word (16 bitalignment) al inicio y al final del área deseado de escritura (si es necesario). Una alineación tienelugar si la primera o última dirección en la memoria Flash no coincide con una dirección de unapalabra (dato de 16 bits; word). La alineación se realiza mediante el búfer normal (32 words) y enel procedimiento intermedio de escritura. Esto significa que la escritura de datos en áreas, en lascuales se garantiza una capacidad total de 256 words, se hará mediante el búfer ampliado. Esta aplicación se presenta en los siguientes diagramas de flujo (fig. 3.16 y fig. 3.17) de estasdos funciones modificadas.
  • 64Figura 3.16. Diagrama de flujo de la función FLIB_u8StartWriteBuffer
  • 65 Figura 3.17. Diagrama de flujo de la función FLIB__u8ReadyWriteBuffer3.2.7. Cambios en el Módulo FIOL Se tuvo que realizar ligeras modificaciones al módulo FIOL debido a la implementación de lafuncionalidad de borrado de múltiple sectores. Este cambio consistió en la creación de una nuevafunción: - FIOL_boEraseMultipleSectors Para entender la función en interacción con el módulo FLIB vea la sección 3.2.1 “Borrado deMúltiples Sectores”. La figura 3.18 muestra el diagrama de flujo de la función FIOL_boEraseMultipleSectors.
  • 66 Figura 3.18. Diagrama de flujo de la función FIOL_boEraseMultipleSectorsDe manera resumida la implementación: - Borrado de Múltiples Sectores se ocupa del borrado de más de un sector por llamada a la función correspondiente en el módulo FIOL (FIOL_boEraseMultipleSectors). Antes este módulo ejecutaba la operación de borrado sector por sector.
  • 67 - Suspensión y Reanudación de Escritura suspende una operación de escritura para luego poder leer datos en los sectores no suspendidos. Seguidamente puede reanudarse la operación suspendida. - Suspensión y Reanudación de Borrado suspende una operación de borrado para luego poder leer y/o escribir datos en los sectores no suspendidos. Seguidamente puede reanudarse la operación suspendida. - Modo Auto-selección permite la identificación del fabricante de la memoria Flash y su propia identificación y obtener información acerca de la protección de grupos de sectores y del sector de silicio protegido. - Sector de Silicio Protegido se ocupa de la entrada a este modo de operación de la memoria Flash para escribir datos sólo una vez y permanentemente en esta región protegida. Esta funcionalidad permite también la lectura de estos datos luego de su correspondiente almacenamiento permanente en este sector. - Escritura con Búfer Ampliado emplea un búfer interno de 256 words de la memoria Flash de Numonyx para aumentar la rapidez de la escritura o almacenamiento de datos.3.3. Proceso de Prueba y de Validación En esta sección se señalan los documentos resultantes de los métodos de prueba y de validaciónsegún las líneas directivas SMK (vea sec. 1.7).3.3.1. Especificaciones de los Módulos Luego de la implementación de las nuevas funcionalidades en el módulo FLIB (vea sec. 3.2) yde la creación del módulo de prueba (vea sec. 2.7 y Apéndice L) fue ligeramente modificada la
  • 68especificación del módulo FIOL y fueron redactadas nuevas especificaciones para el móduloFLIB y para el módulo de prueba FLIB (vea Apéndice I). Con respecto al módulo FIOL fue documentado el cambio, es decir, la inclusión de la nuevafunción FIOL_boEraseMultipleSectors y la adaptación de ésta para la compatibilidad con losotros módulos de orden inferior. La nueva especificación del módulo FLIB describe en detalle tanto a las nuevasimplementaciones en el módulo como a las funciones anteriormente existentes en el mismo. Laespecificación del módulo de prueba FLIB da las instrucciones para la ejecución de la prueba;todos los casos de prueba y sus correspondientes valores esperados.3.3.2. Informe de las Pruebas en el Módulo FLIB A partir de los resultados obtenidos mediante la ejecución las prueba del módulo de pruebaFLIB se creó un informe de prueba (vea Apéndice I). En este informe fue documentado losiguiente: - las configuraciones del módulo probado - los microcontroladores utilizados y los IDEs (Integrated Development Environment; esp. Ambiente de Desarrollo Integrado) - el tiempo total de ejecución de la prueba - la cantidad de errores - la lista de problemas - la cantidad de casos planeados de prueba que fueron posible ejecutar - las razones por las cuales no fueron posible ejecutar algunos casos de prueba3.3.3. Revisión Luego de la creación del código del módulo FLIB, de la especificación del módulo FLIB, delcódigo del módulo de prueba FLIB, de la especificación del módulo de prueba FLIB y delinforme de prueba fue realizada la revisión del módulo FLIB. Esta evaluación se hizo en
  • 69compañía del líder del grupo Flash, de dos ingenieros del grupo y del desarrollador de estasimplementaciones (el autor). Ellos evaluaron los cambios y desarrollos hechos en el módulo ycomo resultado de la revisión fue redactado una nota de revisión (vea Apéndice I), en la cualfueron documentadas todas las observaciones de los integrantes. En ese documentos serecogieron todas las correcciones necesarias para mejorar o adaptar al módulo FLIB según losrequerimientos del grupo Flash. Por razones de tiempo no fueron consideradas y aplicadas todas estas observaciones al móduloFLIB. Las observaciones restantes serán material de trabajo para los próximos desarrolladores delmódulo.
  • CAPÍTULO IV ANÁLISIS PARA LA MIGRACIÓN DE LA TECNOLOGÍA MIRRORBIT® A MIRRORBIT ECLIPSE™ En este capítulo se analiza la compatibilidad de módulo FLIB (vea sec. 1.8.4), luego de laexpansión de sus funcionalidades, y se dan recomendaciones a todos los integrantes del grupoFlash para lograr la migración hacia la tecnología MirrorBit Eclipse™. Para ello, se presenta latecnología actualmente utilizada por Continental AG; MirrorBit® y la tecnología futura;MirrorBit Eclipse™. Se comparan estas dos tecnologías en términos de desempeño de lasfuncionalidades y capacidades de las memorias Flash empleadas durante la ejecución de lapasantía. Se señala el interés de la empresa Continental AG para la migración hacia la tecnologíaEclipse™. Se muestra el resultado del análisis para llevar a cabo la migración del módulo FLIBhacia la nueva tecnología y, finalmente, se presenta el estado actual de módulo con respecto a lamigración y los cambios requeridos en él para operar con Eclipse™.4.1. Tecnología MirrorBit® La tecnología MirrorBit® es una arquitectura de célula de memoria, la cual permite que undispositivo de memoria Flash almacene el doble de datos en comparación con las memorias Flashconvencionales sin comprometer el desempeño o la integridad de los datos. La célula MirrorBit®duplica la densidad de un arreglo de memoria Flash (vea fig. 1.4) mediante el almacenamiento decantidades de carga en dos regiones físicamente independientes gracias a la naturaleza noconductora del medio de almacenamiento. Estas regiones se encuentran opuestas una de la otra enla célula de memoria. De esta manera, se forma una célula de dos bits o “transistores”, en dondecada bit es asignado directamente al arreglo de memoria (AMD y Spansion LLC 2008b, p. 4). Lafigura 4.1 muestra en forma esquemática esta estructura; en la cual, se puede apreciar loselectrones atrapados en los dos lados de la capa aislada (2 bits/célula).
  •   71 La lectura y escritura de un bit en uno de los dos lados opuestos de la célula de memoria esrealizada independientemente del dato que se encuentre almacenado en el lado opuesto de lamisma. La tecnología proporciona búferes de página que incrementan de tres a cuatro veces lavelocidad de lectura y hasta 16 veces la velocidad de escritura. Además, éstos reducen el cuellode botella inherente a los dispositivos Flash de alta densidad. El diseño de la célula corresponde auna construcción simple y simétrica que reduce significativamente tanto el tamaño del circuitointegrado como los costos de producción (AMD y Spansion LLC 2008b, p. 4). La escritura de información en una célula MirrorBit® se realiza mediante la inyección deelectrones en la compuerta flotante cercano a la compuerta drenador y gracias al elemento dealmacenamiento no conductivo los electrones son atrapados a un lado del mismo. El procesopuede ser revertido para la escritura en el otro lado de la célula. La estructura celular simétrica yla selección fuente-drenador permiten que distintas cargas puedan ser almacenadas de formaindependiente en cada lado (AMD, p. 3). Figura 4.1. Esquema estructural de la tecnología MirrorBit® (modificada de Spansion LLC 2008b, p. 4) La lectura se realiza a través de la compuerta de fuente de cada célula. Cuando un bit esprogramado, en la compuerta de fuente no hay flujo de corriente y la lectura resulta como estado
  •   72cargado pero cuando este bit es desprogramado existe un flujo de corriente y la lectura resultacomo estado descargado. Este proceso es válido incluso si el otro bit está programado. Cada parfuente-drenador es seleccionable, lo que significa que la fuente puede estar en cada lado de lacélula y así cada lado del elemento de almacenamiento puede ser leído de la misma manera enforma independiente (AMD, p. 4). La operación de borrado se realiza mediante la técnica de compuerta negativa. Cada uno de losbits izquierdo y derecho de una célula MirrorBit® esta siempre en el mismo sector, por lo queuna célula MirrorBit® es borrada cuando se ejecuta una operación de borrado de sector o de chip.Todos los bits de un sector son pre-programados para delimitar la región del mismo. El algoritmoembebido de borrado verifica automáticamente estos márgenes para evitar borrar segmentos fuerade los límites del sector (AMD, p. 4).4.2. Tecnología MirrorBit Eclipse™ La tecnología MirrorBit Eclipse™ es una arquitectura de célula de memoria que combina lasestructuras de las memorias Flash MirrorBit® NOR, ORNAND y Quad en un solo circuitointegrado junto con una arquitectura de software configurable. Como resultado de estacombinación se obtiene una mejora en el desempeño de la memoria Flash, manifestada en lavelocidad de ejecución de código y en el almacenamiento de grandes cantidades de contenidomultimedia. La arquitectura integra un microcontrolador programable, el cual remplaza las típicasmáquinas de estado usadas en las memorias Flash convencionales y soporta la ejecución de unaprueba propia integrada (BIST, ing. Built-In Self Test). Esta tecnología de sistema en chip fuediseñada para dar soporte a procesos de producción más flexibles y rápidos. De modo que losintegradores de hardware puedan colocar sus productos en el mercado más rápidamente(Spansion LLC 2008b, p. 6).  
  •   734.3. Comparación entre las Tecnologías MirrorBit® y MirrorBit Eclipse™   S29GL-S y S29FL-T son extensiones de la familia de memorias Flash Spansion que usan latecnología MirrorBit Eclipse™. La tabla 4.1 muestra las diferencias y similitudes de lasmemorias Flash usadas y con intensión de usarse por la empresa Continental AG. Tabla 4.1. Comparación entre memorias de la empresa Numonyx y Spansion (tecnologías MirrorBit® y MirrorBit Eclipse™) Fabricante Numonyx Spansion Familia M29W-GH/GL S29GL-N S29GL-P S29GL-S Densidad 128 Mbit √ √ √ √ 256 Mbit √ √ √ 512 Mbit √ √ √ 1024 Mbit √ √ √(circuito √(circuito 2048 Mbit integrado integrado múltiple) múltiple) Tamaño de Sector 128 KB √ √ √ √ Tamaño de Datos Ancho de Bus x8/x16 x8/x16 x8/x16 x16 Página de Lectura 16 Byte 16 Byte 16 Byte 32 Byte Búfer de Escritura 32 Byte 32 Byte 64 Byte 512 Byte Otros Asíncrono √ √ √ √ Área OTP 256 Byte 256 Byte 256 Byte 1024 Byte Protección de √ √ √ √ Escritura Protección de √ Lectura Unlock Bypass* (vea √ √ √ sec. 1.5 y 1.6) Borrado Múltiple de √ √ √ Sector* Data Polling (vea √ √ √ √ sec. 1.5 y 1.6) Registro de Estado √ Escritura Acelerada √ √ √ Escritura Múltiple √ √ √ √ Pass* La nueva familia MirrorBit Eclipse™ hace obsoletas estas funciones. Un nuevo módulo FLIB no debe usar estasoperaciones.  
  •   744.4. Interés de la Empresa Continental AG para Migrar hacia la Tecnología MirrorBit Eclipse™ La empresa Continental AG confía en la promesa de la compañía Spansion en lo concerniente ala oferta de memorias Flash más rápidas y a un menor costo en comparación con la tecnologíautilizada actualmente (MirrorBit®) y con las ofertas de sus competidores. La figura 4.2 muestraesquemáticamente los beneficios en la reducción de costos mediante la implementación de latecnología MirrorBit Eclipse™. Figura 4.2. Beneficios de la implementación de la tecnología Eclipse™ en términos de costo (modificada de Spansion LLC 2008b, p. 6) Este beneficio en costos representa para la empresa Continental AG una disminución en lacantidad de dinero que la empresa tiene que invertir en materiales para producir sus equipos. Unaumento de las velocidades de borrado y de escritura en las memorias Flash de esta nuevatecnología significa un menor tiempo de reprogramación del Firmware (programa en firme) en elfinal de la línea de producción, de modo que, una mayor cantidad de equipos puede ser ofrecidaal mercado en el mismo intervalo de tiempo de la producción actual. La flexibilidad y rapidez queofrecen las nuevas memorias Flash de Spansion se refleja en un aumento de la eficiencia de
  •   75Continental AG, ya que ésta puede dar servicios a una mayor cantidad de productos mediante laimplementación de una sola clase de memoria Flash MirrorBit Eclipse™. La empresa Continental AG ya ha considerado esta tecnología para emplearla en dispositivosfuturos para varias empresas, entre ellas se encuentra Volkswagen AG. El grupo Flash prevé quela tecnología Eclipse™ sustituirá a las soluciones con memorias Flash NOR puras. Por ello, elgrupo se plantea la necesidad de implementar Eclipse™ en sus controladores existentes parainicios del año 2011, ya sea mediante presupuesto propio de la división o con el del próximoproyecto. Como caso alternativo el grupo desea ejecutar un proyecto llamado “nueva tecnologíade memorias” para implementar Eclipse™. La figura 4.3 muestra un esquema para la migraciónhacia nuevas tecnologías. Figura 4.3. Proyección hacia la migración de nuevas tecnologías de memorias Flash de Spansion (modificada de Spansion LLC 2007, p. 29)4.5. Resultados del Análisis para el Logro de la Migración del Módulo FLIB hacia la Tecnología MirrorBit Eclipse™ A continuación se presenta el resultado del análisis para la migración desde la tecnologíaMirrorBit® hacia MirrorBit Eclipse™. Se tomaron como puntos de consideración los siguientes:  
  •   764.5.1. Densidad Con respecto a la densidad de las memorias de las distintas tecnologías se puede ejecutar lamigración sin cambios en el software ni en el hardware.4.5.2. Tamaño de Sector Como es posible utilizar con la tecnología MirrorBit Eclipse™ sectores uniformes de tamaño128 Kbytes el módulo FLIB en este aspecto puede ser usado para la nueva familia; por lo queeste punto no representa ningún problema para la migración.4.5.3. Tamaño de Datos La memoria Flash S29GL-S sólo da soporte a un bus de datos de palabras de 16 bits. El pinBYTE# (vea fig. 1.5) está reservado para uso futuro del fabricante de la memoria. Por ello, estepin en los diseños existentes debe ser colocado en voltaje alto para forzar la operación en modode dato de palabra de 16 bits para facilitar la migración hacia la familia S29GL-S.4.5.4. Tamaño del Búfer de Escritura En este aspecto la constante “FLIB_nBufferSizeBytes” (no señalada en este informe porrazones de código de confidencialidad de la empresa) debe ser cambiada al valor “512” y laconstante “FLIB_nBufferMask” (igualmente no señalada en este informe por razones de códigode confidencialidad de la empresa) también debe ser cambiada al valor “0xFFFFFE00”. Estoscambios pueden ser hechos mediante el requerimiento de la información de profundidad de búfera través de la funcionalidad CFI (Common Flash Memory Interface; esp. Interfaz Común deMemoria Flash) en su dirección 0x2A. Esta propiedad no estuvo y no está aún implementada enel módulo FLIB.
  •   774.5.5. Identificador del Dispositivo En este aspecto no se requiere modificaciones para emplear las funcionalidades básicas de lanueva familia.4.5.6. Área OTP El área de sólo una programación o escritura (OTP), también área de silicio protegido (vea sec.3.2.5) se encuentra presente en la nueva familia y en ésta se halla dos regiones de 512 bytes cadauna. Para este punto no se requiere realizar modificaciones al módulo FLIB.4.5.7. Protección de Escritura La familia S29GL-S posee la propiedad de protección avanzada de sector (ASP). Protección deescritura y borrado a través de un voltaje monopolar, contraseña y controles volátil y no volátil.Esta propiedad no se encuentra implementada en el módulo FLIB.4.5.8. Protección de Lectura La protección de lectura puede ser ofrecida como opción a través de un requerimientoespecífico del cliente hacia Spansion, ya que la familia S29GL-S soporta ASP. Esta funcionalidadno está implementada en el módulo FLIB.4.5.9. Unlock Bypass La nueva familia no da soporte al modo de escritura Unlock Bypass (vea sec. 1.5 y 1.6). Lasaplicaciones que usan dispositivos de alta densidad emplean la escritura de múltiples palabras conbúfer para maximizar el flujo de palabras a escribir (Spansion LLC 2010, p. 8). El módulo FLIBrequiere de modificaciones para implementar sus funciones con y sin modo Unlock Bypass. Serecomienda el uso de algún tipo de interruptor lógico en el módulo FLIB para seleccionar estafuncionalidad o no.
  •   784.5.10. Borrado de Múltiples Sectores La familia S29GL-S no da soporte para el borrado de múltiple sectores (vea sec. 3.2.1). Paraesta familia debe ser usada para operaciones de borrado sólo la funciónFLIB_u8StartEraseSector.4.5.11. Data Polling La familia eclipse (sólo S29GL-S) emplea el método “Data# Polling” (vea sec. 1.5 y 1.6) paradeterminar el estado de las operaciones embebidas de escritura y lectura. Sin embargo, S29GL-Sno da soporte al indicador de expiración de tiempo de borrado “DQ3” (vea fig. 1.5). Esto norepresenta ningún problema debido a que el módulo FLIB no emplea ese pin. Adicionalmente, laempresa Spansion señala que “DQ0” (vea fig. 1.5) proveerá indicación al software del sistemaacerca del momento en el cual se puede ejecutar un comando de reinicio de aborto de escrituracon búfer (Write-To-Buffer-Abort-Reset). Este comando sólo puede ser aceptado cuando “DQ0”está en “uno” lógico, como consecuencia de una secuencia incorrecta de carga al búfer deescritura o cuando el pin “DQ7” (vea sec. 1.5 y 1.6) está en “uno” lógico, con lo cual indica queno están activos los algoritmos embebidos (Spansion LLC 2010, p. 8). Esto significa que elmódulo FLIB no se ve afectado en el uso de está funcionalidad para operar con la nueva familia.No obstante, se recomienda hacer modificaciones en la función FLIB_u8StatusCheck parautilizar el pin “DQ0”.4.5.12. Registro de Estado La familia Eclipse™ da soporte a la lectura de un registro de estado para determinar lasituación en la que se encuentran las operaciones embebidas de borrado y de escritura; S29GL-Semplea adicionalmente el método “Data# Polling” (vea sec. 1.5 y 1.6). El estado de unaoperación de borrado y de escritura es dado por un único registro de estado de 16 bits. Elcomando de lectura del registro de estado es enviado luego de un acceso de lectura a lainformación del registro. Los contenidos del registro de estado superponen todas las direccionesen el espacio de direcciones de la memoria. Esta superposición ocurre sólo para un acceso de
  •   79lectura. Accesos subsecuentes de lectura ofrecen los datos que se encuentran en el respectivoarreglo de memoria. El empleo del registro de estado no requiere de la lectura secuencial de comparación de valoresrealizada por el método “Toggle Bit I” (DQ6) (vea sec. 1.5 y 1.6) o del método “Data# Polling”(DQ7) para determinar el estado de los algoritmos embebidos. El byte más bajo del registro deestado contiene bits relacionados a los resultados (éxito o fracaso) de la operación embebidarecientemente finalizada. Un comando de limpieza de estado del registro (clear) se provee pararestablecer (reset) la porción en la cual se encuentra el estado de la última operación embebidacompletada. El byte superior del registro de estado contiene bits que indican la ejecucióndinámica de una operación embebida; relevante para la solución de problemas durante el procesode producción (Spansion LLC 2010, p. 9). Spansion recomienda que el software del usuario, en elcaso de la empresa Continental AG; el módulo FLIB, capture la palabra entera (16 bits) de estadopara realizar diagnósticos de falla. Sin embargo, los 8 bits más significativos del estado deben serenmascarados o tratados como no importantes (dont care) para evaluar sólo el estado de lamemoria. El empleo de este registro de estado es opcional y no inhibe la migración. Sin embargo,Spansion recomienda la modificación del software para tomar ventaja de la robustez y de lasimplicidad del método para determinar el estado de la memoria mediante el registro de estado y,así, reducir en un 70% el tamaño del código requerido para esta determinación (Spansion LLC2010, p. 9). Para observar el diagrama de flujo del uso del registro de estado vea el apéndice J. Latabla 4.2 muestra la definición de este nuevo registro de estado.4.5.13. Escritura Simple de Palabra y Escritura Múltiple Pass con Búfer S29GL-S soporta ambos comandos para la escritura simple de palabra y para la escritura conbúfer. La escritura múltiple pass (escritura al mismo tiempo de hasta 32 palabras por operaciónde escritura con búfer en cada página alineada a 16 palabras) es permitida sin restricciones(Spansion LLC 2010, p. 13). No obstante, la escritura simple de palabra no será soportada por lafamilia GL-T y GL-R (memorias Flash no tecnología Eclipse™ pero de tecnología MirrorBit®de 65 nm) (Spansion LLC 2007, p. 2). No se necesita hacer modificaciones al módulo FLIB para
  •   80operar con la familia GL-S. Para la escritura de datos en las memorias de las familias GL-T yGL-R se debe usar la función FLIB_u8StartWriteBuffer. Tabla 4.2. Definición del registro de estado de la familia Eclipse™ (modificada de Spansion LLC 2010, p. 10) Bits de Luego de registro de Nombre Validez “1” “0” Restablecimiento estado DQ15:8 Reservado n/a n/a n/a n/a Activo. No activo. Dispositivo Siempre Operación de DQ7 “1” Operación Listo válido borrado o de embebida escritura Bit de estado de Borrado Borrado no DQ6 suspensión de DQ7 = “1” “0” en en suspensión borrado suspensión Bit de estado de Borrado Borrado DQ5 DQ7 = “1” “0” borrado fallido exitoso Bit de estado de Escritura Escritura DQ4 DQ7 = “1” “0” escritura fallida exitosa DQ3 Reservado n/a n/a n/a n/a Bit de estado de Escritura Escritura no DQ2 suspensión de DQ7 = “1” “0” en en suspensión escritura suspensión Bit de estado de Error de Sector no DQ1 seguridad de DQ7 = “1” “0” sector asegurado sector seguro DQ0 Reservado n/a n/a n/a n/an/a: No aplica. Restablecimiento: reset.4.5.14. Nuevos Comandos de Suspensión y de Reanudación S29GL-R tiene un par de comandos suspensión/reanudación para las operaciones de suspensióny de reanudación. - Suspensión de escritura: 0x51 (anteriormente 0xB0) y - Reanudación de escritura 0x50 (anteriormente 0x30) (Spansion LLC 2007, p. 9). Estos cambios pueden ser realizados mediante la separación y definición de las siguientesconstantes (no señaladas en este informe por razones de código de confidencialidad de la empresaContinental AG):
  •   81 - FLIB_nErase_ProgramSuspend en: FLIB_nEraseSuspend = 0xB0 FLIB_nProgramSuspend = 0x51 - FLIB_nErase_ProgramResume en: FLIB_nEraseResume = 0x30 FLIB_nProgramResume = 0x50 Para la familia S29GL-S no se requiere cambios debido a que ésta mantiene los mismoscódigos de los dispositivos de memoria predecesores.4.5.15. Comando de Comprobación Vacía Esta funcionalidad sólo es soportada por la familia S29GL-S y consiste en la confirmación delborrado de un sector seleccionado. Esta funcionalidad no está implementada en el módulo FLIB.Para implementarla es necesario emplear el método de registro de estado. Ya que luego de laemisión del comando de comprobación vacía (Blank Check) la memoria ofrece mediante suregistro de estado (bits 7-0) información sobre la ejecución de una comprobación vacía. Si elbloque está borrado, será indicado por el bit de estado de borrado con un “0” (vea tabla 4.2). Sino lo está, será indicado con un “1”. Esta funcionalidad no puede ser suspendida o abortada, setoma 600 µs de ejecución y no permite la lectura en el arreglo de la memoria durante lacomprobación vacía (Spansion LLC 2007, p. 12).4.5.16. Resumen del Estado de Compatibilidad del Módulo FLIB con la Migración hacia la Familia Eclipse™ En líneas generales, el estado actual del módulo FLIB no hace posible su implementación endispositivos basados en la tecnología Eclipse™. Para que el módulo pueda ser implementado enesta familia se debe realizar lo siguiente: - Modificación tanto del valor de la constante “FLIB_nBufferSizeBytes” a “512” como del valor de la constante “FLIB_nBufferMask” a “0xFFFFFE00”. (Estas constantes no se encuentran señaladas en este trabajo por razones de código de confiabilidad de la empresa Continental AG)
  •   82 - Creación y definición de las constantes: - FLIB_nProgramSuspend = 0x51 y - FLIB_nProgramResume = 0x50. (Estas constantes no están señaladas en este informe por razones de código de confidencialidad de la empresa Continental AG) - En el archivo FLIB2CI.H (no señalado y mostrado en este trabajo por razones de código de confidencialidad de la empresa Continental AG): - Implementación de un interruptor de pre-procesador para activar o desactivar el uso del modo Unlock Bypass (vea sec. 1.5 y 1.6) en todo el módulo. - Uso de la función FLIB_u8StartEraseSector en lugar de la función FLIB_u8StartEraseMultipleSectors para ejecutar la operación de borrado. - Empleo de la función FLIB_u8StartWriteBuffer en lugar de la función FLIB_u8StartWriteData para ejecutar la escritura de datos en la familia de memoria Flash GL-T. - Inclusión en la función FLIB_u8StatusCheck (vea antecedentes y sec. 1.8.4) del uso del pin “DQ0” para determinar la ocurrencia de un aborto de escritura con buffer (Write-To- Buffer-Abort) (modificación menor). - (Opcional) Modificación parcial de la función FLIB_u8StatusCheck para implementar la funcionalidad del registro de estado en lugar del método de “Toggle Bit I” (DQ6) (modificación mayor). Este cambio permite la implementación de la funcionalidad del comando de comprobación vacía (vea sec. 4.5.15).  
  •   CONCLUSIONES Y RECOMENDACIONES En este trabajo final de grado, bajo la modalidad de pasantía larga, fue evaluado, optimizado yampliado el controlador de bajo nivel para memorias Flash NOR paralelas (módulo FLIB delinglés Flash Driver Library; esp. Librería de Controlador Flash) de la empresa Continental AGen Babenhausen – Alemania. Además, se realizó un análisis para la migración desde la tecnologíaMirrorBit® hacia la tecnología MirrorBit Ecplise™. A través de la evaluación del módulo FLIB se pudo determinar que el tiempo de ejecución de laoperación de borrado de un sector es 136,25 ms más largo que el especificado por la empresafabricante de la memoria Flash empleada; S29GL512N. De igual forma, se pudo determinar queel tiempo de ejecución de la operación de escritura con búfer normal embebido en la memoria es129 µs más corto que el especificado por la empresa. También se pudo hallar que el tiempo entreel reconocimiento del estado de la memoria Flash y la aparición del mismo es de 2,4895 µs; parafines prácticos el reconocimiento y la aparición ocurren casi de inmediato. Con base en los resultados anteriores se concluyó que mediante el uso de las funcionesexistentes del módulo FLIB no puede ser disminuido más aún el tiempo de ejecución de laoperación de borrado, ya que la duración de ésta depende sólo del controlador embebido en lamemoria Flash. El tiempo de ejecución de la operación de escritura, aunque resultó ser másrápido que el típico especificado, depende, entre otros factores, de la longitud del código delmódulo FLIB. Por ello, las prestaciones del módulo FLIB, aunque resultaron ser optimas, puedenser mejoradas. Esta mejora se evidencia a través del desempeño de una nueva función creadadurante la pasantía y de dos funciones modificadas: FIOL_boEraseMultipleSectors,FLIB_u8StartWriteBuffer y FLIB__u8ReadyWriteBuffer, respectivamente. Con las cuales selogra tanto el borrado de varios sectores en un menor tiempo en comparación con el borrado de lamisma cantidad de sectores, sector por sector como la reducción de la duración de la escritura, sise emplea el búfer ampliado de la memoria M29W128GH/GL de Numonyx, en comparación conel borrado con búfer normal de la memoria S29GL512N de Spansion.
  •   Luego del análisis de los métodos para determinar el estado de la memoria Flash se concluyeque el método “DQ6” (“Toggle Bit I”) es el más fácil de implementar, requiere de menosinstrucciones (eficiencia en el tamaño de código) y su lógica es más sencilla en comparación conla requerida por el método “DQ7” (“Data# Polling”). Por lo tanto, con la implementación delmétodo “Toggle Bit I” se logra un código para sistemas embebidos de tamaño reducido,funcional y eficiente. Como resultado de la expansión del módulo FLIB, llevada a cabo durante la pasantía, se ofrecemayores funcionalidades para los paquetes de software de orden superior. Tales funcionalidadesson: la suspensión y reanudación de las operaciones de borrado y de escritura, el modo auto-selección y el uso del sector de silicio protegido. Además, para probar el correcto desempeño delas funciones del módulo FLIB se cuenta con un módulo de prueba, el cual fue desarrolladotambién durante la pasantía. Finalmente, como resultado del análisis para la migración de la tecnología MirrorBit® a latecnología MirrorBit Eclipse™, se obtuvo que el estado actual del módulo FLIB no está apto paraser implementado en los dispositivos con memoria Flash de tecnología MirrorBit Eclipse™. Estose debe a que actualmente el módulo FLIB soporta un búfer de escritura de 32 Byte y la memoriaS29GL-S ofrece un búfer de escritura de 512 Byte. La memoria S29GL-R requiere de comandosdistintos para la suspensión y reanudación de escritura pero el módulo FLIB emplea comandosiguales para la suspensión de borrado y escritura y otros para la reanudación de borrado yescritura. La familia MirrorBit Eclipse™ no utiliza el modo “Unlock Bypass” y no ofrece tantola capacidad para borrar múltiples sectores con una sola llamada a una función como la propiedadpara escribir una sola palabra o word con una llamada a una función. La nueva tecnología enlugar de implementar máquinas de estado incorpora un microcontrolador para verificar losprocesos de la memoria Flash. Para que el módulo FLIB pueda ser implementado en la familia MirrorBit Eclipse™ serecomienda realizar lo siguiente: - Modificación tanto del valor de la constante “FLIB_nBufferSizeBytes” a “512” como del valor de la constante “FLIB_nBufferMask” a “0xFFFFFE00”.
  •   - Creación y definición de las constantes: - FLIB_nProgramSuspend = 0x51 y - FLIB_nProgramResume = 0x50. - En el archivo FLIB2CI.H: - Implementación de un interruptor de pre-procesador para activar o desactivar el uso del modo Unlock Bypass en todo el módulo. - Uso de la función FLIB_u8StartEraseSector en lugar de la función FLIB_u8StartEraseMultipleSectors para ejecutar el borrado de datos. - Empleo de la función FLIB_u8StartWriteBuffer en lugar de la función FLIB_u8StartWriteData para ejecutar la escritura de datos en la familia de memoria Flash GL-T. - Inclusión en la función FLIB_u8StatusCheck del uso del pin “DQ0” para determinar la ocurrencia de un aborto de escritura con buffer (Write-To-Buffer-Abort) (modificación menor). - (Opcional) Modificación parcial de la función FLIB_u8StatusCheck para implementar la funcionalidad del registro de estado en lugar del método de “Toggle Bit I” (DQ6) (modificación mayor). Este cambio permite la implementación de la funcionalidad del comando de comprobación vacía. Todas estas recomendaciones anteriores fueron señaladas en la especificación del módulo FLIBbajo el título de “temas abiertos” y presentadas ante todos los integrantes del grupo Flash para suposterior consideración respecto a la migración tecnológica. Por otra parte, mediante el desarrollo de esta pasantía he obtenido importantes experienciaslaborales en el área de la electrónica. Estas son por ejemplo: - la importancia de la división del trabajo, es decir, de las tareas y de las responsabilidades de cada integrante de una organización
  •  - la necesidad de conocer completamente los objetivos de una tarea- la importancia que tienen las estimaciones y planes de tiempo en la práctica para la ejecución correcta de una o varias tareas- la importancia de la comunicación efectiva con los colegas y superiores- la necesidad de realimentación de los superiores y colegas para conocer completamente los correspondientes requerimientos de una tarea- la importancia de dominar el idioma oficial del país en el cual se trabaja- las ventajas del empleo de métodos, formatos y procedimientos de una empresa tan grande como Continental AG.
  • 87 TRABAJOS FUTUROS El grupo Flash con el objetivo de actualizar y dar aún más funcionalidad al módulo FLIB puedellevar a cabo las siguientes tareas. - Dar soporte a memorias Flash NOR paralelas no uniformes. Para hacer al módulo FLIB independiente de cualquier memoria Flash usada puede ser implementado el Common Flash Memory Interface; esp. Interfaz común de memoria Flash (CFI) para adaptar automáticamente los valores de, por ejemplo, las constantes: “FLIB_nSectorSize” y “FLIB_nSectormask_Msk” y para obtener información sobre las direcciones límites de los sectores “boot”. Todo esto para detectar cuándo hacer adaptaciones necesarias tanto para las funciones de borrado de múltiples sectores como para, si es necesario, las funciones de escritura con búfer. El módulo FLIB, mediante la función FLIB_u8GetFlashType, obtiene la información para las operaciones anteriores pero, además, esta función puede ser modificada para que obtenga de la dirección 0x4F en modo CFI la información sobre los sectores “boot”, es decir, si la memoria posee o no una estructura “Top” o “Bottom”. Adicionalmente, puede ser usado el CFI para obtener información sobre la disponibilidad en la memoria utilizada de funciones avanzadas tales como: suspensión de borrado, suspensión de escritura, protección de sector, etc., tal que pueda permitir al módulo FLIB detectar las funcionalidades y ajustarse automáticamente. - Implementar en el módulo FLIB las recomendaciones propuestas para lograr la migración de la tecnología MirrorBit® a MirrorBit Eclipse™.
  • 88 APORTESLas labores en el grupo Flash del consorcio Continental AG dejan varios aportes: - El conocimiento del desempeño temporal real de las operaciones de borrado y de escritura originales del módulo FLIB. - La creación de 12 nuevas funciones que amplían la funcionalidad del módulo FLIB: - FIOL_boEraseMultipleSectors - FLIB_u8StartEraseMultipleSectors - FLIB__u8ReadyEraseMultipleSectors - FLIB_vProgramSuspend - FLIB_vProgramResume - FLIB_vEraseSuspend - FLIB_vEraseResume - FLIB_u8EnterAutoselectMode - FLIB_u8GetAutoselectInfo - FLIB_vExitAutoselectMode - FLIB_vEnterSecSiSectorMode - FLIB_vExitSecSectorMode - La modificación de dos funciones existentes en el módulo FLIB, con las cuales se reduce el tiempo de escritura cuando se usa el búfer ampliado: - FLIB_u8StartWriteBuffer - FLIB__u8ReadyWriteBuffer - La creación de nuevas especificaciones tanto para el módulo FLIB como para el módulo de prueba FLIB. - La actualización de la especificación del módulo FIOL debida a la ampliación del módulo FLIB producto de la funcionalidad de borrado de múltiples sectores. - El reporte de prueba del módulo FLIB, creado según las directivas de Continental AG.
  • 89 REFERENCIASAMD. MirrorBitTM FlashBRINKSCHULTE, U y UNGERER, T. 2007. Mikrocontroller und Mikroprozessoren. 2daedición. Springer, BerlínCONTINENTAL AG. 2006. Continental the basics, HanóverCONTINENTAL AG. 2007. Software Module/Package Specification FIOL, HesseCONTINENTAL AG. 2008a. A2C53354915_Schema, HesseCONTINENTAL AG. 2008b. Continental Core Development Software. Version 2.9, HesseCONTINENTAL AG. 2009a. Fact Book Fiscal Year 2009, HanóverCONTINENTAL AG. 2009b. Geschäftsbericht 2009 Ideen verbinden, HanóverCONTINENTAL AG. 2009c. Instrumentation & Drive HMI Sales & Portfolio, HanóverCONTINENTAL AG. 2009d. Product Portfolio ID RD SW PDF Core Development Flash-group,HesseCONTINENTAL AG. 2010a. Continental Konzernpräsentation 2010, HanóverCONTINENTAL AG. 2010b. Division Interior Business Unit Instrumentation & Driver HMIStrategy Summary (extract from strategic planning booklet 2010+4), HanóverCONTINENTAL AG. 2010c. Geschichte 1997-2007. Disponible en Internet: http://www.conti-online.com/generator/www/com/de/continental/portal/themen/continental/geschichte/1997_2007_de.html, consultado el 2 de agosto de 2010CONTINENTAL AG. 2010d. Instrumentation & Driver HMI (ID). Disponible en Internet:http://www.conti-online.com/generator/www/de/de/continental/automotive/general/interior/business_units/bu_instrumentation_de.html, consultado el 20 de junio de 2010CONTINENTAL AG. 2010e. Research & Development. Disponible en Internet: http://c-inside.conti.de/generator/c-inside/Surf_Regions/en_US/Divisions/automotive/
  • 9002_interior/17_business_units/20_instrumentation_driver_hmi/departments/rd/ov1_rd_en.html,consultado el 11 de junio de 2010CONTINENTAL AG. 2010f. SMK Software Method Kit for Software Development ProcessesVersion 4.6 Revision 2.57 del 6/01/2010, HanóverCONTINENTAL AG. 2010g. Unsere Mission und uniere Strategie. Disponible en Internet:http://c-inside.conti.de/generator/c-inside/Surf_Regions/de_DE/Divisionen/automotive/02_interior/40_strategien_ziele/c_strategien_ziele_mission_und_strategie_de.html, consultado el14 de junio de 2010CONTINENTAL AG. 2010h. Vision. Disponible en Internet: http://c-inside.conti.de/generator/c-inside/Surf_Regions/en_US/Divisions/automotive/02_interior/17_business_units/20_instrumentation_driver_hmi/departments/rd/040_departments/software/ov1_software_en.html, consultado el 11 de junio de 2010DAIMLER AG. 2008. Kombi-Instrument. Disponible en Internet: http://www4.mercedes-benz.com/manual-cars/ba/cars/s211/de/overview/kombiinstrument.html, consultado el 11 de juliode 2010HONINA. 2010a. Funktionsprinzip eines NOR-Gatters. Disponible en Internet:http://de.wikipedia.org/w/index.php?title=Datei:Funktionsprinzip_eines_NOR-Gatters.png&filetimestamp=20100706154902, consultado el 10 de julio de 2010HONINA. 2010b. Funktionsprinzip eines NAND-Gatters. Disponible en Internet:http://de.wikipedia.org/w/index.php?title=Datei:Funktionsprinzip_eines_NAND-Gatters.png&filetimestamp=20100707011247, consultado el 10 de julio de 2010KOVÁCS, A., MEYER, U., MORUZ, G., NEGOESCU, A. 2009. Online Paging for FlashMemory Devices, Fráncfort del MenoNIKKEI ELECTRONICS ASIA. 2005. Why NAND has Become a Must in Mobile Phones.Disponible en Internet: techon.nikkeibp.co.jp/article/HONSHI/20061117/123938/, consultado el11 de julio de 2010NUMONYX. 2009. M29W128GH M29W128GL 128-Mbit (16 Mbit x8 or 8 Mbit x16, page,uniform block) 3 V supply flash memory, IdahoROTH, Andreas. 1998. Das Mikrocontroller-Applikations-Kochbuch. 2da edición. MIPT, BonnSPANSION LLC. 2005a. Flash Memory An Overview, California
  • 91SPANSION LLC. 2005b. Understanding Typical and Maximum Program/Erase Performance.CaliforniaSPANSION LLC. 2007. MirrorBit Eclipse Family GL-S, GL-T Technical Overview. SpansionInternal. CaliforniaSPANSION LLC. 2008a. S29GL-N_00_B8. MirrorBit® Flash Family Data Sheet, CaliforniaSPANSION LLC. 2008b. MirrorBit® Technology: The Foundation for Value-Added FlashMemory Solutions, SunnyvaleSPANSION LLC. 2008c. Spansion MirrorBit SPI Multi I/O Flash Memory. Vol. 26, No 4,CaliforniaSPANSION LLC. 2010. How to Prepare Designs for 65 nm MirrorBit® GL and 65 nmMirrorBit® Eclipse™ GL Product Families. California.WIKIPEDIA. 2010. Continental AG global locations. Disponible en Internet:http://en.wikipedia.org/wiki/File:Continental_AG_global_locations.png, consultado el 3 defebrero de 2011.
  • 92 APÉNDICE A Compuerta NOR y NANDModificado de Honina 2010a y Honina 2010b
  • 93 APÉNDICE B Paneles de InstrumentosPanel de instrumentos A. Microcontrolador TX4964FG-120 (Toshiba) y memoria Flash S29GL512N (Spansion)Panel de instrumentos B. Microcontrolador MB86R02 (Fujitsu) y memoria Flash M29W128GH/GL (Numonyx)
  • 94 APÉNDICE CFigura de las interfaces Slingshot (izquierda) y del analizador lógico Intronix Logicport de 34 canales (derecha) Analizador lógico Intronix Logicport de 34 canales Interfaz Slingshot™ para el panel de instrumentos A Interfaz Slingshot™ para el panel de instrumentos B
  • 95 APÉNDICE D Medición del tiempo de borrado sector por sector con la memoria Flash previamente borradaSector 2 Sector 3 Iteración Tiempo (ms) Iteración Tiempo (ms) 1 621,599 1 628,888 2 641,98 2 624,27 3 652,939 3 623,269 4 650,154 4 646,106 5 635,312 5 624,626 6 640,405 6 643,586 7 640,117 7 625,177 8 652,107 8 625,834 9 612,491 9 651,179 10 615,257 10 653,753 Promedio (ms) 636,236 Promedio (ms) 634,669 Desviación Estándar (ms) 14,941 Desviación Estándar (ms) 12,417 Error Relativo 2,348% Error Relativo 1,956%Sector 4 Sector 5 Iteración Tiempo (ms) Iteración Tiempo (ms) 1 649,975 1 597,924 2 686,737 2 614,637 3 661,919 3 666,999 4 615,139 4 686,75 5 631,479 5 648,974 6 676,857 6 635,023 7 636,808 7 628,647 8 733,012 8 663,291 9 701,405 9 709,518 10 696,249 10 655,05 Promedio (ms) 668,958 Promedio (ms) 650,681 Desviación Estándar (ms) 36,551 Desviación Estándar (ms) 33,372 Error Relativo 5,464% Error Relativo 5,129%
  • 96Sector 6 Sector 7 Iteración Tiempo (ms) Iteración Tiempo (ms) 1 590,975 1 647,367 2 609,81 2 669,518 3 603,327 3 619,617 4 609,458 4 662,863 5 613,167 5 620,053 6 616,687 6 608,149 7 607,441 7 617,764 8 606,2 8 593,347 9 614,213 9 672,093 10 600,299 10 643,872 Promedio (ms) 607,158 Promedio (ms) 635,464 Desviación Estándar (ms) 7,554 Desviación Estándar (ms) 27,460 Error Relativo 1,244% Error Relativo 4,321%Sector 8 Sector 1 (Medición incorrecta. De la iteración 2 a la 10 el Iteración Tiempo (ms) sector se encuentra previamente escrito. No es tomado en 1 618,535 cuenta para la determinación del tiempo promedio) 2 651,447 Iteración Tiempo (ms)   3 627,663 1 683,021 4 615,056 2   429,297 5 624,783 3   435,333 6 610,53 4 422,286 7 611,916 5 471,069 8 605,513 6 430,268 9 623,42 7 435,891 10 616,959 8 427,372 Promedio (ms) 620,582 9 434,889 Desviación Estándar (ms) 12,822 10 541,745 Error Relativo 2,066% Promedio (ms) 471,117 Desviación Estándar (ms) 82,624 Error Relativo 17,538% Tiempo promedio de borrado de sector (ms): 636,250 Desviación Estándar del tiempo de borrado 19,887 de sector (ms): Error Relativo 3,13%
  • 97 APÉNDICE EMedición del tiempo de borrado sector por sector con la memoria Flash previamente escrita con 0x00Sector 1 Sector 2 Iteración Tiempo (ms) Iteración Tiempo (ms) 1 421,375 1 405,326 2 400,605 2 390,236 3 423,779 3 381,593 4 462,896 4 403,158 5 419,673 5 415,743 6 411,737 6 434,538 7 441,153 7 406,983 8 413,277 8 398,119 9 455,31 9 379,184 10 460,714 10 395,618 Promedio (ms) 431,052 Promedio (ms) 401,050 Desviación Estándar (ms) 22,302 Desviación Estándar (ms) 16,354 Error Relativo 5,174% Error Relativo 4,078%Sector 3 Sector 4 Iteración Tiempo (ms) Iteración Tiempo (ms) 1 393,917 1 432,458 2 379,637 2 399,173 3 413,661 3 402,43 4 400,696 4 405,569 5 448,524 5 407,495 6 384,971 6 411,58 7 396,293 7 411,95 8 402,908 8 418,833 9 396,643 9 412,237 10 388,694 10 397,463 Promedio (ms) 400,594 Promedio (ms) 409,919 Desviación Estándar (ms) 19,371 Desviación Estándar (ms) 10,281 Error Relativo 4,835% Error Relativo 2,508%
  • 98Sector 5 Sector 6 Iteración Tiempo (ms) Iteración Tiempo (ms) 1 420,678 1 389,761 2 424,796 2 390,424 3 427,902 3 396,703 4 423,499 4 430,661 5 403,063 5 372,001 6 455,525 6 418,878 7 416,8 7 386,941 8 399,4 8 407,348 9 433,441 9 391,343 10 393,839 10 391,877 Promedio (ms) 419,894 Promedio (ms) 397,594 Desviación Estándar (ms) 18,094 Desviación Estándar (ms) 16,982 Error Relativo 4,309% Error Relativo 4,271%Sector 7 Sector 8 Iteración Tiempo (ms) Iteración Tiempo (ms) 1 406,591 1 398,645 2 373,79 2 396,006 3 403,441 3 419,407 4 394,585 4 403,138 5 388,282 5 411,602 6 391,696 6 445,987 7 398,676 7 393,351 8 422,618 8 400,097 9 447,147 9 476,778 10 402,06 10 468,848 Promedio (ms) 402,889 Promedio (ms) 421,386 Desviación Estándar (ms) 20,096 Desviación Estándar (ms) 31,197 Error Relativo 4,988% Error Relativo 7,403% Tiempo promedio de borrado de sector (ms): 410,547 Desviación Estándar del tiempo de borrado 12,197 de sector (ms): Error Relativo 2,97%
  • 99 APÉNDICE F Medición del tiempo requerido para escribir 128 Kbytes de datos (equivalente a un sector)   Iteración Tiempo (ms) 1 465,387 2 450,196 3 453,83 4 458,58 5 459,133 6 450,143 7 451,944 8 450,144 9 451,937 10 468,527 Promedio 455,982 Desviación Estándar 6,679 Error Relativo 1,465%Tiempo promedio para escritura de 128 Kbyte de datos = 455,982 ms = 455982 µsTiempo para escritura de 32 byte (tamaño del búfer de escritura) = (455982 µs / 128x1024 bytes)x32 bytes = 111 µsTiempo para escritura de 1 Mbyte (8x124 Kbyte) = 8x455,982 ms = 3,647856 s
  • 100 APÉNDICE GTiempo medido entre la señal RY/BY y la detección de la función FLIB_u8StatusCheck Iteración Tiempo (µs) 1 3,275 2 3,37 3 1,24 4 1,475 5 3,125 6 4,5 7 1,615 8 3,175 9 1,27 10 1,85 Promedio (µs) 2,4895 Desviación Estándar (µs) 1,1333 Error Relativo 45,524%
  • 101 APÉNDICE H Simulación de la memoria Flash S29GL512N Operación Simulación (s) Medido (s)Borrado de 1 Mbyte de dato 4 5,3231Escritura de 1 Mbyte de dato (Con Unlock Bypass; - 3,6479 2 ciclos en lugar de 4)Escritura de 1 Mbyte de dato 7.6875 3,6479 x 2 = 7,2958 (Sin Unlock Bypass)
  • 102 APÉNDICE IPortada de los documentos modificados y creados Título de la especificación del módulo FIOL Página de revisión de la especificación del módulo FIOL
  • 103 Portada de la especificación del módulo FLIB Portada de la especificación del módulo de prueba FLIBPortada del informe del módulo de prueba FLIB Título de la nota de revisión del módulo FLIB
  • 104 APÉNDICE J Diagrama de flujo del uso del registro de estado en la familia Eclipse™Modificado de Spansion LLC 2010, p. 9
  • 105 APÉNDICE K GLOSARIOCFI: Common Flash Memory Interface; esp. Interfaz común de memoria Flash. Es una interfazestandarizada desarrollada en conjunto entre las empresas AMD, Fujitsu, Intel y Sharp sobre lacual se puede acceder a las propiedades de la memoria Flash. Con ello es posible laimplementación de algoritmos genéricos para la programación Flash (borrado y escritura dedatos).Controlador: es un programa de computadora que permite la interacción de programas de bajonivel con el hardware del dispositivo.Firmware: es un software que se incluye en los dispositivos electrónicos y normalmente no esmodificable por el usuario.I2C: es un bus de datos serial interno del dispositivo que se utiliza para la comunicación entrediversas partes de circuitos con una velocidad de transmisión baja.Módulos: son unidades funcionales completas de un software que se componen de una serie deprocesos y estructuras de datos.OSEK: Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug; términoalemán que significa sistema abierto y sus interfaces para la electrónica en automóviles.Corresponde a un gremio de estandarización industrial. Es una marca comercial del consorcioContinental AG. Es un sistema operativo a tiempo real para componentes embebidos. El términoOSEK se emplea mayormente para el sistema operativo OSEK-OS.Pin: es una conexión eléctrica que consiste en un alambre proveniente de un dispositivo. Es usadopara soporte físico, transferir alimentación eléctrica, circuitos de prueba (multímetro) o paratransmitir información.
  • 106Secuencia de ciclo de bus: es una secuencia de comando de operación de la memoria Flash, en lacual cada comando se envía uno detrás del otro (ciclo) a través del bus de la memoria.Sistema Flashloader: es un software básico elemental que permite la reprogramación de unamemoria Flash.UML: Unified Modeling Language; término anglosajón que significa lenguaje unificado demodelado. Es un lenguaje estandarizado para el modelaje de software y de sistemas.Watchdog: es un término inglés para denotar a un componte de un sistema que supervisa lafunción de otros componentes.Word: término electrónico del idioma inglés que corresponde a un grupo de bits de tamaño fijoque son manejados por un sistema como un conjunto inseparable.
  • 107 APÉNDICE LCódigo del módulo de prueba para el módulo FLIB