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 */ { \. |
|
ADSP-21062L booting problems.
Started by ●June 3, 1999
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 ●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. |