Módulo de Cómputo Embebido basado en...

53
UNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERÍA C ARRERA DE MAESTRÍA EN S ISTEMAS E MBEBIDOS MEMORIA DEL T RABAJO F INAL Módulo de Cómputo Embebido basado en Cortex-A8 Autor: Esp. Ing. Pablo O. Ridolfi Director: Esp. Ing. Alejandro J. Furfaro Jurados: Mg. Ing. Diego Brengi (INTI) Dr. Ing. Leandro Cymberknop (UTN-FRBA) Dr. Ing. Mariano Llamedo Soria (UTN-FRBA) Este trabajo fue realizado en la Ciudad Autónoma de Buenos Aires entre febrero y diciembre de 2017.

Transcript of Módulo de Cómputo Embebido basado en...

UNIVERSIDAD DE BUENOS AIRES

FACULTAD DE INGENIERÍA

CARRERA DE MAESTRÍA EN SISTEMAS EMBEBIDOS

MEMORIA DEL TRABAJO FINAL

Módulo de Cómputo Embebidobasado en Cortex-A8

Autor:Esp. Ing. Pablo O. Ridolfi

Director:Esp. Ing. Alejandro J. Furfaro

Jurados:Mg. Ing. Diego Brengi (INTI)

Dr. Ing. Leandro Cymberknop (UTN-FRBA)Dr. Ing. Mariano Llamedo Soria (UTN-FRBA)

Este trabajo fue realizado en la Ciudad Autónoma de Buenos Airesentre febrero y diciembre de 2017.

I

Resumen

En este trabajo se presenta el diseño e implementación de un módulode cómputo embebido diseñado específicamente para aplicaciones industriales.Su hardware posee una estructura de procesamiento heterogéneo: por un ladobrinda soporte para requerimientos de propósito general como interfaz de usua-rio, conectividad, almacenamiento y gestión de datos mediante un subsistemabasado en el microprocesador ARM Cortex-A8, y por otro lado resuelve requeri-mientos de tiempo real con tiempo de respuesta determinístico con un subsistemabasado en el microprocesador ARM Cortex-M4. El software desarrollado para es-te módulo de cómputo provee los recursos necesarios para gestionar ambos sub-sistemas y expone al usuario una interfaz de programación de aplicaciones (API)que brinda las herramientas necesarias para controlar la ejecución del softwareen cada subsistema y la intercomunicación entre los mismos.

Para el desarrollo de este trabajo fueron fundamentales los conoci-mientos adquiridos en las materias Implementación de Sistemas Operativos I, Imple-mentación de Sistemas Operativos II e Implementación de Manejadores de Dispositivos,cuyos contenidos se aplicaron en el software implementado en cada subsistema,y las materias Certificación de Sistemas Electrónicos, Diseño de Circuitos Impresos yDiseño de Sistemas Críticos, cuyos criterios sentaron las bases para el diseño delhardware.

II

Agradecimientos

A Alejandro Furfaro, por su confianza y su Ejemplo.

A Ariel Lutenberg, que siempre está ahí cuando necesitamos su asistencia.

A Facundo Larosa, Fernando Aló y Nicolás Blanchet, colegas extraordinarios quehan sabido brindar su consejo y su experiencia.

A Gessica, a mi familia y a Lali, por acompañarme siempre.

III

Índice general

Resumen I

1. Introducción General 11.1. Contexto y justificación . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Objetivos y alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Introducción Específica 42.1. Estructura general del sistema . . . . . . . . . . . . . . . . . . . . . . 4

2.1.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.1.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3. Diseño e Implementación 103.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1.1. Estructura general del hardware . . . . . . . . . . . . . . . . 103.1.2. Módulo de cómputo - Subsistema de propósito general . . . 12

Costos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.1.3. Placa base - Subsistema de tiempo real . . . . . . . . . . . . . 14

Costos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2.1. Estructura general del software . . . . . . . . . . . . . . . . . 15Protocolo de RemoteMCU . . . . . . . . . . . . . . . . . . . . 16

3.2.2. Software para el subsistema de propósito general . . . . . . 183.2.3. Software para el subsistema de tiempo real . . . . . . . . . . 19

4. Ensayos y Resultados 214.1. Verificación del diseño de hardware . . . . . . . . . . . . . . . . . . 214.2. Ensayos funcionales para el subsistema de propósito general . . . . 224.3. Ensayos funcionales para el subsistema de tiempo real . . . . . . . 234.4. Resultados generales . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5. Conclusiones 285.1. Conclusiones sobre el trabajo realizado . . . . . . . . . . . . . . . . 285.2. Próximos pasos y trabajo futuro . . . . . . . . . . . . . . . . . . . . . 29

A. Diagrama esquemático del módulo de cómputo 30

B. Diagrama esquemático de la placa base 37

IV

Índice de figuras

1.1. Diagrama en bloques general. . . . . . . . . . . . . . . . . . . . . . . 2

2.1. Diagrama de Gantt – Meses 1 a 3 . . . . . . . . . . . . . . . . . . . . 72.2. Diagrama de Gantt – Meses 4 a 6 . . . . . . . . . . . . . . . . . . . . 82.3. Diagrama de Gantt – Meses 7 a 10 . . . . . . . . . . . . . . . . . . . 9

3.1. Diagrama en bloques del subsistema de propósito general . . . . . 113.2. Módulo de cómputo diseñado. Incluye el subsistema de propósito

general y el subsistema de comunicaciones. . . . . . . . . . . . . . . 123.3. Estructura interna de un SiP de la familia OSD335x. . . . . . . . . . 133.4. Distribución de layers del PCB. . . . . . . . . . . . . . . . . . . . . . 133.5. Estructura del stackup provista por el fabricante. . . . . . . . . . . . 133.6. Placa base para el módulo de cómputo, incluye el subsistema de

tiempo real. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.7. Esquema general del software RemoteMCU. . . . . . . . . . . . . . 163.8. Esquema de software para el subsistema de tiempo real o target. . . 19

4.1. BeagleBone Black Wireless (medidas: 86.36 mm por 54.61 mm). . . 224.2. picoCIAA (junto a una moneda de un peso argentino de 23 mm de

diámetro como referencia). . . . . . . . . . . . . . . . . . . . . . . . . 224.3. Test del protocolo RMCU: Query del target y comienzo de descarga

de un nuevo firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.4. Test del protocolo RMCU: Finalización de la descarga del firmware

y visualización de los eventos enviados por el target. . . . . . . . . . 24

V

Índice de Tablas

3.1. Comparativa de costos unitarios vs. cantidad para el módulo decómputo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2. Comparativa de costos unitarios vs. cantidad para la placa base. . . 153.3. Estructura general de un paquete del protocolo RemoteMCU. . . . 173.4. Identificadores de paquete del protocolo RemoteMCU. . . . . . . . 173.5. Formato especial del campo data en los paquetes de tipo Evento. . 173.6. Parámetros de un callback de RMCU, válidos tanto para host como

para target. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.1. Revisión de hardware para el módulo de cómputo. . . . . . . . . . 254.2. Revisión de hardware para el módulo de cómputo (cont.). . . . . . 264.3. Revisión de hardware para el módulo de cómputo (cont.). . . . . . 27

VI

Dedicado a quienes invierten tiempo y energía en dejar atrásun mundo mejor que el que encontraron.

1

Capítulo 1

Introducción General

En este capítulo se presentan las características generales del trabajo realiza-do y bajo qué contexto se decidió enmarcarlo.

1.1. Contexto y justificación

En el marco del diseño e implementación de un sistema embebido indus-trial, particularmente al encarar el diseño de un «módulo de cómputo» (llamadotambién compute module o System-on-Module –SoM–) es cada vez es más frecuenteencontrarse con aplicaciones que imponen cuatro requerimientos excluyentes:

1. respuesta real-time (o tiempo real),

2. compatibilidad con el kernel Linux,

3. factor de forma que simplifique (y por lo tanto economice) el diseño delcircuito impreso del sistema, y

4. API1 accesible y amigable para interactuar con el hardware.

Diversos sistemas actuales basados en microcontroladores suelen abordarde manera óptima los requerimientos 1, 3 y 4 pero carecen de compatibilidadcompleta con Linux debido a restricciones en la capacidad de memoria y de pro-cesador[1]. Por otra parte, el uso de sistemas compatibles con Linux cumplen elrequerimiento 2 pero requieren un nivel de expertise por parte del implementa-dor que muchas veces lo empujan a descartar este tipo de soluciones debido a sucomplejidad. Este impedimento es todavía mayor si la aplicación suma requeri-mientos de tiempo real (real-time o RT, de ahora en adelante). Podrían mencio-narse excepciones como Raspberry Pi o Beagleboard que dan soporte para los tresrequerimientos pero solo a nivel hobby o community, es decir, foros de consulta singarantía de ninguna clase[2].

Teniendo en cuenta este contexto se plantea el objetivo primario de este tra-bajo final: el diseño de un SoM que provea al implementador de sistemas embe-bidos una solución integrada que aborde los cuatro requerimientos descritos enel párrafo anterior de la misma forma y con la misma facilidad que hoy le brindaun microcontrolador. Este SoM será capaz de ejecutar software basado en LinuxEmbebido así como firmware bare-metal con el objetivo de proporcionar com-portamiento RT. La Figura 1.1 presenta a grandes rasgos los componentes quetendrá el SoM. A su vez el factor de forma del SoM permitirá diseñar un PCB

1Application Programming Interface, Interfaz de Programación para el usuario.

Capítulo 1. Introducción General 2

base accesible con tecnología disponible actualmente en el mercado local, dondeel implementador ubicará los periféricos que requiera para su aplicación, mante-niendo al mínimo los componentes necesarios para que el SoM funcione. Por otraparte incluirá una característica adicional que hoy no está presente en gran partede los microcontroladores actuales: la capacidad de conectividad Wi-Fi y Blue-tooth para que la comunicación del sistema con el mundo exterior se realice demanera transparente y con mínima configuración. A continuación se describenlos componentes generales que tendrá el sistema:

PMIC (Power Management Integrated Circuit): Encargado de la gestión dela alimentación del microprocesador y sus memorias.

CPU: Unidad central de procesamiento encargada de las tareas de cómputo.Posee un subsistema de propósito general (GPSS) capaz de ejecutar progra-mas bare-metal y basados en Linux embebido, y un subsistema de tiemporeal (RTSS) para aplicaciones de tiempo real bare-metal o basadas en RTOS.

RAM y Flash: Memorias requeridas por el sistema.

Wi-Fi y BT: Módulo de comunicación Wi-Fi y Bluetooth.

I/O: Interfaces de entrada/salida (USB - GPIO - UART - I2C - SPI - ADC).

Finalmente es requisito deseable que el esquema de costos del SoM con-temple proveedores locales para su producción, puesta en marcha y posteriordistribución, con el objetivo de que su costo final refleje la realidad del mercadoelectrónico argentino.

PMICCPU

RAM Flash

Wi-FiBT

I/O

RTSSGPSS

FIGURA 1.1: Diagrama en bloques general.

1.2. Motivación

La motivación principal de este trabajo surgió luego de la experiencia ad-quirida durante el diseño del hardware de la Computadora Industrial AbiertaArgentina –CIAA–[3]. Dentro de la familia de hardware del Proyecto CIAA, ex-cepto por el modelo de Alto Costo Computacional CIAA-ACC[4], ninguna otraCIAA es capaz de ejecutar un sistema operativo basado en el kernel Linux queademás tenga la capacidad de soportar todas las aplicaciones de una distribu-ción completa. Es importante remarcar que la CIAA-NXP, al disponer de 8MB

Capítulo 1. Introducción General 3

de SDRAM externa, puede ejecutar una versión del kernel reducida en carac-terísticas pero no es suficiente para instalar servicios como Apache, Python yOpenCV[5] lo que imposibilita disponer de los recursos que hacen atractiva laopción de utilizar Linux por parte del desarrollador frente a una solución bare-metal o basada en un RTOS. Por otro lado la CIAA-ACC utiliza componentes degran capacidad de procesamiento pero cuyo costo supera el presupuesto para unmódulo de cómputo industrial frente a otros disponibles[6]. De allí surge la nece-sidad de diseñar un sistema de propósito general que a su vez tenga un esquemade costos más adecuado al mercado local.

Por este motivo se planteó, en el marco de un Proyecto de Investigación yDesarrollo (PID) llevado a cabo en el Laboratorio de Procesamiento Digital de laUTN-FRBA, diseñar un módulo de hardware que siga los lineamientos del Pro-yecto CIAA en cuanto a su aplicación industrial, pero que disponga de los recur-sos suficientes de CPU y memoria para ejecutar una distribución Linux completacomo Yocto, Buildroot, Angstrom o Debian. Al mismo tiempo, para dar sopor-te Real-Time y mantener compatibilidad con otros modelos de CIAA, se decidiótener en cuenta un subsistema integrado de alguna forma al CPU principal quepermita ejecutar aplicaciones bare-metal o con RTOS en forma autónoma, pero queacepten ser modificadas y/o reporten eventos al sistema principal –denominadode propósito general–.

1.3. Objetivos y alcance

El objetivo de este trabajo es diseñar un SoM que permita a la comunidadde electrónicos (estudiantes y profesionales) implementar un sistema compatiblecon Linux Embebido y aplicaciones de tiempo real minimizando la complejidaddel hardware base (periféricos), llevándolo al mismo nivel que requieren hoy endía las aplicaciones basadas en microcontroladores.

Respecto al alcance, se establecen los siguientes entregables:

Archivos de diseño del System-on-Module y de una placa base.

Firmware base para el subsistema Real-Time.

Software base para el subsistema de propósito general.

Memoria técnica.

4

Capítulo 2

Introducción Específica

En este capítulo se abordarán con mayor detalle las características del traba-jo realizado, así como sus requerimientos técnicos formales y la planificación delas tareas ejecutadas.

2.1. Estructura general del sistema

2.1.1. Hardware

Tal como se ha descripto en el capítulo 1, el hardware diseñado puede clasi-ficarse en dos grandes subsistemas:

1. El subsistema de propósito general que ejecutará aplicaciones basadas enun sistema operativo Linux.

2. El subsistema de tiempo real que ejecutará aplicaciones bare-metal o basadasen RTOS.

El subsistema de propósito general tendrá los siguientes componentes dehardware:

1. Microprocesador Cortex-A8 a 1GHz.

2. 512 MB de memoria RAM DDR3.

3. PMIC1 – Circuito Integrado de Gestión de Energía.

4. 4GB de memoria Flash eMMC para el sistema de archivos.

5. Módulo de comunicaciones Wi-Fi y Bluetooth.

6. Conectores de Entrada/Salida de uso industrial con interfaces GPIO, USB,I2C, SPI, ADC, Timers, PWM, JTAG y LCD.

Por otra parte, el subsistema de tiempo real consistirá de los siguientes com-ponentes:

1. Microcontrolador dual-core basado en Cortex-M4 y Cortex-M0 con interfazUSB para conectarse al subsistema de propósito general.

2. Interfaces de Entrada/Salida compatibles con la CIAA.

