嵌入式,几个易操作且可以长久使用的技巧

嵌入式大杂烩 2024-04-18 11:50

成为一个正式的嵌入式主板开发工程师,是一个艰辛的过程,需要开发人员维护和管理系统的每个比特和字节。从规范完善的开发周期到严格执行和系统检查,开发高可靠性嵌入式系统的技术有许多种。

今天给大家介绍7个易操作且可以长久使用的技巧,它们对于确保系统更加可靠地运行并捕获异常行为大有帮助。

技巧1——用已知值填充ROM

嵌入式软件开发人员往往都是非常乐观的一群人,只要让他们的代码忠实地长时间地运行就可以了,仅此而已。微控制器跳出应用程序空间并在非预想的代码空间中执行这种情况似乎是相当少有的。

然而,这种情况发生的机会并不比缓存溢出或错误指针失去引用少。它确实会发生!发生这种情况后的系统行为将是不确定的,因为默认情况下内存空间都是0xFF,或者由于内存区通常没有写过,其中的值可能只有上帝才知道。

不过有相当完备的linker或IDE技巧可以用来帮助识别这样的事件并从中恢复系统。技巧就是使用FILL命令对未用ROM填充已知的位模式。要填充未使用的内存,有很多不同的可能组合可以使用,但如果是想建立更加可靠的系统,最明显的选择是在这些位置放置ISR fault handler。

如果系统出了某些差错,处理器开始执行程序空间以外的代码,就会触发ISR,并在决定校正行动之前提供储存处理器、寄存器和系统状态的机会。

技巧2——检查应用程序的CRC

对嵌入式工程师来说一个很大的好处是,我们的IDE和工具链可以自动产生应用程序或内存空间校验和(Checksum),从而根据这个校验和验证应用程序是否完好。有趣的是,在许多这些案例中,只有在将程序代码加载到设备时,才会用到校验和。

然而,如果CRC或校验和保持在内存中,那么验证应用程序在启动时(或甚至对长时间运行的系统定期验证)是否仍然完好是确保意外之事不会发生的极好途径。

现在一个编程过的应用程序发生改变的概率是很小的,但考虑每年交付的数十亿个微控制器以及可能恶劣的工作环境,医疗仪器应用程序崩溃的机会并不是零。更有可能的是,系统中的一个缺陷可能导致某一扇区发生闪存写入或闪存擦除,从而破坏应用程序的完整性。

技巧3——在启动时执行RAM检查

为了建立一个更加可靠和扎实的系统,确保系统硬件正常工作非常重要。毕竟硬件会发生故障。(幸运的是软件永远不会发生故障,软件只会做代码要它做的事,不管是正确的还是错误的)。在启动时验证RAM的内部或外部没有问题,是确保硬件可以如预期般运作的一个好方法。

有许多不同的方法可用于执行RAM检查,但常用的方法是写入一个已知的模式,然后等上一小段时间再回读。结果应该是所读就是所写。

真相是,在大多数情况下 RAM检查是通过的,这也是我们想要的结果。但也有极小的可能性检查不通过,这时就为系统标示出硬件问题提供了极好的机会。

技巧4——使用堆栈监视器

对许多的嵌入式开发者而言,堆栈似乎是一股相当神秘的力量。当奇怪的事情开始发生,工程师终于被难倒了,他们开始思考,也许堆栈中发生了什么事。结果是盲目地调整堆栈的大小和位置等等。

但该错误往往是与堆栈无关的,但怎能如此确定?毕竟,有多少工程师真的实际执行过最坏情况下的堆栈大小分析?

堆栈大小是在编译时就静态分配好的,但堆栈是以动态的方式使用的。随着代码的执行,应用程序需要的变量、返回的地址和其它信息被不断存储在堆栈中。这种机制导致堆栈在其分配的内存中不断增长。然而,这种增长有时会超出编译时确定的容量极限,导致堆栈破坏相邻内存区域的数据。

绝对确保堆栈正常工作的一种方法是实现堆栈监视器,将它作为系统“保健”代码的一部分(有多少工程师会这样做?)。堆栈监视器会在堆栈和“其它”内存区域之间创建一个缓冲区域,并填充已知的位模式。

然后监视器会不断的监视图案是否有任何变化。如果该位模式发生了改变,那就意味着堆栈增长得太大了,即将要把系统推向黑暗地狱!此时监视器可以记录事件的发生、系统状态以及任何其它有用的数据,供日后用于问题的诊断。

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

技巧5——使用MPU

在过去,是很难在一个小而廉价的微控制器中找到内存保护单元(MPU)的,但这种情况已经开始改变。现在从高端到低端的微控制器都已经有MPU,而这些 MPU为嵌入式软件开发人员提供了一个可以大幅提高其固件(firmware)鲁棒性(robustness)的机会。

