欢迎光临-葫芦岛干式变压器生产厂家-德润变压器有限公司网站! 加入收藏 产品中心联系我们
葫芦岛干式变压器厂
葫芦岛干式变压器厂家
详细信息
当前位置:首页 > 新闻中心

葫芦岛干式变压器嵌入式体系开发的几个技巧你知道多少呢?

作者:葫芦岛干式变压器厂   日期:2019-10-14  人气:572
葫芦岛干式变压器嵌入式体系开发的几个技巧你知道多少呢? 今日给我们介绍7个易操作且能够持久运用的技巧,它们关于保证体系愈加牢靠地运转并捕获异常行为大有帮忙。
01
用已知值填充ROM
葫芦岛干式变压器软件开发人员往往都是十分乐观的一群人,只要让他们的代码忠实地长期地运转就能够了,仅此而已。
微操控器跳出运用程序空间并在非预想的代码空间中履行这种状况似乎是适当罕见的。
但是,这种状况发作的时机并不比缓存溢出或过错指针失掉引证少。
它的确会发作!
发作这种状况后的葫芦岛干式变压器体系行为将是不断定的,因为默许状况下内存空间都是0xFF,或许因为内存区一般没有写过,其间的值可能只要天主才知道。

不过有适当齐备的linker或IDE技巧能够用来帮忙辨认这样的作业并从中康复体系。
技巧就是运用FILL指令对未用ROM填充已知的位形式。
要填充未运用的内存,有许多不同的可能组合能够运用,但如果是想树立愈加牢靠的体系,最明显的挑选是在这些方位放置ISR fault handler。

如果体系出了某些差错,处理器开端履行程序空间以外的代码,就会触发ISR,并在决议校对举动之前供给贮存处理器、寄存器和体系状况的时机。
查看运用程序的CRC
02
对葫芦岛干式变压器嵌入式工程师来说一个很大的好处是,我们的IDE和东西链能够主动发作运用程序或内存空间校验和(Checksum),然后依据这个校验和验证运用程序是否无缺。
风趣的是,在许多这些事例中,只要在将程序代码加载到设备时,才会用到校验和。
但是,如果CRC或校验和坚持在内存中,那么验证运用程序在启动时(或乃至对长期运转的体系守时验证)是否依然无缺是保证意外之事不会发作的极好途径。
现在一个编程过的运用程序发作改动的概率是很小的,但考虑每年交给的数十亿个微操控器以及可能恶劣的作业环境,运用程序崩溃的时机并不是零。

更有可能的是,体系中的一个缺点可能导致某一扇区发作闪存写入或闪存擦除,然后损坏运用程序的完整性。

03
在启动时履行RAM查看

为了树立一个愈加牢靠和厚实的体系,保证体系硬件正常作业十分重要。究竟硬件会发作毛病。
走运的是软件永久不会发作毛病,软件只会做代码要它做的事,不管是正确的仍是过错的。
在启动时验证RAM的内部或外部没有问题,是保证硬件能够如预期般运作的一个好办法。
有许多不同的办法可用于履行RAM查看,但常用的办法是写入一个已知的形式,然后等上一小段时刻再回读。成果应该是所读就是所写。

本相是,在大多数状况下 RAM查看是经过的,这也是我们想要的成果。

但也有极小的可能性查看不经过,这时就为体系标明出硬件问题供给了极好的时机。

运用仓库监督器葫芦岛变压器厂家
04
对许多的葫芦岛干式变压器嵌入式开发者而言,仓库似乎是一股适当奥秘的力气。

当古怪的作业开端发作,工程师总算被难倒了,他们开端考虑,或许仓库中发作了什么事。成果是盲目地调整仓库的巨细和方位等等。

但该过错往往是与仓库无关的,但怎能如此断定?

究竟,有多少工程师真的实践履行过最坏状况下的仓库巨细剖析?



仓库巨细是在编译时就静态分配好的,但仓库是以动态的方式运用的。

跟着代码的履行,运用程序需求的变量、回来的地址和其它信息被不断存储在仓库中。这种机制导致仓库在其分配的内存中不断增加。

