|
static void vSwap_Flashes (void)
{
UINT32 ui32a;
UINT32 ui32b;
ui32a = GLOB_prImp->br0;
ui32b = GLOB_prImp->br1;
GLOB_prImp->br0 = ui32b;
GLOB_prImp->br1 = ui32a;
ui32a = GLOB_prImp->or0;
ui32b = GLOB_prImp->or1;
GLOB_prImp->or0 = ui32b;
GLOB_prImp->or1 = ui32a;
}
#define LENGTH_OF_vSwap_Flashes 0x80
/**********************************************************/
void vHW_SwapFlashes (void)
{
UINT8 ui8Buffer[LENGTH_OF_vSwap_Flashes];
memcpy(ui8Buffer, vSwap_Flashes, LENGTH_OF_vSwap_Flashes);
(*(void (*)(void))ui8Buffer)();
}
这个函数的目的是调整片选的基地址,
但 memcpy(ui8Buffer, vSwap_Flashes, LENGTH_OF_vSwap_Flashes);
(*(void (*)(void))ui8Buffer)();
这种程序写法不是很明白,为什么这样写?而不是直接调用vSwap_Flashes()?请高手解答,谢谢
GLOB_prImp是指向寄存器的。
|
|