嵌入式开发工程师的7个易操作且可以长久使用的技巧
创始人
2025-10-07 12:07:01
0

成为一名未来的嵌入式开发工程师。 这是一个艰巨的过程,需要开发人员维护和管理系统的每一个比特和字节。 开发高可靠性嵌入式系统的技术有很多,从严格的、稳健的开发周期到严格的执行和系统测试。

明天我将向大家介绍7个易于操作且长期有效的方法,这些方法对于确保系统运行越来越可靠以及捕获异常行为有很大帮助。

用已知值填充 ROM

软件开发人员通常是一群思想非常开放的人,他们只是让他们的代码忠实地运行很长一段时间,仅此而已。 实际上,微控制器很少会跳出应用程序空间并在无法想象的代码空间中执行这些应用程序。 然而,发生这种情况的可能性不亚于缓冲区溢出或错误处理错误引用。 它确实发生了! 出现这种情况后系统的行为将是未定义的,因为显存空间默认是0xFF,或者因为显存区域一般不被写入,里面的值可能只有天知道。

然而,有相当完整的链接器或 IDE 方法可用于帮助识别此类风暴并从中恢复系统。 方法是使用 FILL 命令用已知的位模式填充未使用的 ROM。 有许多不同的可能组合来填充未使用的视频内存,但如果想要构建更可靠的系统,最明显的选择是将 ISRfaulthandler 放置在该位置。 如果发生系统错误并且处理器开始执行程序空间之外的代码,则会触发 ISR,并提供在决定校准操作之前存储处理器、寄存器和系统状态的机会。

检查应用程序的CRC

对于嵌入式工程师来说一个很大的用处就是我们的IDE和工具链可以手动形成应用程序或者内存空间的校准和(Checksum),从而根据这个完成应用程序的校准和验证。 有趣的是嵌入式系统软件教程,在许多这样的情况下,仅当程序代码加载到设备中时才使用校准和。

然而,如果 CRC 或校准并保留在视频内存中,则验证应用程序在启动时是否仍然完好无损(或者对于长时间运行的系统甚至定期验证)是确保不会发生意外情况的绝佳方法。 如今,已编程的应用程序发生更改的可能性很小,但考虑到每年出货的数十亿个微控制器以及潜在的恶劣操作环境,应用程序崩溃的可能性并非为零。 更有可能的是,系统中的错误可能会导致对磁道进行闪存写入或闪存擦除,从而损害应用程序的完整性。

启动时执行RAM检测

为了构建一个日益可靠和坚固的系统,确保系统硬件正常工作非常重要。 虽然硬件会出现故障。 (幸运的是,软件永远不会失败,它只是按照代码的指示去做,无论正确或错误)。 在启动时验证 RAM 内部或外部没有问题是确保硬件按预期运行的好方法。

嵌入式软件自学_嵌入式软件方法与技术_嵌入式系统软件教程

执行 RAM 测试的方法有很多种,但常见的方法是写入已知模式,然后等待一小段时间再读回。 结果应该是读到的就是写到的。 事实是,在大多数情况下,RAM 测试都会通过,这正是我们想要的。 但测试失败的可能性也很小,这为系统识别硬件问题提供了绝佳的机会。

使用堆栈监视器

对于许多嵌入式开发人员来说,堆栈实际上是一种相当神秘的力量。 当奇怪的事情开始发生时,工程师们终于被难住了,他们开始想知道堆栈中到底发生了什么。 其结果就是盲目地调整堆栈的大小和位置等等。 但错误往往与堆栈无关,但怎么能这么确定呢? 不过,有多少工程师实际上执行过最坏情况堆栈大小分析?

堆栈大小在编译时静态分配,但堆栈是动态使用的。 当代码执行时,应用程序所需的变量、返回地址和其他信息连续存储在堆栈中。 这些机制导致堆栈在其分配的视频内存中不断下降。 然而,这些下降有时会超出编译时确定的容量限制,导致堆栈损坏相邻视频内存区域中的数据。

绝对确保堆栈正常工作的一种方法是实现堆栈监视器作为系统“医疗保健”代码的一部分(有多少工程师这样做?)。 堆栈监视器在堆栈和“其他”内存区域之间创建一个缓冲区,并用已知的位模式填充它。 之后,监控器会持续监控图案是否有变化。 如果位模式发生变化,则意味着堆栈已经下降太多,即将将系统推入黑暗地狱! 此时,监视器可以记录风暴的发生、系统的状态以及任何其他有用的数据以供以后使用。 问题的诊断。

大多数实时操作系统 (RTOS) 或实现内存保护单元 (MPU) 的微控制器系统中都提供堆栈监视器。 可怕的是这个功能默认是关闭的,或者经常被开发者故意关闭。 网上快速搜救可以发现,很多人建议关闭实时操作系统中的堆栈监视器以节省56字节的闪存空间等,这是得不偿失的!

使用微处理器

过去,很难在小型、廉价的微控制器中找到内存保护单元 (MPU),但这种情况已经开始改变。 MPU 已应用于当今的低端到高端微控制器中,并且该 MPU 为嵌入式软件开发人员提供了显着提高其固件稳健性的机会。

