|
若何处理软件中的硬件题目
朗锐智科2019-12-06 17:59:33
硬件和软件的开辟进程似乎有些类似:公布了需求标准;经心设想;成果利用一种特别的说话停止编码(用于硬件的HDL和用于软件的编程说话)。可是类似之处到此为止。
启动硬件生产时,硬件设想会在某些时辰解冻。在此之落后行变动凡是会很麻烦且高贵。另一方面,软件永久不会完成。调剂和完善将延续到最初一刻。调剂代码并停止重建很是轻易。这既是优点也是弱点。
由于软件可以延展性强,是以有机遇停止普遍的测试并修复仍然存在的毛病。灵活性的晦气之处在于,人们偏向于在最初时辰停止增强和完善。“爬动的文雅”是实在的危险。这些应战都是与软件相关的,但情况越来越糟……
假如在解冻设想后检测到硬件毛病怎样办?
硬件题目凡是高贵且处置未便。一个非经常见的处理计划是“将其修复在软件中”。这样的修复能够是眇乎小哉的,软件工程师应当很兴奋可以为他们的硬件同业供给帮助。可是,在其他情况下,对代码的调剂能够会完全侵害软件设想。
设想中的毛病与“怪异”之间存在一定水平的模糊性,“怪异”对于硬件开辟职员来说并不希奇,但需要包括在软件中。我们可以用一些示例来说明软件需要在哪些地方包容硬件的怪异之处。
翻转位
嵌入式系统中最简单的输入装备是开关或按钮。凭直觉,可以预期处于“封闭”位置的开关(或未按下的按钮)将显现为0值,并在翻开(或按下按钮)时转换为1。可是,在几近一切情况下,情况都是相反的:封闭开关显现为1并转换为0。这是由于它简化了硬件设想,可以将输入引脚“上拉”为逻辑1并将其接地(下拉为0)。 )暗示输入。固然,一旦开辟职员对此有所领会,在软件中的包容就变得眇乎小哉了。
弹跳
关于开关或按钮的另一个自然期望是,它将仅在两种逻辑状态之间转换。可是,机械开关的行为凡是不是很理想-触点闭合,然后弹跳开一次或屡次,然后下降到闭合位置。此行为的成果是,预期的从1到0的过渡能够会快速持续地反复几次,未经检查,能够会被毛病地诠释。设想一下按下一个按钮会增加一个设备,凡是是会将其增加2或3而不是1!
这可以牢固在硬件中,但这要支出复杂性和材料清单的价格。多年来,“修复软件”是最好的挑选,而且已经设想了很多“反跳”算法。
一切都与机会有关
一些复杂的外围硬件能够会响应软件写入寄存器的号令。硬件经过履行一系列行动来响应号令的情况并很多见,在此时代它不会响应其他号令。这不是故障,由于硬件设想职员希望装备以此方式运转。可是,从软件开辟职员的角度来看,这似乎是分歧逻辑的。
这给软件带来了应战。需要包括平安办法,以便在发出号令时,必须经过一段适当的时候才能编写另一条号令。在简单的利用中,某种提早循环能够就充足了。在更复杂的软件中,能够没法在余暇循环中占用CPU,由于还有其他处置要做。在这类情况下,需要更复杂的计机会制。
大端或小端
有多种方式可以暗示一个单词(甚至一个字节)内的数据。一个简单的例子是单词中字节的顺序。他们能够是最不重要的第一或最重要的。两种方式都差池,而且分歧的CPU历来都是小端或大真个。是以,几近不成避免的是,链接在一路的两个子系统能够对数据暗示有分歧的想法。
这是在软件中修复的另一种候选方式,仅字节交换或循环。应战在于将接口的利用当地化到履行转换的软件的一小部分。
增加功用
除了躲避硬件中的毛病和怪异之外,以节省本钱为名,大概由于该功用在开辟进程的前期就被胡想了,可以在硬件中有用实施的功用可以卸载到软件中并很多见。
这是微处置器控制的替换品,用于伺服液压系统上的大型硬接线控制面板。那时,在微处置器中具有如此庞大的计较才能的想法使人鼓舞,固然,开辟职员对此感应迷恋。硬件设想已经完成,并在很是好的时候内解冻,使生产可以按计划停止。在新功用的想法众多之前,软件开辟一向停顿顺遂。该软件被迫屈就(即,实在时行为遭到侵害),是以必须停止严重设想检查。
隐藏硬件题目:驱动法式
持久以来,人们已经熟悉到,拜候和控制硬件对于没有经历的或缺少经历的嵌入式软件开辟职员能够是一个特别的应战。成果,出现了装备驱动法式的概念。驱动法式只是一个很小的软件,它封装了利用某些硬件的拙笨并供给了与利用法式代码的公道接口。
它是在驱动法式中包容了硬件设想的怪癖,理想情况下,应当在其中停止调剂以处理意外的功用或非功用。
领会更多
收藏
告发 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|