1Power Management Integrated Circuit.

Capítulo 2. Introducción Específica 5

2.1.2. Software

El software se puede clasificar de la misma forma que los subsistemas. Elsoftware que controlará el subsistema de propósito general tendrá las siguientescaracterísticas:

1. Sistema operativo Debian GNU/Linux con soporte para el microprocesadorelegido.

2. Biblioteca dinámica para comunicación con el subsistema de tiempo real.

Por otra parte, el software que ejecutará el subsistema de tiempo real dis-ponrá de los siguientes recursos:

1. Biblioteca BSP (Board Support Package) para controladores de periféricos delmicrocontrolador.

2. Soporte para aplicaciones bare-metal y con RTOS.

3. Biblioteca estática para comunicación con el subsistema de propósito gene-ral.

2.2. Requerimientos

A continuación se listan los requerimientos técnicos formales de este TrabajoFinal.

1. Requerimientos generales:

a) Entregables: Archivos de diseño, código fuente.

2. Requerimientos de hardware:

a) Placa de circuito impreso multicapa que admita ruteo de señales dealta frecuencia.

b) Factor de forma modular (SoM) para integrarse a un sistema industrialfabricable con tecnología disponible en el mercado local argentino.

c) Sistema microprocesador compatible con el kernel Linux.

d) Sistema de memorias DRAM y eMMC que admitirán un sistema ope-rativo Linux completamente funcional y proveerán almacenamientosuficiente para la aplicación del usuario.

e) Subsistema de tiempo real que permita abordar aplicaciones equiva-lentes a las que actualmente utilizan microcontroladores.

f ) Conectividad inalámbrica nativa Wi-Fi y Bluetooth.

g) Esquema de alimentación del SoM simplificada: solo serán necesarios+5V (CC).

h) No deberán ser necesarios componentes externos para el funciona-miento del SoM.

i) Interfaces de hardware: GPIO, ADC, UART, SPI, I2C y USB (host y de-vice).

Capítulo 2. Introducción Específica 6

j) Interfaz SDIO para almacenamiento adicional.

k) Interfaz LCD (display).

3. Requerimientos de firmware:

a) Firmware básico para puesta en marcha y validación del hardware.

b) Sistema Operativo: distribución GNU/Linux embebida.

c) Reprogramación, configuración y monitoreo del SoM una vez instala-do en campo a través de las interfaces inalámbricas.

4. Requerimientos de documentación:

a) Procedimiento para puesta en marcha del SoM.

b) Confección de una memoria técnica.

2.3. Planificación

En el diagrama de Gantt de las figuras 2.1, 2.2 y 2.3 se listan las tareas plani-ficadas y su tiempo estimado de ejecución en días.

Capítulo 2. Introducción Específica 7

FIGURA 2.1: Diagrama de Gantt – Meses 1 a 3

Capítulo 2. Introducción Específica 8

FIGURA 2.2: Diagrama de Gantt – Meses 4 a 6

Capítulo 2. Introducción Específica 9

FIGURA 2.3: Diagrama de Gantt – Meses 7 a 10

10

Capítulo 3

Diseño e Implementación

En este capítulo se abordará la descripción del hardware desarrollado y loscriterios que han sido tenidos en cuenta a lo largo del proceso de diseño.

3.1. Hardware

3.1.1. Estructura general del hardware

Al momento de definir la estructura general del hardware fue menester laelección de un proveedor del microprocesador para el subsistema de propósitogeneral. Se tuvieron en cuenta los siguientes criterios:

Disponibilidad y calidad de documentación.

Disponibilidad de diseños de referencia.

Soporte a nivel community, open-source hardware.

Experiencias previas de trabajo en el Laboratorio de Procesamiento Digital1.

Luego de descartar otros proveedores por no ofrecer soluciones open-sourceo no disponer de documentación detallada, las opciones se redujeron a dos:

la familia i.MX de NXP/Freescale, y

la familia AM335x de Texas Instruments,

ambas con similares características e información disponible. Finalmente seoptó por el SoC AM3358[7] debido a que existe mucha experiencia previa en elLaboratorio donde se desarrolló este trabajo.

Dentro de los diseños de referencia disponibles para la familia AM335xse optó por utilizar la BeagleBone Black Wireless[8], cuyo diseño incorpora unSystem-in-Package –SiP– OSD3358[9] que integra los siguientes componentes deeste subsistema:

el microprocesador (AM3358),

la memoria RAM DD3 (512MB), y

el PMIC, entre otros.

1Laboratorio de Procesamiento Digital de la UTN-FRBA –DPLab–.

Capítulo 3. Diseño e Implementación 11

Es necesario entonces agregar al diseño la memoria Flash eMMC, el contro-lador de comunicaciones inalámbricas WL1835MOD[10], las fuentes de alimenta-ción y demás componentes discretos necesarios para la integración de los bloquesmencionados, resumidos en la figura 3.1. El circuito impreso diseñado para estesubsistema puede observarse en la figura 3.2.

OSD3358CPU+SDRAM+PMIC

eMMC 4GBWL1835MOD

Wi-Fi Bluetooth

I/O USB MMC PWM LCD ADC

FIGURA 3.1: Diagrama en bloques del subsistema de propósito ge-neral

Para el caso del subsistema de tiempo real se decidió aprovechar la expe-riencia adquirida durante el desarrollo de la Computadora Industrial Abierta Ar-gentina. Para ello se desarrolló una placa base donde el subsistema de propósitogeneral irá conectado. En esta placa se expondrán las principales interfaces deambos subsistemas a modo de evaluación y se utilizará una conexión USB parala comunicación entre ellos.

La placa base con el subsistema de tiempo real cuenta con las siguientescaracterísticas:

microcontrolador LPC54114 dual-core Cortex-M4/Cortex-M0+.

alimentación externa de 12 a 24V (CC).

salidas de tensión para el usuario de 5V y 3.3V.

LEDs indicadores de estado del subsistema de propósito general y del detiempo real.

pinout compatible con extensiones de Arduino y Raspberry Pi2.

conectores de entrada y salida con las diferentes interfaces de ambos sub-sistemas.

2Arduino y Raspberry Pi son plataformas de desarrollo muy populares cuya adopción ha pro-visto al mercado local de una gran variedad de sensores, actuadores y otro hardware auxiliar conun factor de forma que se adapta a las plataformas mencionadas. Es por ello que se decidió seguirdicho factor de forma con el objetivo de aprovechar la oferta existente de hardware para nuevosdesarrollos.

Capítulo 3. Diseño e Implementación 12

3.1.2. Módulo de cómputo - Subsistema de propósito general

El módulo de cómputo diseñado posee un procesador Cortex-A8 en el SoCAM3358, tal como se ha mencionado en la sección 3.1.1. A su vez el SoC AM3358junto con la memoria SRAM principal y su PMIC se integran en el SiP OSD3358(IC1, ver figura 3.2), al cual se agregó la interfaz de comunicaciones (IC4) y lamemoria de almacenamiento (IC3).

FIGURA 3.2: Módulo de cómputo diseñado. Incluye el subsistemade propósito general y el subsistema de comunicaciones.

Durante los primeros meses de trabajo se diseñó una versión del módulo decómputo con el microprocesador, el PMIC y la memoria DDR ubicados en formadiscreta en el PCB. En ese momento se encontró el SiP OSD3358 que ya integrabalos tres componentes, más capacitores de desacople y otros pasivos varios, comopuede observarse en la figura 3.3. Frente a un costo similar al de los componentesdiscretos, la utilización del SiP permitió una reducción de la cantidad de layersdel PCB de 8 a 6 niveles, al mismo tiempo permitió relajar las reglas de diseñogracias a su pitch de 1.27 mm. Luego se continuó el diseño del diagrama esque-mático siguiendo los lineamientos provistos por Texas Instruments[11] y OctavoSystems[12]. El diagrama esquemático se adjunta como referencia en el apéndiceA.

Para el ruteo del PCB multicapa se siguió el material provisto por el inge-niero Herny Ott[13]. El stackup del PCB diseñado puede observarse en la figura3.4. Tal como indica Ott, se han tomado las precauciones necesarias en cuanto alos capacitores de desacople, y considerando que el SiP tiene sus capacitores dedesacople integrados, el efecto de separación de las capas de GND y alimenta-ción no debería ser significativo. La figura 3.5 muestra en detalle el esquema delstackup con el cual se fabricará el circuito impreso.

Capítulo 3. Diseño e Implementación 13

FIGURA 3.3: Estructura interna de un SiP de la familia OSD335x.

1. Señales de baja frecuencia 1

2. GND/AGND

3. Señales de alta frecuencia 1

4. Señales de alta frecuencia 2

5. Alimentación

6. Señales de baja frecuencia 2

FIGURA 3.4: Distribución de layers del PCB.

FIGURA 3.5: Estructura del stackup provista por el fabricante.

En cuanto al ruteo de alta velocidad se han destinado los layers internos alas siguientes señales:

buses USB (ruteados como par diferencial),

bus eMMC de la memoria Flash,

bus SDIO de la interfaz Wi-Fi,

bus HCI de la interfaz Bluetooth.

Capítulo 3. Diseño e Implementación 14

Costos

El análisis de costos del módulo de cómputo/subsistema de propósito ge-neral se llevó a cabo utilizando la herramienta kicost[14] y el proveedor PCBCart[15]. Un resumen de costos unitarios (FOB, en dólares estadounidenses) ver-sus cantidad de placas fabricadas se puede apreciar en la tabla 3.1. Para el montajese consideran precios promedio de proveedores argentinos.

Cant. Componentes PCB Montaje Total1 $90.70 $285.83 $50.00 $426.5310 $84.78 $35.48 $20.00 $140.26100 $77.00 $6.41 $15.00 $98.41

TABLA 3.1: Comparativa de costos unitarios vs. cantidad para elmódulo de cómputo.

El repositorio con los archivos de diseño del módulo de cómputo puede con-sultarse en [16]. Se utilizó el software KiCad[17] para llevar a cabo dicho diseño.

3.1.3. Placa base - Subsistema de tiempo real

El SoC AM3358 del módulo de cómputo dispone de dos unidades denomi-nadas Programmable Real-Time Unit Subsystem and Industrial Communication SubSys-tem –PRU-ICSS–[18] que originalmente fueron consideradas para formar el sub-sistema de tiempo real. Si bien existe soporte por parte del fabricante, a los efectosde este trabajo se optó por diseñar un subsistema de tiempo real externo teniendoen mente una mayor versatilidad por parte del usuario del módulo de cómputopara diseñar e integrar su propio subsistema y no depender exclusivamente delsoporte para PRU-ICSS. Se ha elegido la interfaz USB por su soporte a nivel dekernel Linux y de BSP para microcontroladores, además de dejar disponibles lasinterfaces I2C y SPI para el sistema al cual se integre el módulo de cómputo.

El diseño del circuito impreso para la placa base se realizó en dos layers. Seutilizó una fuente de alimentación DC-DC tipo step-down que permite alimentar elsistema con tensiones de 12 a 24 Volts (CC). Dispone de conectores que exponenlas diferentes señales del módulo de cómputo y del subsistema de tiempo real.También se incluyó un slot de tarjeta microSD que permite actualizar el sistemaoperativo del módulo de cómputo en caso de no disponer de una red Wi-Fi. Talcomo se describió en la sección 3.1.1 se decidió incluir un juego de conectorescompatibles con el factor de forma de las plataformas Arduino y Raspberry Pi.Finalmente, si bien el puerto USB Host presente en el módulo de cómputo estáconectado directamente al microcontrolador del subsistema de tiempo real, seoptó por dejar la interfaz USB disponible a través de un conector micro USB tipoAB, aunque no es posible utilizar esta interfaz y el subsistema de tiempo real ensimultáneo.

La figura 3.6 muestra una imagen de la placa base diseñada y en el apéndiceB se encuentra el diagrama esquemático completo de dicho circuito impreso.

Capítulo 3. Diseño e Implementación 15

FIGURA 3.6: Placa base para el módulo de cómputo, incluye elsubsistema de tiempo real.

Costos

Siguiendo el mismo procedimiento del módulo de cómputo, el análisis decostos de la placa base arrojó los resultados que se presentan en la tabla 3.2.

Cant. Componentes PCB Montaje Total1 $42.05 $82.13 $50.00 $174.1810 $39.39 $10.94 $20.00 $70.33100 $34.10 $3.04 $15.00 $52.14

TABLA 3.2: Comparativa de costos unitarios vs. cantidad para laplaca base.

El repositorio con los archivos de diseño de la placa base puede consultar-se en [19]. Al igual que el módulo de cómputo este diseño fue realizado con elsoftware KiCad.

3.2. Software

3.2.1. Estructura general del software

El conjunto de software que ejecutarán ambos subsistemas se ha denomi-nado «RemoteMCU» o «RMCU» en forma abreviada. La figura 3.7 plantea unesquema general, en el cual se puede visualizar la función primordial de cadasubsistema desde el punto de vista del software: por un lado las tareas de propó-sito general como una página web, una interfaz de usuario, una base de datos oel intercambio de datos en red; y por otro lado las tareas dedicadas al subsistemade tiempo real como medición de pulsos, PWM, detección de eventos esporádi-cos y respuesta determinista. A su vez el subsistema de propósito general tieneque ser capaz de detener la ejecución del software del subsistema de tiempo real,

Capítulo 3. Diseño e Implementación 16

cargarle un nuevo programa y ejecutarlo. Además es necesario que ambos sub-sistemas puedan intercambiar información a través de una estructura de datosdenominada evento, al que cualquier subsistema puede «suscribirse» y configu-rar la ejecución de un callback frente a su llegada.

Sistema Embebido Híbrido

Subsistema de propósito general

Subsistema de tiempo real

UI

Web

DB

Red

Sensor

Motor

PWM

HSIO

firmware

datos (eventos)

FIGURA 3.7: Esquema general del software RemoteMCU.

Los componentes principales de RemoteMCU son los siguientes:

API en lenguaje C a través de una shared library para el subsistema de pro-pósito general o host.

Bootloader para el subsistema de tiempo real o target que utiliza un driverUSB clase CDC/ACM[20] para comunicarse con el host.

API en lenguaje C para intercambio de datos a través de los mencionadoseventos para ambos subsistemas.

Protocolo de RemoteMCU

Se definió también un protoclo de comunicación entre subsistemas que pue-da implementarse sobre la clase CDC/ACM o bien cualquier comunicación serialen caso de no disponer de una interfaz USB en el subsistema de tiempo real. Elprotocolo consiste de diferentes tipos de paquete con una estructura común iden-tificable por los interlocutores (host y target en este caso) y fue creado tomando co-mo referencia el protocolo STK500 de Atmel[21] y el protocolo Modbus RTU[22].La estructura general de los paquetes se describe en la tabla 3.3 y a continuaciónse detalla el contenido de cada campo:

[start] byte de inicio de paquete, ASCII 0x3E ’>’.

[id] byte de identificador/tipo de paquete, ver tabla 3.4.

[seq] byte de número de secuencia (no signado, incremental).

[len] longitud de los datos contenidos en 2 bytes.

