嵌入式系統(tǒng)工程開發(fā)的新模式|軟件自動(dòng)化( 代碼自動(dòng)生成)|使用建模的方法(數(shù)字孿生)
字幕
親愛的同學(xué)們,大家好!
我想和你們聊聊未來如何繼續(xù)單片機(jī)編程的學(xué)習(xí)渊涝,接下來可以做什么
首先來看一下,我們?cè)谶@個(gè)課程里學(xué)習(xí)了哪些內(nèi)容
我們學(xué)習(xí)了這個(gè)板子的編程芝囤,大家也很努力的寫了很多代碼划煮,還用這個(gè)板子做了許多有趣的練習(xí)
我們?cè)倬唧w看看
我們寫了類似這種源代碼,然后把代碼燒寫到板子上遇骑,再進(jìn)行測(cè)試
這就是開發(fā)嵌入式系統(tǒng)的一般方法
00:01:00
我們回顧一下單片機(jī)的歷史
像這個(gè)單片機(jī)棉浸,它已經(jīng)有30年歷史,是一個(gè)8位單片機(jī)
它是8051的架構(gòu)尾序,今天已經(jīng)不再流行了
接下來還發(fā)生了什么蔓同?
?00:01:30
我們先看看十多年前
以前的8051架構(gòu),在很長一段時(shí)間內(nèi)都是工業(yè)標(biāo)準(zhǔn)
那時(shí)候幾乎只有這一種架構(gòu)
大概在2000年左右蹲诀,開始有了競(jìng)爭(zhēng)
00:02:00
出現(xiàn)了PIC和AVR斑粱,AVR在這里標(biāo)紅了
從此,單片機(jī)的架構(gòu)變得多樣化脯爪,市面上有許多不同的架構(gòu)
也不能再說某一種架構(gòu)才是工業(yè)標(biāo)準(zhǔn)了
這時(shí)出現(xiàn)了許多現(xiàn)代單片機(jī)则北,8位,16位
大約6痕慢、7年前也就在2012年前后的時(shí)間尚揣,
市面上出現(xiàn)了使用ARM控制器的32位單片機(jī)
也就是我們現(xiàn)在學(xué)習(xí)編程的STM32單片機(jī)
00:02:45
那標(biāo)準(zhǔn)的和現(xiàn)代的這兩種架構(gòu)有什么區(qū)別呢?
要強(qiáng)調(diào)的一點(diǎn)是在這10年間單片機(jī)性能是呈指數(shù)性發(fā)展的
我們看這個(gè)指數(shù)曲線上掖举,短的紅線表示舊的8位單片機(jī)的性能
長的紅線表示現(xiàn)在ARM Cortex M單片機(jī)的性能
現(xiàn)在談?wù)摰牟皇菐装傩锌炱浊写a,而是上百萬行代碼塔次,而且是在一個(gè)單片機(jī)上
?00:03:30
接下來方篮,我們?cè)僬務(wù)剰?fù)雜性這個(gè)方面。什么是復(fù)雜性励负?
我現(xiàn)在隨手扔出幾根火柴藕溅,你第一眼便可看出是3根火柴
我再扔出幾根,現(xiàn)在你不能一眼看出继榆,而需要數(shù)數(shù)了
你可能要花上20秒巾表、半分鐘的時(shí)間來數(shù)清楚有幾根火柴
現(xiàn)在我用個(gè)小技巧,這樣給出火柴
通過這個(gè)排列略吨,你可以很快看出這是30根火柴
這就是復(fù)雜性的管理
?00:04:00
我們?cè)倏匆粋€(gè)例子集币,工程師是如何管理復(fù)雜性的
這個(gè)工地看起來很復(fù)雜,問題是翠忠,工人們?nèi)绾沃酪谀睦镒鍪裁茨兀?/p>
這個(gè)秘密也藏在圖片中鞠苟,就是這里
這就是如何管理復(fù)雜性的秘密:
對(duì)于較復(fù)雜的事情,我們先制定計(jì)劃
在軟件編程里,我們也這樣做
建筑工程師先在電腦上畫出藍(lán)圖偶妖,通常不再是手動(dòng)畫圖姜凄,而是用計(jì)算機(jī)軟件
?00:05:03
我們現(xiàn)在看看軟件編程的藍(lán)圖是怎樣的
我們看到的這是源代碼,源代碼不能稱為藍(lán)圖
因?yàn)槲覀冮_始寫代碼時(shí)趾访,就相當(dāng)于工人已經(jīng)在蓋樓了
如果我們沒有藍(lán)圖的話态秧,就是無計(jì)劃地工作
通常的方法是,我們先編寫文本扼鞋,例如用word申鱼,確定要完成哪些工作
這是一個(gè)稍好些的方法,但還不是最佳的
我們常吃仆罚可以看到軟件開發(fā)人員在白板上畫方塊捐友、畫線條,畫完后他們介紹這個(gè)結(jié)構(gòu)圖溃槐,有些人同意的話還會(huì)點(diǎn)頭
可見大家都能看懂和理解這種圖
這個(gè)方法在工程師間很快流傳開來匣砖,大家認(rèn)為這種圖很方便,也易于快速理解
而在實(shí)際軟件編程中昏滴,這種圖看起來是這樣的
00:06:10
這就是軟件編程的藍(lán)圖的樣子
00:06:20
我們?cè)倬唧w看看是怎么做的
通過軟件來建立藍(lán)圖猴鲫,專業(yè)用語稱為software engineering
我們接下來以SiSy軟件為例,介紹如何建立編程的藍(lán)圖
00:06:52
首先谣殊,我們要理解一個(gè)概念:什么是建模拂共?
建模是一個(gè)軟件工程領(lǐng)域的概念,在機(jī)械制造中姻几,人們稱之為機(jī)械設(shè)計(jì)
建模其實(shí)就是軟件的設(shè)計(jì)
建囊撕可以理解為畫出一個(gè)真實(shí)的物體的樣子,而且是通過統(tǒng)一規(guī)范的符號(hào)語言蛇捌,例如小方框抚恒、線條、圓等
這些統(tǒng)一的符號(hào)規(guī)定了人們?nèi)绾萎嬙O(shè)計(jì)圖豁陆,對(duì)圖紙有哪些要求
00:07:35
現(xiàn)在很常見的工作都是基于計(jì)算機(jī)的設(shè)計(jì)然后再自動(dòng)生成柑爸。
如在機(jī)械領(lǐng)域的CNC,在電子電氣領(lǐng)域的PCB盒音,同樣也適用于軟件。這種工作方式就稱為建模馅而。
00:08:00
軟件建模用的是什么符號(hào)語言祥诽?這里也有相應(yīng)的標(biāo)準(zhǔn)
就是ISO 19505標(biāo)準(zhǔn),UML語言的標(biāo)準(zhǔn)瓮恭。借助UML語言我們建立軟件編程的藍(lán)圖
這就是UML語言雄坪,通常一張紙就足以描述清楚它最重要的一些符號(hào)
那它是怎么起作用的呢?人們是怎么使用它的呢屯蹦?
00:08:35
讓我們來看看從模型到運(yùn)行的軟件這項(xiàng)工作是如何完成的维哈。
第一步:我們繪制了軟件結(jié)構(gòu)的藍(lán)圖绳姨。 這就是軟件架構(gòu)的設(shè)計(jì)。
第二步:我們將邏輯納入藍(lán)圖阔挠。這可以寫成源代碼飘庄,甚至可以繪制。以下是序列圖的示例购撼。
第三步:我們按一個(gè)按鈕跪削,SiSy自動(dòng)生成完整的源代碼。
所有專業(yè)的UML工具都可以做到這一點(diǎn)迂求。 SiSy在嵌入式系統(tǒng)方面特別擅長碾盐。
第四步:編譯和鏈接源代碼。 然后代碼可以傳輸?shù)轿⒖刂破?/p>
第五步: 然后我們可以像往常一樣測(cè)試并繼續(xù)工作揩局。
這是不是很容易毫玖。這就完成了
問題是,這種編程方法難學(xué)嗎凌盯?
不孕豹,一點(diǎn)也不難,反而更簡(jiǎn)單十气。
00:10:00
在一開始励背,只要學(xué)習(xí)三樣?xùn)|西
第一,要知道什么是“類”砸西?我們要在藍(lán)圖里放入“類”
第二叶眉,要知道怎么將“類”連接起來,他們之間的“關(guān)系”芹枷,我們要知道一些常見的關(guān)系
第三衅疙,要理解“繼承”的概念
這些都了解后,我們就可以像坐上火箭一樣快速的開始學(xué)習(xí)啦鸳慈。
首先饱溢,什么是“類”?
“類”是系統(tǒng)的組成部分走芋,就像建房子用的磚塊
在UML語言里绩郎,我們用方塊來表示“類”,里面寫上類的名稱
00:10:55
接下來翁逞,我們要了解什么是“繼承”
“繼承”指的是將一個(gè)類的屬性傳遞給另一個(gè)類肋杖,使這個(gè)類也具有了它的屬性
對(duì)于初學(xué)者,“繼承”關(guān)系可以理解為“是”的關(guān)系
這個(gè)圖的含義是:“故障LED是一個(gè)輸出引腳”
故障LED的亮起挖函,需要輸出引腳状植。
我們用一個(gè)空心三角形來表示“繼承”/“是”關(guān)系。
00:11:40
接下來,還有“擁有”的關(guān)系
也就是我們用若干個(gè)較小的對(duì)象來組成一個(gè)較大的對(duì)象
例如我們可以建立一個(gè)系統(tǒng)津畸,它擁有故障LED振定、按鈕等等。
“擁有”可以用一端菱形一端箭頭的線條來表示肉拓,菱形有空心和實(shí)心兩種后频,對(duì)于初學(xué)者我們先不介紹它們的區(qū)別,暫且先用空心菱形
這個(gè)圖表示的就是“控制器有一個(gè)故障LED”
我們?cè)賮矸治鲆粋€(gè)具體的完整案例
我們可以用剛才學(xué)到的知識(shí)來讀圖帝簇,學(xué)了兩分鐘我們就能看懂UML圖啦徘郭,這真的不難。
00:12:35
控制器有一個(gè)故障LED和按鈕丧肴,故障LED是一個(gè)輸出引腳残揉,按鈕是輸入引腳。
很簡(jiǎn)單的系統(tǒng)芋浮,看起來和在SiSy里真實(shí)的結(jié)構(gòu)圖是一樣的抱环。
現(xiàn)在我只需要按下按鈕即可,按下軟件里的按鈕纸巷,這個(gè)程序就能運(yùn)行了
事實(shí)上就是這么簡(jiǎn)單
00:13:04
有哪些人在使用這種編程方法镇草、使用SiSy工具呢?
這里有個(gè)世界地圖瘤旨,下方是歐洲和德國
SiSy是來自德國的軟件梯啤,用戶最多是集中在德國
僅在德國,就有超過27000名用戶存哲。這里是一些使用SiSy軟件的德國大學(xué)和應(yīng)用技術(shù)型大學(xué)以及職業(yè)技術(shù)學(xué)院因宇。可以說祟偷,大約有一半的德國高校使用SiSy察滑,還有奧地利和瑞士的高校也使用⌒蕹Γ康斯坦茨贺辰、慕尼黑、亞琛嵌施、海德堡饲化、漢諾威、科布倫茨以及柏林的所有高等院校等都在教學(xué)中使用SiSy艰管。
00:14:10
通過SiSy軟件完成了哪些項(xiàng)目呢滓侍?
SiSy不僅用于學(xué)校教學(xué),還用于很多實(shí)際項(xiàng)目
不算上27000名用戶牲芋,僅我們SiSy公司就做了不少項(xiàng)目
例如,我們使用SiSy為移動(dòng)機(jī)械開發(fā)控制器
除了移動(dòng)機(jī)械和汽車領(lǐng)域,還有關(guān)于建筑能源管理的項(xiàng)目缸浦。
左邊這個(gè)建筑是不需要外部的能源供應(yīng)的夕冲,它的能源可以自給自足。
另外一個(gè)建筑是一所學(xué)校裂逐,也是零能耗建筑被動(dòng)屋歹鱼。
這里涉及上千個(gè)傳感器,上百個(gè)節(jié)點(diǎn)卜高,每天超過200萬個(gè)測(cè)量值弥姻,它們通過網(wǎng)絡(luò)傳遞到主機(jī)。
也就是說掺涛,SiSy不僅可以用于單片機(jī)編程庭敦,還能用于其他很多領(lǐng)域。
我們最大的項(xiàng)目是2000年漢諾威世博會(huì)項(xiàng)目的業(yè)務(wù)流程建模薪缆。
世博會(huì)有超過2萬名員工秧廉,我們對(duì)業(yè)務(wù)流程進(jìn)行建模,生成了工作指示 拣帽。
SiSy中不僅可以生成源代碼疼电,還可以生成文件(工作指示)。
這是SiSy作為建模工具的絕對(duì)優(yōu)勢(shì)减拭。
00:15:55
最后蔽豺,我推薦你們使用建模的方法,學(xué)習(xí)UML編程語言拧粪,使用SiSy軟件修陡。
這是嵌入式系統(tǒng)編程的一條成功之路和未來趨勢(shì),這個(gè)方法更快捷既们、更有效濒析、更穩(wěn)定,而且可以保存為文本文檔啥纸,
所有軟件編程的需要都可以在SiSy中得到滿足号杏。
最好祝大家在學(xué)習(xí)中有所收獲并樂在其中!