我用ADS把一部分代码生成了一个自己的库文件lib.a,随后又在库的基础上做了个小应用程序,已经证实成功,应用能够正常运行。
现在我想通过分散加载机制把整个库文件定位到Flash的某个固定区域,这样做的好处在于可以避免更新代码后全部重新烧写,大幅减少烧写时间。
但在实际应用时却发现,只要我对应用部分的代码稍作修改,前后2次生成的LIB映象大小虽然完全一致,但内容却差了好多,完全违背了我的本意,为什么?
以下是我的分散加载文件:
ROM_LOAD 0x80000000 { ROM_EXEC 0x80000000 { Startup.o (vectors, +First) * (+RO) }
IRAM 0x40000000 { Startup.o (MyStacks) }
STACKS_BOTTOM +0 UNINIT { Startup.o (StackBottom) }
STACKS 0x40004000 UNINIT { Startup.o (Stacks) }
ERAM 0x81000000 { * (+RW,+ZI) }
HEAP +0 UNINIT { Startup.o (Heap) }
HEAP_BOTTOM 0x81080000 UNINIT { Startup.o (HeapTop) } }
LIB 0x800D0000 { LIB 0x800D0000 { ;LIB库包含的所有目标文件 os_cpu_c.o (+RO) Os_cpu_a.o (+RO) OS_TIME.o (+RO) OS_CORE.o (+RO) OS_FLAG.o (+RO) OS_MBOX.o (+RO) OS_MEM.o (+RO) OS_MUTEX.o (+RO) OS_Q.o (+RO) OS_SEM.o (+RO) OS_TASK.o (+RO) queue.o (+RO) Global.o (+RO) Flash.o (+RO) GPRS.o (+RO) UART.o (+RO) WatchDog.o (+RO) sysfunc.o (+RO) } RAM 0x81040000 { os_cpu_c.o (+RW,+ZI) Os_cpu_a.o (+RW,+ZI) OS_CORE.o (+RW,+ZI) Flash.o (+RW,+ZI) COMM.o (+RW,+ZI) ; UART.o (+RW,+ZI) ; WatchDog.o (+RW,+ZI) ; sysfunc.o (+RW,+ZI) } }
|