我这有个基于CodeWarrior的例子,希望对你有所帮助:
typedef void (*CallaFun)(void);
unsigned char FunInRam[10];
void TestFunction(void){
asm NOP;
asm NOP;
}
void CopyToRam(void){
char i=8;
char *Ps, *Pd;
Ps = (char *)&TestFunction;
Pd = (char *)&FunInRam;
do{
*Pd++ = *Ps++;
} while(--i);
}
void main(void) {
CopyToRam(); /*Copy code to RAM*/
((CallaFun)&FunInRam)(); /* Call code in RAM */
for(;;) {
} /* loop forever */
}
|