[1] 
点击: 11654  回复: 24  已被5人收藏

 软件如何驱动硬件?

1920
11
来自:上海
注册:2010-02-12
发帖:784+1733

为什么能通过程序代码驱动硬件?原理是什么呢?



------------------------------------------------------------------------------------------- My name is modern strange cowboy
2019-06-12 17:23:42
...楼主... [我也说一句]
3328
2
来自:上海.松江
注册:2003-07-15
发帖:384+5907

你一瞬间的念头 也能驱动老二


------------------------------------------------------------------------------------------- 中午不睡 下午崩溃
2019-06-12 19:03:45
486
53
来自:上海.普陀
注册:2018-03-05
发帖:96+4746

fantasy[reborns] 楼主

为什么能通过程序代码驱动硬件?原理是什么呢?


如果是显卡驱动这种,是告诉操作系统,硬件的具体接口,连接方式。

声卡等也是。

这种驱动,只是弱电的各种信号处理方式的模块,操作系统不知道,该模块厂商知道,写了对接操作系统。

如果是驱动强电、声、光等其他分立元器件,还需要各自不同的接口pin台。

驱动机械运动也一样,代码控制芯片,输出信号,驱动伺服马达、杆式运动器件等


------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------
2019-06-12 19:07:01
490
10
来自:上海
注册:2016-07-28
发帖:78+5924
系统不认识这个硬件,需要靠关键驱动软件告诉系统他的具体情况

------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-12 21:16:00
915
4
来自:上海
注册:2010-01-13
发帖:14+2604

执行硬件靠的是机器语言

而操作系统都是高级语言写的

当中需要一个翻译


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-12 21:20:26
427
917
来自:上海
注册:2016-02-28
发帖:8+1071

图里面过人行横道看手机

这是在作死

广告公司想坑死客户


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-12 21:23:48
2692
199
来自:上海
注册:2002-10-31
发帖:400+21606
什么软件,软件是给你看的,硬件是不可能明白,需要转换,电是有能量的,上电后一个个接口过去,通电高电压算1的话,断电或低电压算0,然后编码,然后一步步控制下去。

-------------------------------------------------------------------------------------------
2019-06-12 21:27:17
350
0
来自:保密
注册:2003-02-17
发帖:45+1636

软件放到内存里,cpu阅读软件然后执行


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-12 21:31:57
717
0
来自:上海
注册:2013-08-13
发帖:1+1148

IT狗 有点复杂 如果你是硬件工程师 需要知道 操作系统原理 kernal shell 编译


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-12 23:11:43
3718
39
来自:上海
注册:2000-09-13
发帖:343+12321

软件就是你的大脑,你说大脑能控制你的小头吗?


------------------------------------------------------------------------------------------- 这家伙很聪明,什么都没有留下
2019-06-12 23:14:47
1250
4
来自:上海
注册:2011-03-28
发帖:21+959

这个要讲得透彻 比较难


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-12 23:15:07
724
0
来自:上海
注册:2015-08-05
发帖:24+1520
等高人科普

------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-12 23:23:28
1078
9
来自:上海
注册:2013-09-29
发帖:96+1183

A9981[A9981] 11楼

等高人科普

+1


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-13 10:33:31
1922
11
来自:上海
注册:2010-02-12
发帖:785+1733

很难想象自己在电脑上写的程序通过烧录进IC后就可以控制机械设备了


------------------------------------------------------------------------------------------- My name is modern strange cowboy
2019-06-15 12:06:11
366
7
来自:保密
注册:2018-07-13
发帖:534+8946

都是通过内存映射的,软件直接操作的内存


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-15 12:08:34
733
1
来自:上海.虹口
注册:2016-10-08
发帖:8+682

固件存贮与信号传输 firmware


------------------------------------------------------------------------------------------- 回忆是那么远的东西
2019-06-15 12:10:43
209
1
来自:保密
注册:2018-11-30
发帖:144+1577
没有任何驱动。只是导通不导通。导通不导通变化出万千逻辑!

------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-15 12:12:16
1141
609
来自:上海.浦东新
注册:2013-06-21
发帖:161+12504

fantasy[reborns] 13楼

很难想象自己在电脑上写的程序通过烧录进IC后就可以控制机械设备了

驱动程序最大的功效在于发挥出硬件的最大性能。比如显卡,你不装专用的驱动,用windows默认的,一样可以显示,但是分辨率和3d性能就很差,但是装了之后,性能就得到了充分的发挥。其他硬件也是类似的。总之,驱动程序两个主要作用,第一,让操作系统识别出该硬件,第二,让硬件发挥出最大效能。

------------------------------------------------------------------------------------------- 取务实之意。
2019-06-15 12:13:04
3334
146
来自:上海
注册:2007-12-19
发帖:9+6338