[data] datos o payload del paquete, cuya longitud se especificó en el campoanterior.

[check] CRC de 16 bits con polinomio x15 + x13 + 1. El CRC se calculasobre los campos start, id, seq, length y data.

[end] byte de fin de paquete, ASCII 0x3C ’<’.

Capítulo 3. Diseño e Implementación 17

start id seq length data check end’>’ 1 byte 1 byte 2 bytes (N) N bytes 2 bytes ’<’

TABLA 3.3: Estructura general de un paquete del protocolo Remo-teMCU.

id nombre descripción

0x00 QUERY_H2T

Consulta tipo ping3de host hacia target. El hostpuede enviar información adicional en el cam-po data, por ejemplo el tamaño total de la ima-gen de firmware si es que no entra en un únicopaquete.

0x80 QUERY_T2HConsulta tipo ping de target hacia host. El targetpuede enviar información adicional en el cam-po data, por ejemplo su número de serie.

0x01 FIRMWARE

El campo data contiene una imagen de firm-ware o parte de ella, en orden establecido porel campo seq. Si se recibe correctamente la ima-gen, el subsistema target debe ejecutarla.

0x81 FIRMWARE_ACKAcuse de recibo de un paquete FIRMWARE deltarget hacia el host.

0x02 EVENT_H2T

Envío de evento desde host hacia target. Si tar-get está suscripto al evento, ejecutar el callbackcorrespondiente con los datos recibidos comoparámetro.

0x82 EVENT_T2H

Envío de evento desde target hacia host. Si hostestá suscripto al evento, ejecutar el callback co-rrespondiente con los datos recibidos como pa-rámetro.

0x03 HALT_TARGET Detener la ejecución del programa remoto.0x04 START_TARGET Iniciar la ejecución del programa remoto.

TABLA 3.4: Identificadores de paquete del protocolo RemoteMCU.

Para el caso particular de los paquetes de tipo Evento (EVENT_*2*), el cam-po data toma el formato dado por la tabla 3.5, donde se especifica un identifica-dor de evento de 1 byte definido por el usuario, la longitud de los datos asociadosal evento en 2 bytes, seguida por dichos datos.

ev id ev data len ev data1 byte 2 bytes (M) M bytes

TABLA 3.5: Formato especial del campo data en los paquetes detipo Evento.

3por ping se refiere al envío de un paquete con el único objetivo de obtener una respuesta y asíverificar que el interlocutor se encuentra activo y en funcionamiento.

Capítulo 3. Diseño e Implementación 18

3.2.2. Software para el subsistema de propósito general

Para el subsistema de propósito general o host desde el punto de vista delprotocolo, se definió una biblioteca compartida o shared library que utiliza comobase las bibliotecas termios y pthread de Linux para implementar el protocolode RemoteMCU.

La API que dispone el programador del subsistema de propósito general sedescribe a continuación:

rmcu_open(path): Inicia una conexión al target conectado al puerto seriecon ruta path. Esta función abre el puerto especificado y queda a la esperade cualquier paquete válido que pueda llegar desde el target. rmcu_opendevuelve un identificador positivo dev que debe ser utilizado en las llama-das posteriores a la API o un número negativo en caso de error.

rmcu_exec(dev,firmware_path): Envía al target una imagen de firm-ware alojada en el archivo firmware_path y solicita su ejecución. Inter-namente, esta función envía un comando HALT_TARGET seguido de unQUERY_H2T con el tamaño del firmware como payload. Espera a que el targetresponda con QUERY_T2H indicando que está listo para recibir la imagen.Luego el host envía paquetes tipo FIRMWARE ordenados por el campo seqcuya cantidad puede variar en función del tamaño de la imagen. Una vezque la imagen es recibida, se envía nuevamente un paquete QUERY_H2Tpara determinar que el target se encuentra ejecutando el nuevo programa.

rmcu_event_subscribe(dev,event,callback): Función para suscri-birse a un evento del target, es decir para recibir datos del dispositivo remo-to. El host indica el número de evento en el parámetro event y un punteroa función que se ejecutará como callback al recibirse el evento. El prototipodefinido para los callbacks se especifica en la tabla 3.6. Internamente, estafunción ingresa una entrada a una tabla donde la biblioteca lleva registrodel número de evento suscripto y el callback que debe ejecutarse si el eventollega.

rmcu_event_send(dev,event,data,len): Envía datos a través de unevento hacia el target. Esta función crea un paquete tipo EVENT_H2T ad-juntando los datos recibidos (número de evento event, puntero data ylongitud len).

parámetro descripciónint dev Dispositivo que envió el evento.int ev Número de evento recibido (suscripto previamente).void * data Puntero a los datos asociados al evento.size_t len Longitud de los datos recibidos.

TABLA 3.6: Parámetros de un callback de RMCU, válidos tantopara host como para target.

Capítulo 3. Diseño e Implementación 19

3.2.3. Software para el subsistema de tiempo real

El soporte del protocolo RemoteMCU para el subsistema de tiempo real es-tá fuertemente ligado al tipo de hardware/microcontrolador o MCU4 que vaya autilizarse. Actualmente existe soporte para la familia de microcontroladores NXPLPC5411x y en particular para el modelo LPC54114 que es el utilizado actualmen-te como target según se describió en la sección 3.1.1. Dado que el soporte de NXP(biblioteca BSP) es fácilmente portable entre microcontroladores LPC de distintasfamilias, es posible extender el protocolo RMCU a los otros MCU utilizados en elProyecto CIAA, como el LPC4337, el LPC11U35 y el LPC54102.

La estructura del software para el subsistema de tiempo real se presenta enla figura 3.8. En ella se observa que el usuario dispone para su aplicación de labiblioteca BSP provista por el fabricante para acceso y control general de perifé-ricos, la API del protocolo RMCU como una biblioteca estática y opcionalmenteun Sistema Operativo de Tiempo Real o RTOS. Actualmente están soportados losRTOS FreeRTOS y FreeOSEK gracias a las contribuciones de diferentes usuarios alProyecto CIAA.

hardware - microcontrolador

RTOSprotoclo RMCU

BSP

bootloader / aplicación de usuario

FIGURA 3.8: Esquema de software para el subsistema de tiemporeal o target.

Es importante aclarar que solo la primera vez, frente a un microcontroladorque no fue inicializado o utilizado previamente, es necesario grabarle un progra-ma de arranque o bootloader. Dicho bootloader está incluido junto con el códigofuente de la biblioteca RMCU y se trata simplemente de un programa que inicia-liza el periférico configurado para la comunicación serie (USB clase CDC/ACMen este caso) y habilita el intérprete de paquetes del protocolo descripto en la sec-ción 3.2.1. Luego el host mediante la biblioteca mencionada enviará los paquetescon la imagen de firmware que vaya a ejecutar el target. Al compilar el firmwa-re mencionado con la biblioteca estática RMCU automáticamente el protocolo esinicializado antes de ejecutar el punto de entrada del usuario (función main) loque permitirá mantener en funcionamiento el intérprete de paquetes en caso quese quiera detener la ejecución del firmware o actualizarlo con una nueva imagen.

En el caso puntual de los microcontroladores LPC el grabado del bootloa-der puede realizarse de manera muy sencilla, incluso estando conectado al sub-sistema de propósito general, ya que estos microcontroladores disponen de otrobootloader en memoria de sólo lectura que es grabado durante la fabricación delchip. Si no se detecta un firmware válido en la memoria de programa principal,

4MCU: Micro Controller Unit, se utiliza como abreviatura de microcontrolador.

Capítulo 3. Diseño e Implementación 20

inicializa su interfaz USB como dispositivo MSC (Mass Storage Class o almace-namiento masivo) que permite grabar la imagen binaria del bootloader RMCUcopiando el archivo con dicha imagen mediante el comando dd de la línea decomandos bash disponible en el subsistema de propósito general. Una vez queel bootloader RMCU se encuentra grabado en el target puede utilizarse la bibliotecaRMCU tal como se describió en la sección 3.2.2.

La biblioteca estática RMCU disponible en el target es equivalente en fun-cionalidad a su contraparte dinámica en el host, pero con algunas diferencias quese describen a continuación:

rmcu_open no requiere ningún PATH. Se le pasa el parámetro NULL so-lamente por una cuestión de mantener compatible la estructura de la API.En el target esta función se encarga de inicializar la interfaz serial USB yel intérprete de paquetes. Tampoco es necesario llamar a esta función unavez iniciada la aplicación del usuario, ya que el protocolo es inicializadopreviamente a la ejecución de aquélla.

rmcu_exec está disponible en el target por una cuestión de compatibilidad,pero no realiza ninguna acción.

rmcu_event_subscribe y rmcu_event_send están disponibles en eltarget con la misma funcionalidad que se describió para el host con el objeti-vo de implementar el intercambio de datos entre ambos subsistemas.

De lo anterior se concluye que la aplicación de usuario en el subsistema detiempo real, en general, solo tendrá que utilizar las funciones rmcu_event_subscribey rmcu_event_send.

El repositorio con el código fuente de la biblioteca RemoteMCU puede con-sultarse en [23].

21

Capítulo 4

Ensayos y Resultados

En este capítulo se describen diferentes pruebas de verificación de hardwarey software, así como el análisis de los resultados obtenidos.

4.1. Verificación del diseño de hardware

Una vez finalizado el diseño del circuito impreso correspondiente al mó-dulo de cómputo, tal como se analizó durante la planificación de este trabajo, sepuso el mismo a consideración de dos colegas especializados en diseño de cir-cuitos impresos y ruteo de señales de alta velocidad: Nicolás Dassieu Blanchet yFernando Aló. Las tablas 4.1, 4.2 y 4.3 resumen el intercambio de observaciones ysus correcciones asociadas.

Además de la revisión de pares mencionada, se han llevado a cabo las vali-daciones eléctricas y de diseño (Electrical Rules Check o ERC y Design Rules Checko DRC) disponibles en el software KiCad. Todas las advertencias informadas pordicho software fueron corregidas tanto para el módulo de cómputo como para laplaca base antes de enviar el diseño a revisión.

Es importante remarcar que debido a la falta de fondos disponibles en el pre-supuesto del PID para el año 2017 no se dispuso de dinero suficiente para fabricarprototipos del módulo de cómputo y de la placa base, esto se debió en principioa que no se tuvo una idea precisa de los costos hasta Julio de 2017, cuando se die-ron por finalizados ambos diseños. Los mismos se podrán fabricar en 2018 conla previsión de costos que ya se dispone. Por eso los ensayos funcionales fueronrealizados a nivel de software con hardware de referencia, siendo utilizadas:

una Beaglebone Black Wireless[8] (figura 4.1) para ejecutar el software del sub-sistema de propósito general, y

una picoCIAA[24] (figura 4.2) para ejecutar el software del subsistema detiempo real.

Ambos subsistemas se conectaron a través de USB como prevé el protoco-lo RMCU. En el caso de la picoCIAA, dado que el microcontrolador principal–LPC54102– no dispone de interfaz USB, se desdobló el protocolo RMCU parael target en dos programas: El controlador USB CDC/ACM es ejecutado por elmicrocontrolador secundario de la picoCIAA –LPC11U35– que recibe los paque-tes enviados por el host y los transmite por una de las UART que está conectadadirecto al microcontrolador principal, donde se aloja el intérprete de paquetes yel bootloader.

Capítulo 4. Ensayos y Resultados 22

FIGURA 4.1: BeagleBone Black Wireless (medidas: 86.36 mm por54.61 mm).

FIGURA 4.2: picoCIAA (junto a una moneda de un peso argentinode 23 mm de diámetro como referencia).

4.2. Ensayos funcionales para el subsistema de propósitogeneral

Las pruebas funcionales realizadas en el subsistema de propósito general sedescriben a continuación:

1. Ejecución de un sistema operativo Debian con su funcionalidad por defecto,incluida la conexión a una red Wi-Fi.

Capítulo 4. Ensayos y Resultados 23

2. Descarga con git y compilación de la biblioteca RemoteMCU para host jun-to con una aplicación de ejemplo.

3. Instalación de un cross-compiler para el microcontrolador de la picoCIAAcon el objetivo de compilar la biblioteca RemoteMCU para target junto conel bootloader y una aplicación de ejemplo.

4. Descarga del bootloader a la picoCIAA mediante openocd (el microcontro-lador secundario dispone de un firmware CMSIS-DAP junto a la interfazCDC/ACM[25] desarrollado específicamente para la picoCIAA).

5. Utilizando la aplicación de ejemplo y la biblioteca RMCU en el host, descar-gar la aplicación del punto 3 al target. Suscribir eventos en ambos subsiste-mas e intercambiar información.

6. Mientras una aplicación en el target se está ejecutando, solicitar su detencióny actualizarla con una nueva aplicación.

Estas pruebas funcionales concluyeron satisfactoriamente. No se observaronresultados que infieran un comportamiento diferente del esperado para el sistemahost.

4.3. Ensayos funcionales para el subsistema de tiempo real

El subsistema de tiempo real fue sometido a las siguientes pruebas:

1. Ensayo de diferentes tamaños de paquete RMCU para la transferencia delfirmware con el objetivo de probar su rendimiento y minimizar la tasa depérdida de paquetes. Luego de varias pruebas se concluyó que el tamañoóptimo para el cual no es necesario retransmitir paquetes es de 64 bytes. Ca-be aclarar que este resultado es fuertemente dependiente del hardware, másque nada del tamaño de los buffers para los endpoints en el controlador USBdel LPC11U35. Un firmware mínimo requiere al menos enviar 170 paquetesde tipo FIRMWARE en forma satisfactoria (una imagen de aproximadamente10kB).

2. Utilización de diferentes mecanismos para interrumpir la ejecución del firm-ware actual en el target, actualizar dicho firmware y ejecutarlo. Finalmente sedecidió usar la excepción del sistema PendSV, que es utilizada por la biblio-teca para verificar la validez de la imagen recibida y proceder a su ejecución.

3. Prueba funcional de hardware a través del firmware descargado medianteRMCU: test básico de periféricos como GPIO y SysTick. Envío de paquetesQUERY_H2T para verificar que la interfaz serial y el intérprete de protocolosiguen en funcionamiento mientras se ejecuta el firmware.

4. Prueba de suscripción y envío de eventos desde y hacia el host.

Los ensayos del subsistema de tiempo real también concluyeron satisfacto-riamente. En particular los ítems 1 y 2 fueron los que más tiempo demandaronpero una vez definido el tamaño de paquete (ensayo 1) y el mecanismo de inte-rrupción por software (ensayo 2) el protocolo se comportó según lo esperado.

Capítulo 4. Ensayos y Resultados 24

4.4. Resultados generales

Luego de validar el diseño del hardware y las pruebas satisfactorias reali-zadas con las plataformas de referencia y el software RemoteMCU, se concluyeque una vez fabricados los prototipos será posible replicar sin inconvenientes losensayos de las secciones 4.2 y 4.3, ya que fueron diseñados para ser íntegramen-te compatibles con el hardware implementado descripto en la sección 3.1. En lasfiguras 4.3 y 4.4 se muestran imágenes del ensayo general de ambos subsistemasfuncionando en conjunto: el subsistema de propósito general actualiza el firmwa-re del subsistema de tiempo real y luego recibe eventos enviados por él.

