当前位置:首页 > 工业控制 > 电子设计自动化
[导读]引 言 嵌入式系统的核心部件是嵌入式处理器。在众多的处理器中,ARM是专为嵌入式应用而设计的处理器,由于其低功耗、高性价比和易扩展性等特点,在嵌入式系统中得到了最为广泛的应用。在许多成功的32位嵌入式系统中,

引 言

嵌入式系统的核心部件是嵌入式处理器。在众多的处理器中,ARM是专为嵌入式应用而设计的处理器,由于其低功耗、高性价比和易扩展性等特点,在嵌入式系统中得到了最为广泛的应用。在许多成功的32位嵌入式系统中,ARM处理器都是其核心组成部分。ARM内核已被广泛应用于移动电话、掌上设备以及种类繁多的便携式消费类产品中。随着ARM处理器越来越广泛的应用,如何提高代码的执行效率已成为工程师关注的问题,同时如何在实时嵌入式应用中,通过代码优化以减少消耗过多的CPU运行时间已成为人们关注的焦点。软件开发中,常用的代码优化技巧有“循环展开”、“减少外存访问”、“考虑CPU带宽”、“循环减计数”、“循环变量数据类型”、“使用SWITCH取代条件判断”等。而图像在不同屏幕尺寸之间缩放的程序是嵌入式领域常常用到的功能。这里就以实现这样一个常见功能的程序为例,说明程序优化的技巧。

1 实例分析

程序的目标是将一个长宽为240×160,格式为RGB565的显示缓冲区的内容映射到长宽为320×240,格式也为RGB565的显示缓冲区内。因为源数据宽度是240点,所以,放大到目的区域的时候,就需要每3个源数据点中,重复1点的数据,变成4点,放到目的显示缓冲区中。同样,每2行源数据也要重复1行,变成3行,放到目的显示缓冲区中。源数据和目的数据分别定义如下(保证源显示缓冲区和目的显示缓冲区都是4字节对齐起始的):

注:以下所有程序均是使用ADS1.1编译,CPU主频为100 MHz,使用ARM7EJ-S为目标处理器,小端编译方式,测试的时间是以所有的程序和数据均是Cache全命中为前提测试得到的。

2 原始程序

下面这段程序是没有经过任何优化的程序,仅仅实现了相应的功能要求,运行时间为10 ms。

3 优化步骤

第一,采用循环展开的技巧进行优化,也就是尽量减少内层循环的次数。这里在行循环中,由原来的每次处理1行源数据,一共循环160次,改成每次处理2行源数据,一共只需要循环80次。同时,在行内部的列循环中,由原来的每次处理1个源像素点,一共循环240次,改成1次处理3个源像素点,一共只需要循环 80次。运行时间缩短为8 ms。


第二,因为ARM处理器的带宽是4字节,所以,取数据时也使用4字节的方式是效率最高的,程序设计时也要尽量利用这个特点提高效率。下面就利用这个特点,每次取源数据时都取4字节。因为行内部是每3点要重复1点,因此,行内部循环改为每次处理6个像素点,这样,又进一步减少了循环次数。运行时间缩短为4 ms。

第三,访问外存往往是程序运行的瓶颈,因为外存的速度一般远远低于CPU运行速度,所以,在编程的过程中,要尽量减少对外存的访问。下面,将行循环中重复写入的那行在上一行生成的过程中直接完成,减少了拷贝重复行过程中读取1行的时间。运行时间缩短为3 ms。

结 语

本文以图像在不同屏幕尺寸之间缩放的程序为例讲解了代码优化技巧方法,给出了源代码进行探讨,并通过实验得以证实。希望有助于读者编写出在提高执行速度和减小代码尺寸方面更高效的C源代码。

1次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

通过大量的数据,训练出一个能处理此类数据的模型,使得这个模型可以根据已知的数据,准确率很高的判断出未知的数据,从而使得人类能够采取正确的方法去处理某些事情。

关键字: 机器学习 模型 图像

在监督学习中,系统会被给定一组已知输入和输出,需要学习到一种函数,使得该函数能够根据给定的输入预测出正确的输出。代表算法有线性回归、逻辑回归、决策树、深度神经网络等。

关键字: 机器学习 数据源 图像

在这一步中,需要从不同的数据源收集数据,包括结构化数据(例如数据库中的表格数据)和非结构化数据(例如文本、图像和音频)。

关键字: 机器学习 数据源 图像

作为一种解决方案和应用,其核心内容是:让人们无论任何时间、任何地点,都可以通过任何设备、任何网络,获得数据、图像和声音的自由通信。

关键字: 统一通信 图像 思科

大多数紧急事件的发生具有时间不确定性从而造成应急通信也具有时间不确定性,使人们无法预知什么时候需要应急通信。

关键字: 应急通信 语音 图像

仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。

关键字: 单片机 仿真器 程序

步进电动机是将电脉冲激励信号转换成相应的角位移或线位移的离散值控制电动机,这种电动机每当输入一个电脉冲就动一步,所以又称脉冲电动机。

关键字: 步进电机 正反转 程序

KeilμVision4是Keil软件公司为8051系列微控制器及其兼容产品设计的集成式软件开发环境。μVision4集成了C51编译器和A51汇编器,其界面类似于Microsoft VS,支持C语言和汇编语言程序的编写...

关键字: 程序 编译 链接

探索科技(TechSugar)为您提供最新的芯片新闻,IC资讯;本周都有哪些值得关注的新品呢?

关键字: 三星 图像 传感器

双方各执一词,谁也不退让,吴雄昂的身份成为薛定谔的猫:在Arm公司眼中,他已经被罢免一切职位;在安谋中国声明里,吴仍然一切照常。这种叠加态或许还会持续一段时间,但叠加态应该很快就会塌缩成一个确定结果。同样,安谋中国董事会...

关键字: ARM 中国董事会 程序
关闭
关闭