- 论坛徽章:
- 0
|
比如可执行文件test.bin是由3个目标文件链接而成:
a.o, b.o, c.o
但是发现这样编译之后,test.bin很大,不能用1块flash进行存储,恰好系统有2块flash,所以使用下面的方法分开制作软件:
1.保留c.o里面的符号,但是内容都定义为空。
2.还是链接为test.bin,但是这个test.bin明显小于之前的test.bin,因为c.o很小了;
3.纯粹编译一个c.o,但是这个c.o是原来需要的c.o,很大;
4.将test.bin和c.o合并为一个文件test_merge.bin;
5.升级软件的时候将test_merge.bin分开升级,test.bin部分放到第1块flash,c.o放到第2块;
6.这样其实就有2个c.o的内容了,一个是test.bin里面的,在第1块flash,一个是第2块flash 的c.o;
7.c.o里面假设有一个符号a,它的地址是addr_1,那么在第2块flash里面的c.o也会有1个a,地址为addr_2;
8.程序在运行的时候,访问a的时候的是地址addr_1,但是内容为空;
9.现在如何做可以访问符号a的其实是addr_2了,而不是addr_1?
不知道明白了没有。 |
|