mdk 优化

转载 2012年03月28日 14:28:16

使用Keil/MDK这么多年了,一直都没有使用它的代码优化功能。总是觉得在容量可以容纳的情况下没有必要。最近在做一个摄像头项目时,总是只能在TFT上显示大约2/3的图像。其余1/3没有显示。当按键时,整个TFT都能显示,那么按照分析,应该是因为代码是速度太慢造成的。但是分析了一下代码实在没有可以更改的地方了。那么是单片机运行速度问题吗?

本代码本来是用IAR编写的,而且在单片机上实现了,效果非常不错。所以完全能够排除上面的问题。那么只能说明是编译平台在生成代码的过程中,造成了速度问题。

既然如此,那就优化一下代码吧,通过更改MDK的优化选项,编译下载后,问题搞定。看了优化功能还是不错的。



用KEIL MDK uVision4,如下程序,GPS_flg 是一个全局变量,当有GPS数据时就会中断被置1,结果我在while(1)外面判断GPS_flg就始终为0,进入死循环出不来,在while(1)里面就可以判断到GPS_flg为1,最后找不到问题,把优化level1改成level0就好了。折腾了半天时间,难道优化这么恐怖?

main()
{...
while(GPS_flg == 0)
{;}
while(1)
{
if(GPS_flg == 0)
i++;
if(GPS_flg == 1)
{
xprintf("i = %d/r/n", i++);
i=0;
}
...
}
}
下面是论坛大哥们的发言:

Keil不优化的时候,所有变量用到时必然会从内存读。开了优化就可能寄存器。
中断要设置的变量 最好 volatile

虽然我已经试过了volatile,不行,但从今以后一定会加上volatile这点

Keil RMDK 默认优化是LEVEL 2

编译器_keil的优化选项问题

最近发现在keil编译的时候,出现莫名的问题,貌似代码有被优化掉的问题,后来查了下相关的资料,貌似懂了点。 我选择的是默认的default优化方式,上网看了下,默认的是level2级别优化,最后选择...
  • yangtalent1206
  • yangtalent1206
  • 2013年01月11日 14:12
  • 15961

keil mdk optimization levels

Compiler optimization levels and the debug view ARM Compiler toolchain v5.02 for µV...
  • wzk456
  • wzk456
  • 2014年11月12日 01:20
  • 1647

Keil MDK使用问题处理笔记

Keil MDK使用过程中出现问题的处理笔记
  • Betterday
  • Betterday
  • 2015年08月05日 18:37
  • 1993

keil工程选项设置

首先点击左边 Project 窗口的 Target 1,然后使用菜单“Project->Option for target ‘target1’”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有 ...
  • luckywang1103
  • luckywang1103
  • 2013年09月29日 21:21
  • 9910

keil mdk中如何确保某一段程序不被优化掉

使用mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认方式下,将会把这个函数从整个程序总删除掉,以节省ROM.比如,你在ROM的0x00002000处定位了一个函数,假设为voi...
  • zhzht19861011
  • zhzht19861011
  • 2010年11月02日 09:41
  • 13918

mdk 优化

使用Keil/MDK这么多年了,一直都没有使用它的代码优化功能。总是觉得在容量可以容纳的情况下没有必要。最近在做一个摄像头项目时,总是只能在TFT上显示大约2/3的图像。其余1/3没有显示。当按键时,...
  • w282529350
  • w282529350
  • 2012年03月28日 14:28
  • 2495

KEIL MDK 的优化

Keil RMDK 默认优化是LEVEL 2
  • changyourmind
  • changyourmind
  • 2017年05月19日 11:53
  • 282

MDK优化等级设置

原文地址http://www.keil.com/support/man/docs/armccref/armccref_cihgfgfb.htm摘抄日期2013-08 原文 0     Minim...
  • conquerwave
  • conquerwave
  • 2013年08月28日 15:40
  • 3093

keil MDK if表达式优化问题

最近调试 keil MDK时候发现一个问题  _db_hex(DEBUG_UART_PORT,Value); _db_hex(DEBUG_UART_PORT,Value1); ...
  • mini92
  • mini92
  • 2017年04月12日 17:50
  • 200

optimization method-Simulated Annealing(实例)

1.模拟退火实例(一) 例子1:我方有一个基地,经度和纬度为(70,40)。假设我方飞机的速度为1000 公里/小时。我方派一架飞机从基地出发,侦察完敌方所有目标,再返回原来的基地。在敌方每一目...
  • suky520
  • suky520
  • 2014年01月22日 18:55
  • 907
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mdk 优化
举报原因:
原因补充:

(最多只允许输入30个字)