嵌入式软件设计之:宏、常量

嵌入式软件设计规范框架(MISRA-C 2012增强版) 基于MISRA-C的嵌入式软件设计规范(完整技术文档框架),包含编码规范、安全设计原则和工程实践要求。 阅读详情

规则:用宏定义表达式时,要使用完备的括号

宏替换是简单的代替,要避免替换后运算符的优先级响应本来的用意

#define multiply MULTIPLY(a,b)  a*b

#define multiply MULTIPLY(a,b)  (a*b)

#define multiply MULTIPLY(a,b)  (a(*(b)

以上定义都存在隐患,正确应如下:

#define multiply MULTIPLY(a,b)  ((a)*(b))

规则2:宏有多条表达式时应放在大括号中

更好的方法是多条语句写成do while(0)语句。

规则3:使用宏时不允许参数变化

规则4:不允许使用魔鬼数字 数字常量用宏或const 定义

 

嵌入式软件开发 嵌入式系统架构设计涉及硬件与软件的协同设计,以满足特定功能、性能、功耗和成本要求。核心目标包括实时性、可靠性、低功耗和可扩展性。C 和 C++ 是两种广泛使用的通用编程语言,具有高性能、底层控制能力和跨平台特性。C 是过程式语言,而 C++ 在 C 的基础上增加了面向对象特性(如类、继承、多态)和泛型编程支持(如模板)。外设驱动开发是指为硬件设备编写软件接口,使操作系统能够识别、控制和管理这些设备。驱动开发涉及硬件交互、操作系统内核编程以及设备特定的协议实现。 阅读详情

相关推荐

嵌入式软件版本管理:从SemVer到CI/CD的工程实践

在嵌入式系统开发中,版本管理是确保软硬件协同工作、实现高效团队协作与问题追溯的核心工程实践。其核心原理在于通过一套标准化的规则,对软件、硬件及工具链的配置状态进行精确快照与关联管理。从技术价值看,这不仅解决了代码变更跟踪问题,更关键的是管理了固件与特定硬件版本、编译器、依赖库以及测试环境之间的复杂映射关系,从而保障了产品的可靠性与可维护性。在实际应用场景中,这直接关系到现场问题定位、安全固件升级以及多硬件变体支持等关键任务。本文将深入探讨如何结合语义化版本控制(SemVer)、持续集成(CI/CD)与软件物

weixin_28721917的博客 222

嵌入式软件设计

嵌入式软件设计体系、中断机制、看门狗、可重入函数讲解。

仅以此博客记录日常学习工作中所思所得,水平有限,难登大雅,万望海涵。 1797

第三讲 嵌入式软件程序设计

3.0 软件开发模型 常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型。 瀑布模型是一种将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护六个基本活动,并且规定了它们自上而下、相互衔接的固定次序的系统开发方法。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证,它适用于需求明确或很少改动的项目。 演化模型主要针对事先不能完整定义需求的软件开发项目。根据用户的需求,首先开发核心系统。当核心系统投入运行之后,用户试用并有效地提出反馈。开发人员根据用户的反馈,实施开发的迭代

Leon的博客 386

SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则

上一节讲述了在没有MMU的CPU(如80251、MIPS M控制器系列、ARM cortex m系列)上实现虚拟内存管理的集成硬件设计方法,新设计的内存管理管理单元要实现虚拟内存管理还需要操作系统、代码分块(Bank)的支持。Bank设计是为了实现不同时刻运行的Bank(代码块)运行在同一块内存上,所以在运行之前操作系统需要将已存在内存的代码/数据进行缓存处理,并加载将要运行的Bank到该内存上。为了实现这个目的,需要明确几个设计原则。

嵌入式企鹅圈 6549

17、实时嵌入式软件测试描述执行引擎的设计与实现

本文介绍了实时嵌入式软件测试描述执行引擎 RT-ESTDEE 的设计与实现。该引擎采用分阶段模型,包括预处理、调度和执行三个主要过程,通过词法分析、语法分析、语义分析和中间指令生成,将测试描述代码转换为可执行的指令序列。系统通过测试任务调度器对任务进行调度,并在执行过程中实时驱动测试。设计中采用前端与后端分离的架构,提高了系统的可移植性。同时,符号表管理和异常处理机制确保了系统的稳定性和高效性。

jj890的博客 71