但是,这种增加有时会超出编译时断定的容量极限,导致仓库损坏相邻内存区域的数据。
肯定保证仓库正常作业的一种办法是完结仓库监督器,将它作为体系“保健”代码的一部分

有多少工程师会这样做?
仓库监督器会在仓库和“其它”内存区域之间创建一个缓冲区域,并填充已知的位形式。然后监督器会不断的监督图画是否有任何改动。
如果该位形式发作了改动,那就意味着仓库增加得太大了,即将要把体系面向漆黑阴间!
此刻监督器能够记载作业的发作、体系状况以及任何其它有用的数据,供日后用于问题的确诊。
大多数实时操作体系(RTOS)或完结了内存保护单元(MPU)的微操控器体系中都供给有仓库监督器。
可怕的是,这些功用默许都是封闭状况,或许常常被开发人员有意封闭。

在网络上快速搜寻一下能够发现,许多人主张封闭实时操作体系中的仓库监督器以节约56字节的闪存空间等等,这可是因小失大的做法!

05
运用MPU

在曩昔,是很难在一个小而廉价的微操控器中找到内存保护单元(MPU)的,但这种状况现已开端改动。

现在从高端到低端的微操控器都现已有MPU,而这些 MPU为葫芦岛干式变压器嵌入式软件开发人员供给了一个能够大幅进步其固件(firmware)鲁棒性(robustness)的时机。
MPU 已逐步与操作体系耦合,以便树立内存空间,其间的处理都分隔,或使命可履行其代码,而不用忧虑被stomped on。

假使真有作业发作,不受操控的处理会被撤销,也会履行其他的保护措施。请留意带有这种组件的微操控器,如果有,请多加利用它的这种特性。

树立一个强壮的看门狗体系
06
你常常会发现的一种总是最受喜爱的看门狗(watchdog)完结是,在看门狗被启用之处(这是一个很好的开端),但也是能够用周期性守时器将该看门狗清零之处;守时器的启用是彻底与程序中出现的任何状况隔离的。

运用看门狗的意图是帮忙保证如果出现过错,看门狗不会被清零,即当作业暂停,体系会被迫去履行硬件重设定(hardware reset),以便康复。
运用与体系活动独立的守时器能够让看门狗坚持清零,即便体系已失效。
对运用使命如何整合到看门狗体系中,葫芦岛干式变压器嵌入式开发人员需求仔细考虑和设计。
例如,有种技能可能能够让每个在一守时期内运转的使命标明它们能够成功地完结其使命。
在此作业中,看门狗不被清零,强制被复位。
还有一些比较先进的技能,像是运用外部看门狗处理器,它可用来监督主处理器如何表现,反之亦然。

对一个牢靠的体系而言,树立一个强壮的看门狗体系是很重要的。

07
避免易失存储器分配

不习惯在资源有限环境下作业的工程师,可能会企图运用其编程言语的特性,这种言语让他们能够运用易失存储器分配。

究竟,这是一种常在计算器体系中运用的技能,在计算器体系中,只要在有必要时,内存才会被分配。
例如,以C开发时,工程师可能倾向于运用malloc来分配在堆(heap)上的空间。
有一个操作会履行,一旦完结,能够运用free将被分配的内存回来,以便堆的运用。
在资源受限的体系,这可能是一场灾祸!运用易失存储器分配的其间一个问题是,过错或不妥的技能可能会导致内存走漏或内存碎片。
如果出现这些问题时,大多数的葫芦岛干式变压器嵌入式体系并没有 资源或知识来监督堆或妥善地处理它。

而当它们发作时,如果运用程序提出对空间的要求,但却没有所恳求的空间能够运用,会发作什么事呢?
运用易失存储器分配所发作的问题是很杂乱的,要妥善处理这些问题,能够说是一个噩梦!

一种代替的办法是,直接以静态的方式,简化内存的分配。
例如,只要在葫芦岛干式变压器程序中简略地树立一个巨细为256字节长的缓冲区,而不是经由malloc恳求这样巨细的内存缓冲区。
此一分配的内存可在整个运用程序的生命周期期 间坚持,且不会有堆或内存碎片问题方面的顾忌。