/home/$USER
).
1) Instalar paquetes adicionales:
64-bits
sudo apt-get install php7.0-cli libftdi-dev libusb-1.0-0-dev git git-gui libgtk2.0-0:i386 libxtst6:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 libglu1-mesa:i386 libncurses5:i386 libudev1:i386 libusb-1.0:i386 libusb-0.1:i386 gtk2-engines-murrine:i386 libnss3-1d:i386 libwebkitgtk-1.0-0 gtkterm
32-bits
sudo apt-get install php7.0-cli libftdi-dev libusb-1.0-0-dev git git-gui libgtk2.0-0 libxtst6 libpangox-1.0-0 libpangoxft-1.0-0 libidn11 libglu1-mesa libncurses5 libudev1 libusb-1.0 libusb-0.1 gtk2-engines-murrine libnss3-1d libwebkitgtk-1.0-0 gtkterm
Puede que en 32-bits indique que algunos paquetes ya están instalados.
2) Agregar el usuario al grupo dialout (para acceder a puertos serie con gtkterm):
sudo adduser $USER dialout
3) Crear una carpeta ciaa-ide en el home del usuario e ingresar a la misma.
mkdir ciaa-ide cd ciaa-ide
4) Descargar toolchain y descomprimir.
wget https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q1-update/+download/gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2 tar -xjvf gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2
5) Descargar, descomprimir y compilar OpenOCD:
wget http://ufpr.dl.sourceforge.net/project/openocd/openocd/0.9.0/openocd-0.9.0.tar.bz2 tar -xvjf openocd-0.9.0.tar.bz2 cd openocd-0.9.0 ./configure --enable-ftdi make
6) Clonar repositorio de Firmware:
cd $HOME/ciaa-ide/ # $HOME es la variable de entorno que apunta al directorio home del usuario, por ejemplo "/home/luis" git clone --recursive https://github.com/ciaa/Firmware.git
7) Copiar los permisos de OpenOCD en las reglas de udev y reiniciar el servicio:
sudo cp openocd-0.9.0/contrib/99-openocd.rules /etc/udev/rules.d/ sudo service udev restart
8) Conectar CIAA mediante USB DBG (si estaba conectada, desconectarla y volver a conectarla) y probar OpenOCD:
./openocd-0.9.0/src/openocd -f Firmware/modules/tools/openocd/cfg/cortexM4/lpc43xx/lpc4337/ciaa-nxp.cfg
Debería verse lo siguiente:
Open On-Chip Debugger 0.9.0 (2015-05-12-12:27) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' adapter speed: 2000 kHz none separate cortex_m reset_config vectreset Info : clock speed 2000 kHz Info : JTAG tap: lpc4337.m4 tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: lpc4337.m0 tap/device found: 0x0ba01477 (mfg: 0x23b, part: 0xba01, ver: 0x0) Info : lpc4337.m4: hardware has 6 breakpoints, 4 watchpoints Info : lpc4337.m0: hardware has 2 breakpoints, 1 watchpoints
(ctrl+c para terminar)
9) Crear Makefile.mine
:
cd Firmware cp Makefile.config Makefile.mine
10) Editar Makefile.mine indicando que compilaremos para una EDU-CIAA-NXP:
nano Makefile.mine
Reemplazar la línea
BOARD ?= ciaa_sim_ia32
por
BOARD ?= edu_ciaa_nxp
y para evitar los warnings de LPCOpen, agregar una línea debajo de la anterior con el siguiente texto:
CFLAGS += -Wno-unused-function
11) Agregar toolchain y openocd al PATH:
export PATH=$PATH:$HOME/ciaa-ide/gcc-arm-none-eabi-4_9-2015q1/bin:$HOME/ciaa-ide/openocd-0.9.0/src
12) Compilar:
make clean make generate make
Si todo anduvo bien la compilación finaliza con este mensaje:
=============================================================================== Linking file: ./out/bin/blinking.axf arm-none-eabi-gcc ./out/obj/blinking.o ./out/obj/crp.o -Xlinker --start-group ./out/lib/posix.a ./out/lib/ciaak.a ./out/lib/drivers.a ./out/lib/ext_drivers.a ./out/lib/rtos.a ./out/lib/libs.a ./out/lib/ext_base.a -Xlinker --end-group -o ./out/bin/blinking.axf -fno-builtin -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -Xlinker -Map="./out/bin/blinking.map" -nostdlib -T "externals/base/cortexM4/lpc43xx/linker/ciaa_lpc4337.ld" =============================================================================== Post Building blinking arm-none-eabi-objcopy -v -O binary ./out/bin/blinking.axf ./out/bin/blinking.bin copy from `./out/bin/blinking.axf' [elf32-littlearm] to `./out/bin/blinking.bin' [binary]
13) Ya estamos en condiciones de probar la comunicación con el hardware programando el MCU con el ejemplo blinking
:
make download
Salida de la consola:
=============================================================================== Starting OpenOCD and downloading... openocd -f ./modules/tools/openocd/cfg/cortexM4/lpc43xx/lpc4337/ciaa-nxp.cfg -c "init" -c "halt" -c "flash write_image erase unlock ./out/bin/blinking.bin 0x1A000000 bin" -c "reset run" -c "shutdown" Open On-Chip Debugger 0.9.0 (2015-02-13-09:19) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' adapter speed: 2000 kHz none separate cortex_m reset_config vectreset Info : clock speed 2000 kHz Info : JTAG tap: lpc4337.m4 tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: lpc4337.m0 tap/device found: 0x0ba01477 (mfg: 0x23b, part: 0xba01, ver: 0x0) Info : lpc4337.m4: hardware has 6 breakpoints, 4 watchpoints Info : lpc4337.m0: hardware has 2 breakpoints, 1 watchpoints target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x21000000 pc: 0x10407bf8 msp: 0x10089f60 auto erase enabled auto unlock enabled Warn : Verification will fail since checksum in image (0x00000000) to be written to flash is different from calculated vector checksum (0x53ff4386). Warn : To remove this warning modify build tools on developer PC to inject correct LPC vector checksum. wrote 327680 bytes from file ./out/bin/blinking.bin in 4.918178s (65.065 KiB/s) Info : JTAG tap: lpc4337.m4 tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: lpc4337.m0 tap/device found: 0x0ba01477 (mfg: 0x23b, part: 0xba01, ver: 0x0) Warn : Only resetting the Cortex-M core, use a reset-init event handler to reset any peripherals or configure hardware srst support. Warn : Only resetting the Cortex-M core, use a reset-init event handler to reset any peripherals or configure hardware srst support. shutdown command invoked
Presionar el pulsador de reset de la CIAA, luego debería verse un LED destellando.
1) Descargar y descomprimir Eclipse C/C++:
64-bits
eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz
desde https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/luna/SR2/eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz y moverlo a la carpeta $HOME/ciaa-ide
.cd $HOME/ciaa-ide tar -xzvf eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz
32-bits
eclipse-cpp-luna-SR2-linux-gtk.tar.gz
desde https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/luna/SR2/eclipse-cpp-luna-SR2-linux-gtk.tar.gz y moverlo a la carpeta $HOME/ciaa-ide
.cd $HOME/ciaa-ide tar -xzvf eclipse-cpp-luna-SR2-linux-gtk.tar.gz
2) Descargar y descomprimir Java Runtime Environment (JRE) para Linux:
64-bits
jre-7u79-linux-x64.tar.gz
desde http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html y moverlo a la carpeta $HOME/ciaa-ide
.cd $HOME/ciaa-ide/eclipse tar -xzvf ../jre-7u79-linux-x64.tar.gz mv jre1.7.0_79/ jre/
32-bits
jre-7u79-linux-i586.tar.gz
desde http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html y moverlo a la carpeta $HOME/ciaa-ide
.cd $HOME/ciaa-ide/eclipse tar -xzvf ../jre-7u79-linux-i586.tar.gz mv jre1.7.0_79/ jre/
3) Crear un script de inicialización del IDE:
cd $HOME/ciaa-ide nano ciaa-ide # archivo nuevo
#!/bin/sh export PATH=$PATH:$HOME/ciaa-ide/gcc-arm-none-eabi-4_9-2015q1/bin:$HOME/ciaa-ide/openocd-0.9.0/src ./eclipse/eclipse -data $HOME/ciaa-ide/workspace/ &
chmod +x ciaa-ide
./ciaa-ide
4) Instalar plug-ins GNU ARM Eclipse y eGIT.
http://gnuarmeclipse.sourceforge.net/updates (si este plug-in trae problemas, ver este enlace).
http://download.eclipse.org/egit/updates (puede que no sea necesario instalar este plug-in, ya viene instalado en las últimas versiones de Eclipse).
5) Importar Firmware en Eclipse:
$HOME/ciaa-ide/Firmware
. Click a Finish. Aparecerá un proyecto nuevo de nombre “Firmware”.6) Configurar Firmware en Eclipse:
all
.clean_generate
.BOARD
con valor edu_ciaa_nxp
. Click en Add…
, Name: BOARD
, Value: edu_ciaa_nxp
.Add…
, click en File System…
$HOME/ciaa-ide/gcc-arm-none-eabi-4_9-2015q1/arm-none-eabi/include
Ok
(esto no afecta la compilación, es para que Eclipse parsee los headers estándar y no aparezcan errores de tipos no encontrados).
7) Compilar: ctrl+B. La consola debería mostrar el mismo resultado que el paso 13:
8) Configurar debugging:
$HOME/ciaa-ide/Firmware/out/bin/blinking.axf
openocd
-f $HOME/ciaa-ide/Firmware/modules/tools/openocd/cfg/cortexM4/lpc43xx/lpc4337/ciaa-nxp.cfg
/home/luis
).
9) Disfrutar de tu CIAA-IDE
10) Opcional: Cambiar el splash screen de Eclipse por uno con el logo de la CIAA:
cd $HOME/ciaa-ide wget http://www.proyecto-ciaa.com.ar/devwiki/lib/exe/fetch.php?media=docu:fw:bm:ide:splash.bmp.tar.gz -O splash.bmp.tar.gz cd eclipse/plugins/org.eclipse.platform_4.4.2.v20150204-1700/ mv splash.bmp splash.bmp.old # guardamos splash predeterminado tar -xzvf ../../../splash.bmp.tar.gz
Aquí podrás descargar un script de shell que automatiza la descarga y configuración de las herramientas, según los pasos anteriores. Aún deberás realizar manualmente los pasos 8 a 13 de la primer sección (que corresponden a las pruebas de hardware) y 4 a 8 de la segunda (configuración dentro de Eclipse). Aviso: Este script no está totalmente probado!