嵌入式软件开发笔试面试知识点总结-C语言部分

C语言 简述编译运行一段代码的过程   源程序是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件,源程序就是所写好的代码。   可执行程序,即常说的.exe程序,可以执行程序,完成计算机功能。在C语言中,.c文件就是所谓的源文件。   源程序到可执行程序的过程。在这个过程中,会发生如下的变化:   .c文件生成.obj文件的过程,称为编译,.obj文件生成到.exe文件的过程,称为链接。   .obj文件就是一个是程序编译生成的二进制文件,当.exe文件生成以后.obj文件就会被删除。

嵌入式与Linux那些事的博客 3727

嵌入式软件知识点总结

1.熟练掌握C/C++编程语言:嵌入式软件开发主要使用C/C++语言,因此需要熟练掌握这些语言的语法、数据结构和算法。 2.熟悉嵌入式系统架构和硬件知识:嵌入式软件开发需要对嵌入式系统的体系结构和硬件知识有一定的了解,才能进行底层驱动程序的编写和调试。 3.熟悉嵌入式开发工具和调试工具:嵌入式软件开发需要使用各种嵌入式 开发工具和调试工具,如Keil、IAR、J-Link等,因此需要熟悉这些工具的使用 方法和调试技巧。 4.熟悉嵌入式通信协议等嵌入式软件工程师八股文

嵌入式小程同学的博客 2042

Kubernetes集群资源优化实战:Volcano调度器如何帮你省下30%GPU算力

本文详细介绍了如何通过Volcano调度器的Binpack策略优化Kubernetes集群中的GPU资源利用率,解决AI模型训练中的资源碎片化问题。通过实战配置和调优指南,帮助用户提升30%的GPU算力利用率,显著降低任务等待时间和硬件成本。

weixin_30832143的博客 507

嵌入式软件可靠性设计的一些理解

嵌入式软件可靠性设计的一些理解 2018年03月29日 14:01:03 zn2016 阅读数:1215 0.前言 设备的可靠性涉及多个方面:稳定的硬件、优秀的软件架构、严格的测试以及市场和时间的检验等等。这里着重谈一下作者自己对嵌入式软件可靠性设计的一些理解,通过一定的技巧和方法提高软件可靠性。这里所说的嵌入式设备,是指使用单片机、ARM7、Cortex-M0,M3之类...

clkbit 1207

量化交易新手入门:从零开始搭建你的第一个Python交易策略(附完整代码)

本文为量化交易新手提供从零开始搭建Python双均线策略的完整指南,涵盖环境配置、数据获取、策略实现及风险管理等关键步骤。通过详细的代码示例和实践建议,帮助读者快速掌握量化交易的核心技术,并避免常见陷阱。文章特别强调Python在量化交易中的技术革新优势,适合希望进入金融科技领域的初学者。

weixin_26905487的博客 443

树莓派5外接RTX显卡:从PCIe到驱动的完整踩坑指南

在ARM架构与GPU加速的交汇点,树莓派5凭借其PCIe接口为DIY爱好者打开了外接独立显卡的大门。然而,PCIe x1的带宽限制、供电差异以及NVIDIA驱动在ARM Linux上的兼容性,使得这一组合成为一场高强度的系统底层排错训练。从理解PCIe总线原理、驱动加载机制到CUDA环境配置,每一步都充满挑战。本文以工程实践视角,梳理外接RTX显卡的完整流程、常见故障与性能瓶颈,并探讨其在边缘计算、AI推理等场景下的真实价值,帮助你理性评估这一实验性方案的可行性与替代路径。

chubaisheng8627的博客 351

嵌入式软件开发之程序编程规范(五)

在单片机开发或者需要开发 LCD 驱动的情况,需要自己通过工具生成需要使用的中文字库(大多是 GB2312 格式),则需要留意该文件的编码格式,如果文件的编码格式是 utf8,则不能正常对应,如下是LCD 驱动的部分使用的字体库(一般为 GB2312 编码)作为一个软件开发人员,应养成良好的编程习惯,随着编码越来越多,内容也会变得越来越多,规范化自己的编程有助于为了在程序代码量很大的时候,便于自己阅读,也便于别人阅读(团队合作),特别是作为一个合格的开发者,更需要规范自身写的程序代码,形成一种良好的习惯。

坚持 396

风光储互补微电网在偏远地区的应用实践:从建模到仿真全解析

