Flash Magic Forum
September 09, 2010, 01:43:23 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1] 2 3 ... 10
 1 
 on: September 08, 2010, 11:54:15 PM 
Started by Valenti - Last post by Andy Ayre
Flash Magic has no control over what the bootloader returns to it.

However, assuming there is a problem erase and program errors can be detected by using the CRC feature in the LPC9xx to make sure what you programmed matches your hex file.

Andy

 2 
 on: September 08, 2010, 01:00:48 PM 
Started by Valenti - Last post by Valenti
Hi,

I have seen in ISP code (LPC_ISP_8K_V04.a51) than after calling an IAP function (from bootrom) checks the F0 flag to indicate whether an error has occurred. But the user manual of the 89LPC932A1 (UM10109) specifies the Cy flag to indicate an error when using IAP. To be sure of that, I have read and disassembled the bootrom code and I can confirm that Cy is the flag used. So, due this bug, does this mean that FlashMagic has no control of whether is an erase/program error occurs?

Best Regards,

Valenti

PD: I found another bug in bootrom code. The "Progam User Code Page" can use IDATA (F1=0) or XDATA (F1=1), but after program only checks with IDATA. So, if you use XDATA, even with a succesful programming, always you get a verify error (VE). But this does not affect the ISP as this only uses memory IDATA.

 3 
 on: September 01, 2010, 09:32:17 PM 
Started by TomP - Last post by TomP
I did and just as I was starting to compare the working waveforms to the non-working, they started working!
Disconnected the scope & it still works!?!

I'm guessing that somehow in testing all of the options (T1, T2, times for instance) that some of the settings didn't get returned to their proper state.

All is well now. Thanks.

tom

 4 
 on: September 01, 2010, 05:08:29 PM 
Started by TomP - Last post by Andy Ayre
We have tested Flash Magic with Windows 7 64-bit and haven't seen any problems ourselves. If you are dependent on DTR and RTS then I recommend you put a scope on those signals to see how they are behaving.

Andy

 5 
 on: August 31, 2010, 02:12:45 PM 
Started by TomP - Last post by TomP
Update: tried to fix this by changing the Compatibility Mode to "Run this program in compatibility mode for: Windows XP (Service Pack 2)".
Did not work.

tom

 6 
 on: August 30, 2010, 08:21:34 PM 
Started by TomP - Last post by TomP
We have an in-house designed programming board that uses RTS & DTR to ISP several of our products that use the 89LPC932A1. There's been no issues with it until recently. I just "upgraded" to a new PC that has Vista-64 versus the old PC that ran XP Pro. The problem is, now FM doesn't work with the on-board serial port, or the add-in serial card (Rosewill RC-301)! It gives the dreaded "autobaud" failure message.

I can take the programming board connected to the product board over to the old PC and check the Device Signature as a quick test, with no problem. I've scoped everything out on the new PC and it looks like there is some strange timing issues between RTS & DTR, irrespective of which port I try. I did download and install the latest driver for the Rosewill card, but to no avail. I have the latest FM: 5.69.2060.

