<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>WebHome/HerramientasProgramacion/HLaunchpad</title><revhistory><revision><revnumber>36</revnumber><date>2020-07-17 23:01:15</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>35</revnumber><date>2017-10-11 00:55:07</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>34</revnumber><date>2017-10-10 23:42:25</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>33</revnumber><date>2017-10-10 23:26:08</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>32</revnumber><date>2017-10-06 19:31:58</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>31</revnumber><date>2017-10-06 19:30:51</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>30</revnumber><date>2017-10-06 19:25:47</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>29</revnumber><date>2017-09-19 20:27:41</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>28</revnumber><date>2017-09-19 20:25:59</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>27</revnumber><date>2017-09-19 20:20:59</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>26</revnumber><date>2017-09-19 20:19:59</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>25</revnumber><date>2017-09-19 20:12:00</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>24</revnumber><date>2017-09-19 19:54:32</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>23</revnumber><date>2017-09-05 21:21:23</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>22</revnumber><date>2016-08-03 22:39:37</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>21</revnumber><date>2016-08-03 22:37:26</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>20</revnumber><date>2016-08-03 22:19:59</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>19</revnumber><date>2016-08-03 22:17:53</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>18</revnumber><date>2014-10-07 18:17:14</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>17</revnumber><date>2014-10-07 18:16:35</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>16</revnumber><date>2014-10-07 18:14:09</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>15</revnumber><date>2014-10-07 18:11:03</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>14</revnumber><date>2014-10-07 17:59:00</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>13</revnumber><date>2014-10-07 17:58:28</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>12</revnumber><date>2014-10-07 17:57:52</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>11</revnumber><date>2014-09-02 22:17:53</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>10</revnumber><date>2014-09-02 22:17:26</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>9</revnumber><date>2014-08-26 21:14:34</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>8</revnumber><date>2014-08-26 21:14:06</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>7</revnumber><date>2014-08-26 21:10:42</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>6</revnumber><date>2014-08-26 20:07:28</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>5</revnumber><date>2014-08-26 20:06:46</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>4</revnumber><date>2014-08-26 20:05:46</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>3</revnumber><date>2014-07-28 20:27:53</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>2</revnumber><date>2014-07-28 20:23:44</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>1</revnumber><date>2014-05-21 16:48:27</date><authorinitials>GuillermoSteiner</authorinitials></revision></revhistory></articleinfo><section><title>Herramientas de Programación y Depurado</title><para>El proyecto <emphasis>GNU-ARM toolchain</emphasis> es el compilado de las herramientas tradicionales del <emphasis>GNU toolchain</emphasis> configuradas para generar o reconocer código ARM. </para><para>Esto significa que dentro de todos los proyectos que integran el <emphasis>GNU toolchain</emphasis> ya se encuentran lo necesario para generar la herramienta <emphasis>GNU-ARM</emphasis> específica. El mantenimiento y mejoras de la &quot;porción ARM&quot; que tienen estas herramientas, está realizada por comunidades en general auspiciadas por ARM Holdings plc. </para><para>Estas mismas comunidades realizan Pre-built que se pueden bajar de paginas específicas y que libera a los usuarios del tedioso proceso de bajar cada herramienta (gcc, ld, gdb, etc) y realizar el compilado de las mismas para ARM. El proyecto de estas <emphasis>GNU-ARM toolchain</emphasis> es el siguiente           </para><para><ulink url="https://launchpad.net/gcc-arm-embedded/"/> </para><para>Dentro de esta misma página, se puede encontrar un link a un proyecto para Ubuntu, él cual permite una fácil instalación y actualización de mismo, al agregar un repositorio especifico para luego instalar y mantener el proyecto con las herramientas de administración de paquetes de Ubuntu.  </para><para><ulink url="https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa"/> </para><para>En este último se encuentra un instructivo para instalar las herramientas. </para><para>Estos pasos se pueden resumir de la siguiente manera  </para><itemizedlist><listitem><para>Paso 1: Agregar el repositorio al directorio source.list.d, para ello se abre una terminal y se ingresa   </para></listitem></itemizedlist><screen><![CDATA[sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa]]></screen><itemizedlist><listitem><para>Paso 2: Se actualiza el repositorio ingresando </para></listitem></itemizedlist><screen><![CDATA[sudo apt-get update]]></screen><itemizedlist><listitem><para>Paso 3: Se instala el &quot;toolchain&quot; escribiendo </para></listitem></itemizedlist><screen><![CDATA[sudo apt-get install gcc-arm-embedded]]></screen><section><title>Instalación del depurador</title><para>La aplicación para depurar un proyecto es el GDB, herramienta utilizada en cualquier proyecto GNU, pero en este caso compilado para depurar código ARM. </para><para>Si bien el depurador está preparado para depurar programas en ARM, el problema es que este programa debe correr primero en una arquitectura ARM, para esto tenemos dos soluciones: </para><itemizedlist><listitem><para>Simulación: un núcleo ARM es simulado por el propio GDB y allí corre nuestra aplicación. </para></listitem><listitem><para>La aplicación corre en un hardware (una placa externa) y se depura por una conexión remota (In-Circuit Debugging)  </para></listitem></itemizedlist><para>Para los ejemplos y primeras pruebas en ensamblador utilizaremos la primera solución, el problema es que por ser utilizada con fines académico no está disponible en las últimas versiones del GDB para ARM, deberemos entonces usar una versión anterior cuando se quiera usar esta característica </para><itemizedlist><listitem><para>Bajar versión anterior de GDB (64bits) </para></listitem></itemizedlist><para><ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/HerramientasProgramacion/HLaunchpad/TecnicasDigitalesII/WebHome/HerramientasProgramacion/HLaunchpad?action=AttachFile&amp;do=get&amp;target=arm-old-gdb">arm-old-gdb</ulink> </para><itemizedlist><listitem><para>Copiar este archivo al directorio donde se instaló el GNU ARM (/usr/bin) </para></listitem></itemizedlist><para>Posicionado sobre el directorio donde bajamos el archivo hacemos  </para><screen><![CDATA[sudo cp arm-old-gdb /usr/bin]]></screen><itemizedlist><listitem><para>Dar permisos de ejecución al achivo copiado </para></listitem></itemizedlist><screen><![CDATA[sudo chmod +x /usr/bin/arm-old-gdb]]></screen><para>Una vez instalado el paquete, se tendrá todas las herramientas GNU para ARM identificadas con el prefijo <emphasis role="strong">arm-none-eabi-</emphasis> y el depurador <emphasis role="strong">arm-old-gdb</emphasis> solo para el caso de necesitar el simulador  </para></section></section><section><title>DEBUG</title><para>Para realizar un debug se procede de la siguiente manera </para><para>Se debe ejecutar  </para><screen><![CDATA[arm-old-gdb --tui]]></screen><para>luego dentro de este programa se escribe </para><screen><![CDATA[target sim
load {archivo .elf a depurar}
file
list]]></screen><para>Aparecerá en una ventana el fuente a depurar, escribiendo  <code> break nn</code>  se hace un break point (nn es el numero de linea que te aparece al costado izquierdo del archivo fuente) un tutorial de la herramienta se puede ver en  </para><itemizedlist><listitem override="none"><para><ulink url="http://sourceware.org/gdb/onlinedocs/gdb/TUI.html"/> </para></listitem></itemizedlist></section></article>