fantasy[reborns] 13楼

很难想象自己在电脑上写的程序通过烧录进IC后就可以控制机械设备了

看一下GPIO接口就明白了,就是电压,高低电压表示开关信号控制继电器,转而控制大电流设备。


------------------------------------------------------------------------------------------- Je suis grand hippopotame.
2019-06-15 12:15:26
1799
6
来自:上海
注册:2003-07-31
发帖:144+1855

CPU的IO,内存读写指令,会在总线上产生特定的电信号时序,外设硬件一般都是挂在总线上的,所以CPU可以通过这些指令访问控制外设硬件。


------------------------------------------------------------------------------------------- !!!!!!!!!!!!!!!!!!!!!!
2019-06-15 12:16:53
951
48
来自:上海
注册:2009-01-08
发帖:85+5983

操作系统后面有个BIOS。


学第一个是数字电路,第二个计算机原理(不能用普通理工科专业的假教材,得有讲CPU内的微程序这个)。时刻得有对时序的概念认识。


------------------------------------------------------------------------------------------- 123
2019-06-15 12:21:52
2074
0
来自:上海
注册:2006-12-07
发帖:173+5743

软件的本质就是代码,由0和1组成。
把软件的0和1转换为代表低电****和高电****的0和1,接着用高低电****控制硬件的动作,


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-15 12:44:44
313
2
来自:保密
注册:2017-10-29
发帖:0+8162
总线和接口标答

------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-15 12:49:43
279
2
来自:保密
注册:2018-08-12
发帖:8+2804

开灯关灯,只需要一个开关,

这里包含了两种状态,开和关,

可以对应成0和1, 软件作用,

就是给出0和1, 就能控制一个开关,

继续推广下去,

有检测器,比如检测开关的状态,

也用0和1表示,它们可送入软件,

软件可将其视为,物理量是否满足

要求的条件,

软件的运行基于CPU,CPU的运行

基于频率,而频率是时间的倒数,

因此软件有计时功能,那么


软件有了时间和物理量的检测能力,

以及硬件驱动能力,

就可以实现与外部世界的实时交互


------------------------------------------------------------------------------------------- 这个家伙很懒,什么也没留下......
2019-06-15 13:09:04
3288
61
来自:上海
注册:2001-05-23
发帖:397+16200

LZ这个问题吧……

直接从PC开始讲可能比较费解

想了一下,虽然麻烦,其实还是得从逻辑电路开始讲起


跳过逻辑电路的基础部分不说,单说它的外面表现,就是它总是在等待一个输入信号,然后处理完之后,输出一个信号

最直观的一个逻辑电路就是电灯泡,你按下开关,电灯亮了,再按一下,电灯灭了

于是,电灯开关就是一个输入设备


个么问题来了,电灯开关为什么不需要写驱动程序?

因为它是电路的物理部分,也就是说,电灯开关已经固化在硬件里了


然后我们需要一个更复杂的照明系统,有一排的开关,有的开关可以打开卧室的灯,有的开关可以打开走道的灯。

甚至说,有一个开关的功能是,如果我打开了卧室的灯,走道的灯就会关掉;如果我打开走道的灯,卧室的灯就会关掉


于是这一排开关的内部线路就开始复杂了,甚至需要在开关上贴标签,哪个开关是干什么用的


但截止到这里为止,开关是交给人控制的,只有人机交互,所以驱动开关的是人,但是这个人需要有一定的知识,至少得认得开关上的字。或者自己试几下开关,就知道了开关怎么用(记住这句话,高阶部分会说到)


现在,我们需要照明电路有一些自动化功能,比如环境光比较亮的时候,电灯就自动关掉。

于是我们买来了一个感光元件。

感光元件的作用,就是取代了人的一部分逻辑----“天亮了,可以把灯关掉了”。

感光元件接到电路里,其实很简单。因为人家会说,把我当开关一样接到电路里就行了。

所以,这里就有了一个概念,叫“通用接口”。

通用接口的好处是,你不用关心它怎么实现你想要的功能的,你只管按照说明书的上的说法,把它接到你的电路里去就行了。


截止到目前来说,都没有出现“操作系统”这玩意儿,因为要实现的功能比较单一,逻辑也简单。

当线路复杂到一定程度之后,用开关去一个个控制电灯就显得麻烦了。比如说舞台上的灯光,这时你就需要有一个操作台。操作台上可以控制不同的灯光线路,调亮调暗,甚至加入一些套路,比如说几个灯轮流亮灭产生跑马灯效果,但是你要实现它的话,它只是控制台上的一个开关。

但是这些东西,仍然是通过硬件实现的,是固化在硬件里的。

