打印
[STM32F1]

keil4.74编译生成的 Program Size: Code=5430 RO-data=478 RW-data=24 ZI-data=1024

[复制链接]
2200|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fuluoce|  楼主 | 2015-2-4 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int main(void)
{
  uint8_t data;
  SystemClock_Config();
  //UART_Initialization(&UartHandle);
  //printf("WaveShare!! \r\n");
  while(1)
  {}
}
编译生成的代码是 Code=5430
Program Size: Code=5430 RO-data=478 RW-data=24 ZI-data=1024  
int main(void)
{
  uint8_t data;
  SystemClock_Config();
  UART_Initialization(&UartHandle);
  //printf("WaveShare!! \r\n");
  while(1)
  {}
}
编程生成的代码是Code=33774
Program Size: Code=33774 RO-data=478 RW-data=32 ZI-data=1088  
而函数void UART_Initialization(UART_HandleTypeDef *huart){} 是空的 代码全部被我注销

keil编译版本是keil4.74,keil4的最高版本  
搞不明白代码没加什么东西 怎么Code差了这么多
沙发
s_f_tan| | 2015-2-4 16:26 | 只看该作者
你用的是没有优化的选项吧,编译器把所牵涉的库里面的函数,不管有用没用都会给你加进去

使用特权

评论回复
板凳
fuluoce|  楼主 | 2015-2-4 16:51 | 只看该作者
s_f_tan 发表于 2015-2-4 16:26
你用的是没有优化的选项吧,编译器把所牵涉的库里面的函数,不管有用没用都会给你加进去 ...

我设置为最高优化还是有Code=18476
Program Size: Code=18476 RO-data=476 RW-data=32 ZI-data=1088  

使用特权

评论回复
地板
泰山特曲123| | 2015-2-4 18:30 | 只看该作者
因为你用到st的库了!库函数没有使用也要占代码,你把cross module勾上吧。另外,看看map文件就知道哪些代码占了空间。

使用特权

评论回复
5
李富贵| | 2015-2-4 18:46 | 只看该作者
one elf section per function

使用特权

评论回复
6
fuluoce|  楼主 | 2015-2-4 19:00 | 只看该作者
李富贵 发表于 2015-2-4 18:46
one elf section per function

不是很明白你的意思!能详细说说吗?

使用特权

评论回复
7
李富贵| | 2015-2-4 19:07 | 只看该作者
每个函数一个elf段,不然只要你用到c文件的任何一个函数,这个c文件所有的函数都会出现在最终的elf文件里面。

使用特权

评论回复
8
s_f_tan| | 2015-2-5 10:30 | 只看该作者
这个one elf section per function 以前看到过,但不知道用途是干啥的,这回受指教了

使用特权

评论回复
9
fuluoce|  楼主 | 2015-2-5 10:59 | 只看该作者
李富贵 发表于 2015-2-4 19:07
每个函数一个elf段,不然只要你用到c文件的任何一个函数,这个c文件所有的函数都会出现在最终的elf文件里面 ...

你的意思是说这函数的elf段有这么大,
这函数只有一个结构体指针作为形参,没有其他了,也会占这么大的空间。

使用特权

评论回复
10
fuluoce|  楼主 | 2015-2-6 10:22 | 只看该作者
我知道你意思了
在Options里的C/C++里的选项了有一个one elf section per function选项 得勾选  才能过把C文件里的其他函数滤掉

使用特权

评论回复
11
fuluoce|  楼主 | 2015-2-6 10:22 | 只看该作者
谢谢你的解释

使用特权

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

本版积分规则

5

主题

37

帖子

0

粉丝