打印

如何定义才能把字库数据存放在STM32F103的代码空间?

[复制链接]
6415|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzzly|  楼主 | 2011-11-3 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何定义才能把字库数据存放在STM32F103的代码空间?谢谢!
沙发
Xflyan| | 2011-11-3 09:22 | 只看该作者
你的字库文件是指const数组 or bin or hex?如果是后两种是可以直接烧写的吧

使用特权

评论回复
板凳
airwill| | 2011-11-3 11:16 | 只看该作者
用 const 数组定义字库数据, 编译器就能存放在 STM32F103 的代码空间

使用特权

评论回复
地板
yzzly|  楼主 | 2011-11-3 11:53 | 只看该作者
谢谢楼上的回答!
Uint08                 Ai[32]={0x20,0x20,0x20,0x20,0x26,0xF9,0x20,0x20,0x20,0xF8,0x27,0x22,0x20,0x20,0x20,0x00,
                                        0x01,0x01,0x02,0x02,0x04,0x88,0x50,0x20,0x50,0x88,0x04,0x04,0x02,0x03,0x02,0x00};//艾
怎么不加const时内存情况是这样
Program Size: Code=29234 RO-data=446 RW-data=160 ZI-data=3968  

const Uint08                 Ai[32]={0x20,0x20,0x20,0x20,0x26,0xF9,0x20,0x20,0x20,0xF8,0x27,0x22,0x20,0x20,0x20,0x00,
                                        0x01,0x01,0x02,0x02,0x04,0x88,0x50,0x20,0x50,0x88,0x04,0x04,0x02,0x03,0x02,0x00};//艾
而加了const后内存情况是这样?
Program Size: Code=29234 RO-data=446 RW-data=128 ZI-data=3968

加了const后数组32个字节到哪去了?怎么RAM和FLASH空间都没有体现??

使用特权

评论回复
5
airwill| | 2011-11-3 12:19 | 只看该作者
你可以从编译生成的 .MAP 文件里看 Ai 被分配在哪个地址上.

使用特权

评论回复
6
yzzly|  楼主 | 2011-11-3 12:49 | 只看该作者
5楼,加了const后,在.MAP 文件内根本找不到Ai标识符。

使用特权

评论回复
7
yinyangdianzi| | 2011-11-3 13:17 | 只看该作者
3楼威武

使用特权

评论回复
8
airwill| | 2011-11-3 13:41 | 只看该作者
郁闷!
不知道你的什么编译器. 怎么配置 MAP 的
我的 Keil MDK 下面:

const unsigned char digctab[] = { ...};

在 MAP 文件里就能看到:
    digctab                                  0x08002f26   Data          28  keydigit.o(.constdata)

反正 const 不会错了

使用特权

评论回复
9
yzzly|  楼主 | 2011-11-3 14:01 | 只看该作者
本帖最后由 yzzly 于 2011-11-3 14:20 编辑

只要加const就可以,在.MAP文件内才可以看到定位在FLASH空间。RO-data的数据也说明了问题。

使用特权

评论回复
10
yfstudio| | 2011-11-3 19:06 | 只看该作者
呵呵,支持一下。

使用特权

评论回复
11
walnutcy| | 2011-11-3 20:47 | 只看该作者
没有调用,优化掉了吧

使用特权

评论回复
12
anzil| | 2011-11-4 15:44 | 只看该作者
如果你是全局变量,加与不加const都是放在代码区,只不过不加const可以读写,加const就不能写了,所以出现上面的差异

使用特权

评论回复
13
yzzly|  楼主 | 2011-11-5 12:10 | 只看该作者
12楼,照你这么说,全局变量都在代码区,那还叫“变量”吗?你变给我看看!

使用特权

评论回复
14
mcu_electron| | 2011-11-5 15:22 | 只看该作者
C中加入汇编,直接写进存储位置,代码区 or 数据区都可以 @...

使用特权

评论回复
15
gaobq| | 2011-11-6 11:34 | 只看该作者
在以前的AVR应用中,这种全局变量必须在加const,否则就占用可怜兮兮的RAM。
现在的ARM编译器没有深究过,总之加上肯定没有坏处,如果编译器足够优化,应能够判断并置于flash区

使用特权

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

本版积分规则

426

主题

1169

帖子

3

粉丝