本文深入解析了风光储互补微电网在偏远地区的应用实践,从系统设计到仿真建模全流程。通过Simulink等工具进行动态仿真,验证了系统在多种工况下的可靠性,并结合实际案例展示了其显著的经济和环保效益。文章为从业者提供了从技术路径到实施优化的全面指导。

weixin_29047545的博客 271

嵌入式软件设计之:标识符与命名规则

1. unix like 风格:单词用小写字母,单词之间用'_'连接。如:driver_led_init();2. windows 风格:单词连在一起,每个单词首字母大写。如:GetMainPwr();像windows系统不区分大小写字母,linux系统区分大小写字母,所以统一使用小写字母命名文件。数值或字符串等常量的定义,采用全大写字母+‘_’的方式。以函数要执行的动作命名,一般用动词或动词+名词的方式。如:get_current_time();文件命名统一采用小写字符。

HanGo_Linker的博客 863

深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用

本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。

weixin_29240711的博客 451

【C++】 详解 lower_bound 和 upper_bound 函数(看不懂来捶我!!!)

这两个函数是我在 LeetCode 上做题见到,看到不熟悉的函数 lower_bound 和 upper_bound让我感觉很难受,于是在C++ 官网去学习,例子就一个是最基础的,我看明白了。虽然是两个函数的接口就两个,但是有时候看别人使用的时候,里面参数还可以放不同的仿函数,我懵逼了。就去网上搜,但是大家讲解的都是它的第一个接口。我只能再把文档一遍一遍过,代码一遍遍的尝试,调试。最终通过查阅资料将其总结如下。

weixin_45031801的博客 9万+

c++编码规范_汽车嵌入式软件测试——嵌入式软件标准及规范简介

以前接手过一个软件项目,翻开模型和代码之后的几天,把模型开发人员问候了一个遍。此处略过若干字......不禁要问,建模规范、编码规范不是很好吗?为什么不用?制定相关规范的出发点就在于保证每个人能在短时间内理解他人的设计思路。但在实际使用时候,必然会增加工作量,到底这些规范都说了啥?怎样规范模型和代码质量的?请往下看在汽车嵌入式软件开发中,采用MISRA C规范作为代码级别规范,模型级别的...

weixin_39580715的博客 858

Android14 Qcom 从Framework到Driver带你连接WIFI(一)

前面已经讲完了WIFI打开的流程,那么通过UI这时候是可以选择需要连接的网络进行连接。从这里开始我们看连接的流程。

IAYLBL的博客 696

嵌入式软件行业的代码规范

嵌入式软件由于其运行环境的特殊性(如资源受限、实时性要求高、与硬件强耦合、安全性要求严格等),代码规范不仅关系到可读性和可维护性,更直接影响系统的可靠性和安全性。以下是嵌入式软件行业常见的。,具体规范需根据行业(如汽车用 MISRA+AUTOSAR,航空用 DO-178C)和企业需求定制。

qq_43582136的博客 1085

软件设计师---UML

软件设计师---UML

我从不打没有准备的仗! 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

嵌入式软件开发工程师面试指南_总结_嵌入式软件开发面经攻略

0x123456在内存中的存储方式 - 大端模式 低地址 -----> 高地址 0x12 | 0x34 | 0x56 - 小端模式 低地址 -----> 高地址 0x56 | 0x34 | 0x12指针方式来判断机器的大小端// 如果是小端模式则返回1,小端模式则返回0int a = 1;// 指针方式其实就是共用体的本质return b;printf("小端模式\n");elseprintf("大端模式\n");return 0;注意头文件中不可以放变量的定义!!!

2401_85015426的博客 2284

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

嵌入式软件可靠性设计

0.前言           设备的可靠性涉及多个方面:稳定的硬件、优秀的软件架构、严格的测试以及市场和时间的检验等等。这里着重谈一下作者自己对嵌入式软件可靠性设计的一些理解,通过一定的技巧和方法提高软件可靠性。这里所说的嵌入式设备,是指使用单片机、ARM7、Cortex-M0,M3之类为核心的测控或工控系统。        嵌入式软件可靠性设计应该从防错、判错和容错三方面

guojunjunjun2006的专栏 1183

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 嵌入式软件设计之:变量使用原则
下一篇: 使用单项链表存储多行字符串数据
μLink
博客等级 码龄5年 123粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值