KEIL每次都要编译全部文件并且每个文件编译三次

2023-05-16

SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机、32位ARM Cortex-M0处理器、128kB Flash存储器、以及丰富的数字接口。SYD8801片上集成了Balun无需阻抗匹配网络、高效率DCDC降压转换器,适合用于可穿戴、物联网设备等。具体可咨询:http://www.sydtek.com/

KEIL每次都要编译全部文件并且每个文件编译三次

这是因为勾选了“use cross-module optimization//跨模块优化说明:使能链接器反馈文件,从而能够更深层次的代码优化)”

 

•  Cross- Module  
Optimization  takes information from a prior build and uses it to place UNUSED functions into their 

own ELF section in the corresponding object file. This option is also known as Linker Feedback, and requires you to build your application twice to take adv antage of it for reduced code size.   
Cross-Module Optimization has been shown to reduce code size, by removing unused functions from your application. It can also improve the performance   of your application, by allowing modules to share inline code. 

以上内容摘录于:http://blog.csdn.net/yangtalent1206/article/details/8493120

也就是说避免了不用的函数也编译如代码中,减少最后的代码空间

 

下面上传本博客使用到的代码:

http://download.csdn.net/detail/chengdong1314/9801093

使用的芯片是SYD8801,该芯片详情请看:http://blog.csdn.net/chengdong1314/article/details/57253402

 

附录A:勾选了use cross-module optimization的编译打印输出:

*** Using Compiler 'V5.06 (build 20)', folder: 'd:\Keil_v5\ARM\ARMCC\Bin'
Rebuild target 'Ble_Vendor_Service'
Clean started - Project: 'Ble_Vendor_Service'
   deleting intermediate output files for target 'Ble_Vendor_Service'
compiling main.c...
Main\main.c(139): warning:  #550-D: variable "i" was set but never used
        uint8_t i;
Main\main.c(103): warning:  #177-D: function "PowerDown" was declared but never referenced
  static void PowerDown()
Main\main.c: 2 warnings, 0 errors
compiling key.c...
compiling led.c...
compiling oled_12864.c...
compiling ota.c...
compiling syd8801_debug.c...
compiling syd8801_delay.c...
compiling syd8801_gpio.c...
compiling syd8801_timer.c...
compiling syd8801_uart.c...
compiling syd8801_ioi2c.c...
assembling startup_ARMCM0.s...
compiling system_ARMCM0.c...
linking...
Program Size: Code=17794 RO-data=2682 RW-data=184 ZI-data=5536  
".\Output\Ble_Vendor_Service.axf" - 0 Error(s), 2 Warning(s).

*** Performing Cross-Module-Optimization:
compiling main.c...
Main\main.c(139): warning:  #550-D: variable "i" was set but never used
        uint8_t i;
Main\main.c(103): warning:  #177-D: function "PowerDown" was declared but never referenced
  static void PowerDown()
Main\main.c: 2 warnings, 0 errors
compiling key.c...
compiling led.c...
compiling oled_12864.c...
compiling ota.c...
compiling syd8801_debug.c...
compiling syd8801_delay.c...
compiling syd8801_gpio.c...
compiling syd8801_timer.c...
compiling syd8801_uart.c...
compiling syd8801_ioi2c.c...
compiling system_ARMCM0.c...
linking...
Program Size: Code=16602 RO-data=2682 RW-data=176 ZI-data=5536  
compiling main.c...
Main\main.c(139): warning:  #550-D: variable "i" was set but never used
        uint8_t i;
Main\main.c(103): warning:  #177-D: function "PowerDown" was declared but never referenced
  static void PowerDown()
Main\main.c: 2 warnings, 0 errors
compiling key.c...
compiling led.c...
compiling oled_12864.c...
compiling ota.c...
compiling syd8801_debug.c...
compiling syd8801_delay.c...
compiling syd8801_gpio.c...
compiling syd8801_timer.c...
compiling syd8801_uart.c...
compiling syd8801_ioi2c.c...
compiling system_ARMCM0.c...
linking...
Program Size: Code=16602 RO-data=2682 RW-data=176 ZI-data=5536  
FromELF: creating hex file...
After Build - User command #1: "Output\HEX2BIN.EXE" "Output\Ble_Vendor_Service.hex"
hex2bin v1.0.6, Copyright (C) 1998 Jacques Pelletier
checksum extensions Copyright (C) 2004 Rockwell Automation
improved P.G. 2007
Lowest address  = 00006000
Highest address = 0000AC03
Pad Byte        = FF
8-bit Checksum = E9
".\Output\Ble_Vendor_Service.axf" - 0 Error(s), 2 Warning(s).
*** Completed Cross-Module-Optimization after 3 iteration(s).
Build Time Elapsed:  00:00:10

 

附录B:不勾选use cross-module optimization的编译打印输出:

*** Using Compiler 'V5.06 (build 20)', folder: 'd:\Keil_v5\ARM\ARMCC\Bin'
Rebuild target 'Ble_Vendor_Service'
compiling key.c...
compiling led.c...
compiling main.c...
Main\main.c(139): warning:  #550-D: variable "i" was set but never used
      uint8_t i;
Main\main.c(103): warning:  #177-D: function "PowerDown" was declared but never referenced
  static void PowerDown()
Main\main.c: 2 warnings, 0 errors
compiling ota.c...
compiling oled_12864.c...
compiling syd8801_debug.c...
compiling syd8801_delay.c...
compiling syd8801_timer.c...
compiling syd8801_gpio.c...
assembling startup_ARMCM0.s...
compiling syd8801_ioi2c.c...
compiling syd8801_uart.c...
compiling system_ARMCM0.c...
linking...
Program Size: Code=17794 RO-data=2682 RW-data=184 ZI-data=5536  
FromELF: creating hex file...
After Build - User command #1: "Output\HEX2BIN.EXE" "Output\Ble_Vendor_Service.hex"
hex2bin v1.0.6, Copyright (C) 1998 Jacques Pelletier
checksum extensions Copyright (C) 2004 Rockwell Automation
improved P.G. 2007
Lowest address  = 00006000
Highest address = 0000B0B3
Pad Byte        = FF
8-bit Checksum = D3
".\Output\Ble_Vendor_Service.axf" - 0 Error(s), 2 Warning(s).
Build Time Elapsed:  00:00:02

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KEIL每次都要编译全部文件并且每个文件编译三次 的相关文章

随机推荐