FIGURA 4.3: Test del protocolo RMCU: Query del target y comien-zo de descarga de un nuevo firmware.

FIGURA 4.4: Test del protocolo RMCU: Finalización de la descargadel firmware y visualización de los eventos enviados por el target.

Capítulo 4. Ensayos y Resultados 25

ID Sch. Ver. Descripción Devolución Estado

1 Power v1.00

Si !SHDN de U3 seconecta a VDD_3V3Bno tiene sentido conec-tar VDD_5V y USB_DCal IN de U3 con dio-do dado que si nohay SYS_5V no hayVDD_3V3B.

Sí, porque los diodosestán por una cuestiónde corriente y no pa-ra poder prenderlo sinque haya VDD_5V.

OK

2 Power v1.00

¿Por qué está el regula-dor U1? La BeagleBoneno lo tiene, ¿es para su-ministrar una fuente de3V3B a la placa que seconecte y no tocar los3V3B del OSD3358?

Sí. OK

3 Power v1.00

Si 3V3B se suministrapor U1, la alimentaciónde U4 depende ahorade que 3V3A esté pren-dida (enable de U1) es-to difiere del esque-mático de la BeagleBo-ne, ¿puede traer proble-mas?

3V3A prende antes que3V3B por ende no. Asu vez U4 es una EE-PROM para el usuario,no es un componentecrítico de arranque.

OK

4 Power v1.00

Faltan circuitos declampeo en 3V3B y3V3A (TLVH431), ¿porqué?

Circuitos de clampingagregados.

OK

5 Power v1.00

Recomendación: Co-nectar 3V3B del OSD atodos los chips de 3V3Bde esta placa y usar elregulador U1 solo parasuministrar energíaa la placa hija que seconecta a esta placa.

U1 no se monta. Los3.3V auxiliares quedanbajo responsabilidad dela placa base. 3V3B sa-len del OSD (puentearJ3). Lo dejamos igual enel PCB y lo quitaremosen una futura revisión.

OK

6 Main v1.00Sugerencia: Colocarversión del hardwareen rótulo.

Hecho. OK

7 Main v1.00

Sugerencia: Colocar untexto indicando suge-rencias de ruteo co-mo corrientes en losnodos de potencia (ejVBAT, VDD_5V) y sihay pistas con impe-dancia controlada.

Se verificaron al mo-mento de rutear perono se agregaron textosexplicativos.

Pend.

TABLA 4.1: Revisión de hardware para el módulo de cómputo.

Capítulo 4. Ensayos y Resultados 26

ID Sch. Ver. Descripción Devolución Estado

8 Power v1.00

Sugerencia: Agregar elled de PWR conectadoa 3V3Aux de la beagle-bone para mostrar quela placa está encendida.

Hecho. OK

9 Power v1.00VRTC no va a ningúnlado. ¿Es un test point?

Agregado testpoint pa-ra VRTC.

OK

10 Power v1.00 Agregar testpoints.Agregados en VRTC,PCM y señales de inte-rés.

OK

11 ADC v1.00

Sugerencia: Dejar laposibilidad de la placahija pueda poner unaVREFP_ADC distin-ta de VDD_ADC, esdecir enviarla hasta elconector.

VERFP se conectaa VDD_ADC segúnlo sugerido por elfabricante.

N/A

12 ADC v1.00

Sugerencia: No mez-clar señales digitales deun lado y de conectorcon señales analógicasdel otro (AN0. . . AN7).Idealmente poner ANen ambos lados shiel-deadas por AGND yluego DGND en los ex-tremos.

En una versión futurase dedicará un conectora las señales analógicas.

N/A

13 USB v1.00

Datasheet TPD4S012sección 10.1 layoutguidelines, estos chipsdeben ponerse lo máscerca del conector USBposible, en este caso elconector va en la placahija, a mi entenderestas protecciones vanen la placa hija. En laBeagle los ponen por-que tiene los conectoresen la misma placa.Esto para mí incluyetambién a L2.

Correcto. Se remuevenprotecciones de líneasUSB y se colocan enplaca base.

OK

TABLA 4.2: Revisión de hardware para el módulo de cómputo(cont.).

Capítulo 4. Ensayos y Resultados 27

ID Sch. Ver. Descripción Devolución Estado

14 LCD v1.00

Resistencias en se-rie con LCD_PCLK,LCD_VSYNC,LCD_HSYNC,LCD_DE ¿quedanpara ser colocadas en laplaca base?

No está previsto utili-zar la interfaz LCD eneste trabajo, de utilizar-se se colocarían en pla-ca base.

N/A

15 JTAG v1.00

Resistencias de pull-up/pull-down ycapacitores del JTAG,¿no conviene ponerlasen esta placa? Pasa algosi todos los pines delJTAG quedan volando?

Se colocaron en placabase. El módulo no fuediseñado para ser uti-lizado sin placa baseaunque se tomará encuenta para la próximarevisión.

N/A

16 Sys v1.00

Posible Error:GPIO1_28 conecta-do a V17, VR14 y U18del integrado IC1A.

Corregido. OK

17 PCB v1.00Alinear conectores IO1e IO2.

Corregido. OK

18 PCB v1.00Verificar stackup con elfabricante.

Verificado. OK

TABLA 4.3: Revisión de hardware para el módulo de cómputo(cont.).

28

Capítulo 5

Conclusiones

En esta sección se detalla cómo los resultados obtenidos en el capítulo 4 im-pactaron en el aprendizaje del diseño de sistemas embebidos y qué conocimientosgeneraron en el marco del Proyecto de Investigación y la Maestría cursada duran-te 2017, permitiendo estimar un plan de trabajo para el año 2018.

5.1. Conclusiones sobre el trabajo realizado

Es importante mencionar que el imprevisto causado por la falta de presu-puesto para la fabricación de los prototipos marcó un hito inesperado mientrasse transitaba aproximadamente la mitad del desarrollo planificado. Los mesesque iban a ser destinados mayoritariamente a la puesta en marcha del hardwa-re terminaron siendo replanificados para el desarrollo y validación del protocoloRemoteMCU (sección 3.2.1), que originalmente no estaba previsto en el alcancedel presente trabajo sino que había sido planificado dentro de las tareas a rea-lizar durante 2018. El protocolo implementado es fácilmente extensible a otrasplataformas siempre que cumplan los siguientes requisitos mínimos:

Los interlocutores deben poseer una interfaz serial para comunicarse entresí. Dicha interfaz puede ser física como una UART, I2C o SPI, o virtual comoen el caso de USB CDC/ACM.

Los interlocutores pueden estar utilizando software basado en el kernel Li-nux, pero se ha demostrado que el protocolo es lo suficientemente livianopara ser ejecutado con idéntica funcionalidad en un microcontrolador. Aho-ra bien, si el sistema de propósito geneal ejecuta Linux puede comunicarseen simultáneo con distintos targets, ya que el kernel los identifica individual-mente gracias a su estructura de controladores de dispositivo: cada micro-controlador aparecerá como un char device en el directorio /dev del sistemahost.

Por otra parte, la API de la biblioteca RemoteMCU es simple y contiene lasfunciones mínimas necesarias para comunicar entre sí a los subsistemas, cum-pliendo el requerimiento de presentar al usuario una interfaz limpia y sencilla.

Respecto al hardware del módulo de cómputo, se ha adquirido una expe-riencia significativa a lo largo de este trabajo, en particular mientras se cursaba lamateria Certificación de Sistemas Electrónicos donde se realizó una heurística parael diseño de circuitos impresos[26] en la cual se analiza detalladamente la normaIPC-2221A[27] y se realizan análisis prácticos que derivan en consejos y suge-rencias a la hora de diseñar una placa de circuito impreso teniendo en cuenta el

Capítulo 5. Conclusiones 29

ecosistema de procesos que acompañan el diseño, como la fabricación y el mon-taje. Estas cuestiones permitieron sumar know-how sumamente relevante para elpresente trabajo y para los pasos a seguir. También fue muy enriquecedor el in-tercambio de correcciones y comentarios al diseño del módulo de cómputo porparte de colegas (sección 4.1): la conclusión más importante a la que se arribó esque cuando se cuenta con la asistencia de profesionales con experiencia en diseñode hardware es posible mejorar significativamente el resultado del trabajo reali-zado; además no es conveniente que una sola persona se involucre en un diseñode características que implican un circuito impreso de múltiples capas y el ruteode señales diferenciales y de alta frecuencia, al menos no sin asistencia y revisiónde pares.

5.2. Próximos pasos y trabajo futuro

El módulo de cómputo ya dispone de una aplicación específica a ser imple-mentada durante el año 2018: en el Laboratorio de Procesamiento Digital se dise-ñará un adquisidor de señales analógicas configurable para diversos tipos de señalesen las que trabajan los diferentes grupos de investigación del Departamento deIngeniería Electrónica de la UTN-FRBA. Este adquisidor será íntegramente pro-gramable y permitirá ejecutar simulaciones (que actualmente requieren de unaPC) dentro del mismo adquisidor gracias al software GNU Octave[28] que actual-mente está disponible en la distribución Debian GNU/Linux, que es compatiblecon el hardware desarrollado. Un aspecto importante a mencionar es que se estáplaneando utilizar el SiP OSD3358-SM que fue lanzado al mercado en Septiembrede 2017[29] en lugar del OSD3358 que actualmente posee el módulo de cómputo.El modelo OSD3358-SM permitirá un diseño más compacto e incluso es probableque requiera menos de 6 capas de señal en el circuito impreso1, lo cual podríareducir el costo del hardware manteniendo la misma funcionalidad.

En conclusión, el hardware y software diseñados e implementados duran-te este Trabajo Final abrieron las puertas para seguir invirtiendo recursos en eldesarrollo e ingeniería de hardware nacional con el ánimo de seguir brindandomaterial de calidad en forma libre y abierta a la comunidad argentina de profe-sionales de la electrónica, tanto a nivel académico como industrial.

1El asunto de la reducción de capas aún debe ser estudiado en detalle dado que es indispensableasegurar la integridad de las señales analógicas muestreadas por el adquisidor.

30

Apéndice A

Diagrama esquemático delmódulo de cómputo

A continuación se presenta el diagrama esquemático completo del módulode cómputo desarrollado.

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-21KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.00Size: A4Id: 1/6

Title: MateboardFile: mateboard.schSheet: /DPLab@UTN-FRBADirector: Alejandro FurfaroRevisor: Nicolás Dassieu BlanchetAutor: Pablo Ridolfi

Power Management

power.sch

PWR_BUT

I2C0_SCLI2C0_SDA

BATBAT_SENSEBAT_TS

PMIC_PGOODLDO_PGOOD

PMIC_INTPMIC_nWAKEUP

USB-UART-WL-BT-GPIO

usb.sch

USB0_IDUSB1_VBUS

USB1_OCnUART0_RXDUART0_TXD

WL_EN.SIPBT_EN.SIP

WL_SDIO_D2.SIPWL_SDIO_D1.SIP

WL_SDIO_CMD.SIP

WL_SDIO_D3.SIP

WL_SDIO_CLK.SIPBT_HCI_TX.SIPBT_HCI_RX.SIP

WL_SDIO_D0.SIP

WL_IRQ.SIPBT_HCI_RTS.SIPBT_HCI_CTS.SIP

SD_BOOT

LCD_PCLKLCD_VSYNCLCD_HSYNC

LCD_DE

GPIO3_21SPI1_CLK

SPI1_D0SPI1_D1

SPI1_CS0GPIO3_19

GPIO0_7

AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7

UART2_TXDUART2_RXD

I2C1_SDAI2C1_SCL

UART1_TXDUART1_RXDI2C2_SDAI2C2_SCL

LCD_DATA0LCD_DATA1LCD_DATA2LCD_DATA3LCD_DATA4LCD_DATA5LCD_DATA6LCD_DATA7LCD_DATA8LCD_DATA9LCD_DATA10LCD_DATA11LCD_DATA12LCD_DATA13LCD_DATA14LCD_DATA15

LS_BUF_OE.SIP

USB0_D+USB0_D-

USB1_D+USB1_D-

SYS_RESETn

References:http://processors.wiki.ti.com/index.php/AM335x_Hardware_Design_Guidehttp://processors.wiki.ti.com/index.php/AM335x_Schematic_Checklisthttps://github.com/beagleboard/beaglebone-black-wireless

VBATVBAT_SENSEVBAT_TEMP

PWR_BUT

I2C0_SDAI2C0_SCL

CPU Power

cpu_power.sch

System-eMMC-GPIO

system.sch

CLKOUT2CLKOUT1

PMIC_nWAKEUP

PMIC_PGOODLDO_PGOOD

eHRPWM1AeHRPWM1BeHRPWM2AeHRPWM2B

TIMER7TIMER6TIMER4TIMER5

JTAG_EMU1JTAG_EMU0JTAG_TDOJTAG_TCKJTAG_TDIJTAG_TMSJTAG_TRSTn

SD.D3SD.D2SD.D1SD.D0

SD.CMDSD.CLK

SD.CD

USR0USR1USR2USR3

PMIC_INT

UART4_RXDUART4_TXD

GPIO1_28GPIO2_1

GPIO0_26GPIO0_27GPIO1_12

GPIO1_13GPIO1_14

GPIO1_15USB1_OCn

GPIO1_16GPIO1_29

GPIO1_25GPIO2_0

SYS_RESETn

GPIO1_17GPIO1_27

Wi-Fi BLE

wifi.sch

CLKOUT2

WL_SDIO_D0.CPUWL_SDIO_D1.CPUWL_SDIO_D2.CPUWL_SDIO_D3.CPU

WL_SDIO_CLK.CPUWL_SDIO_CMD.CPU

BT_HCI_TX.CPU

WL_EN.CPUBT_EN.CPU

BT_HCI_CTS.CPU

BT_HCI_RX.CPU

BT_HCI_RTS.CPUWL_IRQ.CPU

LS_BUF_OE.CPU

CLKOUT2

CLKOUT2

1 23 45 67 89 10

20

30

40

50

60

70

11

21

31

41

51

61

12

22

32

42

52

62

13

23

33

43

53

63

14

24

34

44

54

64

15

25

35

45

55

65

16

26

36

46

56

66

17

27

37

47

57

67

18

28

38

48

58

68

19

29

39

49

59

69

J1

IO1

1 23 45 67 89 10

20

30

40

50

60

70

11

21

31

41

51

61

12

22

32

42

52

62

13

23

33

43

53

63

14

24

34

44

54

64

15

25

35

45

55

65

16

26

36

46

56

66

17

27

37

47

57

67

18

28

38

48

58

68

19

29

39

49

59

69

J2

IO2

VDD_5V

USB_DC

VDD_5V

PWR_BUT

VBAT

VBAT_SENSEVBAT_TEMP

GNDD

USB0_D-USB0_D+USB0_ID

USB0_D-USB0_D+USB0_ID

USB1_VBUS

