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
| Flash Magic Forum |
|
September 09, 2010, 01:43:23 AM
|
|||
|
|||
| News: |
| Home | Help | Search | Login | Register |
|
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
In-System Programming Support / LPC9xx/LPC9xxx / Re: Uncasually Check DCCP bit in 89LPC95x device in ISP operation?
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
In-System Programming Support / LPC9xx/LPC9xxx / Uncasually Check DCCP bit in 89LPC95x device in ISP operation?
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 |
||