So has ANYBODY programmed an LPC9xx part using the RTS/DTR method under Vista or Win 7? (We tried it on the IT guy's PC with Win 7 and if failed there too).

Note: I have programmed an LPC1114 with the same new PC and FM with no problems, but of course, this does not use the same interface as an LPC9xx.

Thanks.
tom

 7 
 on: August 18, 2010, 08:31:27 PM 
Started by FrankWu - Last post by Andy Ayre
To clear the DCCP bit you need to use either ICP or parallel programming. You can't do it with ISP.

The NXP ICP bridge is a microcontroller running firmware that converts from RS232-based ISP commands to low level ICP signals.

Andy

 8 
 on: August 18, 2010, 11:06:26 AM 
Started by FrankWu - Last post by FrankWu
Dear Sir:

How to recover it to be unckeck in ISP operation? or anyother way?
What's the meaning of "NXP ICP BRIGDE" in interface option?

Best Regards,
Frank

 9 
 on: August 15, 2010, 05:13:11 PM 
Started by dipal.singh - Last post by Andy Ayre
You shouldn't post your email address like that. Spammers automatically scan websites like this one looking for email addresses. I suggest you edit your post to remove it.

 10 
 on: August 14, 2010, 02:20:59 PM 
Started by satkumar - Last post by satkumar
 Hi,
We have problem about IAP in P89V51RD2. I have flashing the below code HEX file to P89V51RD2 chip. After reset the chip, the chip again not going to programming mode. I am not able to re-flash again. Please give me a solution. I am attaching the code here.
flash magic prompted a red message "reset the device into isp mode now"!!
#include "reg52.h"
#define uint     unsigned int
#define uchar    unsigned char
#define UINT8 unsigned char

typedef uint   WORD;
typedef uchar  BYTE;

UINT8 TestFlag;

#define SCON8B 0xd0
//#define SCON9B 0x50


sfr FCF    = 0xB1;
sfr FFS    = 0xB2;
sfr FAL    = 0xB3;
sfr FAH    = 0xB4;
sfr FDAT   = 0xB5;
sfr FST    = 0xB6;
 
/***************************************************
  name: IAP_Wait
  function: wait untill IAP operation finishing
  Input: none
  Output:none
***************************************************/
void IAP_Wait( void )
{
   while ( (FST & 0x04) != 0 );                     //check bit FST.2 1:busy 0:idle
}

/**********************************************************
name: IAP_Read(WORD addr)
  function: read the data at the flash address
  Input: flash address
  Output:data readed from flash
***********************************************************/
BYTE IAP_Read(WORD addr)
{
    BYTE c;
    FCF |= 0x40;                                  //SETB FCF.6
    FAH=addr>>8;                                  // get the higher 8 bit of the  address
    FAL=addr&0x00ff;                              //get the lower 8 bit of the  address
    FFS = 0x0C;                                   //select funtion number 3:read user code or data
    c = FDAT;                                     
    return c;                                     //rerun user code or data
}


/**********************************************************
  name: IAP_Program()
  function: program the data or code into specified flash address
  Input: flash address
  Output:status of IAP program operation 0: sucess,1:fail
***********************************************************/
bit IAP_Program(BYTE addr,BYTE dat)
{
   BYTE d;                                 

   FCF |= 0x40;                             //SETB FCF.6

    FAH=addr>>8;                                // get the higher 8 bit of the  address

    FAL=addr&0x00ff;                             //get the lower 8 bit of the  address
   FDAT = dat;
   FFS = 0x0E;                               //select IAP function number02 :program user code by byte
   IAP_Wait();                               //wait for finishing of IAP operation
   d = IAP_Read(addr);                       //verity the data or code with the byte which was programed just now
   if ( d == dat )
      return 0;
   else
      return 1;
}



/**********************************************************
  name: IAP_SectorErase( WORD sector )
  function: Erase the flash by sector
  Input: sector number  0< sector number <511
  Output:none
***********************************************************/
void IAP_SectorErase(WORD sector)
{
   WORD addr;                               
   if ( sector >= 512 ) return;
//   addr.i = sector * 128;
    addr=sector*128;
   FCF |= 0x40;                             //SETB FCF.6     
//   FAH = addr.CharPart.H;
    FAH = addr>>8;                           // get the higher 8 bit of the  address
//   FAL = addr.CharPart.L;
    FAL= addr&0x00ff;                        //get the lower 8 bit of the  address
   FFS = 0x0B;                         //select IAP function number 08:Erase user code in sector
   IAP_Wait();                        //wait for finishing of IAP operation
}



//function : send byte one time
void SendChar(unsigned char  c)
{
   SBUF = c;
   while (!TI);
   TI = 0;

}

//function: serial port intialize set buadroat at 57600
void Init_Serial(void)
{
   SCON = 0x50;//scon9b;   /*Timer 1 is being used to generate baud rates.*/
   TMOD = 0x21;   //T/C0 mode 1 timer; T/C1 mode2 timer
   TH1 = 0xFF;     //57600
   PCON = 0x80;   /* buad rate *2   */
   TR1 = 1;        /*TCON.6*/
   ES = 1;         /*IE.4      */
   IP = 0x0;
   EA=0;           // close interrupt

}



/* test the basic IAP operation of  P89V51RD2BN
   basic operation: program read erase
*/
void Function_Test( void )
{
   IAP_SectorErase(128);                       //Erase sector 128
   IAP_SectorErase(129);                     //Erase sector 129
   TestFlag=IAP_Program( 0x6000,0xaa );        // program  0xaa at 0x6000
   if( !TestFlag )
      {
         SendChar( 0xaa );                    // to notify that operation of programing ,vetifying ,reading are all correct
      }
   else
     {
         SendChar( 0xbb );                    //to notify that operation of IAP is failing
     }
}

 
 void Delayms (unsigned int itime)   //TimeDelay
   {
   unsigned int j, i;
   for (i=0;i<itime;i++)
   for (j=0;j<127;j++);

   }



void main()
{
   Init_Serial();         //   initialize the serial com
   Function_Test();       // call the function to test the basic IAP operation
   while( 1 )
   {
      //SendChar( 0xcc );
      Delayms(1000);
   }
}


Please help me anyone

Pages: [1] 2 3 ... 10
Powered by MySQL Powered by PHP Powered by SMF 1.1.10 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!