This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28335 illegal isr problem

hi

i am so urgent. please help me.

i am using dsp 28335.

i am planning to use flash sector A, flash sector c.

Application project is stored in the FLASH sector A .

uploader project is stored in th falsh sector c.

 

when application project jump to the uploader project, i encoutered illegla_ISR.

Follwoing is the code to jump FLASH sector C(c_int00 of flash sector c)

 

switch(Decode_cmd)
       {
         case MSG_ID_UPLOAD_READY:
         {
          DELAY_US(500000);
          Decode_cmd = 0;
          ack_plus(0x87);
          break;
         }

         case MSG_ID_UPLOADING:
            {
             if(finished_storing_image_in_fpga == 0)
             {
              write_512byte_to_flash();
             }
             else
             {
              Program_IMG_flash();
              Decode_cmd = 0;
             }
          DELAY_US(400000);
             break;
            }

         case mission_mode:
         {
          Decode_cmd = 0;
          DINT;
          IER = 0x0000;
          IFR = 0x0000;
          DisableDog();
          asm(" LB 0x0032894D");
          break;
         }

 

0x0032894D is the c_int00 of flash sector c

Following is the uploader project(flash sector c) map file

BOOT LOADER PARAMETERS
   Table Address:   0x00328000, PAGE 0
   Entry Point:    0x0032894d  (_c_int00)


OUTPUT TRANSLATION MAP
--------------------------------------------------------------------------------
00328000..0032bfff  Page=0  Memory Width=16  ROM Width=16  "FLASHC"
--------------------------------------------------------------------------------
   OUTPUT FILES: .\upload_final.hex [b0..b15]

   CONTENTS: 00328000..00329254   BOOT TABLE
                           .cinit : dest=00329136  size=0000007b  width=00000002
                            .text : dest=00328000  size=00000ab7  width=00000002
                        codestart : dest=0032be01  size=00000002  width=00000002
                         ramfuncs : dest=00328ab7  size=0000001f  width=00000002
                       csmpasswds : dest=0033fff8  size=00000008  width=00000002
                         csm_rsvd : dest=0033ff80  size=00000076  width=00000002
                          .econst : dest=00329036  size=00000100  width=00000002
                      Flash28_API : dest=00328ad6  size=00000560  width=00000002
             00329255..0032bfff   FILL = 0000ffff

follwoing is the hex.cmd file for making hex file of  Flash sector c

UPLOAD.out    /* input COFF file */
--map UPLOAD.map   /* create a hex map file */
-a              /* create ASCII image */
--image             /* Create a memory image (no discontinuities) */
--order=LS    /* little endian */
--zero              /* reset address origin to 0 for output file(s) */
--memwidth   16
--boot                                   /* create a boot table for all initialized sects */
--entrypoint=_c_int00

ROMS
{
  FLASHC: org = 0x328000, len = 0x4000, romwidth = 16, files = {.\upload_final.hex}, fill = 0xffff
}

 

프레젠테이션1.pptx

  • What happens if you place a breakpoint at asm(" LB 0x0032894D"); and then do one ASSEMBLY single step.  Do you end up with PC at that address?

    If you do end up at that address, look in the Disassembler window.  Is it pointing to the correct line of code (_c_int00)?

    We first have to determine if it is a code-memory mapping issue or if it is an issue with jumping to another call to _c_init00.

    Just a thought, I normally put uploader and boot-up branching in Sector A and have app in another sector.  The reason is that sector A also holds the passwords and is the destination of the reset vector.  Usually, you do not change the uploader program, so that means that sector will not be the one getting erased and rewritten.  Also, if you do not erase sector A during a firmware upload and a problem occurs in the middle of an upload, you still have sector A intact and able to retry the upload.