1876|4

167

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

5个嵌入式硬件转软件小技巧 [复制链接]

硬件工程师应牢记以下五个技巧!

 

建议1:流程图第一,实现第二

 

当工程师首次迈入软件开发领域时,会有种强烈的诱惑力促使他们立刻投入工作并开始写代码。

这样的定式思维就等同于在电路逻辑图还未完成前就试图设计印刷电路板(PCB)。在着手开发软件时,抑制想写代码的冲动是至关重要的,应首先用流程图制定一个软件架构图。

这样的方法会使开发人员对应用所需的不同部分与组件形成一个概念,就像电路逻辑图可以告诉工程师需要哪些硬件元件一样。这样可确保程序整体建立在良好的组织和深思熟虑之上,减少程序调试时间,从长期看,这样做还可以节省时间、省去麻烦。

 

建议2:使用状态机控制程序流程

 

状态机是20世纪最伟大的软件发明之一。某应用程序往往可被分为多个状态机,每个状态机都控制该应用程序的特定部件。这些状态机都拥有自己的内部状态和状态转换,从中可看出软件如何与各种激励相互作用。

用状态机来设计软件,可简化软件的开发,使之模块化、可维护,并易于理解。目前拥有的广泛资源可演示状态机的理论和算法。

 

建议3:避免使用全局变量

 

在函数式编程的年代,函数要先于形式,程序员的唯一目标是尽可能地让程序按预期方式快速运行,而不用考虑程序结构或可重用性。这种编程范式会毫无顾虑地使用全局性变量,程序中的任何函数都可能修改它。

其结果就造成了变量被破坏的几率增加或变量被误用。在新推荐的面向对象范式中,应在最小的范围内定义变量并封装它们,以防止其他函数的误用或破坏。因此,建议您限制全局范围使用的变量数量。可在C语言中用外部关键字标识这些变量。

 

建议4:利用模块性的好处

 

无论问哪一名工程师,项目的哪部分最有可能延迟交付并超出预算?答案都是软件。软件往往是复杂的,且难以开发和维护,尤其是当整个应用都存在于单一文件或松散关联的多个文件中时。为了缓解可维护性、可重用性及复杂性,强烈建议程序员充分利用现代编程语言的模块化特性,将常用功能分解成模块。

以这样的方式分解编码,程序员就能着手建立函数与特性库,然后在一个接一个的应用中重用它们,从而通过连续测试而改善代码质量,同时也减少了时间,降低了开发成本。

 

建议5:保持中断服务例程的简单性

 

中断服务例程用来中断处理器对当前代码分支的执行,从而处理刚刚触发中断的外围设备。无论何时执行中断,都需要一定数量的开销,用于保存当前程序的状态、运行中断,然后将处理器回归原程序状态。

现代处理器要比多年前的处理器快得多,但仍需要考虑此花销。一般情况下,程序员都想把中断运行时间降至最低,以避免干扰主代码分支。这意味着中断应该短而简单。

中断中不应调用函数。此外,如果中断开始变得过于复杂或耗时,则仅应在必要时利用中断做最少量的工作,例如,将数据装入缓冲区并设置一个标志,然后让主分支处理输入的数据。这样做可保证大多数处理器周期被用于运行应用,而不是处理中断。

最新回复

硬件做的好好的为啥要转软件啊?又不是很好玩!   详情 回复 发表于 2022-9-14 12:48
点赞 关注

回复
举报

7

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

刚毕业的菜鸟,前来报到学习。非常感谢大佬的分享,学习了,谢谢

点评

我只是分享了我整理的还可以的笔记,能帮到你很开心,谢谢  详情 回复 发表于 2022-9-8 16:20
 
 

回复

2935

帖子

4

TA的资源

五彩晶圆(中级)

板凳
 

这贴子吓唬人有用,硬件转软件除非脑子有病,没事千万别转!要转也是转成高级嵌入式编程。而且嵌入式也主要是状态机和操作系统的知识,甚至是编译器的知识。其它没啥鸟用。

 
 
 

回复

167

帖子

0

TA的资源

一粒金砂(高级)

4
 
LauPngChg 发表于 2022-9-5 17:31 刚毕业的菜鸟,前来报到学习。非常感谢大佬的分享,学习了,谢谢

我只是分享了我整理的还可以的笔记,能帮到你很开心,谢谢

 
 
 

回复

107

帖子

0

TA的资源

一粒金砂(中级)

5
 

硬件做的好好的为啥要转软件啊?又不是很好玩!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表