USB1_D-USB1_D+

USB1_VBUSGNDD

UART0_RXDUART0_TXD

UART0_RXDUART0_TXD

GNDD

UART1_RXDUART1_TXD

UART1_RXDUART1_TXD

UART2_RXDUART2_TXD

UART2_RXDUART2_TXDSD_BOOT

SD_BOOT SYS_RESETn

SD.D3SD.D2SD.D1SD.D0

SD.CMDSD.CLK

SD.CD

SD.D3SD.D2SD.D1SD.D0

SD.CMDSD.CLKSD.CD

USR0USR1USR2USR3

USR0USR1USR2USR3

GNDD

CLKOUT2

CLKOUT1

CLKOUT1

GNDD

UART4_RXDUART4_TXD

UART4_RXDUART4_TXD

JTAG_EMU1JTAG_EMU0JTAG_TDOJTAG_TCKJTAG_TDIJTAG_TMSJTAG_TRSTn

JTAG_EMU1JTAG_EMU0

JTAG_TDOJTAG_TCKJTAG_TDI

JTAG_TMSJTAG_TRSTn

GPIO2_0GPIO1_25

GPIO2_0

GPIO1_25

GPIO1_29GPIO1_16GPIO1_15

GPIO1_29

GPIO1_16

GPIO1_15

GPIO1_13GPIO1_14

GPIO1_13

GPIO1_14

GPIO1_12GPIO0_27GPIO0_26

GPIO2_1GPIO1_28

GPIO1_12GPIO0_27

GPIO0_26

GPIO2_1

GPIO1_28GNDD

GNDD

I2C0_SDAI2C0_SCL

GNDD

TIMER6

TIMER5TIMER4

TIMER7

TIMER6TIMER5

TIMER4TIMER7

eHRPWM2BeHRPWM2AeHRPWM1BeHRPWM1A

eHRPWM2B

eHRPWM2A

eHRPWM1B

eHRPWM1A

GNDD

I2C2_SCLI2C2_SDA

I2C2_SCLI2C2_SDA

I2C1_SDAI2C1_SCL

I2C1_SDAI2C1_SCL

GNDD

GNDD

LCD_DELCD_PCLKLCD_VSYNCLCD_HSYNCLCD_DATA0LCD_DATA1LCD_DATA2LCD_DATA3LCD_DATA4LCD_DATA5LCD_DATA6LCD_DATA7LCD_DATA8LCD_DATA9LCD_DATA10LCD_DATA11LCD_DATA12LCD_DATA13LCD_DATA14LCD_DATA15

LCD_DELCD_PCLK

LCD_VSYNCLCD_HSYNCLCD_DATA0LCD_DATA1LCD_DATA2LCD_DATA3LCD_DATA4LCD_DATA5LCD_DATA6LCD_DATA7LCD_DATA8LCD_DATA9

LCD_DATA10LCD_DATA11LCD_DATA12LCD_DATA13LCD_DATA14LCD_DATA15

GNDD

SPI1_CLKSPI1_D0SPI1_D1

SPI1_CS0

SPI1_CLKSPI1_D0SPI1_D1

SPI1_CS0

GPIO0_7GPIO3_21

GPIO0_7GPIO3_21

GPIO3_19

GPIO3_19

AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7

GNDD

AIN0

AIN1

AIN2

AIN3

AIN4

AIN5

AIN6

AIN7

GNDA

GNDA

VDD_ADC

GNDD

VDD_3V3B

SYS_5V

GNDD

GNDA

GNDA

GNDA

GNDA

GNDA

GNDA

GPIO1_27GPIO1_17

GPIO1_27

GPIO1_17

GNDD

GNDD

MH1 MH2 MH3 MH4

USB1_D-USB1_D+

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-23KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.00Size: A4Id: 2/6

Title: MateboardFile: power.schSheet: /Power Management/DPLab@UTN-FRBADirector: Alejandro FurfaroRevisor: Nicolás Dassieu BlanchetAutor: Pablo Ridolfi

SYS_5V

C3

10uF/6.3V

GNDD

C9

10uF/6.3V

GNDD

USB_DC

VDD_5V

PWR_BUTI2C0_SCLI2C0_SDA

BAT

BAT_SENSEBAT_TS

C1

2.2uF/6.3V

GNDDGNDD

VDD_3V3ASYS_5V

C4

100nF/6.3V

GNDD

VDD_3V3B

VIN1

GN

D2

SHDN3 ADJ 4

VOUT 5

U1AP2112K-3.3TRG1

C7

2.2uF/6.3V

GNDD

C2

2.2uF/6.3V

GNDDGNDD

C5

100nF/6.3V

GNDD

VIN1

GN

D2

SHDN3 ADJ 4

VOUT 5

U2AP2112K-1.8TRG1

C8

2.2uF/6.3V

GNDD

VDD_3V3_WIFI VDD_1V8_WIFI

VDD_3V3BJ3

R3 1.5kR4 1.5k

VDD_3V3B

PMIC_PGOODPMIC_nWAKEUPLDO_PGOOD

PMIC_INT

VDD_1V8

NC1B1

NC4C1

NC20D1

NC31E1

NC45F1

NC58G1

NC68H1

NC76 J1

NC84 K1

NC94 L1

NC104 M1

NC111 N1

NC121 P1

NC2B2

NC5C2

NC21D2

NC32E2

NC46F2

NC59G2

NC69H2 NC77 J2

NC85 K2

NC95 L2

NC105 M2

NC112 N2

NC122 P2

NC3B3

NC6C3

NC22D3

NC33E3

NC47F3

NC60G3

NC70H3

NC78 J3

NC86 K3

NC96 L3

NC106 M3

NC113 N3

NC123 P3

NC12C4

NC23D4

NC34E4

NC48F4

NC61G4

NC71H4

NC79 J4

NC87 K4

NC97 L4

NC107 M4

NC114 N4

NC124 P4

NC24D5

NC137 V10

NC136 U11

NC138 V11

IC1D

OSD335x

VDD_3V3B

C1110uF/6.3V

GNDD

R5

10k

GNDD

I2C0_SDA

I2C0_SCLSCL 1

GN

D2

SDA 3

VC

C4

WP5

U4

24LC32AT-I

I2C0_SDAI2C0_SCL

PWR_FLAG

GNDD

C6

10uF/6.3V

SHDN1IN2

GND3

OUT 4

ADJ 5

GND 6

U3TL1963A-33DCQR

VDD_3V3_WIFI

GNDD

C10

10uF/6.3VGNDDGNDD

R2

1k

VDD_3V3B

GNDDGNDD

R1

1M

USB_DC

VDD_5V

SYS_5V

L1

BLM21AG221SN1D

D3

STPS140A

D2

STPS140A

D1

STPS140A

12

3D4

BAT54C

J19VDD_3V3AUX

VDD_3V3A

R85

499

R87

10k

R86DNP

R88

40.2

k

SO

T23

-3R

EF

1C

2A

3U

12

TLV

H43

1

VDD_1V8

R89

499

R91

10k

R90DNP

R92

40.2

k

SO

T23

-3R

EF

1C

2A

3U

13

TLV

H43

1

VDD_3V3B

1

23

Q3MMBT2907

1

23

Q4MMBT2907

12

D7LTST-C191TBKT

R934.75k

GNDD

VDD_3V3AUX

BAT_TEMP W1BATT_VOLT Y1

BAT_1 Y2

BAT_2 Y3

SYS_5V_1 W4

SYS_5V_2 Y4VIN_5V_0Y5

PMIC_POWER_ENC6

VIN_5V_1Y6

VIN_USB_0Y8

VIN_USB_1Y9

PMIC_PGOOD A20

PMIC_LDO_PGOOD B20

PMIC_I2C_SCLC20

PWR_BUTD20

VDD_3V3B_0 U20

VDD_3V3B_1 V20

L3_IN Y20

VDD_3V3AUX Y11

VDDS_DDR Y13

L1_IN Y14

I2C0_SCLC16

VDD_1V8_0 N16

VDD_1V8_1 R16

VDD_MPU Y16

I2C0_SDAC17

L2_IN Y17

PMIC_WAKEUPN A19

PMIC_INTN B19PMIC_I2C_SDAC19

PWR_END19

VDD_CORE Y19

IC1COSD335x

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-21KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.00Size: A4Id: 3/6

Title: MateboardFile: usb.schSheet: /USB-UART-WL-BT-GPIO/DPLab@UTN-FRBADirector: Alejandro FurfaroRevisor: Nicolás Dassieu BlanchetAutor: Pablo Ridolfi

USB0_D+USB0_D-

USB0_IDR90RUSB_DC

R100RGNDD

USB1_D+USB1_D-

GN

D1

IN 2

IN 3

EN 4

FLT5OUT6OUT7OUT8

PA

D9

U5TPS2065CDGN

L3

0.1ohm 0805

L2

150ohm 1000mAUSB1_VBUS

R8

10k

GNDD

C13

220uF/6.3V

GNDD

SYS_5V

GNDD

R6

10k

VDD_3V3A

USB1_OCn

USB1_DRVVBUS

tantalum cap

PWR_FLAG

n1OE1

1A2

2Y 3

GN

D4

2A5

1Y 6

2OE7

VC

C8

IC2

SN74LVC2G241DCUR

UART0_TXD.CPU

UART0_RXD.CPU

GNDD

GNDD

VDD_3V3B

C12100nF/6.3V

GNDD

VDD_3V3B

R7

100k

GNDD

UART0_RXDUART0_TXD

UART0_RXD.CPUUART0_TXD.CPU

WL_EN.SIPBT_EN.SIP

WL_SDIO_D2.SIPWL_SDIO_D1.SIPWL_SDIO_CMD.SIP

WL_SDIO_D3.SIP

LS_BUF_OE.SIP

WL_SDIO_CLK.SIPBT_HCI_TX.SIPBT_HCI_RX.SIP

WL_SDIO_D0.SIP

WL_IRQ.SIPBT_HCI_RTS.SIPBT_HCI_CTS.SIP

SYS_BOOT0

R13

100k

R14

100k

R19

100k

R21

100k

R25

100k

R15

100k

R16

100k

R23

100k

R17

100k

R18

100k

R20

100k

R22

100k

R24

100k

R26

100k

R27

100k

R28

100k

VDD_3V3B

GNDD

SYS_BOOT1SYS_BOOT2SYS_BOOT3SYS_BOOT4SYS_BOOT5SYS_BOOT6SYS_BOOT7SYS_BOOT8SYS_BOOT9SYS_BOOT10SYS_BOOT11SYS_BOOT12SYS_BOOT13SYS_BOOT14SYS_BOOT15

R29100

SD

_BO

OT

LCD_PCLKLCD_VSYNCLCD_HSYNCLCD_DE

GPIO3_21SPI1_CLKSPI1_D0SPI1_D1SPI1_CS0

GPIO3_19R11

0R12

0 GPIO0_7

AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7

VDD_ADC

GNDA

UART2_TXDUART2_RXD

I2C1_SDAI2C1_SCL

UART1_TXDUART1_RXD

I2C2_SDAI2C2_SCL

SYS_BOOT0SYS_BOOT1SYS_BOOT2SYS_BOOT3SYS_BOOT4SYS_BOOT5SYS_BOOT6SYS_BOOT7SYS_BOOT8SYS_BOOT9SYS_BOOT10SYS_BOOT11SYS_BOOT12SYS_BOOT13SYS_BOOT14SYS_BOOT15

LCD_DATA0LCD_DATA1LCD_DATA2LCD_DATA3LCD_DATA4LCD_DATA5LCD_DATA6LCD_DATA7LCD_DATA8LCD_DATA9LCD_DATA10LCD_DATA11LCD_DATA12LCD_DATA13LCD_DATA14LCD_DATA15

USB1_PWR

LCD_DATA0 R1

LCD_DATA4 T1

LCD_DATA8 U1

LCD_DATA1 R2

LCD_DATA5 T2

LCD_DATA9 U2

LCD_DATA12 V2

LCD_DATA2 R3

LCD_DATA6 T3

LCD_DATA10 U3

LCD_DATA13 V3

VDD_ADC_1A4

LCD_DATA3 R4

LCD_DATA7 T4

LCD_DATA11 U4

LCD_DATA14 V4

VDD_ADC_0A5

LCD_HSYNC R5

LCD_DATA15 T5

LCD_VSYNC U5LCD_PCLK V5

AGND_1A6

AIN0B6

LCD_DE R6

AIN3A7AIN2B7AIN1C7

AIN6A8AIN5B8AIN4C8

AGND_0A9

VREFP_ADCB9

AIN7C9

GPIO3_18 B12

SPI1_CS0 C12SPI1_D1 D12

SPI1_CLK A13

SPI1_D0 B13

GPIO3_19 C13

GPIO3_21 A14

UART1_TXDD15

UART0_RXDE15

USB1_DRVVBUSF15

MII1_RXERR J15

MII1_TXD2 K15

MII1_RXD1 L15

USB0_CEM15

USB0_VBUSP15

I2C1_SCLA16I2C1_SDAB16

UART1_RXDD16

UART0_TXDE16

USB0_DRVVBUSF16

MII1_COL H16

MII1_TXEN J16

MII1_TXD1 K16

MII1_RXD2 L16

MII1_RXD0 M16

USB0_IDP16

UART2_RXDA17

UART2_TXDB17

I2C2_SCLD17

UART0_RSTNE17

MII1_CRS_DV H17

MII1_RXDV J17

MII1_TXD0 K17

MII1_RXD3 L17

MDIO_DATA M17

USB0_DPN17

USB1_IDP17

USB1_DPR17

GPIO0_7 C18

I2C2_SDAD18

UART0_CTSNE18

MII1_REFCLK H18

MII1_TXD3 J18

MII1_TXCLK K18

MII_RXCLK L18

MDIO_CLK M18

USB0_DMN18

USB1_CEP18USB1_DMR18

USB1_VBUST18

IC1B OSD335x

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-21KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.00Size: A4Id: 4/6

Title: MateboardFile: cpu_power.schSheet: /CPU Power/DPLab@UTN-FRBADirector: Alejandro FurfaroRevisor: Nicolás Dassieu BlanchetAutor: Pablo Ridolfi

GNDD GNDD

GNDDGNDA

VDD_3V3A

VDD_ADC

R30

10k

1%

GNDD

VDD_1V8

J15VDDS_PLL

J16VDDS_DDR

J17VDD_MPU

J18VDD_CORE

J20VDD_RTCVDD_RTC

DNC

DNC

DNC

VDD_MPU_MONA2

TESTOUT A3

RTC_KALDO_ENN B4

VDDS_DDR1 E5

VDDS_DDR2 F5

VDDS_DDR3 G5

VDDS_DDR4 H5

VDDS_DDR5 J5

VDDS_DDR6 K5

VDDS_DDR7 L5

VPP M5

VDD_3V3A18N5VDD_3V3A17P5

CAP_VDD_RTCD6

VDD_RTC2 E6

VDD_CORE1 F6

VDD_CORE3 G6

VDD_CORE8 K6

VDD_CORE11 L6

VDD_RTC4 N6

VDD_3V3A16P6

