Hi,
my first suggestion is to look at some easy example in the Example
folder (there is one in the directory you installed VDSP),
Second suggestion is: don't use DSP to write 'Hello wordl' on the
screen. It
is the worst use you can do.
It is more important to learn how you can load values in a registers and the
make a sum. Assembly language is the best for this.
Here are some code. Make a new project in VDSP then add the files alu.asm
and alu.ldf
Have fun
F.Z.
/*alu.asm
ADSP-21000 Family ALU Exercises*/
/*************************************************************************/
/* This section is the main execution loop. It is here that the program */
/* spends most of its time. */
/*************************************************************************/
.SEGMENT/PM isr_tabl;
nop;
nop;
nop;
nop;
nop;
jump main_3; /* choose main_1 or main_2 or main_3 */
.ENDSEG;
.SEGMENT/PM pm_code;
main:
/*Intialize data registers*/
R0;
R1;
R5=-13;
R6;
R8=-32;
R9;
R10=-12;
R111;
F13=3.5e+20;
F14=5.0e+19;
/* Conversion Fixed point floating point */
main_1:
R14 = -31;
R11 = 31;
R15 = 2560;
F2 = 2.0;
F0 = float R15 by R14;
F1 = float R15;
F0 = F0*F2;
R12 = fix F0 by R11;
R13 = fix F1;
/*Fixed point ALU operations*/
R2=R1+R0;
R3=R1-R0;
R4S R3;
/*Floating point ALU operations*/
F15+F14;
F15=MIN(F13,F14);
F12=FLOAT R9;
F12=FLOAT R9 BY R8;
F15=FLOAT R10 BY R8;
R12=FIX F12 BY R11;
idle;
/* Conversione di coefficienti in Floating point format */
main_3:
R0 = -31;
R1 = 31;
R3 = -.92128010 ;
F3 = float R3 by R0;
idle;
.ENDSEG;
/* Algoritmo per la divisione: per riferimento vedi pag B-42 del Technical
Reference Manual */
.segment/PM pm_code;
main2:
f12=8.0; /* Denominatore */
f0=7.0; /* Numeratore */
f11=2.0;
f0=recips f12, f7
f12f12;
f7f7, f0-f12;
f12f12;
f7f7, f0-f12;
f12f12;
f7f7, f0-f12;
f0f7;
.ENDSEG;
/* Alu.ldf */
// File Creato da Federico Zandanel in data 10/10/2001
// per consentire il funzionamento del programma su
// ADSP21065L
// ADSP-21065L Memory Map:
// ------------
// Internal memory 0x0000 0000 to 0x0007 ffff
// ------------
// 0x0000 0000 to 0x0000 00ff IOP Regs
// 0x0000 0100 to 0x0000 01ff IOP Regs of Processor ID
001
// 0x0000 0200 to 0x0000 02ff IOP Regs of Processor ID
002
// 0x0000 0300 to 0x0000 07ff Reserved
// Block 0 0x0000 8000 to 0x0000 9fff Normal Word (32/48)
Addresses
// (0x0000 8000 to 0x0000 97ff) 48-bit words
// (0x0000 8000 to 0x0000 9fff) 32-bit words
// 0x0000 A000 to 0x0000 Bfff Reserved
// Block 1 0x0000 C000 to 0x0000 Dfff Normal Word (32/48)
Addresses
// (0x0000 C000 to 0x0000 Cfff) 48-bit words
// (0x0000 C000 to 0x0000 Dfff) 32-bit words
// 0x0000 E000 to 0x0000 ffff Reserved
// Block 0 0x0001 0000 to 0x0001 3fff Short Word (16) Addresses
// 0x0001 4000 to 0x0001 7fff Reserved
// Block 1 0x0001 8000 to 0x0001 Bfff Short Word (16) Addresses
// 0x0001 C000 to 0x0001 ffff Reserved
// ------------
// External memory 0x0002 0000 to 0x03ff ffff
// ------------
// External Bank 0 0x0002 0000 to 0x00ff ffff
// External Bank 1 0x0100 0000 to 0x01ff ffff
// External Bank 2 0x0200 0000 to 0x02ff ffff
// External Bank 3 0x0300 0000 to 0x03ff ffff
//
// This architecture file allocates:
// Internal 256 words of run-time header in memory block 0
// 16 words of initialization code in memory block 0
// 3.73K words of C code space in memory block 0
// 2K words of C PM data space in memory block 0
// 4K words of C DM data space in memory block 1
// 1.25K words of C heap space in memory block 1
// 2.75K words of C stack space in memory block 1
ARCHITECTURE(ADSP-21065L)
SEARCH_DIR( $ADI_DSP\21k\lib )
$OBJECT1 = "Alu.doj", $COMMAND_LINE_OBJECTS;
/* see Note 3 on page 2-9 */
MEMORY
{ /* see Note 1 on page 2-8 */
codice { TYPE(PM RAM) START(0x00008004) END(0x000080ff) WIDTH(48)}
dati { TYPE(PM RAM) START(0x00008100) END(0x000081ff) WIDTH(48)}
}
PROCESSOR p0{
LINK_AGAINST ( $COMMAND_LINE_LINK_AGAINST )
OUTPUT( $COMMAND_LINE_OUTPUT_FILE )
/* see Note 4 on page 2-10 */
SECTIONS
{ /* see Note 2 on page 2-8 */
dxe_pmda{ INPUT_SECTIONS ("Alu.doj" (isr_tabl) ) }
> codice
dxe_dmda{ INPUT_SECTIONS ("Alu.doj" (pm_code) ) }
> dati
} /*End sections command for processor po */
} /* End processor command
----- Original Message -----
From: "streetkid" <>
To: <>
Sent: Tuesday, October 22, 2002 10:57 AM
Subject: [adsp] How to load a program to a dsp board?
> I have a sharc ADSP 21065L spinner PCI board,
visual dsp++ 2.0 for
> SHARC,and DSP21k-32 Toolkit release 5.11.
>
> I have written a sample c code of "Hello World",and it can show
the
> simulation result (Hello World) on the output window of visual dsp++.
>
> Now,I want to someone can tell me how to do that:
> 1. How to load the program on the DSP hardware?
> 2. How to run this program when it have loaded on the board already?
> 3. How to show the result, and where to watch the result?
>
> The problem is very sample (or foolish) for you,but it is hard for
> one that start to learn using the DSP board.
>
> Please help me.
>
> Thanks in advance,
> Jack.
>
> _____________________________________
> Note: If you do a simple "reply" with your email client, only the
author
of this message will receive your answer. You need to do a "reply
all" if
you want your answer to be distributed to the entire group.
>
> _____________________________________
> About this discussion group:
>
> To Join: Send an email to
>
> To Post: Send an email to
>
> To Leave: Send an email to
>
> Archives: http://groups.yahoo.com/group/adsp
>
> Other Groups: http://www.dsprelated.com/groups.php3
> ">http://docs.yahoo.com/info/terms/
>
|