嵌入式C代码优化

发布者:superstar10最新更新时间:2018-11-22 来源: eefocus关键字:嵌入式  C代码  优化 手机看文章 扫描二维码
随时随地手机看文章

之前刚开始工作时,参与做过嵌入式代码优化,除了最基本的函数实现细节算法优化外,还有一些细节的处理。当然之前优化时,也是借助了分析工具来分析哪些函数调用频繁,哪些开销比较大。对于具体细节的处理记得不一定全面了,当然也有部分操作在编译时,工具也有可能自动进行优化。


函数展开


类似inline,减少函数出栈入栈开销


结构体比较


相应数据结构具有不同的比特位含义,而高位更具有意义,比较时无需将成员一一比较,强转32/64位格式比较。


相同操作提取


提取相同深度的指针指向,如下A、C、D为指针,E为具体成员操作。


A->C->D->E1,A->C->D->E2,A->C->D->E3... ...则可将A1 = A->C->D,然后使用A1->E1、A1->E2、A1->E3进行替换操作。


消息合并


线程之前多个消息发送会导致开销变大,可以合并成单个消息,同时处理多个事情,当然前提是这些事件可进行合并。


时间空间的转换(动态申请用静态变量替代)


频繁使用的消息可以改为一次性申请或是静态方式,以减少频繁申请释放的开销;而同一逻辑部分可能申请多次的情况,可以采用半静态半动态的方式,可以通过统计经常同时使用的次数来确定静态内存的大小。


寄存器(变量定义)问题


在arm上汇编可以看到当定义uint8 i;for(i = 1; i< 255; i++)时寄存器为32bit,所以在处理8bit数据时,需要额外的移位等操作来放置溢出超过8位情况,此时使用uint32定义反而可以减少MIPS开销。


关键字:嵌入式  C代码  优化 引用地址:嵌入式C代码优化

上一篇:C语言复习之结构体基础知识
下一篇:c标准文件io函数的原型和注意点

推荐阅读最新更新时间:2024-03-16 16:18

