文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在没有硬件的情况下开发软件需要注意什么?

2024-12-02 07:53

关注

以应用为中心的开发

在当今的现代开发周期中,嵌入式开发人员需要做出的第一个思维转变是没有硬件。我们不是从硬件开始,然后一路向上,而是将注意力和开发重点放在应用程序上。开发人员应该关注应用程序功能、它们之间的关系以及它们操作的数据。

专注于应用程序而不是硬件具有几个主要优势。首先,它将开发人员的注意力转移到应用程序功能上。其次,以应用程序为重点,开发人员可以识别各种功能所需的数据作为输入和输出,以及这些数据如何在应用程序中流动。这种对数据的关注具有抽象和消除硬件依赖性的额外好处!最后,以应用程序为中心的开发允许我们在没有硬件的情况下模拟、建模和测试我们的应用程序代码。这为我们提供了创建自动化回归测试、最小化目标调试时间和在 PC 环境中测试我们的应用程序的能力,这比在目标环境中更容易工作。

没有按钮!

让我们看一个简单的例子。嵌入式开发人员经常需要编写一个可以消除开关抖动的函数。传统上,开发人员会定期调用他们的 debounce 函数,该函数将读取 GPIO 线,然后运行 debounce 算法。这里的问题是去抖动功能直接依赖于硬件!如果GPIO线发生变化,需要更新功能!将硬件更改为新的微控制器,该功能需要使用新的 GPIO 驱动程序调用进行更新。对功能进行单元测试感兴趣?这要困难得多,因为该功能取决于硬件。

显然,这不是一个很好的解决方案,即使我们一直这样编写代码!相反,我们需要认识到没有按钮!只有数据包含代表按钮的状态。按钮去抖功能应该采用代表当前开关状态的参数,而不是让去抖开关直接访问 GPIO 硬件。这将功能与硬件解耦,并允许在没有硬件的情况下对功能进行完全测试!只需传入数据以测试开关去抖算法是否正常工作!这也意味着我们可以构建回归测试!

设计无硬件系统

一般来说,嵌入式开发人员可以遵循几个步骤来编写他们的应用程序代码,从而打破他们的硬件依赖关系。

首先,识别硬件生成或使用的数据。该数据将成为传递给应用程序功能函数的参数。对于 debounce 示例,这只不过是 ButtonState。函数原型可能如下所示:

bool Button_Debounce(ButtonState_t const ButtonState);

接下来,创建一个可用于获取硬件状态的抽象。 在 PC 上运行时,此功能将仅链接到可以模拟硬件的数据生成器。 当硬件存在时,该函数链接到返回硬件状态的 GPIO 驱动程序。 这使开发人员可以在有或没有硬件的情况下进行操作。 这将导致应用程序代码如下所示:

bool ButtonDebounced = false;
ButtonState_t ButtonState = Button_StateGet();
ButtonDebounced = Button_Debounce(ButtonState);

最后,还可以进行抽象以将数据发布到硬件。这对于去抖动算法来说不是必需的,但如果应用程序组件要控制 LED、阀门、电机等,则可能是必需的。这再次允许开发人员在 PC 或硬件上运行应用程序之间切换 .

结论

希望提高代码稳健性、降低总体成本和缩短上市时间的嵌入式开发人员可以从编写没有硬件的应用程序代码中受益匪浅。这并不总是可行或值得的,但对于许多现代系统来说,这是一种可以显着改进系统设计的技术。它的好处是使应用程序易于测试,并最大限度地减少了在目标上调试所花费的时间。


来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