MPU已逐渐与操作系统耦合,以方便构建视频内存空间嵌入式系统软件教程,其中处理是分离的,或者任务可以执行其代码而不必担心被踩踏。 如果确实发生了某些情况,则会取消不受控制的处理并实施其他保护措施。 留意带有这些组件的微控制器,如果有的话,利用这些功能。

构建强大的看​​门狗系统

您经常会发现,最喜欢的看门狗实现是启用看门狗的位置(这是一个好的开始),但也可以使用周期性计时器来清除看门狗; 定时器的启用与程序中发生的任何事情完全隔离。 使用看门狗的目的是帮助确保如果发生错误,看门狗不会被清除,即当工作暂停时,系统将被迫执行硬件复位(hardware Reset)以便于恢复。 使用独立于系统活动的定时器,即使系统被禁用,看门狗也可以保持清零状态。

嵌入式开发人员需要仔细考虑和设计如何将应用任务集成到看门狗系统中。 例如,一种技术可能是允许每个任务在特定时间段内运行,以表明它们可以成功完成其任务。 在这场动荡中,看门狗没有被清除,被迫重置。 还有一些更先进的技术,例如使用外部看门狗处理器,可用于监视主处理器的行为方式,反之亦然。 构建强大的看​​门狗系统对于可靠的系统非常重要。

避免易失性内存分配

不习惯在资源有限的环境中工作的工程师可能会倾向于使用其编程语言的功能,这些功能允许他们使用易失性内存分配。 尽管如此,这是一种在估计器系统中经常使用的技术,其中仅在必要时才分配视频内存。 例如,在用C语言开发时,工程师可能倾向于使用malloc在堆上分配空间。 将执行一项操作。 完成后可以使用free返回分配的显存,方便堆使用。

在资源受限的系统上,这可能是一场灾难! 使用易失性内存分配的问题之一是错误或不正确的技术可能会导致视频内存泄漏或碎片。 大多数嵌入式系统没有资源或知识来监视堆或在出现此类问题时妥善处理它。 当他们这样做时,如果应用程序请求空间,但所请求的空间都不可用,会发生什么?

使用易失性内存分配所产生的问题非常复杂,妥善处理这个问题可以说是一场噩梦! 另一种方法是直接以静态的方式简化显存的分配。 例如,只需在程序中构建一个256字节长的缓冲区,而不是通过malloc请求这个大小的视频内存缓冲区。 可以在应用程序的整个生命周期中维护分配的视频内存,而无需担心堆或视频内存碎片问题。

推理

以上关于嵌入式开发的教程可以让开发者获得更好的嵌入式系统的方法。 所有这些技术都是让设计人员能够开发更可靠的嵌入式系统的技巧。

相关内容

热门资讯

思... 本文目录导航: 思迅商业之星v7前台收银赠送配置如何操作 思迅5.1商业之...
i... 本文目录导航: Inventor如何创立并保留模板 autodesk in...
m... 本文目录导航: MT治理器怎样用 mt治理器怎样用 怎样经...
网... 本文目录导航: 网络机顶盒怎样下载第三方软件,求解 怎样在电视盒子上装置第...
怎... 本文目录导航: 网络机顶盒装置不进软件怎样回事?怎样处置 亿格瑞网络机顶盒...
间... 本文目录导航: 电脑硬盘关上时 间接显示选用关上形式-选用程序的对话框 怎样办 ...
电... 本文目录导航: 创维。电视怎样装置投屏? 电视上从哪里可以找到,投屏? ...
求... 本文目录导航: 求激光切割机经常使用说明书和产品合格证!!!!!! 光纤激...
有... 本文目录导航: 有谁知道可以把手机在线变成平板在线的装逼软件? 手机上有没...
i... 本文目录导航: inventive是什么意思? inventive 用英...
【... 点击“上方蓝字”关注公众号获取更新消息点击上方关注,每天白嫖免费资源「幕后Muhou」专注于给后期爱...
刷个抖音,下载个APP,100...   当前,网络上充斥着大量商品现货订购交易软件的推广信息,宣传话术极具诱惑力,诸如“五元起投”“在家...
网... 本文目录导航: 网络机顶盒不用u盘怎样按第三方软件 怎样把软件装置到电视盒...
华... 使用华为电脑并且升级了华为电脑管家到12.0版本的用户一定知道,华为电脑管家12.0多了一个“控制中...
如... 我们首先要厘清以下几个问题:聊天软件是基于1对1聊天还是群组聊天还是都需要?是移动端软件还是网页端软...
W... BT下载,你想到哪个软件? 相信大多数人第一时间会想到迅雷,其次就是qBittorrent、uTor...
科...  · 中国(南京)软件谷双创服务中心 · 中国(南京)软件谷创新创业服务中心围绕企业全生命周期打造一...
智... 有网友想知道:招标文件如何准备? 小编的建议是:可以使用一些专业的招标文件制作软件。 很多专业的招标...
聚... 八六三软件年会盛典暨年终表彰大会时光荏苒,如白驹过隙。岁月如斯,然赤心如故。2023已悄然离去,这一...
什... 在上一篇文章中,我们解释了如何直接从 COMSOL 软件中的 COMSOLD Desktop® 环境...