MPU 已逐渐与操作系统耦合,以便建立内存空间,其中的处理都分开,或任务可执行其代码,而不用担心被stomped on。倘若真有事情发生,不受控制的处理会被取消,也会执行其他的保护措施。请留意带有这种组件的微控制器,如果有,请多加利用它的这种特性。

技巧6——建立一个强大的看门狗系统

你经常会发现的一种总是最受喜爱的看门狗(watchdog)实现是,在看门狗被启用之处(这是一个很好的开始),但也是可以用周期性定时器将该看门狗清零之处;定时器的启用是完全与程序中出现的任何情况隔离的。

使用看门狗的目的是协助确保如果出现错误,看门狗不会被清零,即当工作暂停,系统会被迫去执行硬件重设定(hardware reset),以便恢复。使用与系统活动独立的定时器可以让看门狗保持清零,即使系统已失效。

对应用任务如何整合到看门狗系统中,嵌入式主板开发人员需要仔细考虑和设计。例如,有种技术可能可以让每个在一定时期内运行的任务标示它们可以成功地完成其任务。

在此事件中,看门狗不被清零,强制被复位。还有一些比较先进的技术,像是使用外部看门狗处理器,它可用来监视主处理器如何表现,反之亦然。对一个可靠的系统而言,建立一个强大的看门狗系统是很重要的。

技巧7——避免易失存储器分配

不习惯在资源有限环境下工作的工程师,可能会试图使用其编程语言的特性,这种语言让他们可以使用易失存储器分配。毕竟,这是一种常在计算器系统中使用的技术,在计算器系统中,只有在有必要时,内存才会被分配。

例如,以C开发时,工程师可能倾向于使用malloc来分配在堆(heap)上的空间。有一个操 作会执行,一旦完成,可以使用free将被分配的内存返回,以便堆的使用。

在资源受限的系统,这可 能是一场灾难!使用易失存储器分配的其中一个问题是,错误或不当的技术可能会导致内存泄漏或内存碎片。如果出现这些问题时,大多数的嵌入式系统并没有 资源或知识来监视堆或妥善地处理它。而当它们发生时,如果应用程序提出对空间的要求,但却没有所请求的空间可以使用,会发生什么事呢?

使用易失存储器分配所产生的问题是很复杂的,要妥善处理这些问题,可以说是一个噩梦!一种替代的方法是,直接以静态的方式,简化内存的分配。例如,只要在 程序中简单地建立一个大小为256字节长的缓冲区,而不是经由malloc请求这样大小的内存缓冲区。此一分配的内存可在整个应用程序的生命周期期 间保持,且不会有堆或内存碎片问题方面的顾虑。

以上嵌入式开发的教程可以让开发技术的人员获取更好嵌入式系统的办法。所有这些技术都是让设计者可以开发出可靠性更高嵌入式系统的秘诀。

本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

精彩内容:
嵌入式中,日志调试法的一些规则!
嵌入式开发调试利器 | Sanitizer检测器
汇总嵌入式中一些实用的辅助工具!
易懂 | 手把手教你编写你的第一个上位机
来了解一下较受欢迎的Git可视化工具!
轻如羽翼,超轻量的嵌入式数据库!
推荐一个好用的嵌入式静态代码扫描工具!
嵌入式中,升级时涉及的协议兼容性问题?
嵌入式,可测试性软件设计!
几个备受推崇的C语言项目,你了解几个?

