WEBVTT

00:00.090 --> 00:01.050
旁白：在这一课中,

00:01.050 --> 00:03.720
我们将开始讨论一些嵌入式系统｡

00:03.720 --> 00:05.610
现在, 当我们谈论嵌入式系统时,

00:05.610 --> 00:10.980
这是一个被设计用于执行特定和专用功能的计算机系统｡

00:10.980 --> 00:13.260
现在, 当我们谈论嵌入式系统时,

00:13.260 --> 00:18.150
我们谈论的更多的是制造领域或自动化领域的事情｡

00:18.150 --> 00:19.890
所以我们可能在医疗点滴系统中有一个微控制器,

00:19.890 --> 00:22.770
它有一个任务｡

00:22.770 --> 00:24.840
它是用来测量通过机器进入静脉注射器的液体量,

00:24.840 --> 00:29.520
这样你就可以给病人提供他们需要的东西｡

00:29.520 --> 00:33.030
你可能有另一个在水处理厂的控制系统｡

00:33.030 --> 00:36.870
它的职责是确保水以一定的速度流过｡

00:36.870 --> 00:39.000
他们会打开或关闭阀门,

00:39.000 --> 00:41.940
以确保我们保持通过系统的流量｡

00:41.940 --> 00:43.307
这就是嵌入式系统的概念｡ 

00:43.307 --> 00:45.840
它可以是一个非常非常简单的设备, 也可以是非常复杂的,

00:45.840 --> 00:52.890
并有一个完整的操作系统, 如Linux或Android, 用于运行这些类型的系统｡

00:52.890 --> 00:54.360
这要看情况

00:54.360 --> 00:55.770
现在, 在这一课中,

00:55.770 --> 01:05.100
我将更多地关注具有单一功能的特定嵌入式系统, 它们有自己专用的操作系统或微处理器来实现该功能｡

01:05.100 --> 01:07.950
例如, 在我家, 我有一个智能电表｡ 

01:07.950 --> 01:09.900
所以如果我走到我家的一边,

01:09.900 --> 01:11.550
我可以看一下我家的电表,

01:11.550 --> 01:17.010
它会告诉我每小时我用了多少千瓦, 以及随着时间的推移我用了多少｡

01:17.010 --> 01:19.860
现在, 这些信息已经连接到互联网上,

01:19.860 --> 01:24.420
这样电力公司就不必每个月派人到我家读一次电表｡

01:24.420 --> 01:26.730
相反, 现在一切都是电子化的｡ 

01:26.730 --> 01:28.620
他们通过使用蜂窝调制解调器来做到这一点,

01:28.620 --> 01:32.640
它通过蜂窝网络通过互联网连接到他们的总部和他们的服务器,

01:32.640 --> 01:36.600
以反馈我们用于电力消耗的数据｡

01:36.600 --> 01:37.770
如果你在家里看你的仪表,

01:37.770 --> 01:40.200
你可能有一些看起来很相似的东西｡

01:40.200 --> 01:43.980
现在, 这些类型的嵌入式系统被认为是静态环境,

01:43.980 --> 01:46.530
不允许频繁更改｡

01:46.530 --> 01:50.010
那么, 你最后一次升级电表上的软件是什么时候？

01:50.010 --> 01:51.210
你可能从来没有｡ 

01:51.210 --> 01:54.120
电力公司可能也不会经常这样做｡

01:54.120 --> 01:56.190
这就是嵌入式系统的理念｡ 

01:56.190 --> 01:57.900
他们是一个非常精简的系统,

01:57.900 --> 02:00.870
是为了做一个目的, 只有一个目的｡

02:00.870 --> 02:05.490
通过这样做, 这有助于他们变得更安全, 因为他们没有太多额外的代码｡

02:05.490 --> 02:08.670
但是, 如果原始代码没有以良好的状态在适当的位置制作,

02:08.670 --> 02:13.860
那么就很难进行更新, 因为这些东西不是为了能够获得频繁的软件更新而构建的｡

02:13.860 --> 02:19.800
因此, 嵌入式系统通常很少支持识别和纠正安全问题｡

02:19.800 --> 02:21.120
你不能打电话给电力公司,

02:21.120 --> 02:22.860
让他们来保护你的电表｡

02:22.860 --> 02:25.050
他们不会为你做这些的｡ 

02:25.050 --> 02:26.400
他们会按照自己的方式去做,

02:26.400 --> 02:27.840
因为这是他们的设备｡

02:27.840 --> 02:30.150
通常, 如果您的工厂或工厂内有嵌入式系统,

02:30.150 --> 02:35.220
如果您位于制造区域, 则您将从该制造商获得有限的支持｡

02:35.220 --> 02:38.040
所以这是一个你真的想让所有这些设备到一个单独的网络上,

02:38.040 --> 02:42.150
而不是让他们连接回互联网在大的地方, 这可能是一个大的脆弱性,

02:42.150 --> 02:44.970
你的领域｡

02:44.970 --> 02:46.410
现在, 当我们谈论嵌入式系统时,

02:46.410 --> 02:51.030
有一个术语叫做PLC, 它是一种可编程逻辑控制器｡

02:51.030 --> 02:53.310
这是一种设计用于工业或户外环境部署的计算机,

02:53.310 --> 02:57.960
它可以自动化我们的现代机械系统｡

02:57.960 --> 02:59.760
现在, 当你想到PLC的时候,

02:59.760 --> 03:01.680
我想让你想到一些像制造业的东西,

03:01.680 --> 03:05.370
它会打开或关闭一个阀门, 让更多或更少的水进来｡

03:05.370 --> 03:07.140
这就是PLC的概念｡ 

03:07.140 --> 03:09.780
它是一个可编程逻辑控制器｡ 