VDD_RTC1 D7

VDD_PLL1E7

VDD_CORE2 F7

VDD_CORE4 G7

VDD_CORE12 L7

VDD_3V3A15P7

VDDA_ADCD8

VDD_CORE9 K8

VDD_CORE13 L8

VDD_CORE17 N8

VDD_3V3A14P8

CAP_VDD_SRAM_CORD9

VDD_1V83 E9

VDD_RTC3 F9

VDD_CORE14 L9

VDD_CORE18 N9

VDD_RTC8 P9

CAP_VBB_MPUC10

VDD_1V84 D10

VDD_3V3A22E10

VDD_MPU0F10

VDD_CORE5 G10

VDD_3V3A12P10

VDD_PLL2R10

CAP_VDD_SRAM_MPUD11

VDD_3V3A21E11

VDD_MPU1F11

VDD_CORE6 H11

VDD_CORE15 M11

VDD_3V3A11P11

VDD_PLL3R11

VDD_3V3A20E12

VDD_MPU2F12

VDD_CORE7 J12

VDD_CORE10 K12

VDD_CORE19 N12

VDD_3V3A10P12

VDD_3V3A19E13

VDD_MPU3F13

VDD_MPU4G13

VDD_MPU5H13

VDD_MPU6J13

VDD_RTC6 K13

VDD_CORE16 M13

VDD_CORE20 N13

VDD_3V3A9P13

VDD_RTC7 E14

VDD_3V3A1F14

VDD_3V3A2G14

VDD_3V3A3H14

VDD_3V3A4J14

VDD_3V3A5K14

VDD_3V3A6L14

VDD_RTC5 P14

VDD_PLL4H15

VDD_3V3A7N15

VDD_3V3A8R15

IC1EOSD335x

DGND1A1

DGND59 V1

DGND62 W2DGND63 W3

DGND65 W5

DGND12H6

DGND19J6

DG

ND

38M

6

DGND66 W6

DGND13H7

DGND20J7

DG

ND

27K

7

DG

ND

39M

7

DGND46 N7

DGND67 W7

DG

ND

82Y

7

AG

ND

E8

DGND5F8

DGND7G8

DGND14H8

DGND21J8

DG

ND

40M

8

DGND68 W8

DGND8G9

DGND15H9

DGND22J9

DG

ND

28K

9

DG

ND

41M

9

DGND69 W9

DGND16H10

DGND23J10

DG

ND

29K

10

DG

ND

32L1

0

DG

ND

42M

10

DGND47 N10

DGND70 W10

DG

ND

83Y

10

DGND4E20

DGND26J20

DGND51 N20

DGND53 P20

DGND55 R20

DGND57 T20

DG

ND

80W

20

DGND9G11

DGND24J11

DG

ND

30K

11

DG

ND

33L1

1

DGND48 N11

DG

ND

71W

11

DGND10G12

DGND17H12

DG

ND

34L1

2

DG

ND

43M

12D

GN

D72

W12

DG

ND

84Y

12

DG

ND

35L1

3

DG

ND

73W

13

DG

ND

44M

14

DGND49 N14

DG

ND

74W

14D

GN

D75

W15

DG

ND

85Y

15

DG

ND

76W

16D

GN

D77

W17

DGND2A18

DGND60 V18

DG

ND

78W

18

DG

ND

86Y

18

DGND3E19

DGND6F19

DGND11G19

DGND18H19

DGND25J19

DG

ND

31K

19

DG

ND

36L1

9

DGND45 M19

DGND50 N19

DGND52 P19

DGND54 R19

DGND56 T19

DGND58 U19

DGND61 V19

DG

ND

79W

19

IC1F OSD335x

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-21KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.00Size: A4Id: 5/6

Title: MateboardFile: system.schSheet: /System-eMMC-GPIO/DPLab@UTN-FRBADirector: Alejandro FurfaroRevisor: Nicolás Dassieu BlanchetAutor: Pablo Ridolfi

PMIC_nWAKEUP

Y124MHz R

31 1M

C1618pF/50V

C1718pF/50V

PMIC_PGOOD

GN

D3

VC

C5

24U9

74LVC1G07DCK

GNDD

C21

2.2uF/6.3V

R47

10k

VDD_3V3A

GNDD

LDO_PGOOD

SYS_RESETn SYS_RESETn

L5BLM15AG102SN1D

CLKOUT2

Y232.768kHz R

32

DN

P 1

M

C1818pF/50V

C1918pF/50V

JTAG_EMU1JTAG_EMU0JTAG_TDOJTAG_TCKJTAG_TDIJTAG_TMSJTAG_TRSTn

USR0USR1USR2USR3

eHRPWM1AeHRPWM1BeHRPWM2AeHRPWM2B

DAT3B2

VD

DIM

C2

VS

SQ

N2

DAT0A3

DAT4B3

VC

CQ

P3

DAT1A4

DAT5B4

VS

SQ

C4

VC

CQ

M4

VC

CQ

N4

VS

SQ

P4

DAT2A5

DAT6B5

VC

CF

5

VS

SG

5

RSTK5

CMDM5

VS

SN

5

VC

CQ

P5

DAT7B6

VC

CQ

C6

VC

CE

6

CLKM6

VS

SQ

P6

VS

SE

7

VS

SK

8

VC

CK

9

VS

SH

10

VC

CJ1

0

IC3

NAND_4GB

VDD_3V3B

C25

4.7uF/6.3V

GNDD

GNDD

R42

10k

R44

10k

R45

10k

R46

10k

R38

10k

R39

10k

R40

10k

R41

10k

R35

10k

R36

10k

R37

10k

VDD_3V3B

MMC1_DAT0

MMC1_DAT2MMC1_DAT1

MMC1_DAT3MMC1_DAT4MMC1_DAT5MMC1_DAT6MMC1_DAT7MMC1_CMDMMC1_CLKeMMC_RSTn

GN

D3

VC

C5

2 4

U8SN74LVC1G06DCK

R430R

VDD_3V3A

GNDD

C20100nF/6.3V

GNDD

SD.D3SD.D2SD.D1SD.D0SD.CMDSD.CLKSD.CD

TIMER7TIMER6

TIMER4TIMER5

JTAG_EMU1JTAG_EMU0

JTAG_TDOJTAG_TCKJTAG_TDI

JTAG_TMSJTAG_TRSTn

SD.D3SD.D2SD.D1SD.D0

SD.CMDSD.CLK

SD.CD

USR0USR1USR2USR3

VDD_1V8

R330 1%

L4BLM15AG102SN1D

CLKOUT1PMIC_INT

UART4_RXDUART4_TXD

MMC1_DAT0

MMC1_DAT2MMC1_DAT1

MMC1_DAT3MMC1_DAT4MMC1_DAT5MMC1_DAT6MMC1_DAT7MMC1_CMDMMC1_CLK

C28

100nF/6.3V

GNDD

C22

2.2uF/6.3V

GNDD

C26

100nF/6.3V

GNDD

GPIO1_28

GPIO2_1GPIO0_26GPIO0_27GPIO1_12GPIO1_13GPIO1_14GPIO1_15USB1_OCn

GPIO1_16GPIO1_17GPIO1_27

GPIO1_29

R340R

VDD_3V3B VDD_3V3B

C23

2.2uF/6.3V

GNDD

VDD_3V3B

C24

2.2uF/6.3V

GNDD

VDD_3V3B

C27

100nF/6.3V

GNDD

VDD_3V3B

GPIO1_25GPIO2_0

RTC_PORZ B5

EXT_WAKEUP C5

TIMER5 T6

TIMER6 U6

GPIO1_29 V6

TIMER4 R7TIMER7 T7

MMC1_DAT0 U7

MMC1_DAT1 V7

MMC1_DAT2 R8

MMC1_DAT3 T8

MMC1_DAT4 U8

MMC1_DAT5 V8

MMC1_DAT6 R9

MMC1_DAT7 T9

MMC1_CLK U9MMC1_CMD V9

SYS_RESETN A10

JTAG_TRSTNB10

EHRPWM2BT10

EHRPWM2AU10

OSC1_OUTF20

DGND1G20

OSC1_INH20

OSC0_OUTK20

DGND0L20

OSC0_INM20

JTAG_TDOA11

JTAG_TDIB11

JTAG_TMSC11

GPIO0_26 T11

JTAG_TCKA12

GPIO1_13 R12GPIO1_12 T12GPIO0_27 U12

GPIO2_1 V12

GPIO3_20 D13

GPIO1_16 R13

GPIO2_0 T13

GPIO1_15 U13GPIO1_14 V13

JTAG_EMU1B14

JTAG_EMU0C14

CLKOUT2 D14

(EMMC_RSTN)GPIO1_20 R14

EHRPWM1BT14

EHRPWM1AU14

GPIO1_17 V14

CLKOUT1 A15

PORZ B15

MMC0_CDC15

MMC0_DAT1G15

USR2T15USR1U15USR0V15

MMC0_DAT0G16(USB1_OCN)GPIO1_26 T16

(HDMI_INT)GPIO1_25 U16

USR3V16

MMC0_DAT3F17

MMC0_CLK0G17

UART4_RXD T17

UART4_TXD U17

(HDMICLK_DISN)GPIO1_27 V17

EXTIN B18

MMC0_DAT2F18

MMC0_CMDG18

GPIO1_28 U18

IC1AOSD335x

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-21KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.00Size: A4Id: 6/6

Title: MateboardFile: wifi.schSheet: /Wi-Fi BLE/DPLab@UTN-FRBADirector: Alejandro FurfaroRevisor: Nicolás Dassieu BlanchetAutor: Pablo Ridolfi

LS_BUF_OE

1.2-3.6V 1.7-5.5V

<

TX

S01

08 /

AD

G33

00 /

MA

X30

02

A11VccA2

A23

A34

A45

A56

A67

A78

A89

^OE10

B1 20

GND 11B8 12B7 13B6 14B5 15B4 16B3 17B2 18

VccB 19

U10

TXS0108VDD_1V8_WIFI

C29100nF/6.3V

GNDD

VDD_3V3_WIFI

C31100nF/6.3V

GNDD

R6033

R6133

R6233

R6333

R6433

R6533

WL_SDIO_D0.CPU

WL_SDIO_D3.CPUWL_SDIO_CLK.CPU

WL_SDIO_D1.CPUWL_SDIO_D2.CPU

WL_SDIO_CMD.CPU

GNDD

LS_BUF_OE.CPUR55

33

R58

1.5k

GNDD

R54

10k

R53

10k

R52

10k

R50

10k

R49

10k

R48

10k

VDD_1V8_WIFI

WL_SDIO_D0WL_SDIO_D1WL_SDIO_D2WL_SDIO_D3WL_SDIO_CLKWL_SDIO_CMD

GND1

GPIO112

GPIO93

GPIO104

GPIO125

WL_SDIO_CMD6

GND7

WL_SDIO_CLK8

GND9

WL_SDIO_D010

GN

D20

GN

D30

WLAN_EN 40

BT

_HC

I_R

TS

50

BT

_AU

D_C

LK60

WL_SDIO_D111

RE

SE

RV

ED

21

GN

D31

BT_EN 41

BT

_HC

I_C

TS

51

GN

D61

WL_SDIO_D212

RE

SE

RV

ED

22

RF

_AN

T1

32

WL_UART_DBG 42

BT

_HC

I_T

X52

RE

SE

RV

ED

62

WL_SDIO_D313

GN

D23

GND 33

BT_UART_DBG 43

BT

_HC

I_R

X53

GN

D63

WLAN_IRQ14

GN

D24

GND 34

GND 44

GN

D54

GN

D64

GND15

GP

IO4

25

GND 35

GND 45

GN

D55

GND16

GP

IO2

26

EXT_32K 36

VBAT_IN 46

BT

_AU

D_I

N56

GND17

GP

IO1

27

GND 37

VBAT_IN 47

BT

_AU

D_O

UT

57

RF

_AN

T2

18

GN

D28

VIO 38

GND 48

BT

_AU

D_F

SY

NC

58

GN

D19

GN

D29

GND 39

GND 49

GN

D59

G1-

G36

PA

D

IC4

WL1835MODGBMOCT

GNDD

R7233

R7733

R7333

R7433

R7533

R7633

R7133WL_SDIO_CMD

WL_SDIO_D0WL_SDIO_D1WL_SDIO_D2WL_SDIO_D3

WL_SDIO_CLK

1.2-3.6V 1.7-5.5V

<

TX

S01

08 /

AD

G33

00 /

MA

X30

02

A11VccA2

A23

A34

A45

A56

A67

A78

A89

^OE10

B1 20

GND 11B8 12B7 13B6 14B5 15B4 16B3 17B2 18

VccB 19

U11

TXS0108VDD_1V8_WIFI

C30100nF/6.3V

VDD_3V3_WIFI

C32100nF/6.3V

GNDD

GNDD GNDD

LS_BUF_OE

BT_HCI_RX

R6733

R6833

R57

150k

GNDD

R56

150k

GNDD

WL_ENBT_ENSLOW_CLKBT_HCI_RTSBT_HCI_TXBT_HCI_CTSWL_IRQ

R6933

R66

DN

P 1

k

GNDD

R59

DN

P 1

k

GNDD

BT_HCI_TX.CPUWL_EN.CPUBT_EN.CPU

CLKOUT2

BT_HCI_RTS.CPU

BT_HCI_CTS.CPUBT_HCI_RX.CPU

WL_IRQ.CPU

WL_IRQ

R70

DN

P 1

0k

VDD_1V8_WIFI

GNDDGNDD

Required to putdevice in debugmode.

C34

10pF

1

2

J4

ANT2GN

DD

C35

10pF

1

2

J12

ANT2GN

DD

C36

10pF

GNDD

J11J10

J8

EN1

GN

D2

OUT 3VD

D4

X1NZ2520SB-32.768KHZ-NSA3534C

VDD_1V8_WIFI

C33100nF/6.3V

GNDD

R78

1k

GNDD

32.768kHz

32.768kHz

R51

DNP 0R32.768kHz

VDD_1V8_WIFIWL_ENBT_EN

J13J14

C38

1uF/6.3V

C40

DNP 47uF

GNDD GNDD

VDD_3V3_WIFI

C37

10uF/6.3V

GNDD

C39

100nF/6.3V

GNDD

R79

33

R80

33

R81

33

R82

33

BT

_HC

I_C

TS

BT

_HC

I_T

X

BT

_HC

I_R

TS

BT

_HC

I_R

X

GNDD

J5 J6J7

J9

G1

S 2D 3

Q1BSS138WL_EN

GNDD

12

D5

LTS

T-C

191T

BK

T

R83

1k

VDD_3V3_WIFI

G1

S 2D 3

Q2BSS138

GNDD

12

D6

LTS

T-C

191T

BK

T

R84

1k

VDD_3V3_WIFI

BT_EN

WL_SDIO_D0.CPUWL_SDIO_D1.CPUWL_SDIO_D2.CPUWL_SDIO_D3.CPUWL_SDIO_CLK.CPUWL_SDIO_CMD.CPU

BT_HCI_TX.CPUWL_EN.CPUBT_EN.CPU