嵌入式大杂烩 专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!
评论 (0)
  • 在现代电子设备遍布的时代,电源模块的设计与应用成为了电子工程领域中的核心议题。而LDO(低压差线性稳压器)电源模块,因其出色的线性特性和稳定性,在众多应用中备受青睐。为了满足不断增长的电子设备性能需求,如何优化LDO电源模块PCB设计,实现更高的电源效率和稳定性,成为了工程师们迫切需要解决的问题。LDO在电源设计中扮演着至关重要的角色,能够在输入输出间维持较小的压差,使得线性电压调整更为高效。当输出电压在正常工作状态下下降至额定输出电压的98%时,对应的输入与输出电压差即为Drop电压。值得注意
    丙丁先生 2024-05-22 09:24 87浏览
  •     阅读IEC标准,一个办法是看GB和GBT标准。电工学和电子学方面的国家标准(GB)很多来自IEC标准。将IEC标准完全汉化(IDT,EQU)或者略加修改(MOD),就成了 GB 或者 GB/T 标准了。由于这样的关联,导致“国家标准全文公开”这个工具没啥用,因为版权保护的缘故,看不到。    偶然发现下面这个网站,可以方便地查询IEC标准对应哪些GB标准。    国家标准 - 全国标准信息公共服务平台  &n
    电子知识打边炉 2024-05-21 22:10 79浏览
  •     确定产品参数,或者器件选型,都会遇到数值序列。比如功率MOSFET的耐压,20V、30V、40V和60V,跳过了50V。做USB充电头,输出功率 5W、10W、2W、65W、140W。这样的例子很多。    ISO组织定义了R优选数系,这是一个范围1到10的几何级数数列。当供应链普遍采用R优选数系时,可以使技术和商业变得便捷和经济。R是为了纪念一位名叫 Charles Renard的法国上校,他用优先数把军用气球所需的425种直径的绳索,减少到17
    电子知识打边炉 2024-05-22 22:20 73浏览
  • 目录  引言  SD卡的发展  SD NAND卡的特性与优势  二代SD NAND五大优点  SD NAND六大主要优势  现有产品分类  实际应用场景  SD NAND芯片推荐线路连接:  CSNP4GCR01-AMW的介绍  基础使用例程  例程环境简介  硬件设备及电路  项目创建流程  代码  例程结果  对比市场现有产品  创世半导体(CS)是全球首家推出SD NAND FLASH产品的厂商,SD NAND的出现大大降低了使用 NAND FLASH 的技术难度。  ——————————
    雷龙发展 2024-05-21 17:40 85浏览
  • 2020年9月,中国仪器仪表行业协会传感器分会、中国仪器仪表学会传感器分会、中国仪器仪表学会仪表元件分会、传感器国家工程研究中心四个中国传感器产业权威机构,联合发布了《中国传感器(技术、产业)发展蓝皮书》,堪称当时对中国传感器产业研究最权威的报告。报告中,特别提到当时中国传感产业的现状令人担忧,产业空心化现象不容忽视:“国内中高端传感器进口占比达 80%,传感器芯片进口更是达90%,国产化缺口巨大。其中数字化、智能化、微型化等高新技术产品严重短缺。国家重大装备所需高端产品主要依赖进口。”▲来源:
    传感器专家网 2024-05-22 10:16 107浏览
  • 随着中国半导体及传感器产业的快速发展,以及中国经济的升级和转型,在过去10年,传感器及半导体产业,有大量的贸易型企业,向自主研发转型,通过拥有完全自主知识产权的传感器芯片等高附加值、高技术的产品研发,向产业链上游进军,书写中国智造传奇。围绕传感器及信号链,中国诞生了许多优秀的IC芯片设计企业。目前中国传感器芯片设计产业现状如何?国产传感器芯片企业面临哪些困境?在传感器IC上中国企业取得了哪些突破?国产传感器与国际大厂传感器差距在哪里?此前,在Sensor Shenzhen 2024上,记者采访了
    传感器专家网 2024-05-21 17:36 79浏览
  • 科技云报道原创。随着大模型从理论探索走向实际应用,大模型的落地正在考验千千万万的企业。首要且核心的关注点,无疑是从数据做起。数据,作为大模型的“燃料”,其质量、多样性与规模直接决定了大模型性能的天花板。因此,建立一套高效、可靠的数据处理流程,确保数据的质量与合规性,成为了大模型落地的基石。然而,构建大模型的数据能力并不容易。如何找到合适的存储来承载海量数据?如何清洗加工原始数据?如何有效地进行数据治理?如何将现有数据快速结合模型产生独特价值?种种问题横亘在企业和大模型之间,成为生成式AI时代的数
    科技云报到 2024-05-21 14:48 125浏览
  • 展会时间:2024年6月12-14日展会地点:上海世博展览馆3号馆 H3-237 展位很高兴地告诉大家,Raspberry Pi 团队今年将首次参加在上海举办的 Embedded World上海国际嵌入式展。这是一个千载难逢的机会,让我们一起前往探索这个备受期待的技术盛会。​Raspberry Pi 作为当下最流行的微型计算机之一,将会在本次展会上大放异彩。大家可以看到 Raspberry Pi 的全系列产品,包括最新的单板计算机Raspberry Pi 5、Raspberry Pi Pico、
    树莓派开发者 2024-05-21 16:33 110浏览
  • BOR(Brown-out Reset)是一种低电压复位,当电源电压低于设定的阈值时,系统会自动复位。这种复位通常用于保护硬件设备,防止因电压过低导致的设备损坏。 IWDT_Reset(Independent Watchdog Timer Reset)是一种独立看门狗定时器复位,当系统运行过程中出现故障或死循环时,看门狗定时器会在一定时间后自动复位系统。这种复位通常用于检测和修复软件故障。以下是一个简单的BOR和IWDT_Reset的代码示例: ```c #include "stm32f4x
    丙丁先生 2024-05-22 12:39 73浏览
  • 亲爱的媒体与自媒体创作者:英国树莓派(Raspberry Pi)公司即将于6月份首次登陆上海,参加Embedded World上海国际嵌入式展!这是我们首次踏足这一展会,我们非常期待与您共同见证这个历史时刻。作为树莓派公司在Embedded World上海的首秀,我们诚挚邀请您免费加入我们的团队,共同探索树莓派的魅力。您将有机会在展台上与我们进行深入交流,并可进行拍照、录制视频、直播活动等。此外,我们还将提供采访的机会,让您与树莓派公司的英国高管和技术专家进行深度对话(现场提供翻译人员),了解最
    树莓派开发者 2024-05-22 16:35 75浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