简要基本情况:bootrom_uncmp(#define RAM_SIM)用于sdt仿真,boorom_uncmp。hex(#undef RAM_SIM)写入flash
地址定义:
#undef  LOCAL_MEM_AUTOSIZE                               /* run-time memory sizing */
#define LOCAL_MEM_SIZE             0x00800000        /* 8M */
#define USER_RESERVED_MEM    0x00100000        /* see sysMemTop() */
#define DRAM_TYPE                       1                         /* 1 - SDRAM, 0 - EDO DRAM */
#define ROM_BASE_ADRS             0x00000000         /* base of Flash/EPROM 16 MB */
#define ROM_TEXT_ADRS             0x00000000         /* code start addr in ROM */
#define ROM_SIZE                          0x00080000         /* size of ROM holding VxWorks 512k */
#define ROM_COPY_SIZE               ROM_SIZE
#define ROM_SIZE_TOTAL             0x00200000         /* total size of ROM 2MB */
#define RAM_LOW_ADRS              0x0c001000          /* VxWorks image entry point */
#define RAM_HIGH_ADRS              0x0c500000
sdt加载boorom_uncmp从入口rominit()单步往下执行,顺利进入romstart(),
copylongs,filllongs低地址(0x0c000000~0x0c4ffe00)都没问题,在filllongs高地址
(0x0c580000~0x0c700000)之前pc是0x0c5002a8,入栈,保留在0x0c4fffe0
(0x0c4ffe00~0x0c500000,是SAVE_STACK,不会被清零),filllongs的过程中不会对
堆栈进行操作,可是当我filllongs完高地址后所有的堆栈变为0,得不到正确的返回地址
0x0c5002a8,进入不了usrinit(),真不知怎么会发生这种错误,冥思苦想,百思不得其
解,请各位高手指教,不甚感激
[align=right][color=#000066][此贴子已经被作者于2006-3-11 0:37:41编辑过][/color][/align]
			
			
			
						
			
 我要赚赏金