BT_HCI_CTS.CPUBT_HCI_RX.CPUBT_HCI_RTS.CPUWL_IRQ.CPU

LS_BUF_OE.CPU

AE12.4GHz Antenna

37

Apéndice B

Diagrama esquemático de la placabase

A continuación se presenta el diagrama esquemático completo de la placabase junto al subsistema de tiempo real.

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-09KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.0Size: A4Id: 1/7

Title: Baseboard MateboardFile: BaseBoard MB-DPLAB.schSheet: /DPLab - UTN.BAFernando Aló / Pablo Ridolfi

Power

Power.sch

Memoria uSD

Memoria.sch

SD_DAT2SD_DAT3/CDSD_CMDSD_CLKSD_DAT0SD_DAT1

ADC_Pulsadores

ADC_Pulsadores.sch

AIN6AIN7

AIN5AIN4

AIN0AIN1AIN2AIN3

SW_ResetSW_PowerSW_Boot_uSDSW_User_Switch

AIN0_3V3AIN1_3V3AIN2_3V3AIN3_3V3

1

MP

1

9774015243R

Mateboard

Mateboard.sch

USB_DEVICE_VBUS

UART0_TXUART0_RX

SD_DAT2SD_DAT3/CD

SD_DAT0SD_DAT1

SD_CMDSD_CLK

AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7

USB_DEVICE_ID

SW_Boot_uSDSW_User_Switch

SW_ResetSW_Power

USB_HOST_VBUS

AIN0_3V3AIN1_3V3AIN2_3V3AIN3_3V3

USB_HOST_D-USB_HOST_D+

USB_DEVICE_D-USB_DEVICE_D+

GND GND GND GND

Conectores USB

USB.sch

USB_DEVICE_VBUS

UART0_RXUART0_TX

USB_DEVICE_ID

USB_HOST_VBUS

USB_DEVICE_D-USB_DEVICE_D+

USB_HOST_D-USB_HOST_D+

1

MP5

MH

GND GND GND GND

1

MP6

MH 1

MP7

MH 1

MP8

MH

1

MP

2

9774015243R

1

MP

3

9774015243R

1

MP

4

9774015243R

Real-Time Subsystem

rtss.sch

RESETn

USB_D+USB_D-

USB_VBUS

RST

RST

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-09KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.0Size: A4Id: 2/7

Title: Baseboard MateboardFile: Power.schSheet: /Power/DPLab - UTN.BAFernando Aló / Pablo Ridolfi

+24V

GND

GND

GND GND

+5VPWR_FLAG

PWR_FLAG

GND

GND

PWR_FLAG

GND

+5V

GND GND GND

+5V

GND

5V OK

+3V3

GND

3V3 Perifericos OK

+5V

+5V +5VP

+5VD

5V Perifericos (conectores externos)

5V Device(conector a mateboard)

+5VP

+5VD

GND

GND

5V Perifericos OK

5V Device OK

GND

+3.3VP

3V3 OKTP13V3_PadTP2GND_Pad GND

TP33V3Per_PadTP4GND_Pad GND

TP55V_PadTP6GND_Pad GND

TP75VPer_PadTP8GND_Pad GND

TP95VDev_PadTP10GND_Pad GND

+3V3 +3.3VP 3V3 Perifericos(conectores externos)

Fuente 12-24VDC a [email protected]

LDO 3V3

Protecciónes PolyswitchStatus LEDs

R1 82R 5%

R2 82R 5%

R3 150R 5%

R4 150R 5%

R5 150R 5%

D5Green Clear

D4Green Clear

D3Green Clear

D2Green Clear

D1Green Clear

R656k 1%

R7 2k21 1%

R81k1 1%

R9150R 1%

C4

0.01uF 35V X7R

C3

0.1uF 35V X7R

C2

1uF 35V X7R

+

C1

100uF 35v Elect

C7

180nF 16V X7R 10%

C5220pF 50V NP0 5%

+ C9100uF 10v Tant

C60.1uF 35V X7R

C810uF 10V X5R

D7

Schottky 40V 3A Rapido

L1

15UH 3.5A

D6200V 2A

F1

PTC 1.10A 33V

F3

PTC 1A 6V

F2

PTC 0.5A 6V

F4

PTC 0.5A 6V

1

23

J3Conector_Barrel

GN

D1

VO 2VI3

VO 4

U2LD1117 +3V3

OUT 1

SYNCH 2EN3

CO

MP

4

FB 5FSW6

GN

D7

VCC8

GN

D9

U1L7986

1 2L14

F.B. 220R@100MHz

1 2L13

F.B. 220R@100MHz

D21

TVS 24V SMA 400W

VinSW

FB

3V3

3V3_Per

5V

5V_Per

5V_Dev

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-09KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.0Size: A4Id: 3/7

Title: Baseboard MateboardFile: Memoria.schSheet: /Memoria uSD/DPLab - UTN.BAFernando Aló / Pablo Ridolfi

+3V3

+3V3

GND

GND

SD_DAT2SD_DAT3/CD

SD_CMD

SD_CLK

SD_DAT0SD_DAT1

GND

R12

10K

5%

R13

10K

5%

R14

10K

5%

R15

10K

5%

R16

10K

5%

R17

10K

5%

C19

10uF 10V X5R

C20

0.1UF 6.3V X7R

Memoria uSD

DAT21

DAT3/CD2

CMD3

VDD4

CLK5

VSS6

DAT07

DAT18

SHIELD 9

J5 Molex uSD_Card 0475710001

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-09KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.0Size: A4Id: 4/7

Title: Baseboard MateboardFile: ADC_Pulsadores.schSheet: /ADC_Pulsadores/DPLab - UTN.BAFernando Aló / Pablo Ridolfi

GND

R30

10K

5%

C212.2uF 6.3V X5R

C220.1UF 6.3V X7R

GND

+3V3

SW_Reset

GND

SW_Power

GND

R32

100K

5%

+3V3

SW_Boot_uSD

R33100R 5%

GND

R34

100K

5%

+3V3

SW_User_Switch

R31100K 5%

C270.1UF 6.3V X7R

GND

Pulsadores

R2236K 1%

R2343.2K 1%

R281K 1%

D11Zener 2V

AIN0

AIN0_3V3

GNDA

C25

0.1UF 6.3V X7R

R2436K 1%

R2543.2K 1%

R291K 1%

D12Zener 2V

AIN1

AIN1_3V3

GNDA

C26

0.1UF 6.3V X7R

R1836K 1%

R1943.2K 1%

R261K 1%

D9Zener 2V

AIN2

AIN2_3V3

GNDA

C23

0.1UF 6.3V X7R

R2036K 1%

R2143.2K 1%

R271K 1%

D10Zener 2V

AIN3

AIN3_3V3

GNDA

C24

0.1UF 6.3V X7R

R3936K 1%

R4043.2K 1%

R451K 1%

D15Zener 2V

AIN4

AIN4_3V3

GNDA

C30

0.1UF 6.3V X7R

R4136K 1%

R4243.2K 1%

R461K 1%

D16Zener 2V

AIN5

AIN5_3V3

GNDA

C31

0.1UF 6.3V X7R

R3536K 1%

R3643.2K 1%

R431K 1%

D13Zener 2V

AIN6

AIN6_3V3

GNDA

C28

0.1UF 6.3V X7R

R3736K 1%

R3843.2K 1%

R441K 1%

D14Zener 2V

AIN7

AIN7_3V3

GNDA

C29

0.1UF 6.3V X7R

Adaptaciones ADC

AIN6

AIN7

AIN5

AIN4AIN0

AIN1

AIN2

AIN3

AIN0_3V3

AIN1_3V3

AIN2_3V3

AIN3_3V3

GNDA

+3.3VA

GNDA

+3.3VA

GNDA

+3.3VA

GNDA

+3.3VA

+3.3VA

1 2L11 F.B. 220R@100MHz

GND

1 2L12 F.B. 220R@100MHz

GNDA

123

4S1

Switch_Tactile

123

4S2

RESET

123

4S4

Boot_uSD

123

4S3

User

123

J8

AD

C04

+3.3VP

123

J9

AD

C05

123

J6

AD

C06

123

J7

AD

C07

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-09KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.0Size: A4Id: 5/7

Title: Baseboard MateboardFile: Mateboard.schSheet: /Mateboard/DPLab - UTN.BAFernando Aló / Pablo Ridolfi

JTAG_TMSJTAG_TDI

JTAG_TDOJTAG_TCK

JTAG_EMU0SYS_RESETnXDMA_EVENT_INTROSD.CD

+3V3

GND

GND

+3V3

CLKOUT2

JTAG_EMU1

JTAG_TRSTn

+3V3

GND

USB_HOST_D-USB_HOST_D+

USB_DEVICE_D-USB_DEVICE_D+

USB_DEVICE_VBUS

UART0_TXUART0_RX

JTAG

SD_DAT2SD_DAT3/CD

SD_CMDSD_CLK

SD_DAT0SD_DAT1

R48

4.75K 1%

R49 4.75K 1%

R47

4.75

K 1

%

1 23 45 67 89 10

20

30

40

50

60

70

11

21

31

41

51

61

12

22

32

42

52

62

13

23

33

43

53

63

14

24

34

44

54

64

15

25

35

45

55

65

16

26

36

46

56

66

17

27

37

47

57

67

18

28

38

48

58

68

19

29

39

49

59

69

J2

DF

40C

-70D

S

1 23 45 67 89 10

20

30

40

50

60

70

11

21

31

41

51

61

12

22

32

42

52

62

13

23

33

43

53

63

14

24

34

44

54

64

15

25

35

45

55

65

16

26

36

46

56

66

17

27

37

47

57

67

18

28

38

48

58

68

19

29

39

49

59

69

J1

DF

40C

-70D

S

USB0_DMUSB0_DPUSB0_ID

UART0_RXDUART0_TXD

UART1_RXDUART1_TXD

UART2_RXDUART2_TXD

SD_BOOT

SD.D3SD.D2SD.D1SD.D0

SD.CMDSD.CLKSD.CD

USR0USR1USR2USR3

UART4_RXDUART4_TXD

GPIO1_25GPIO1_28

GPIO1_17GND

GND

GND PWR_BUTSYS_RESETn

CLKOUT2CLKOUT1

JTAG_EMU1JTAG_EMU0

JTAG_TDOJTAG_TCKJTAG_TDI

JTAG_TMSJTAG_TRSTn

GPIO1_13

I2C0_SDAI2C0_SCL

I2C2_SCLI2C2_SDA

I2C1_SDAI2C1_SCL

SPI1_CLKSPI1_MISOSPI1_MOSI

SPI1_CS0

GPIO0_7GPIO3_21GPIO3_19GPIO1_27

GND

GND

GND

GND

GND

GND

GND

GND

GND

VBAT

VBAT_SENSEVBAT_TEMP

USB1_DMUSB1_DP

USB1_VBUS

GPIO2_0

GPIO1_29

GPIO1_16

GPIO1_15GPIO1_14GPIO0_26

AIN0

AIN1

AIN2

AIN3

AIN4

AIN5

AIN6

AIN7

GNDAGPIO1_12GPIO0_27

GPIO2_1

TIMER6TIMER5

TIMER4TIMER7

eHRPWM2B

eHRPWM2A

eHRPWM1B

eHRPWM1A

LCD_DELCD_PCLK

LCD_VSYNCLCD_HSYNCLCD_DATA0LCD_DATA1LCD_DATA2LCD_DATA3LCD_DATA4LCD_DATA5LCD_DATA6LCD_DATA7LCD_DATA8LCD_DATA9

LCD_DATA10LCD_DATA11LCD_DATA12LCD_DATA13LCD_DATA14LCD_DATA15

GND

GNDGND

GND

GND

+5VD +5VD

12

D17 Green ClearR50 1.3K 5%

12

D18 Green ClearR51 1.3K 5%

12

D19 Green ClearR52 1.3K 5%

12

D20 Green ClearR53 1.3K 5%

GND

USR0

USR1

USR2

USR3

AIN0

AIN1

AIN2

AIN3

AIN4

AIN5

AIN6

AIN7

GN

D

+5VP+3.3VP

SW_Boot_uSD

SW_User_Switch

SW_ResetSW_Power

USB_DEVICE_ID

SPI1_CLKSPI1_MISOSPI1_MOSISPI1_CS0

USB_HOST_VBUS

+3.3VP

AIN0_3V3AIN1_3V3AIN2_3V3AIN3_3V3

UART1_TXDUART1_RXDGPIO1_17GPIO1_25GPIO1_28GPIO1_13GPIO0_7GPIO3_21

GPIO3_19GPIO1_27

+3.3VP

+5VP

GND

I2C1_SCLI2C1_SDA

I2C2_SCLI2C2_SDA

+3.3VP

GNDGND

I2C1_SDAI2C1_SCL

UART4_TXDUART4_RXD

SPI1_CLK

SPI1_MISOSPI1_MOSIGPIO1_12GPIO0_27

GPIO2_1

SPI1_MISOSPI1_MOSI

SPI1_CLK

GPIO2_0

GPIO1_15GPIO1_14GPIO0_26

UART2_TXDUART2_RXD

TIMER6TIMER5

eHRPWM2AeHRPWM1AeHRPWM2B

TIMER7

TIMER4

LCD_DE LCD_PCLKLCD_VSYNC LCD_HSYNCLCD_DATA0 LCD_DATA1LCD_DATA2 LCD_DATA3LCD_DATA4 LCD_DATA5LCD_DATA6 LCD_DATA7LCD_DATA8 LCD_DATA9LCD_DATA10 LCD_DATA11LCD_DATA12 LCD_DATA13LCD_DATA14 LCD_DATA15

GND

GND

+5VP

+3.3VP

GND

TP16SYS_5V_Pad

TP15GND_Pad GND

TP12I2C0_SCL_PadTP13I2C0_SDA_Pad

TP11GND_PadI2C0_SCLI2C0_SDA

GND

SYS_5V

SYS_3V3

TP14SYS_3V3_Pad SYS_3V3

SYS_5V

TP17GND_Pad GND

VBATVBAT_SENSE

VBAT_TEMP

VDD_ADC_IN

TP18VDD_ADC_IN_Pad VDD_ADC_IN

TP19GND_Pad GND

GPIO1_29

User Leds

Arduino Shield

Raspberry Pi 3 Hat

MateboardLCD & Battery

Test Points

AIN0_3V3AIN1_3V3AIN2_3V3AIN3_3V3

C330.1uF X7R 50VC32

0.1uF X7R 50V

1 23 45 67 89 10

20

30

40

11

21

31

12

22

32

13

23

33

14

24

34

15

25

35

16

26

36

17

27

37

18

28

38

19

29

39

J12

Ras

pber

ry P

i

1 23 45 67 89 10

20

11

21

12

22

13

23

14

24

15 1617 1819

J10

Hea

der

Vid

eo

1 23 45 67 89 10

20

11 1213 1415 1617 1819

J11

Con

ecto

r_02

X10

12345678

J14

AR

D_P

ower

12345678910

J16

AD

R_D

igita

l2

123456

