ESERCITAZIONE 8 - Ordinamento (18/05/16)
Ordinare gli elementi presenti in un vettore definito in ram
PROCEDIMENTO / SPECIFICHE INIZIALI
- riservare uno spazio di memoria da utilizzare per un vettore chiamato data
- ordinare in ordine crescente gli elementi presenti nel vettore, utilizzando un algoritmo scelto a piacere
- esempio di direttive da usare
.textDATA_RAW_BASE .field DATA_RAW, 32 ;INDIRIZZO DI DATA_RAW
DATA_VALID_BASE .field DATA_VALID, 32 ;INDIRIZZO DI DATA_VALID
MEDIA_ADR .field MEDIA, 32 ;INDIRIZZO DI MEDIA
COEFF .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
COEFF_BASE .field COEFF, 32 ;INDIRIZZO DI COEFF
RIFERIMENTI / LINK
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 7 - Operazioni sui vettori (30/03/16)
OBIETTIVI
- Definizione di aree da allocare per vettori
- Uso dell'indirizzamento indiretto e indicizzato nell'elaborazione di vettori
- Uso dell'indirizzamento indiretto e indicizzato nell'elaborazione di vettori
PROCEDIMENTO / SPECIFICHE INIZIALI
- allocare un vettore di costanti in rom
- riservare due spazi di memoria da utilizzare per due vettori chiamati data_raw e data_valid
- inizializzare il vettore data_raw con la funzione di fibonacci. fibo[i]=fibo[i-1]+fibo[i-2]
- il vettore data_valid conterrà i seguenti valori: dat_valid[i]=data_raw[i]*coeff[i]
- calcolare la media dei valori presenti in data_valid e salvarla nella cella di memoria Media
RIFERIMENTI / LINK
- slide del corso
RIFERIMENTI / LINK
- slide del corso
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 5 - Istruzioni di spostamenti dati (16/02/16)
Esercizi sull'utilizzo delle istruzioni LDR, STR, MOV e ADD.
OBIETTIVI
- familiarizzare con l'IDE CCS (Code Composer Studio)
- comprendere l'utilizzo delle istruzioni di spostamento dati
PROCEDIMENTO / SPECIFICHE INIZIALI
- Creare il workspace (D:\Lavori\2015-16\4G\CCS_WS)
- Creare il workspace (D:\Lavori\2015-16\4G\CCS_WS)
- Creare un nuovo progetto (New CCS Project)
.Target -> TM4C123GH6PM
.Connection -> Stellaris In-Circuit Debug Interface
.Project name -> SpostamentoDati_v10
- aggiungere al progetto il file main.s presentato durante la lezione in classe utilizzando il template che trovate in fondo al post precedentemente menzionato
- impostare l'entry point del programma
. proprità del progetto -> build -> ARM linker -> Advanced options -> Symbol management ->
-> Specify program entry -> inserire il nome della Label da cui far iniziare l'esecuzione (es. main)
- eseguire il debug del codice scritto verificando come viene modificato il contenuto dei registri e della memoria istruzione per istruzione
;caricamento di numeri immediati a 16 bit in esadecimale o ottale
;R0=0xF ;hex number
;R0=0xF0 ;hex number
;R0=0xF00 ;hex number
;R0=0xF010 ;hex number
;R0=10 ;octal number =0x8
;R0=101 ;octal number =0x41
;FRAMMENTO_CODICE
;caricamento di un numero immediato a 32 bit
;utilizzando le istruzioni MOV e MOVT
;R0=0xABB1FEDE
;FRAMMENTO_CODICE
;eseguire la somma di due dati immediati a 16 bit,
;usando le istruzioni MOV e ADD.
;Tradurre il seguente pseudo codice:
;R0=0x1
;R1=0xFF
;R0+=R1
;FRAMMENTO_CODICE
;eseguire la somma di due dati immediati a 32 bit,
;usando le istruzioni MOV, MOVT e ADD.
;Tradurre il seguente pseudo codice:
;R0=0x12AA34BB
;R1=0x11020301
;R0=R0+R1
;FRAMMENTO_CODICE
;Usare R0 come puntatore alla memoria e inizializzarlo con 0x20000000, istr. MOV e MOVT
;Usare R1 come puntatore alla memoria e inizializzarlo con 0x20000004, istr. MOV e MOVT
;Usare R2 come puntatore alla memoria e inizializzarlo con 0x20000008, istr. MOV e MOVT
;tramite il memory browser di CCS caricare all'indirizzo 0x20000004 il numero 12341234
;tramite il memory browser di CCS caricare all'indirizzo 0x20000008 il numero 43214321
;Caricare in R4 il valore della cella di memoria puntata da R1, istr. LDR
;Caricare in R5 il valore della cella di memoria puntata da R2, istr. LDR
;Calcolare la somma di R4 e R5 e scrivere il risultato nella cella di memoria
; puntata da R0, istr. ADD e STR
;tramite il memory browser di CCS verificare che all'indirizzo 0x20000000 sia stato
; caricato correttamente il risultato della somma tra R4 e R4
;R0=0x20000000
;R1=0x20000004
;R2=0x20000008
;tramite il memory browser di CCS caricare all'indirizzo 0x20000004 il numero 12341234
;tramite il memory browser di CCS caricare all'indirizzo 0x20000008 il numero 43214321
;(R1)->R4
;(R2)->R5
;R3=R4+R5
;R3->(R0)
;tramite il memory browser di CCS verificare che all'indirizzo 0x20000000 sia stato
; caricato correttamente il risultato della somma tra R4 e R4
- FRAMMENTO DI CODICE 1: eseguire la somma di due dati immediati a 16 bit, usando le istruzioni MOV e ADD. Tradurre il seguente pseudo codice:
R0=0x1
R1=0xFF
R0+=R1
- FRAMMENTO DI CODICE 2: eseguire la somma di due dati immediati a 32 bit, usando le istruzioni MOV, MOVT e ADD. Tradurre il seguente pseudo codice:
R0=0x12AA34BB
R1=0x11020301
R0=R0+R1
- FRAMMENTO DI CODICE 3: eseguire la somma di due dati immediati a 32 bit, usando le istruzioni LDR, STR e ADD. Tradurre il seguente pseudo codice:
RIFERIMENTI / LINK
- slide del corso
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 4 - LedBlink (13/01/16)
Scrittura e verifica di un semplice programma in assembler.
OBIETTIVI
- familiarizzare con l'IDE CCS (Code Composer Studio)
- elementi di programma assembler
PROCEDIMENTO / SPECIFICHE INIZIALI
- Creare il workspace (D:\Lavori\2015-16\4G\CCS_WS)
- Creare il workspace (D:\Lavori\2015-16\4G\CCS_WS)
- Creare un nuovo progetto (New CCS Project)
.Target -> TM4C123GH6PM
.Connection -> Stellaris In-Circuit Debug Interface
.Project name -> LedBlink_v10
.Empty Assembly-only Project
- aggiungere al progetto il file main.s presentato durante la lezione in classe
- impostare l'entry point del programma
. proprità del progetto -> build -> ARM linker -> Advanced options -> Symbol management ->
-> Specify program entry -> inserire il nome della Label da cui far iniziare l'esecuzione (es. main)
- eseguire il debug del codice scritto verificando come viene modificato il contenuto dei registri e della memoria istruzione per istruzione
RIFERIMENTI / LINK
- slide del corso
- [PDF] ARM Optimizing C/C++ Compiler v5.2- Code Composer Studio (CCS) Integrated Development Environment (IDE)
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 3 - L'IDE Code Composer Studio (09/12/15)
Installazione IDE e driver
Scrittura e verifica di un semplice programma in assembler.
OBIETTIVI
- Installare l'IDE ed i driver della scheda
- familiarizzare con l'IDE CCS (Code Composer Studio)
- elementi di programma assembler
PROCEDIMENTO / SPECIFICHE INIZIALI
- Scaricare ed installare code composer studio
- Creare un nuovo progetto
- aggiungere al progetto il file .s presentato durante la lezione in classe
- eseguire il debug del codice scritto verificando come viene modificato il contenuto dei registri e della memoria istruzione per istruzione
RIFERIMENTI / LINK
- slide del corso
- Code Composer Studio (CCS) Integrated Development Environment (IDE)
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 2 - Sonar ad Ultrasuoni
(23/09/15 - Definizione specifiche del progetto)
- Realizzare gli schemi dettagliati del progetto complessivo e di eventuali blocchi composti (ci dovrà essere corrispondenza perfetta tra gli schemi e le dichiarazione delle entity in vhdl)
- determinare tutti gli stati
-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 1 - Moltiplicatore a 4bit
Progetto di un coprocessore per il calcolo della moltiplicazione.
(16/09/15 - Definizione specifiche del progetto)
OBIETTIVI / ARGOMENTI TRATTATI
- Ripasso della sintassi del linguaggio VHDL
PROCEDIMENTO / SPECIFICHE INIZIALI
- Consegnare la relazione tecnica
-------------------------------------------------------------------------------------------------------------
Progetto di un coprocessore per il calcolo della moltiplicazione.
(16/09/15 - Definizione specifiche del progetto)
OBIETTIVI / ARGOMENTI TRATTATI
- Ripasso della sintassi del linguaggio VHDL
- Consegnare la relazione tecnica
- Realizzare gli schemi dettagliati del progetto complessivo e di eventuali blocchi composti (ci dovrà essere corrispondenza perfetta tra gli schemi e le dichiarazione delle entity in vhdl)
GRIGLIA DI VALUTAZIONE FASE1:
[2 punti] - relazione: premesse teoriche/specifiche
[2 punti] - relazione: diagramma
[4 punti] - implementazione
[1 punto] - convenzioni di scrittura codice
[1 punto] - relazione: collaudo
-------------------------------------------------------------------------------------------------------------
Versione iniziale del 09/12/15
Revisione del 16/02/16
Revisione del 16/02/16
Nessun commento:
Posta un commento