简要基本情况: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]