研华携手Intel, Microsoft, ARM, IBM 打造从端到云物联网解决方案
台北,10月27日,2016 全球智能系统(Intelligent Systems)领导厂商研华公司于2016 Embedded IoT Partner Summit伙伴高峰会议上宣布,将携手Intel, Microsoft, ARM, IBM,打造从端至云的完整物联网解决方案,并将共同合作方案推广至世界各角落,以加速各产业走向智能化应用。活动期间,研华除展示最新物联网解决方案应用与技术,亦带领各伙伴于其新落成的物联网园区二期制造中心,体验最新工业4.0概念运用。 (图注:在2016 Embedded IoT Partner Summit伙伴高峰会议上,研华宣布将携手Intel, Microsoft, ARM, IBM,打造
[物联网]
研华携手Intel, Microsoft, ARM, IBM 打造从端到云物联网解决方案
智能仓储,微智达嵌入式工控机助力智能AGV叉车方案
摘要: 受人工成本不断上涨、制造企业转型升级,以及技术发展加快等多重因素推动,AGV叉车正在成为不可阻挡的浪潮,并且随着智能制造、智慧仓储的快速发展,表现的更加智能化的特点。 全向前移AGV叉车是智能仓储里的常见设备,在数字化和智能化应用到各行业的今天,通过新技术来提高效率,降低成本是大家的共识。作为仓储货物集散的关键工具,如何在物流行业快速发展的阶段,提升AGV叉车的效率,也是一项重要问题。 前移式AGV叉车:前移式AGV的门架或者货叉架可以前后移动伸出到前轮之外叉取或放下货物,行走时货叉带货物收回,使货物重心在支撑面内;前移式叉车有两条前伸的支腿,可以起到稳定作用。具有高举升,大载重,小体积等特点。常见的应用场景有线边运
[机器人]
艾睿电子与Appletec签署协议,为嵌入式应用供紧凑型相机模组
艾睿电子与Appletec签署协议,为嵌入式应用提供紧凑型相机模组 为新型设计和现有产品再设计提供快速原型开发 艾睿电子(Arrow Electronics Inc.)与以色列公司Appletec签署了一项协议,根据该协议,Appletec将为艾睿电子生产一系列 专用紧凑型摄像头模组(CCM) 。 众多开发者希望在应用于工业、医疗、安全和汽车等领域的产品中添加嵌入式视觉功能。摄像头模组专为这类开发者而设计。还提供定制服务,可支持各种互连解决方案。 摄像头模组的选择受到应用需求中的若干因素影响。例如,要捕捉的细节量将决定分辨率和帧速率的选择,而选定的视场角(FOV)和景深将决定取景范围。 艾睿电子摄像头模组
[传感器]
艾睿电子与Appletec签署协议,为<font color='red'>嵌入式</font>应用供紧凑型相机模组
基于mClinux的嵌入式USB接口设计
引言 越来越多的嵌入式设备与外部连接要求更简洁、方便、智能化,所以,USB接口在嵌入式设备中的应用会越来越广泛。本文是“信息家电网络控制平台技术”项目中USB接口的实际设计部分。在该项目中,硬件平台采用了S3C4510B微处理器,软件系统是在mClinux下开发的,项目结题后,组建了USB总线的家居网络系统,实现了信息家电的上网。本文介绍了该嵌入式系统设计中的USB模块软硬件设计。 USB接口硬件设计 S3C4510B没有内置的USB控制器,但提供了两个GDMA通道,可以满足USB高速数据传递的要求。本着与S3C4510B能衔接工作、自身适合在嵌入式设备中应用的原则,确定采用ISP1581高速USB接口芯片。  ISP1581
[嵌入式]
基于ARM-Linux的SQLite嵌入式数据库的研究
引言 随着嵌入式系统的广泛应用和用户对数据处理和管理需求的不断提高,各种智能设备和数据库技术的紧密结合已经得到了各方面的重视。不久的将来嵌入式数据库将无处不在。纵观目前国际、国内嵌入式数据库的应用情况,目前基于嵌入式数据库应用的市场已经进入加速发展的阶段。 1 嵌入式数据库 1.1 嵌入式数据库的设计 嵌入式数据库系统是指支持某种特定计算模式或移动计算的数据库管理系统,它通常与操作系统和具体应用集成在一起,运行在智能型嵌入式设备或移动设备上。嵌入式数据库的使用是采用程序驱动,即由程序调用相应的API来实现数据的存取。具有体积小巧、快速高效、稳定可靠、可移植性等特点,非常适用于嵌入式环境下的数据管理.。 嵌入式数据库的主要
[单片机]
基于ARM-Linux的SQLite<font color='red'>嵌入式</font>数据库的研究
赛灵思推出ISE 12.3设计套件 进一步优化功耗
赛灵思公司(Xilinx, Inc. (NASDAQ:XLNX) )宣布推出 ISE® 12.3设计套件,这标志着这个FPGA 行业领导者针对片上系统设计的互联功能模块, 开始推出满足AMBA® 4 AXI4 规范的IP核,以及用于提高生产力的 PlanAhead™ 设计和分析控制台,同时还推出了用于降低了Spartan®-6 FPGA 设计动态功耗的智能时钟门控技术。 赛灵思全球市场营销高级副总裁 Vin Ratford 指出:“作为我们支持即插即用型 FPGA 设计互连战略的一部分, 赛灵思第一个率先标准化AMBA 4规范。已经在 AMBA AXI3 和 AXI4 接口 IP 上进行巨大投资的 SoC 设计人员有
[嵌入式]
S3C2440触摸屏驱动代码分析
实验环境: 主机:Fedora14 开发板:Tq2440 移植linux内核版本:linux-2.6.30.4 最近学习了一下S3C2440的触摸屏驱动代码,也算是对前期一段时间的复习,让自己回忆起一些关于驱动的知识,关于S3C2440的触摸屏驱动代码主要是基于输入子系统的实现,在转载的文章 嵌入式Linux之我行 S3C2440上触摸屏驱动实例开发讲解 一文中详细的介绍了基本的实现。具体的实现我就在介绍,这篇文章已经写得非常的详细。我主要是采用流程图的方式简要的介绍了一下驱动代码的实现过程。 驱动的初始化过程: 驱动的实现过程: 以上的流程图就大致实现了触摸屏的驱动。
[单片机]
S3<font color='red'>C</font>2440触摸屏驱动<font color='red'>代码</font>分析
三星宣布与Arm联合优化下一代基于GAA的Cortex-X CPU
三星电子日前宣布,将与Arm合作,提供基于三星代工厂最新的全环栅极(GAA)工艺技术开发的优化下一代Arm Cortex-X CPU。该计划建立在三星代工厂与Arm多年合作伙伴关系的基础上,三星代工厂已经在各种工艺节点上生产了数百万带有Arm CPU IP的器件。 此次合作为三星和Arm之间的一系列公告和计划创新奠定了基础。两家公司制定了大胆的计划,为下一代数据中心和基础设施定制芯片重塑2纳米(nm) GAA,以及推出将彻底改变未来人工智能(AI)移动计算市场的突破性AI小芯片解决方案。 三星电子执行副总裁兼Foundry负责人Jongwook Kye表示:“随着我们继续进入Gen AI时代,我们很高兴能够扩大与Arm的合
[半导体设计/制造]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved