Newsgroup: it.hobby.elettronica.digitale
Titolo: Tutorial toolchain Cortex-M3 su Linux (ubuntu)

Buongiorno a tutti. 
Sto provando a mettere in piedi tutto il necessario per lavorare sui
micro luminary nel mondo linux. In rete c'e' molto ma frammentato e non
omogeneo; da qui l'idea di postare una guida con tutti i passi per
arrivare a compilare la fatidica applicazione "Hello World!" :-)
Fin'ora funziona tutto fino alla sezione di configurazione di eclipse,
punto 4) ecluso.
Posto qui in formato plain text il tutorial, sperando che possa essere
d'aiuto a qualcuno e che qualcuno possa aiutarmi a proseguire laddove mi
sono arenato.
#!/bin/cat
#
#############################################################################
# 
# ISTRUZIONI DI INSTALLAZIONE DELLE TOOLCHAIN PER CORTEX-M3 
#
# 	Linux version 2.6.24-23-generic (buildd@vernadsky)
# 	(gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #1
# 	SMP Mon Jan 26 00:13:11 UTC 2009
#
#############################################################################
#
-----------------------------------------------------------------------------
#	DRIVER FT2DXX per USB (jtag e seriale)
#
-----------------------------------------------------------------------------
1.	Scaricare i driver D2XX dal sito 
www.ftdichip.com
:
		wget 
http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16.tar.gz
2.	Decomprimere il contenuto con il comando: 
		tar -xvf libftd2xx0.4.16.tar
3.	As root user copy the following files to /usr/local/lib
		cp libftd2xx.so.0.4.12 /usr/local/lib
		cp ftd2xx.cfg /usr/local/lib/
		cp ftd2xx.h WinTypes.h /usr/include
4.	Change directory to /usr/local/lib
		cd /usr/local/lib
5.	make symbolic links to these files using the following commands:
		ln -s libftd2xx.so.0.4.12 libftd2xx.so
6.	Change directory to /usr/lib
		cd /usr/lib
7.	make symbolic links to these files using the following commands:
		ln -s /usr/local/lib/libftd2xx.so libftd2xx.so
8.	Add the following line to /etc/fstab:
		none /proc/bus/usb usbfs defaults,devmode=0666 0 0
	oppure
		none /proc/bus/usb usbfs defaults,mode=0666 0 0 (use usbfs in 2.6 kernels)
9.	Esegui ldconfig per ricaricare i driver
		ldconfig
10.	Remount all in the fstab file
		mount -a
	in caso di errori, verificare i messaggi di log tramite il comando
		dmesg | tail
#
-----------------------------------------------------------------------------
#	OPENOCD per la connessione telnet tramite jtag verso GDB
#	basato su: 
#	
http://openhardware.net/Embedded_ARM/OpenOCD_JTAG/
#	
#
-----------------------------------------------------------------------------
1.	Scaricare i sorgenti dal sito 
 
http://openocd.berlios.de/web/
	la versione al 24/02/2009 e' la 0.1.0 prelevabile con questo comando:
		wget 
http://prdownload.berlios.de/openocd/openocd-0.1.0.tar.gz
2.	Decomprimere il pacchetto ed entrare nella cartella creata 
		tar -xvf openocd-0.1.0.tar.gz
		cd openocd-0.1.0/
3.	Configurare, compilare ed installare [come root]:
		./configure --enable-ft2232_ftd2xx
		make
		make install
	verra' installato il tutto dentro alla cartella /usr/local/lib/openocd/
	nota: fare in modo che il percorso assoluto della cartella contenente i
sorgenti
	non comprenda degli spazi, altrimenti il file di configurazione creato
con il comando
	./configure non funziona, ed il make install fallisce.
4.	Creare il file di configurazione. Si ottiene fondendo assieme il
contenuto di due file: 
	il primo definisce il tipo di interfaccia (jtag, usb, ecc...), il
secondo la cpu di 
	destinazione (luminary, lpc, atmel, ecc...). Il comando seguente e'
riferito alla cpu
	Luminary LM3S1968:
		cp /usr/local/lib/openocd/target/lm3s6965.cfg `pwd`/lm3s1968.cfg
		cp /usr/local/lib/openocd/interface/luminary-libftdi.cfg `pwd`/libftdi.cfg
		cat lm3s1968.cfg libftdi.cfg openocd.cfg
		rm lm3s1968.cfg libftdi.cfg
5.	Aggiungere openocd nella lista dei comandi che non richiedono
l'immissione della 
	password di root per guadagnare i diritti di root:
		a. editare il file /etc/sudoers tramite il comando
			sudo visudo
		b. aggiungere alla fine del file la riga seguente:
			[nome_utente] ALL=(ALL) NOPASSWD: /usr/local/bin/openocd
