|
发表于 2011-7-11 20:15:18
|
显示全部楼层
zlg的例子里有的吧,向量表重映射到ram
void targetInit (void)
{
INT32U i, uiRegVal;
extern void *__GpvVectorTable[];
zyIrqDisable();
SYSMEMREMAP = 0x02; /* 异常向量表重映射 */
VTOR = (unsigned long)__GpvVectorTable;
SYSOSCCTRL = 0x00; /* 振荡器频率工作范围选择 */
PDRUNCFG &= ~(0x1ul << 5); /* 系统振荡器上电 */
for ( i = 0; i < 0x100; i++ ) { /* 等待振荡器稳定 */
}
SYSPLLCLKSEL = MAIN_CLKSRCSEL_VALUE; /* 选择系统振荡器OSC */
SYSPLLCLKUEN = 0x00; /* 切换时钟源 */
SYSPLLCLKUEN = 0x01; /* 更新时钟源 */
while (!(SYSPLLCLKUEN & 0x01)) { /* 等待更新完成 */
}
uiRegVal = SYSPLLCTRL;
uiRegVal &= ~0x1FF;
SYSPLLCTRL = (uiRegVal | (PLL_PVALUE << 5) | PLL_MVALUE); /* 预分频:M+1 与 2*P */
PDRUNCFG &= ~(0x01ul << 7); /* 系统MAIN PLL上电 */
while (!(SYSPLLSTAT & 0x01)){ /* 等待锁定 */
}
MAINCLKSEL = 0x03; /* 选择PLL输出 */
MAINCLKUEN = 0x01; /* 更新MCLK时钟源选择 */
MAINCLKUEN = 0x00; /* 翻转更新寄存器 */
MAINCLKUEN = 0x01;
while (!(MAINCLKUEN & 0x01)) { /* 等待更新完成 */
}
SYSAHBCLKDIV = SYS_AHB_DIV_VALUE; /* SYStem AHB时钟分频 */
SYSAHBCLKCTRL |= (1ul << 16); /* 使能AHB总线时钟 */
/* 否则无法配置ICON */
zyIrqEnable();
zyIfInit();
return;
}
void *const __GpvVectorTable[] = {
(void *)RAM_TOP,
(void *)__main,
(void *)(NMI_HANDLE),
(void *)(HARD_FAULT_HANDLE),
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
(void *)(SVCALL_HANDLE),
(void *)(DEBUG_MON_HANDLE),
NULL,
(void *)(PEND_SV_HANDLE),
(void *)(SYS_TICK_HANDLE),
(void *)IRQ_16_HANDLE,
(void *)IRQ_17_HANDLE,
(void *)IRQ_18_HANDLE,
(void *)IRQ_19_HANDLE,
(void *)IRQ_20_HANDLE,
(void *)IRQ_21_HANDLE,
(void *)IRQ_22_HANDLE,
(void *)IRQ_23_HANDLE,
(void *)IRQ_24_HANDLE,
(void *)IRQ_25_HANDLE,
(void *)IRQ_26_HANDLE,
(void *)IRQ_27_HANDLE,
(void *)IRQ_28_HANDLE,
(void *)IRQ_29_HANDLE,
(void *)IRQ_30_HANDLE,
(void *)IRQ_31_HANDLE,
(void *)IRQ_32_HANDLE,
(void *)IRQ_33_HANDLE,
(void *)IRQ_34_HANDLE,
(void *)IRQ_35_HANDLE,
(void *)IRQ_36_HANDLE,
(void *)IRQ_37_HANDLE,
(void *)IRQ_38_HANDLE,
(void *)IRQ_39_HANDLE,
(void *)IRQ_40_HANDLE,
(void *)IRQ_41_HANDLE,
(void *)IRQ_42_HANDLE,
(void *)IRQ_43_HANDLE,
(void *)IRQ_44_HANDLE,
(void *)IRQ_45_HANDLE,
(void *)IRQ_46_HANDLE,
(void *)IRQ_47_HANDLE,
(void *)IRQ_48_HANDLE,
(void *)IRQ_49_HANDLE,
(void *)IRQ_50_HANDLE,
(void *)IRQ_51_HANDLE,
(void *)IRQ_52_HANDLE,
(void *)IRQ_53_HANDLE,
(void *)IRQ_54_HANDLE,
(void *)IRQ_55_HANDLE,
(void *)IRQ_56_HANDLE,
(void *)IRQ_57_HANDLE,
(void *)IRQ_58_HANDLE,
(void *)IRQ_59_HANDLE,
(void *)IRQ_60_HANDLE,
(void *)IRQ_61_HANDLE,
(void *)IRQ_62_HANDLE,
(void *)IRQ_63_HANDLE,
(void *)IRQ_64_HANDLE,
(void *)IRQ_65_HANDLE,
(void *)IRQ_66_HANDLE,
(void *)IRQ_67_HANDLE,
(void *)IRQ_68_HANDLE,
(void *)IRQ_69_HANDLE,
(void *)IRQ_70_HANDLE,
(void *)IRQ_71_HANDLE,
(void *)IRQ_72_HANDLE,
};
---------------------------------------------------------------------------------------------------
最近也要做类似lz的东东,一个boot,一个app 以前在nxp的lpc21xx、23xx和 Ti的lm3s上做过 |
|