Reply by Kenneth Porter July 22, 20022002-07-22
On Fri, 2002-07-19 at 12:09, wrote:

> Unfortunately booting from flash does not work. I've detected that
> after deasserting SHARC's reset high, BMS pin goes low only for 1536
> 8bit read cycles what is exactly 256 instructions of boot loader (last
> address form SHARC 0x5FF). After that BMS goes high and nothing else
> happens. It seems like loader does not load the rest of FLASH where is
> my own program ?!

When I've had booting problems, I just load the boot loader using the
JTAG debugger and step through it to see what goes wrong. Build the boot
loader with debugging information so you can step through it. Note that
you won't be able to step over DMA cycles, but you can set a breakpoint
at the ISR so you stop after a DMA completes.


Reply by July 22, 20022002-07-22


Hi,

Is your flash 8-bit wide or 16-bit wide?

Have you linked in the 060_prom.dxe boot loader for your project?

If your flash is 16-bits wide then you'll have to modify the prom loader to work
with 16-bit wide flash.
This e-mail may contain SEL confidential information. The opinions expressed
are not necessarily those of SEL. Any unauthorized disclosure, distribution or
other use is prohibited. If you received this e-mail in error, please notify
the sender, permanently delete it, and destroy any printout. Thank you.


Reply by June 3, 19991999-06-03
Hi,
I am in big troubles. I am in final stage of my DSP project (board developing
and testing). I have single SHARC on board. It is configured to boot from
external Flash device. I've created .ldr binary file file with linked boot
loader. When I am loading SHARC's memory via JTAG emualtor everything seems to
be OK. My application runs properly. Unfortunately booting from flash does not
work. I've detected that after deasserting SHARC's reset high, BMS pin goes low
only for 1536 8bit read cycles what is exactly 256 instructions of boot loader
(last address form SHARC 0x5FF). After that BMS goes high and nothing else
happens. It seems like loader does not load the rest of FLASH where is my own
program ?! Below You will find listings of batch files for G21K,
LDR21K,architecture file and listing of my program (without body inside infinite
loop).
mapa.ch
========
SYSTEM SHARC_System_for_MAP
PROCESSOR = ADSP21062;
SEGMENT/RAM/BEGIN=0x00020000 /END=0x000200ff /PM/WIDTHH seg_rth;
SEGMENT/RAM/BEGIN=0x00020100 /END=0x000201ff /PM/WIDTHH seg_init;
SEGMENT/RAM/BEGIN=0x00020200 /END=0x000247ff /PM/WIDTHH seg_pmco;
SEGMENT/RAM/BEGIN=0x00028000 /END=0x0002883f /DM/WIDTH2 seg_dmda;
SEGMENT/RAM/BEGIN=0x00028840 /END=0x00029eff /DM/WIDTH2 seg_stak;
SEGMENT/RAM/BEGIN=0x00029f00 /END=0x0002ffff /DM/WIDTH2 /cheap seg_heap;
SEGMENT/RAM/BEGIN=0x00400000 /END=0x0041ffff /DM/WIDTH2 extA;
SEGMENT/RAM/BEGIN=0x00420000 /END=0x0043ffff /DM/WIDTH2 extH;
SEGMENT/RAM/BEGIN=0x00440000 /END=0x0047ffff /DM/WIDTH2 seg_extR;
ENDSYS;
======================
mapa.C
========
#include <21060.h>
#include <def21060.h>
#include <signal.h>
#include <string.h>
#include <macros.h>
#include <float.h>
#define SetIOP(addr, val) (* (volatile unsigned *) (addr)) = (val)
#define GetIOP(addr) (* (volatile unsigned *) (addr))
int READ_A(int adres);
int WRITE_A(int adres,int data);
float READ_H(int adres);
float WRITE_H(int adres,float data);
void IRQ0_isr(int interrupt_number); /* prototypes are very important */
volatile int MAPA[131072] segment(extA); // External MAP Memory segment
volatile int MAPH[131072] segment(extH); // External MAP Memory segment
volatile int REG[12] segment(seg_extR); // External Registers
file://************************* MAIN *************************//
file://********************************************************//
void main(void)
{
SetIOP(SYSCON,0x00005000); // External Memory Banks set to 256kB x32
set_flag(SET_FLAG1, CLR_FLAG); /* turn off led 1 */
for(;;) /* infinite loop */
{
\.