打印

KEIL C分配外部flash数据地址

[复制链接]
3794|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51yao|  楼主 | 2008-11-25 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
但我在KEIL C中编译数组时,编译器是自动分配其在flash某个BANK里面的地址,但是每当我要多增加另一些数组时,之前编译过的数组的地址都发生了改变。怎样才能做到多增加数组后对之前的数组地址不影响呢?请大家指点。

相关帖子

沙发
hongstar| | 2008-11-25 17:16 | 只看该作者

胆怯的回答

不是很明白你的问题,malloc后返回指针,维护这个指针表就好了。

使用特权

评论回复
板凳
51yao|  楼主 | 2008-11-25 17:43 | 只看该作者

回复

程序只是定义数组的链接路径,主程序就执行空指令,让KEIL C自己分配各个数组在外部FLASH中的地址。程序如下
#include "..incOSD_DEF.h"
void main(void)
{
;
}
WSCOSD picture_mode_0[] = {
#include "../osd/format/picture_mode_brightness.txt"
};
WSCOSD picture_mode_1[] = {
#include "../osd/format/picture_mode_brightness_uk.txt"
};
WSCOSD picture_mode_2[] = {
#include "../osd/format/picture_mode_standar.txt"
};
WSCOSD picture_mode_3[] = {
#include "../osd/format/picture_mode_standar_uk.txt"
};
WSCOSD picture_mode_4[] = {
#include "../osd/format/picture_mode_smart.txt"
};

使用特权

评论回复
地板
51yao|  楼主 | 2008-11-25 17:46 | 只看该作者

。。

程序中分几个C模块,但都只是放数组数据,就象上面的程序那样。就是找不出他自动分配地址的规律。

使用特权

评论回复
5
ayb_ice| | 2008-11-25 19:55 | 只看该作者

使能按顺序分配地址

使用特权

评论回复
6
51yao|  楼主 | 2008-11-26 16:50 | 只看该作者

使能按顺序分配地址

这个怎么设置啊?是KEIL C编译器功能设置吗还是其他的?

使用特权

评论回复
7
51yao|  楼主 | 2008-11-27 10:49 | 只看该作者

使能按顺序分配地址

同个C文件就可以做到顺序分配地址,但一旦加载多另一些C文件后,这些文件的数据地址就会占了之前的C的数据地址,使之前的C数据地址发生改变。我发现一种现象就是KEILC编译好像是先分配数据量大的C文件数据,再分配数据量小的C文件数据。但不知道为什么会这样

使用特权

评论回复
8
51yao|  楼主 | 2008-11-27 14:58 | 只看该作者

还是找不到更好的解决方法

找到一个不太方便的方法来解决,就是每个C文件的数据代码量尽量达到整个BANK的空间,这样各个文件的数据代码地址就不会互相冲突再分配。顶多就是改变哪个C文件该使用哪个BANK,其代码地址是不发生变化。请问有没更好的方法啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

148

帖子

0

粉丝