嵌入式系统工程开发的新模式|软件自动化( 代码自动生成)|使用建模的方法(数字孪生)
<结合视频一起学习>
嵌入式系统工程开发的新模式|软件自动化( 代码自动生成)|使用建模的方法(数字孪生)学习UML编程语言,是嵌入式系统编程的一条成功之路和未来趋势,这个方法更快捷_哔哩哔哩_bilibili
字幕
亲爱的同学们,大家好!
我想和你们聊聊未来如何继续单片机编程的学习,接下来可以做什么
首先来看一下,我们在这个课程里学习了哪些内容
我们学习了这个板子的编程,大家也很努力的写了很多代码,还用这个板子做了许多有趣的练习
我们再具体看看
我们写了类似这种源代码,然后把代码烧写到板子上,再进行测试
这就是开发嵌入式系统的一般方法
00:01:00
我们回顾一下单片机的历史
像这个单片机,它已经有30年历史,是一个8位单片机
它是8051的架构,今天已经不再流行了
接下来还发生了什么?
00:01:30
我们先看看十多年前
以前的8051架构,在很长一段时间内都是工业标准
那时候几乎只有这一种架构
大概在2000年左右,开始有了竞争
00:02:00
出现了PIC和AVR,AVR在这里标红了
从此,单片机的架构变得多样化,市面上有许多不同的架构
也不能再说某一种架构才是工业标准了
这时出现了许多现代单片机,8位,16位
大约6、7年前也就在2012年前后的时间,
市面上出现了使用ARM控制器的32位单片机
也就是我们现在学习编程的STM32单片机
00:02:45
那标准的和现代的这两种架构有什么区别呢?
要强调的一点是在这10年间单片机性能是呈指数性发展的
我们看这个指数曲线上,短的红线表示旧的8位单片机的性能
长的红线表示现在ARM Cortex M单片机的性能
现在谈论的不是几百行、几千行代码,而是上百万行代码,而且是在一个单片机上
00:03:30
接下来,我们再谈谈复杂性这个方面。什么是复杂性?
我现在随手扔出几根火柴,你第一眼便可看出是3根火柴
我再扔出几根,现在你不能一眼看出,而需要数数了
你可能要花上20秒、半分钟的时间来数清楚有几根火柴
现在我用个小技巧,这样给出火柴
通过这个排列,你可以很快看出这是30根火柴
这就是复杂性的管理
00:04:00
我们再看一个例子,工程师是如何管理复杂性的
这个工地看起来很复杂,问题是,工人们如何知道要在哪里做什么呢?
这个秘密也藏在图片中,就是这里
这就是如何管理复杂性的秘密:
对于较复杂的事情,我们先制定计划
在软件编程里,我们也这样做
建筑工程师先在电脑上画出蓝图,通常不再是手动画图,而是用计算机软件
00:05:03
我们现在看看软件编程的蓝图是怎样的
我们看到的这是源代码,源代码不能称为蓝图
因为我们开始写代码时,就相当于工人已经在盖楼了
如果我们没有蓝图的话,就是无计划地工作
通常的方法是,我们先编写文本,例如用word,确定要完成哪些工作
这是一个稍好些的方法,但还不是最佳的
我们常常可以看到软件开发人员在白板上画方块、画线条,画完后他们介绍这个结构图,有些人同意的话还会点头
可见大家都能看懂和理解这种图
这个方法在工程师间很快流传开来,大家认为这种图很方便,也易于快速理解
而在实际软件编程中,这种图看起来是这样的
00:06:10
这就是软件编程的蓝图的样子
00:06:20
我们再具体看看是怎么做的
通过软件来建立蓝图,专业用语称为software engineering
我们接下来以SiSy软件为例,介绍如何建立编程的蓝图
00:06:52
首先,我们要理解一个概念:什么是建模?
建模是一个软件工程领域的概念,在机械制造中,人们称之为机械设计
建模其实就是软件的设计
建模可以理解为画出一个真实的物体的样子,而且是通过统一规范的符号语言,例如小方框、线条、圆等
这些统一的符号规定了人们如何画设计图,对图纸有哪些要求
00:07:35
现在很常见的工作都是基于计算机的设计然后再自动生成。
如在机械领域的CNC,在电子电气领域的PCB,同样也适用于软件。这种工作方式就称为建模。
00:08:00
软件建模用的是什么符号语言?这里也有相应的标准
就是ISO 19505标准,UML语言的标准。借助UML语言我们建立软件编程的蓝图
这就是UML语言,通常一张纸就足以描述清楚它最重要的一些符号
那它是怎么起作用的呢?人们是怎么使用它的呢?
00:08:35
让我们来看看从模型到运行的软件这项工作是如何完成的。
第一步:我们绘制了软件结构的蓝图。 这就是软件架构的设计。
第二步:我们将逻辑纳入蓝图。这可以写成源代码,甚至可以绘制。以下是序列图的示例。
第三步:我们按一个按钮,SiSy自动生成完整的源代码。
所有专业的UML工具都可以做到这一点。 SiSy在嵌入式系统方面特别擅长。
第四步:编译和链接源代码。 然后代码可以传输到微控制器
第五步: 然后我们可以像往常一样测试并继续工作。
这是不是很容易。这就完成了
问题是,这种编程方法难学吗?
不,一点也不难,反而更简单。
00:10:00
在一开始,只要学习三样东西
第一,要知道什么是“类”?我们要在蓝图里放入“类”
第二,要知道怎么将“类”连接起来,他们之间的“关系”,我们要知道一些常见的关系
第三,要理解“继承”的概念
这些都了解后,我们就可以像坐上火箭一样快速的开始学习啦。
首先,什么是“类”?
“类”是系统的组成部分,就像建房子用的砖块
在UML语言里,我们用方块来表示“类”,里面写上类的名称
00:10:55
接下来,我们要了解什么是“继承”
“继承”指的是将一个类的属性传递给另一个类,使这个类也具有了它的属性
对于初学者,“继承”关系可以理解为“是”的关系
这个图的含义是:“故障LED是一个输出引脚”
故障LED的亮起,需要输出引脚。
我们用一个空心三角形来表示“继承”/“是”关系。
00:11:40
接下来,还有“拥有”的关系
也就是我们用若干个较小的对象来组成一个较大的对象
例如我们可以建立一个系统,它拥有故障LED、按钮等等。
“拥有”可以用一端菱形一端箭头的线条来表示,菱形有空心和实心两种,对于初学者我们先不介绍它们的区别,暂且先用空心菱形
这个图表示的就是“控制器有一个故障LED”
我们再来分析一个具体的完整案例
我们可以用刚才学到的知识来读图,学了两分钟我们就能看懂UML图啦,这真的不难。
00:12:35
控制器有一个故障LED和按钮,故障LED是一个输出引脚,按钮是输入引脚。
很简单的系统,看起来和在SiSy里真实的结构图是一样的。
现在我只需要按下按钮即可,按下软件里的按钮,这个程序就能运行了
事实上就是这么简单
00:13:04
有哪些人在使用这种编程方法、使用SiSy工具呢?
这里有个世界地图,下方是欧洲和德国
SiSy是来自德国的软件,用户最多是集中在德国
仅在德国,就有超过27000名用户。这里是一些使用SiSy软件的德国大学和应用技术型大学以及职业技术学院。可以说,大约有一半的德国高校使用SiSy,还有奥地利和瑞士的高校也使用。康斯坦茨、慕尼黑、亚琛、海德堡、汉诺威、科布伦茨以及柏林的所有高等院校等都在教学中使用SiSy。
00:14:10
通过SiSy软件完成了哪些项目呢?
SiSy不仅用于学校教学,还用于很多实际项目
不算上27000名用户,仅我们SiSy公司就做了不少项目
例如,我们使用SiSy为移动机械开发控制器
除了移动机械和汽车领域,还有关于建筑能源管理的项目。
左边这个建筑是不需要外部的能源供应的,它的能源可以自给自足。
另外一个建筑是一所学校,也是零能耗建筑被动屋。
这里涉及上千个传感器,上百个节点,每天超过200万个测量值,它们通过网络传递到主机。
也就是说,SiSy不仅可以用于单片机编程,还能用于其他很多领域。
我们最大的项目是2000年汉诺威世博会项目的业务流程建模。
世博会有超过2万名员工,我们对业务流程进行建模,生成了工作指示 。
SiSy中不仅可以生成源代码,还可以生成文件(工作指示)。
这是SiSy作为建模工具的绝对优势。
00:15:55
最后,我推荐你们使用建模的方法,学习UML编程语言,使用SiSy软件。
这是嵌入式系统编程的一条成功之路和未来趋势,这个方法更快捷、更有效、更稳定,而且可以保存为文本文档,
所有软件编程的需要都可以在SiSy中得到满足。
最好祝大家在学习中有所收获并乐在其中!