DSPRelated.com
Forums

How to load a program to a dsp board?

Started by streetkid October 22, 2002
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.



Hi,
Directly from Bittware:
(http://www.bittware.com/products/PCI/SPNR/spnr_desc.stm):
"Host or Standalone Operation
The 21065L processors can boot from the host computer via the PCI interface or
operate standalone with the Spinner's on-board FLASH. The Spinner's bus
mastering-capable PCI bus gives the host computer direct access to the 21065L
processors' IOP registers, allowing the host to reset and boot the processors"
Once the program is running on the bpards, you can not show the "Hello World!"
unless you do it coupled to, say, VDSP++ to show this message in the Output
Console. Or could build a fancy interface and show it on a LCD, for example. But
this is not exactly the kind of apps the DSPs are designed for. It could be lots
more rewarding to do a kind of "talktrhru" program which will make you use the
onboards audio interface, and you can test with real world signals. Furthermore,
this can be a framework for using the board for audio apps.
Have you had a look to the board and tools decomentation?
Also ask in comp.dsp (www.deja.com, for instance). Chances are high that people
directly from Bittware can give you some deeper enlighment.
Regards,
JaaC
streetkid <> wrote: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. Jaime Andr Aranguren Cardona



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/ >



Hi,
i am working on tigesharc processor TS101, i want to write SIMD but my data
is 8 bit aligned. I want to load 128 bits for SIMD, so i need unaligned load
for one byte offset. How to access unaligned data on tigersharc. There are
DAB and sDAB but those are for 32 bit and 16 bit miss alignement.

shashi