那个有跑马灯效果的开关,其实就相当于是一个指令

各种灯光效果的开关集合,就是我们经常会听到的名词“指令集”


-------------------------------------------------

接下来就要进入到操作系统了

操作台上的功能,毕竟是有限的,开关按钮就这么几个,做大做多了也不好控制

特别是我想要一些组合功能,比如说闪烁五下,然后全亮,再淡出,再全亮5秒,再闪烁

要实现这些功能,不可能在生产时就做到硬件里了,一来每个用户的需求不一样,二来就算同一个用户,需求都是随时会变的

所以实现这些功能,都是在硬件做完之后,让用户自己来设定的。


这种时候,我们就需要有一个“人机交互的界面”了。

最简陋的人机交互界面,可能就只有机器发出的“哔~”一声,或者指示灯闪几下。

用户在设置按钮上按来按去,机器发出不同的哔哔声表示设定成功了或者遇到问题了。


其实,到了这一步,操作系统的内核已经出现了。

那些设置开关,相当于PC系统里的“中断”,它们一直在等待你的输入。那些哔哔声就是系统的返回,告诉你调用成功了还是失败了。


-------------------------------------------------

本来觉得终于可以讲到驱动了

忽然发现,其实还有一个玩意儿,标准输入输出,BIOS,这东西还是要讲一下比较好


到这里呢,先跳跃一下,那个用哔哔声反馈信号的用户界面实在太差了,我们假设我们的操作系统已经开发的很厉害了,用上了键盘输入,显示器输出,生活大大改善了。


现在我们的用户又有新的需求了

比如说,我想要灯光跟着音乐节奏来闪烁,但是我事先并不知道将来会用什么音源

于是,我就在操作台上加了各种接口,MIDI的,同轴的,光纤的…


但是我这个操作台怎么才能知道我接入了一个设备呢?我又怎么知道这个设备是什么东西呢?


所以,每一家硬件厂商协商了一个东西,叫BIOS,这玩意儿相当于是一张名片。或者说是机器之间的说明书。它会告诉另一个设备,它叫什么名字,需要的信号强度是什么样的,要调用哪些个中断,返回的信号是什么样的。

仅此而已


但是有了它,外来的设备只要往系统上一插,系统就知道了它是谁(这里有个小的番外,叫即插即用——P&P)


-------------------------------------------------

这下终于可以讲到驱动了

现在系统已经知道有一个外来的设备插在自己身上了,也知道怎么去和那个设备交流,但系统并不知道该怎么去用这个设备。

相当于之前说的,一排开关上贴了各种标签,但是系统需要建立一个关联:

也就是当用户按下键盘上的键时,系统需要知道去按哪个对应的开关

比如说,用户在键盘上按1,系统要去打开卧室的灯,按2要去打开走廊的灯。按3,卧室的灯闪3下灭掉,并且走廊的灯淡入变亮。


上面这三句话,其实就是驱动程序实现的东西了。

键盘上按1,驱动程序告诉操作系统,按一下卧室开关

键盘上按2,驱动程序告诉操作系统,按一下走廊开关

键盘上按3,驱动程序告诉操作系统,按6下卧室开关,然后按一下走廊的开关,并且使用调亮的旋钮。


所以,LZ你问的这一个没头没尾的问题,要讲清楚就是上面这么一大段东西。



------------------------------------------------------------------------------------------- 生气,是拿别人的错误惩罚自己 念念不忘旧仇的人,伤口是难以愈合的 明天的事情,后天再想 ------My Heart goes Boum Boum Boum
2019-06-15 13:46:29
x
引用20楼@ 特雷西00 发表的:

首先,请你以一种,团成一个团的姿势,然后,慢慢地比较圆润的方式,离开这座让你讨厌的城市,或者讨厌的人的周围首先,请你以一种,团成一个团的姿势,然后,慢慢地比较圆润的方式,离开这座让你讨厌的城市,或者讨厌的人的周围

回复主题 返回kds宽带山
主题: 软件如何驱动硬件?
热门文章排行
  1. 本周
  2. 本月
热门产品排行
  1. 本周
  2. 本月
房车头条
  • 扫描关注官方微信
  • 扫描下载客户端

短信

x
收信人:
内容:
插入:  发送 
  • 默认

帖子奖分

奖分者: ( )

得分者:

奖励分值:您今日还有 3 点分值可以奖励 [ 20 点奖分可自动换取 1 点PP]

看不清楚吗?点击更换一张

请输入4位有相同表情的数字

验证码:看不清楚吗?点击更换一张

奖分理由:

删除

        

                            

        当事人要求删除

                    

          

理由:

扣除hp值:

宽带山警务室

用户反馈

        

内容:

已报名参加的人员: