发表于:2010-03-12 06:54:50
楼主
MP/MC=0的时候DSP自动从内部ROM的FF80执行。
Dsp的vect
0000:FF80 F273 BD&nb sp; 0f800h
0000:FF82 7718 STM&n bsp; 6fh,18h
/**********************************************/
以下是ROM中的BOOTLOADER程序
0000:F800 F7BB SSBX INTM/*屏蔽所有中断*/
0000:F801 EA00 LD #0h,DP/*数据页指向0页*/
0000:F802 7701 STM&n bsp; 0ffffh,1h
0000:F804 6907 ORM 2b00h,7h/*设置ST1寄存器,xf,intm,ovm.sxm置1*/
0000:F806 691D ORM 20h,1dh/*PMST设置,MC模式片内RAM映射到data/program
0000:F808 7728 STM 7fffh,28h/*设置SWWSR,等待状态为7个周期*/
0000:F80A 7718 STM 7dh,18h/*设置SP
0000:F80C F073 B&nbs p; 0f80eh
/****************************具体BOOT模式识别********************************/
/***************************** HPI模式识别*******************************/
0000:F80E 777E STM 0h,7eh/*7Eh,7fH为HPI模式BOOT放入口地址的地方,所以
先清0。*/
0000:F810 777F STM&n bsp; 0h,7fh
0000:F812 772C STM 0ah,2ch /*HPIC控制寄存器
0000:F814 7734 STM 0eh,34h/*MCBSP2子地址寄存器*/
0000:F816 7735 STM 2020h,35h/*送2020h到PCR2*/
0000:F818 EC05 RPT&n bsp; #5h
0000:F819 F495 NOP /*等待*/
0000:F81A 7735 STM 2000h,35h/*Dx脚设置为IO,先输出1,再输出0*/
0000:F81C EC05 RPT&n bsp; #5h
0000:F81D F495 NOP&n bsp;
0000:F81E 6101 BITF 1h,4h/*判断int2脚的电平(IFR与4H的值送入TC)*/
0000:F820 F495 NOP&n bsp;
0000:F821 F830 BC 0f82ah,TC/*INT2为高的话,认为是HPI模式跳转到相应处
理程序f82a处*/
/***********************************************************
*****************/
/***********************************************************
*****************/
/***********************************************************
*****************/
/***********************************************************
*****************/
/************************SPI EEPROM模式识别****************************/
0000:F823 6101 BITF 1h,100h/*判断INT3的值,确定是否为SPI EEPROM模式*/
0000:F825 F495 NOP
0000:F826 F830 BC 0fa02h,TC /*是的话转入相应处理程序FA02H处*/
0000:F828 F073 B 0f831h /*否则跳转到f831h(parallel模式判断)*/
/××××××××××××××××××××××××××××××××××××××/
/****************************HPI模式处理**********************************/
0000:F82A 7701 STM&n bsp; 4h,1h
0000:F82C 127F LDU&n bsp; 7fh,A
0000:F82D F844 BC 0f8e6h,ANEQ/*如果7fH处的值不等于0,说明外部HOST
已经把程序加载进去了,则跳转到F8E6处理*/
0000:F82F F073 B 0f82ch/*否则就循环检测7fH处是否写入了正确的程序入口
地址,由于用ANEQ做跳转条件,所以HOST模式BOOT程序入口地址不能为0 ,为0 则能正确引导
/××××××××××××××××××××××××××××××××××××××/
/***********************************************************
*****************/
/***********************************************************
*****************/
/***********************************************************
*****************/
/***********************************************************
*****************/
/****************************并行BOOT模式识别**************************/
先从IO空间判断
0000:F831 7761 STM&n bsp; 0h,61h
0000:F833 7762 STM&n bsp; 0faffh,62h
0000:F835 7465 PORTR 0ffffh,65h /*读I/O空间FFFFH处的值,放到65H*/
0000:F837 7165 MVDK 65h,11h /*如果是并行模式则检测I/O空间的FFFF处
是否放上了程序引导表boot-table的入口地址*/
0000:F839 1091 LD *AR1+,A /*boot-table的首位数据应该是并行模式命令字*/
0000:F83A F110 SUB #10aah,0,A,B/*把读取的命令字减去10AA结果放在B中*/
0000:F83C F84D BC 0f93bh,BEQ/*B等于0的话