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

MDK-ARM编译器优化手册

  • 2017年09月30日 16:36
  • 193KB
  • 下载

GD32F130FXP6学习笔记十三:mdk优化掉不调用的函数和防止没有显式调用的函数被优化掉

一、优化掉没有调用的函数,减少程序空间 我做了下测试,在开一级优化下,我写了一个函数,但是没有调用,查看map文件发现 它仍然占用程序空间,所以我怀疑不会优化的事情。于是百度了下,发现要勾选C/C++...

在Eclipse下编译Keil MDK工程

最近业余时间在玩下ARM7, 使用Keil uVision集成开发环境, 有时真的受不了, 编辑器的代码提示/高亮功能几乎为0, 代码基本是要一个一个字母往里敲! 想想在的VS, Eclipse等下开...
  • weed_hz
  • weed_hz
  • 2014年06月24日 14:49
  • 9768

keil MDK5搭建STM32开发环境

1. 安装keil到keil的官方网站 http://www.keil.com/download/product/ 下载MDK-ARM并安装,注意可以更改安装路径,但是不能安在需要管理员权限的文件夹,...

stm32的程序下载方式ISP、JFLASH、MDK总结

1.首先看一下stm32启动模式  stm32的启动模式由32芯片的boot0与boot1引脚决定。分为内嵌flash启动模式(正常启动模式)、内存启动模式、rom启动模式 启动方式与引脚...

C51和MDK-ARM共存方法(uVision5)

1、所需材料C51V954a.exe(链接:http://pan.baidu.com/s/1pLSxiYn 密码:q8bj)MDK516a.exe(链接:http://pan.baidu.com/s/...
  • ouening
  • ouening
  • 2016年08月22日 20:47
  • 11757

Keil MDK : 标准IO函数重定向相关

Library Retarget File Home » Create Application » Configure Cortex-M Target » Library Retarget ...
  • Airbnb
  • Airbnb
  • 2014年12月03日 15:14
  • 2664

stm32_008_mdk创建工程注意事项

一。工程用自带的库可以使工程在变换mdk版本的时候不受库版本的影响而编译出错,方法如下: 1.把库文件拷贝到工程目录下 2.在工程里面添加库目录,并添加需要的.c文件 3.在设置中添加头文件路...

【STM32F103攻城笔记】STM32之MDK(Keil)环境搭建(一)

开始前需准备的工具和文件:  一、keil安装好。(要支持ARM的)   二、去下载STM32f103的芯片包,后缀为pack (因为一般安装keil不会自带stm32的芯片包)   三、去官网或百度...

mdk中在文件中加入工程标识

#!/usr/bin/env python2 # -*- coding:utf-8 -*- import re,glob import os,sys import ipdb import shuti...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mdk 优化
举报原因:
原因补充:

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