Proibleem siis selline et vaja flashida M29W008AB. Selleks laen proge JTAG-i kaudu mällu ja üritan sinna kirjutada, probleem aga selles et ei saa isegi ID koodi mälust kätte ainult data ilmub, yhendused kontrollitud data liigub nii nagu peab ja kõik adre otsad ka omal kohal, Prose vahetatud ja flash ka. Nüüd mõitus otsas.
Prose on LPC2210
Natuke koodi:
#define FLASH_ADR 0x80000000
void Flash_Write(unsigned long Address, unsigned char Data){
(*((volatile unsigned char *) FLASH_ADR+Address)) = Data;
}
unsigned char Flash_Read(unsigned long Address){
return (*((volatile unsigned char *) FLASH_ADR+Address));
}
void Block_Erase(unsigned char Block){
Flash_Write(0x0555,0xAA); // 1
Flash_Write(0x02AA,0x55); // 2
Flash_Write(0x0555,0x80); // 3
Flash_Write(0x0555,0xAA); // 4
Flash_Write(0x02AA,0x55); // 5
Flash_Write(Block,0x30); // 6
}
void Program_Flash (unsigned long Address, unsigned char Data){
Flash_Write(0x00000555,0xAA);
Flash_Write(0x000002AA,0x55);
Flash_Write(0x00000555,0xA0);
Flash_Write(Address,Data);
}
unsigned char Read_Flash_Signature (void){
Flash_Write(0x00000555,0xAA);
Flash_Write(0x000002AA,0x55);
Flash_Write(0x00000555,0x90);
return Flash_Read(0);
}
Prose on LPC2210
Natuke koodi:
#define FLASH_ADR 0x80000000
void Flash_Write(unsigned long Address, unsigned char Data){
(*((volatile unsigned char *) FLASH_ADR+Address)) = Data;
}
unsigned char Flash_Read(unsigned long Address){
return (*((volatile unsigned char *) FLASH_ADR+Address));
}
void Block_Erase(unsigned char Block){
Flash_Write(0x0555,0xAA); // 1
Flash_Write(0x02AA,0x55); // 2
Flash_Write(0x0555,0x80); // 3
Flash_Write(0x0555,0xAA); // 4
Flash_Write(0x02AA,0x55); // 5
Flash_Write(Block,0x30); // 6
}
void Program_Flash (unsigned long Address, unsigned char Data){
Flash_Write(0x00000555,0xAA);
Flash_Write(0x000002AA,0x55);
Flash_Write(0x00000555,0xA0);
Flash_Write(Address,Data);
}
unsigned char Read_Flash_Signature (void){
Flash_Write(0x00000555,0xAA);
Flash_Write(0x000002AA,0x55);
Flash_Write(0x00000555,0x90);
return Flash_Read(0);
}
Comment