03:09.780 --> 03:12.000
现在, 这些PLC在固件上运行,

03:12.000 --> 03:14.250
因为它们是嵌入式系统｡

03:14.250 --> 03:16.950
因此, 固件, 这是一个芯片上的软件, 可以修补和重新编程,

03:16.950 --> 03:20.280
以修复漏洞时, 他们发生｡

03:20.280 --> 03:22.620
但同样, 有一个非常具体的过程,

03:22.620 --> 03:25.230
通常有有限的支持, 从制造商｡

03:25.230 --> 03:28.350
这不像微软, 他们每周二都会给你一个补丁｡

03:28.350 --> 03:31.140
有了这些PLC, 你可能会得到一个补丁, 每六个月,

03:31.140 --> 03:32.550
或一年, 或两年｡

03:32.550 --> 03:35.520
通常在补丁之间有很长的时间｡ 

03:35.520 --> 03:38.550
现在, 我们想讨论的另一件事是他们使用的一些操作系统｡

03:38.550 --> 03:40.740
所以有一种叫做RTOS的东西,

03:40.740 --> 03:43.020
它是一种实时操作系统｡

03:43.020 --> 03:45.120
现在, 这是一种操作系统,

03:45.120 --> 03:48.780
它优先执行确定性的操作｡

03:48.780 --> 03:52.800
这将有助于我们确保对时间紧迫的任务做出一致的响应｡

03:52.800 --> 03:53.880
现在, 想想这个｡ 

03:53.880 --> 03:58.830
如果你正在运行一个必须打开或关闭核电站内部阀门的东西,

03:58.830 --> 04:02.040
你能让它随时离线吗？

04:02.040 --> 04:03.240
应该不会吧

04:03.240 --> 04:05.670
这就是我们使用RTOS的想法,

04:05.670 --> 04:07.500
一个实时操作系统｡

04:07.500 --> 04:12.000
这是因为我们的很多嵌入式系统通常不能容忍重新启动或崩溃,

04:12.000 --> 04:16.440
它们必须具有毫秒内可预测的响应时间｡

04:16.440 --> 04:19.860
所以如果我正在建造一个可以运行飞机部件的东西,

04:19.860 --> 04:22.080
这将帮助我的自动驾驶仪飞行,

04:22.080 --> 04:23.910
并且自动驾驶仪需要每隔几毫秒对机翼进行调整,

04:23.910 --> 04:29.850
那么, 这就是我们想要使用实时操作系统的东西｡

04:29.850 --> 04:32.160
我们不能使用标准的Windows系统｡ 

04:32.160 --> 04:33.990
它不够快也不够强大｡ 

04:33.990 --> 04:36.060
它可能会重启或崩溃, 它的安全补丁,

04:36.060 --> 04:38.250
以及所有其他的东西｡

04:38.250 --> 04:42.690
所以, 当你听到这个术语时, 请把它想象成一种经常用于嵌入式系统的操作系统,

04:42.690 --> 04:46.560
尤其是在关键应用程序中｡

04:46.560 --> 04:47.700
现在, 我们可以用另一种方法来做到这一点,

04:47.700 --> 04:49.740
那就是使用所谓的片上系统｡

04:49.740 --> 04:51.810
这是嵌入式系统的另一种形式｡ 

04:51.810 --> 04:58.470
这就是我们的处理器将多个逻辑控制器的平台功能集成到单个芯片上的地方｡

04:58.470 --> 05:05.790
现在, 这种片上系统可以非常省电, 因此它们通常用于需要嵌入式系统的小型设备｡

05:05.790 --> 05:07.860
所以, 如果我需要创建一个嵌入式系统的东西,

05:07.860 --> 05:12.681
并且非常小, 可以装在我的口袋里, 那通常会使用像片上系统这样的东西｡

05:12.681 --> 05:15.300
如果你使用的是Roomba或机器人吸尘器,

05:15.300 --> 05:19.950
它们使用的是系统级芯片的思维方式, 因为它们试图将所有信息放在一个芯片上,

05:19.950 --> 05:24.570
因为它占用的空间更少, 因此你可以为你需要的功能部件留下更多的空间,

05:24.570 --> 05:27.360
比如吸尘器｡

05:27.360 --> 05:33.660
片上系统指的是一种集成电路, 它在单个芯片上包含计算机系统的所有组件｡

05:33.660 --> 05:36.630
这包括您的处理器, 内存, 存储, 图形处理器和外围设备,

05:36.630 --> 05:44.010
如USB控制器, 电源管理电路和用于WiFi或蓝牙的无线电｡

05:44.010 --> 05:47.160
片上系统的一个很好的例子是Raspberry Pi,

05:47.160 --> 05:50.880
它包含一个存在于单个芯片上的完全包含的计算机｡

05:50.880 --> 05:52.650
现在, 许多这些片上系统将嵌入到其他设备中,

05:52.650 --> 05:54.570
如智能电视和机顶盒, 如亚马逊Fire

05:54.570 --> 06:00.750
TV, Roku和Apple TV流媒体设备｡

06:00.750 --> 06:02.970
片上系统设计已经变得非常流行,

06:02.970 --> 06:04.560
因为它们的低功耗,

06:04.560 --> 06:07.440
良好的性能和小尺寸｡

06:07.440 --> 06:10.260
例如, 如果你有一个Roku或Fire电视棒,

06:10.260 --> 06:12.420
这些都是USB拇指驱动器的大小｡

06:12.420 --> 06:15.450
然而, 它们为任何现有的电视提供了一个完全工作的智能电视功能,

06:15.450 --> 06:20.913
并且它们可以使用这些设备通过无线连接处理流媒体视频｡
