嵌入式系统程序可移植性设计及性能优化---目录

2023-10-25 19:09

本文主要是介绍嵌入式系统程序可移植性设计及性能优化---目录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌入式系统程序可移植性设计及性能优化

Sailor_forever  sailing_9806@163.com 转载请注明

http://blog.csdn.net/sailor_8318/archive/2008/07/16/2663148.aspx

【摘要】在嵌入式系统的程序设计中,由于软硬件平台的多变性,对程序的可移植性、可扩充性、可裁减性及可维护性等有更严格的要求。本文从宏定义设计、数据结构设计及函数设计等方面,简单介绍了可移植性的设计问题。在嵌入式应用中非常注重代码的时空效率,即产生的代码运行时间和占用的存储空间尽可能少。程序设计一章介绍了如何提高程序的运行效率的相关技巧。

【关键词】嵌入式,可移植性,可维护,可裁减,宏定义设计,数据结构设计,时空效率



 

目录

1   宏定义设计... - 1 -

1.1     为何要采用宏定义?... - 1 -

1.2     宏定义的基本规则... - 1 -

1.3     依赖关系定义宏改善移植性... - 1 -

1.4     通过偏移量和掩码进行位操作... - 2 -

2   数据结构设计... - 4 -

2.1     结构体中成员对齐规则... - 4 -

2.1.1        自然对界... - 4 -

2.1.2        指定对界... - 4 -

2.2     合理设计成员顺序... - 5 -

2.2.1        减少结构体存储空间... - 5 -

2.2.2        填充部分域,避免字节对齐问题... - 6 -

2.2.3        字节对齐问题实例... - 7 -

2.3     采用位域构造结构体... - 8 -

2.3.1        位域设计传输协议... - 8 -

2.3.2        位域的可移植性问题... - 9 -

2.3.3        位域设计硬件配置字... - 10 -

2.4     通过unionstruct传递不同格式报文... - 11 -

2.5     将相关功能变量封装为结构体... - 13 -

3   函数设计... - 15 -

3.1     避免过多函数参数,提高调用性能... - 15 -

3.2     合理设计模块,减小耦合度... - 16 -

3.3     用宏函数提高时间效率... - 18 -

3.3.1        宏参数的基本规则... - 18 -

3.3.2        宏语句的基本规则... - 18 -

3.3.3        宏的副作用... - 20 -

3.4     Const修饰输入指针参数... - 21 -

4   程序设计... - 22 -

4.1     循环转置... - 22 -

4.2     减小运算强度... - 23 -

4.2.1        位操作实现求余运算... - 23 -

4.2.2        用移位实现乘除法运算... - 23 -

4.2.3        将循环体内的乘法运算改成循环自加运算... - 23 -

4.3     减少不变计算... - 24 -

4.3.1        循环内部避免恒定式... - 24 -

4.3.2        避免结构体深度访问... - 25 -

4.4     减少存储访问指令周期和个数... - 26 -

4.5     查表... - 28 -

4.6     使用自加、自减指令... - 28 -

4.7     根据频率进行case 排序... - 29 -

4.8     函数指针表替代switchcase. - 30 -

 

这篇关于嵌入式系统程序可移植性设计及性能优化---目录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284602

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听