6.	Creare lo script di avvio di openocd:
		gedit launch_openocd
	aggiungendo al suo interno queste righe:
		#!/bin/bash
		echo "Avvio di OpenOCD con privilegi di ROOT"
		sudo openocd $*	
	Salvare e modificare i permessi per renderlo eseguibile:
		chmod +x launch_openocd
5.	Per verificare il funzionamento corretto, connettere il target alla
porta usb e lanciare 
	il comando
		./launch_openocd
	Da un altro terminale lanciare una sessione telnet [come root]:
		telnet localhost 4444
	dovrebbe comparire un messaggio di questo tipo:
		Trying 127.0.0.1...
		Connected to localhost.
		Escape character is '^]'.
		Open On-Chip Debugger
		> 
#
-----------------------------------------------------------------------------
#	Installazione del COMPILATORE 
#	
#
-----------------------------------------------------------------------------
1.	Scaricare i tool gcc per cortex-m3 dal sito Codesourcery:	
		wget
http://www.codesourcery.com/sgpp/lite/arm/portal/package3686/public/arm-none-eabi/arm-2008q3-66-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
2.	Decomprimere
		tar -xjvf arm-2008q3-66-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
3.	Spostare la cartella arm-2008q3 nella posizione di destinazione, ad 
	esempio dentro ~/codesourcery, e creare un link alla versione corrente:
		mkdir ~/codesourcery		
		mv arm-2008q3 ~/codesourcery/
		ln -s ~/codesourcery/arm2008-q3 ~/codesourcery/toolchain 
4.	Aggiungere al file ~/.bashrc il contenuto del seguente file:
		# Percorso alla toolchain CODESOURCERY per lo sviluppo di		
		# software per ARM CORTEX-M3
		if [ -d ~/codesourcery/toolchain ]; then
			export PATH=~/codesourcery/toolchain/bin:$PATH
		fi		
5.	Chiudere la console e riaprirla. Verificare che funzioni il tutto
	digitando:
		arm-none-eabi-g++ -v
	L'output deve comprendere questa stringa:
		gcc version 4.3.2 (Sourcery G++ Lite 2008q3-66)	
#
-----------------------------------------------------------------------------
#	Installazione e configurazione di ECLIPSE
#	
#
-----------------------------------------------------------------------------
1.	Ottenere dal sito 
www.eclipse.org
 il pacchetto ECLIPSE FRAMEWORK FOR C++
	decompattarlo e posizionare la cartella contenente i binari sulla 
	posizione di destinazione, ad esempio ~/eclipse/:
		tar -xvf eclipse-cpp-ganymede-SR1-linux-gtk.tar.gz
		mv eclipse ~/
2.	Creare una cartella workspace di lavoro. Servira' per contenere le 
	librerie e tutti i file di configurazione.
		mkdir ~/{luminary,luminary/workspace}
	Avviare eclipse e selezionare la cartella ~/luminary/workspace 
	alla richiesta di un percorso di lavoro.	
3.	Integrazione del server OpenOCD:
		a. copiare il file openocd.cfg creato al punto 4. dentro alla
		  cartella ~/luminary/workspace/ .	
		b. copiare il launcher creato al punto 6.
		c. selezionare "Run->External Tools->External Tools Configuration"
		d. aggiungere una nuova voce all'elenco con queste impostazioni:
			- name --> open_ocd
			- location --> ${workspace_loc}
			- working dir --> ${workspace_loc}/
		d. sul tab 'build' deselezionare la voce 'build before launch' 
4.	Configurazione dei tool di debug [NON FUNZIONANTE]
	basata su: 
http://www.freertos.org/Eclipse.html#remote
	* From the 'Help' menu, select 'Software Updates', then 'Find and Install'
	* Attivare il tab 'Available software' e cliccare sul pulsante 'Add site'
	* 
 

 sono arenato.
Ottimo lavoro!
Ma sei sicuro che sia necessario ricompilarsi anche la libftdi e 
l'openocd?
Ci ho lavorato mesi fa ma mi sembrava di ricordare che andassero bene 
quelli fornita di default con la Intrepid.
In ogni caso, se hai bisogno di uno spazio online dove pubblicarlo ti 
posso offrire tutte le pagine che vuoi.
Fammi sapere,
Ciao!
-- 
  _|/ Francesco Sacchi - Develer S.r.l., R&D dept.
   |\ 
http://www.develer.com/
 - 
http://www.bertos.org

 posso offrire tutte le pagine che vuoi.
Grazie, appena ho finito (ci sto lavorando adesso) magari posto un
aggiornamento sul ng e se vuoi puoi pubblicarlo sul tuo sito.