J15

AR

D_A

nalo

g

1234

J13Hea

der_

Bat

tery

12345678

J17

AD

R_D

igita

l1

GND

C35

0.1UF 6.3V X7R

C34

10uF 10V X5R

+5VD

GND

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2017-06-09KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.0Size: A4Id: 6/7

Title: Baseboard MateboardFile: USB.schSheet: /Conectores USB/DPLab - UTN.BAFernando Aló / Pablo Ridolfi

GND

+5V

USB_DEVICE_D-USB_DEVICE_D+

GND

GND GND

GND GND

VCC_UART

VCC_UART

GND

UART0_RXUART0_TX

USB_DEVICE_D-USB_DEVICE_D+

USB_DEVICE_VBUS

UART0_RXUART0_TX

GND

USB_HOST_D-USB_HOST_D+

USB_HOST_D-USB_HOST_D+

GND

R10 27R 5%R11 27R 5%

C13

0.1UF 6.3V X7R

C12

10uF 10V X5R

C11

0.1UF 6.3V X7R

C10

10uF 10V X5R

C18

0.1UF 6.3V X7R

GND

C15

10uF 10V X5R

1 234

L8C.M. Choke

1 234

L10C.M. Choke

1 2

L6F.B. 220R@100MHz

1 2L7

F.B. 220R@100MHz

1 2L2

F.B. 220R@100MHz

1 2L4

F.B. 220R@100MHz

1 2L3

F.B. 220R@100MHz

1 2L5

F.B. 220R@100MHz

USB_DEVICE_ID USB_DEVICE_ID

C14

47pF 50V C0G

C16

47pF 50V C0G

USB_HOST_VBUSUSB_HOST_VBUS

USB_DEVICE_VBUS

USB Device

USB Host

USB Bridge to UART0

D8

Schottky 20V 1A 340mV

PWR_FLAG

VBUS 1

DM 2

DP 3

ID 4

GND 5

SHIELD 6

SHIELD 7

SHIELD 8

SHIELD 9

J18USB-Device

TXD 1

RTS 2

VCCIO3

RXD 4

GN

D5

CTS 6

CBUS2 7

USBDP8USBDM9

3V3OUT10

RESET11

VCC12

GN

D13

CBUS1 14CBUS0 15

CBUS3 16

U4 FT230XS_U

VBUS 1

DM 2

DP 3

ID 4

GND 5

SHIELD 6

SHIELD 7

SHIELD 8

SHIELD 9

J4USB

GND

GN

D

IO2

IO3

IO4

VB

US

IO1

1

23 45 6

U3

DVIULC6-4SC6

GND

GN

D

IO2

IO3

IO4

VB

US

IO1

1

23 45 6

U5

DVIULC6-4SC6

GND

R540R

USB_HOST_ID

GND

GN

D

IO2

IO3

IO4

VB

US

IO1

1

23 45 6

U6

DVIULC6-4SC6

VBUS 1

DM 2

DP 3

ID 4

GND 5

SHIELD 6

SHIELD 7

SHIELD 8

SHIELD 9

J19USB-Host

1 234

L9C.M. Choke

GND

R550R

USB_HOST_VBUS

C17

0.1UF 6.3V X7R

USB_DEVICE_VBUS

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: KiCad E.D.A. kicad no-vcs-found-05ab44f61ubuntu16.04.1

Rev: 1.0Size: A4Id: 7/7

Title: Baseboard MateboardFile: rtss.schSheet: /Real-Time Subsystem/DPLab - UTN.BAPablo Ridolfi / Fernando Aló

P0_23/FC1_RTS_SCL_SSELN1//CT0CAP0/UTICK_CAP11

P0_24/FC1_CTS_SDA_SSELN0//CT0CAP1/CT0MAT02

P0_25/FC4_RTS_SCL_SSELN1/FC6_CTS_SDA_SSELN0/CT0CAP2/CT1CP13

P0_26/FC4_CTS_SDA_SSELN0//CT0CAP34

USB_DP 5

USB_DM 6

P1_16/PDM0_DATA/CT0MAT0/CT0CAP0/FC7_RTS_SCLX_SSELN1 7

VDD_0 8

VSS_0 9

P1_17////MCLK/UTICK_CAP3 10

VSSA 20

P1_10//FC6_TXD_SCL_MISO/SCT0_OUT4/FC1_SCK///USB0_FRAME 30

P0_6/FC6_TXD_SCL_MISO//CT0MAT1/UTICK_CAP040

P0_15/FC3_RTS_SCL_SSELN1/SWO/CT2MAT2/FC4_SCK//SPIFI_IO250

P0_20/FC5_RXD_SDA_MOSI/FC0_SCK/CT3CAP060

P0_29/FC1_RXD_SDA_MOSI/SCT0_OUT2/CT0MAT3/CT0CAP1//CT0MAT111

VREFN 21

P0_0/FC0_RXD_SDA_/FC3_CTS_SDA_SSELN0/CT0CAP0/SCT0_OUT331

P0_7/FC6_SCK/SCT0_OUT0/CT0MAT2/CT0CAP241

P1_12//FC5_RXD_SDA_MOSI/CT1MAT0/FC7_SCK/UTICK_CAP2 51

P0_21/CLKOUT/FC0_TXD_SCL_MISO/CT3MAT0///SPIFI_CLK61

P0_30/FC1_TXD_SCL_MISO/SCT0_OUT3/CT0MAT2/CT0CAP212

VREFP 22

P0_1/FC0_TXD_SCL_MISO/FC3_RTS_SCL_SSELN1/CT0CAP1/SCT0_OUT132

P1_11//FC6_RTS_SCL_SSELN1/CT1CAP0/FC4_SCK///USB0_VBUS 42

P0_16/FC3_SSELN2/FC6_CTS_SDA_SSELN0/CT3MAT1/SWCLK//SPIFI_152P1_15/PDM0_CLK/SCT0_OUT5/CT1CAP3/FC7_CTS_SDAX_SSELN0 62

P0_31/PDM0_CLK/FC2_CTS_SDA_SSELN0/CT2CAP2/CT0CAP3/CT0MAT313VDDA 23

RTCXIN33

P0_8/FC2_RXD_SDA_MOSI/SCT0_OUT1/CT0MAT343

P0_17/FC3_SSELN3/FC6_RTS_SCL_SSELN1/CT3MAT2/SWDIO//SPIFI_053

P0_22/CLKIN/FC0_RXD_SDA_MOSI/CT3MAT363

P1_0/PDM0_DATA/FC2_RTS_SCL_SSELN1/CT3MAT1//CT0CAP0 14

VDD_1 24

VDD_2 34

P0_9/FC2_TXD_SCL_MISO/SCT0_OUT2/CT3CAP0/FC3_CTS_SDA_SSELN044

P1_13//FC5_TXD_SCL_MISO/CT1MAT1/FC7_RXD_SDA_MOSI 54

RESETn64

P1_1//SWO/SCT0_OUT4/FC5_SSELN2/FC4_TXD_SCL_MISO 15

VSS_1 25

RTCXOUT35

P0_10/FC2_SCK/SCT0_OUT3/CT3MAT045

VSS_2 55

P1_2/MCLK/FC7_SSELN3/SCT0_OUT5/FC5_SSELN3/FC4_RXD_SDA_MOSI 16

P1_6//FC7_SCK/CT1CAP2//CT1MAT2/PVT_RED0_ALERT/USB0_VBUS 26

P0_2/FC0_CTS_SDA_SSELN0/FC2_SSELN3/CT2CAP136

P0_11/FC3_SCK/FC6_RXD_SDA_MOSI/CT2MAT146

VDD_3 56

P1_3//FC7_SSELN2/SCT0_OUT6//FC3_SCK/CT0CAP1/USB0_LEDN 17

P1_7//FC7_RXD_SDA_MOSI/CT1MAT2//CT1CAP2/PVT_AMBER1_ALERT 27

P0_3/FC0_RTS_SCL_SSELN1/FC2_SSELN2/CT1MAT337

P0_12/FC3_RXD_SDA_MOSI/FC6_TXD_SCL_MISO/CT2MAT347

P1_14//FC2_RXD_SDA_MOSI/SCT0_OUT7/FC7_TXD_SCL_MISO 57

P1_4/PDM1_CLK/FC7_RTS_SCL_SSELN1/SCT0_OUT7//FC3_TXD_SCL_MISO/ 18

P1_8//FC7_TXD_SCL_MISO/CT1MAT3//CT1CAP3/PVT_RED1_ALERT 28

P0_4/FC0_SCK/FC3_SSELN2/CT0CAP238

P0_13/FC3_TXD_SCL_MISO/SCT0_OUT4/CT2MAT048

P0_18/FC5_TXD_SCL_MISO/SCT0_OUT0/CT0MAT058

P1_5/PDM1_DATA/FC7_CTS_SDA_SSELN0/CT1CAP0//CT1MAT3/PVT_AM0_ALRT/ 19

P1_9//FC3_RXD_SDA_MOSI/CT0CAP2///USB0_LEDN/USB0_CONNECTN 29

P0_5/FC6_RXD_SDA_MOSI/SCT0_OUT6/CT0MAT039

P0_14/FC3_CTS_SDA_SSELN0/SCT0_OUT5/CT2MAT1/FC1_SCK//SPIFI_49

P0_19/FC5_SCK/SCT0_OUT1/CT0MAT1///SPIFI_CSN59

U7LPC54114J256BD64

Housings_QFP:LQFP-64_10x10mm_Pitch0.5mm

R56

100K

5%

+3V3

GNDGNDA

RESETn

USB_D+USB_D-

C380.1UF 6.3V X7R

GND

C410.1UF 6.3V X7R

GND

C390.1UF 6.3V X7R

GND

C420.1UF 6.3V X7R

GND

+3V3

C400.1UF 6.3V X7R

GND

C430.1UF 6.3V X7R

GND

Y132.768kHz

USB_VBUS

C3618pF 6.3V X7R

C3718pF 6.3V X7R

GND

R584.75K 1%

R574.75K 1%

+3V3 +3V3

B

G

R1

2

3

4

D22LED_RABG

+3V3

R59 1k1 1%

R60 1k1 1%

R61 1k1 1%

P0_29

P1_10

P1_9

P0_29

P1_10P1_9

1234

J20RTSS_I2C

+3V3

GND

+3.3VA

45

Bibliografía

[1] Vitaly Wool. Spreading the disease: Linux on microcontrollers. 2014. URL: http://events.linuxfoundation.org/sites/events/files/slides/spreading.pdf.

[2] Gerald Coley. BeagleBone Black System Reference Manual. 2013, pág. 3. URL:https://cdn-shop.adafruit.com/datasheets/BBB_SRM.pdf.

[3] Proyecto CIAA. Computadora Industrial Abierta Argentina. 2014. URL:http://www.proyecto-ciaa.com.ar.

[4] Proyecto CIAA. CIAA-ACC. 2017. URL: http://www.proyecto-ciaa.com.ar/devwiki/doku.php?id=desarrollo:ciaa_acc:ciaa_acc_inicio.

[5] Proyecto CIAA. Linux en la CIAA-NXP. 2016. URL: http://www.proyecto-ciaa.com.ar/devwiki/doku.php?id=desarrollo:linux.

[6] Proyecto CIAA. Estudio aproximado de costos de la CIAA-ACC. 2015. URL:http://www.proyecto-ciaa.com.ar/devwiki/doku.php?id=desarrollo:ciaa_acc:estudio_aproximado_de_costos.

[7] Texas Instruments. AM3358 Sitara Processor. URL:http://www.ti.com/product/AM3358.

[8] BeagleBoard. BeagleBone Black Wireless. URL:https://beagleboard.org/black-wireless.

[9] Octavo Systems. OSD335x System-in-Package. URL:https://octavosystems.com/octavo_products/osd335x/.

[10] Texas Instruments. WL1835MOD Wi-Fi and Bluetooth module. URL:http://www.ti.com/product/WL1835MOD.

[11] Texas Instruments. AM335x Hardware Design Guide. URL: http://processors.wiki.ti.com/index.php/AM335x_Hardware_Design_Guide.

[12] Octavo Systems. OSD335x Reference Design Tutorial Series. URL:https://octavosystems.com/app_notes/osd335x-design-tutorial/.

[13] Henry Ott. PCB Stack-up for 6-layer boards. URL:http://www.hottconsultants.com/techtips/pcb-stack-up-3.html.

[14] KiCost. Build cost spreadsheet for KiCad projects. URL:https://xesscorp.github.io/KiCost/docs/_build/singlehtml/index.html.

[15] PCB Cart. PCB Cart Online Quotation. URL:https://www.pcbcart.com/quote.

[16] Pablo Ridolfi. Repositorio de hardware del módulo de cómputo. URL:https://gitlab.frba.utn.edu.ar/pridolfi/mateboard/tree/osd335x.

[17] Jean-Pierre Charras, Dick Hollenbeck y Wayne Stambaugh. KiCad: A CrossPlatform and Open Source Electronics Design Automation Suite. URL:http://kicad-pcb.org/.

[18] Texas Instruments. Programmable Real-Time Unit Subsystem and IndustrialCommunication Subsystem. URL:http://processors.wiki.ti.com/index.php/PRU-ICSS.

[19] Fernando Aló y Pablo Ridolfi. Repositorio de hardware de la placa base. URL:https://gitlab.frba.utn.edu.ar/dplab/Baseboard-Mateboard.

BIBLIOGRAFÍA 46

[20] Keil. CDC (ACM): Communication Device Class (Abstract Control Model).URL: https://www.keil.com/pack/doc/mw/USB/html/group__usbh__cdcacm_functions.html.

[21] Atmel. STK500 Communication Protocol. URL:http://www.atmel.com/images/doc2591.pdf.

[22] Modbus Organization. MODBUS over Serial Line Specification &Implementation guide. URL:http://www.modbus.org/docs/Modbus_over_serial_line_V1.pdf.

[23] Pablo Ridolfi. Repositorio de hardware de la biblioteca RemoteMCU. URL:https://gitlab.frba.utn.edu.ar/pridolfi/remotemcu.

[24] Proyecto CIAA. picoCIAA. URL:http://www.proyecto-ciaa.com.ar/index_comprar_picociaa.html.

[25] Pablo Ridolfi. Firmware CMSIS-DAP con interfaz CDC. URL:https://github.com/pridolfi/cmsis_dap_cdc.

[26] Facundo Larosa y Pablo Ridolfi. Heurística para el Diseño de CircuitosImpresos. 2017. URL: https://gitlab.com/pridolfi/heuristica-pcb/uploads/fb2684330904557154b8712b4da65d96/heuristica.pdf.

[27] IPC the Association Connecting Electronics Industries. IPC-2221A GenericStandard on Printed Board Design. 2017. URL:http://www.ipc.org/TOC/IPC-2221A.pdf.

[28] GNU Free Software Foundation. GNU Octave Scientific ProgrammingLanguage. URL: https://www.gnu.org/software/octave.

[29] Octavo Systems. OSD335x-SM System-in-Package. 2017. URL:https://octavosystems.com/octavo_products/osd335x-sm/.