浅谈软件硬件联系
2013-06-05 13:47
225 查看
软件硬件看似两个分家的东西,其实内在有千丝万缕的联系。我举一些小例子:
开关电源的电感在一个时钟周期内,要满足伏秒平衡。物理意义是,开关周期内电感吸收的能量和释放的能量应该是相等的。否则,系统不会平衡,不稳定。对于软件系统,特别是复杂的大型系统,虽然有严谨的理论去判断一个软件模块的稳定性。但对于程序员调试,并不是一个简单轻松的过程。可以借鉴伏秒平衡的思路,一个大型的代码在一个状态结束时,除了一些统计变量之外,应该是回到最初的状态,具体的体现:内存释放与申请,系统输出的结果等应和最初状态一致。栈在没有中断回到初始位置时,应该也是回到最初位置的。否则,系统会不稳定。
关于初始化,一直不被软件工程师所重视。硬件工程师有时候也会忽视这个问题。软件中的初始化,从宏观上讲,模块的初始化;启动操作系统的准备工作;任务栈,堆的准备。从微观上讲,变量的初始化,全局构造函数,全局变量初始化。对于硬件,上电的顺序;芯片管脚上电的状态。数字芯片的初始逻辑状态。模拟信号的初始范围等等。有一些音箱,开机的时候会砰一声。这个是上电产生的电流冲击,比较难抑制。消音电路很难做好。一些高级的CPU,会有上电顺序要求。一些可靠的系统,要求上电,掉电,信号都必须有确定的状态。单纯的硬件去做,有时候很困难。可能需要软件硬件一起结合着做。Bootloader 为了后续的应用代码做了很多初始化工作。
在软件抽象一些客观事物时,可以参考硬件的抽象。比如说以太网相对于处理器是个低速设备,为了解决无休止的中断,DMA 可以大大缓解处理器的压力。如果处理器抽象成一个类、以太网抽象成一个类,那么DMA可以看作一个通信关联类了。其参数的抽象和深入的分析,对软件设计和硬件设计都是个极大的促进。
芯片是别人给你的库函数。完成各种各样的功能。软件开发过程中,需要了解库函数的执行行为,参数范围,使用技巧,应用场景。其实,芯片的应用也是一样的。需要了解管脚的功能定义,芯片的动作行为,应用场景,功耗等等各方面的信息。了解得越细,对应用越有帮助。
软件硬件的结合,主要是洞悉背后解决问题的方法,处理实际的工程问题。
开关电源的电感在一个时钟周期内,要满足伏秒平衡。物理意义是,开关周期内电感吸收的能量和释放的能量应该是相等的。否则,系统不会平衡,不稳定。对于软件系统,特别是复杂的大型系统,虽然有严谨的理论去判断一个软件模块的稳定性。但对于程序员调试,并不是一个简单轻松的过程。可以借鉴伏秒平衡的思路,一个大型的代码在一个状态结束时,除了一些统计变量之外,应该是回到最初的状态,具体的体现:内存释放与申请,系统输出的结果等应和最初状态一致。栈在没有中断回到初始位置时,应该也是回到最初位置的。否则,系统会不稳定。
关于初始化,一直不被软件工程师所重视。硬件工程师有时候也会忽视这个问题。软件中的初始化,从宏观上讲,模块的初始化;启动操作系统的准备工作;任务栈,堆的准备。从微观上讲,变量的初始化,全局构造函数,全局变量初始化。对于硬件,上电的顺序;芯片管脚上电的状态。数字芯片的初始逻辑状态。模拟信号的初始范围等等。有一些音箱,开机的时候会砰一声。这个是上电产生的电流冲击,比较难抑制。消音电路很难做好。一些高级的CPU,会有上电顺序要求。一些可靠的系统,要求上电,掉电,信号都必须有确定的状态。单纯的硬件去做,有时候很困难。可能需要软件硬件一起结合着做。Bootloader 为了后续的应用代码做了很多初始化工作。
在软件抽象一些客观事物时,可以参考硬件的抽象。比如说以太网相对于处理器是个低速设备,为了解决无休止的中断,DMA 可以大大缓解处理器的压力。如果处理器抽象成一个类、以太网抽象成一个类,那么DMA可以看作一个通信关联类了。其参数的抽象和深入的分析,对软件设计和硬件设计都是个极大的促进。
芯片是别人给你的库函数。完成各种各样的功能。软件开发过程中,需要了解库函数的执行行为,参数范围,使用技巧,应用场景。其实,芯片的应用也是一样的。需要了解管脚的功能定义,芯片的动作行为,应用场景,功耗等等各方面的信息。了解得越细,对应用越有帮助。
软件硬件的结合,主要是洞悉背后解决问题的方法,处理实际的工程问题。
相关文章推荐
- 浅谈软件硬件联系
- 浅谈软件硬件联系
- 代码(软件)是怎么和硬件发生联系的?
- 浅谈在线ERP软件与企业的发展联系
- 浅谈 企业级别 硬件 +软件 整理架构
- 软件与硬件设计的区别和联系
- 盘点英特尔、苹果、高通、AMD 处理器重大 Bug,硬件的坑软件能填?
- VB中使用WMI获取系统硬件和软件有关信息
- 浅谈软件测试的核心价值
- 浅谈软件开发过程及项目管理
- 基于Wolf32F031 自由评估板的LCD display(SPI接口)实验硬件原理及软件API使用方法(适用于STM32F030/031)
- 浅谈网管软件中的事件归并的设计及其作用
- 开幕式上的蓝屏:是硬件问题还是软件问题呢?
- 软件开发周期延期浅谈
- 安装 配置SharePoint Server 2016 的硬件和软件要求
- 浅谈javaScript中slice和splice之间的区别和联系
- 一位软件测试工程师浅谈用户体验
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 浅谈手机软件测试
- USB架构概述之九USB主机:硬件和软件