本發(fā)明涉及嵌入式軟件自動(dòng)化設(shè)計(jì)領(lǐng)域,尤其涉及微控制器(MCU)軟件的自動(dòng)化設(shè)計(jì)和技術(shù)實(shí)現(xiàn)。
背景技術(shù):
隨著物聯(lián)網(wǎng)的興起,以及工業(yè)4.0時(shí)代的到來,嵌入式系統(tǒng)(尤其是MCU)的應(yīng)用出現(xiàn)了快速增長。但同時(shí)物聯(lián)網(wǎng)應(yīng)用的碎片化問題也顯得日益突出,其主要表現(xiàn)在:行業(yè)和領(lǐng)域多樣性、終端設(shè)備眾多、類型和功能千差萬別、性能差別非常大等等。這使得物聯(lián)網(wǎng)終端軟件開發(fā)異常困難。而且,由于缺少統(tǒng)一的開發(fā)系統(tǒng),設(shè)備終端不兼容問題突出,已經(jīng)成為制約物聯(lián)網(wǎng)技術(shù)大規(guī)模推廣的主要原因。
四十多年來,嵌入式產(chǎn)品一直沿用這樣的開發(fā)流程:首先設(shè)計(jì)產(chǎn)品硬件電路。其次在硬件電路基礎(chǔ)上開發(fā)軟件架構(gòu)程序,然后開發(fā)處理器的初始化程序與配置程序,以及開發(fā)驅(qū)動(dòng)程序、中間件程序以及特定功能程序等軟件,這些軟件構(gòu)成了該項(xiàng)目獨(dú)有的一個(gè)個(gè)性化基礎(chǔ)平臺(tái)。開發(fā)人員在此平臺(tái)之上做進(jìn)一步的應(yīng)用層軟件開發(fā),進(jìn)行軟硬件整合調(diào)試,直至完成產(chǎn)品設(shè)計(jì)。其中搭建基礎(chǔ)平臺(tái)的代碼量一般要占到整個(gè)項(xiàng)目全部代碼量的70%~90%,是整個(gè)開發(fā)流程的重點(diǎn),因此如果能提高這個(gè)平臺(tái)的開發(fā)速度,就可以提高產(chǎn)品的開發(fā)效率。
嵌入式處理器生產(chǎn)廠商通常會(huì)提供軟件輔助開發(fā)工具和固件庫,以更好地為使用者提供服務(wù)。通常他們會(huì)提供自行設(shè)計(jì)的可視化處理器功能配置界面,以幫助使用者快速完成編寫處理器的初始化程序與配置程序。這種方法通常需要用戶手工選擇配置,操作比較繁瑣,而且可視化配置界面的設(shè)計(jì)也較為復(fù)雜。如果能夠改進(jìn),提高使用者的開發(fā)體驗(yàn),有助于促進(jìn)處理器產(chǎn)品的銷售。
綜合以上幾種情況,開發(fā)一個(gè)通用、可視化、適用多種處理器及外圍設(shè)備的嵌入式軟件開發(fā)平臺(tái)的自動(dòng)生成系統(tǒng),顯得很有意義。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種便捷高效的、由計(jì)算機(jī)自動(dòng)編寫代碼的嵌入式定制化開發(fā)平臺(tái)自動(dòng)生成系統(tǒng)(以下簡(jiǎn)稱自動(dòng)生成系統(tǒng))的實(shí)現(xiàn)方法。
本發(fā)明的技術(shù)方案如下:
第一步,通過PCB設(shè)計(jì)軟件直接獲取嵌入式產(chǎn)品硬件電路圖特征文件或數(shù)據(jù),然后把電路圖特征文件或數(shù)據(jù)導(dǎo)入自動(dòng)生成系統(tǒng);
本發(fā)明所指的PCB設(shè)計(jì)軟件,是指對(duì)外公開發(fā)行的收費(fèi)或免費(fèi)的、具有設(shè)計(jì)電路原理圖以及PCB圖等功能的專業(yè)工具軟件。
本發(fā)明所指的電路圖特征文件或數(shù)據(jù),包含電路中用到的處理器芯片(比如MCU)、外圍芯片、功能器件及模塊等元器件型號(hào)以及反映電路連接關(guān)系的電路網(wǎng)絡(luò)名稱等信息。這些型號(hào)和名稱等信息需要事先進(jìn)行規(guī)范定義,不能互相沖突,使計(jì)算機(jī)能夠自動(dòng)識(shí)別。另外,一些諸如選擇處理器工作頻率、選擇軟件集成開發(fā)環(huán)境(IDE)等信息也可以預(yù)先進(jìn)行設(shè)置。
本發(fā)明所指的定制化開發(fā)平臺(tái),是指以特定的硬件電路為基礎(chǔ),生成與之匹配的特殊軟件開發(fā)平臺(tái),它包括軟件架構(gòu)程序、驅(qū)動(dòng)程序、中間件程序以及特定功能程序等。開發(fā)人員可以在這個(gè)平臺(tái)基礎(chǔ)上,編寫自己的應(yīng)用層程序,完成產(chǎn)品的設(shè)計(jì)。
本發(fā)明的技術(shù)稱之為定制化開發(fā)平臺(tái)自動(dòng)生成系統(tǒng), 是指由計(jì)算機(jī)按照應(yīng)用需求(例如按照硬件電路),輔助挑選所需的已有軟件代碼或軟件庫文件并自動(dòng)編寫程序,自動(dòng)生成定制化開發(fā)平臺(tái)。
本發(fā)明所指的自動(dòng)編寫程序,是指按照應(yīng)用需求(例如按照硬件電路),對(duì)已有的軟件代碼進(jìn)行移植、剪裁、特化與修改,或者添加新代碼等操作。已有的軟件代碼可以是包含在自動(dòng)生成系統(tǒng)軟件中的嵌入代碼,也可以是現(xiàn)成的軟件庫文件。剪裁是指去掉某些用不到的功能。特化與修改,是指按照應(yīng)用需求,確定軟件中的一些參數(shù)或配置(比如電路端口),以及修改部分代碼。
第二步,確定軟件架構(gòu)(例如實(shí)時(shí)內(nèi)核),軟件架構(gòu)是整個(gè)應(yīng)用系統(tǒng)的基礎(chǔ);
第三步,根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,由自動(dòng)生成系統(tǒng)自動(dòng)編寫軟件架構(gòu)程序;
第四步,根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,由“定制化開發(fā)平臺(tái)自動(dòng)生成系統(tǒng)”自動(dòng)編寫處理器芯片的初始化程序和功能配置程序;
第五步,根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,由自動(dòng)生成系統(tǒng)自動(dòng)編寫所用到的外圍芯片、功能器件及模塊等元器件的初始化程序以及驅(qū)動(dòng)程序;
第六步,根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,經(jīng)過計(jì)算機(jī)智能分析,由自動(dòng)生成系統(tǒng)自動(dòng)選用或編寫應(yīng)用系統(tǒng)所需的中間件程序以及特定功能程序;
第七步,根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,經(jīng)過計(jì)算機(jī)智能分析,由自動(dòng)生成系統(tǒng)自動(dòng)編寫應(yīng)用系統(tǒng)的主運(yùn)行程序;
第八步,自動(dòng)編寫以上所有自動(dòng)編寫程序及相關(guān)技術(shù)的說明文檔,供開發(fā)人員參考。
以上第三至第七步的編寫程序,并非每一步都是必須的,只要有一步即可。例如有些應(yīng)用系統(tǒng)無需中間件程序以及特定功能程序,則第六步就可以直接跳過。
由此,根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,自動(dòng)生成一個(gè)在指定的IDE使用的、適合特定的電路圖特征文件或數(shù)據(jù)的特定程序集合,這些程序構(gòu)成了一個(gè)定制化開發(fā)平臺(tái)。開發(fā)人員可以在這個(gè)平臺(tái)基礎(chǔ)上編寫自己的用戶程序、整合調(diào)試,最終完成產(chǎn)品設(shè)計(jì)。
本發(fā)明的有益效果:
1、本發(fā)明提供了一種便捷高效的嵌入式定制化開發(fā)平臺(tái)的自動(dòng)生成系統(tǒng)的實(shí)現(xiàn)方法,它具有通用、可視化、適用多種處理器及外圍設(shè)備等特點(diǎn),這有助于解決物聯(lián)網(wǎng)應(yīng)用的碎片化問題。而且,在同一個(gè)通用系統(tǒng)開發(fā)出來的不同產(chǎn)品,可以方便地達(dá)成共識(shí),遵守共同標(biāo)準(zhǔn)以使相互兼容,這一點(diǎn)有助于物聯(lián)網(wǎng)技術(shù)的推廣。
2、嵌入式產(chǎn)品開發(fā)通常需要構(gòu)建一個(gè)自有的基礎(chǔ)開發(fā)平臺(tái),這個(gè)平臺(tái)包括軟件架構(gòu)及各種軟件模塊,一般要占到整個(gè)項(xiàng)目軟件代碼量的70%以上。本發(fā)明提供了一種自動(dòng)快速生成定制化開發(fā)平臺(tái)的方法,由計(jì)算機(jī)代替人工工作,極大提高了軟件開發(fā)效率,降低開發(fā)成本,縮短開發(fā)周期,而且也克服了人工容易出錯(cuò)的缺陷,提高了產(chǎn)品的可靠性。
3、本發(fā)明借用了PCB設(shè)計(jì)軟件實(shí)現(xiàn)了編程可視化,電路圖設(shè)計(jì)直接替代軟件圖形可視化設(shè)計(jì),大大簡(jiǎn)化了自動(dòng)生成代碼系統(tǒng)的設(shè)計(jì)。而且,也省去了用戶進(jìn)行配置的中間步驟。這一點(diǎn)對(duì)于處理器廠商尤其有意義,使他們可以節(jié)省輔助軟件開發(fā)工具的開發(fā)成本,為用戶提供更簡(jiǎn)便、更直觀的輔助軟件開發(fā)工具,更好地為客戶服務(wù)。
附圖說明
圖1本發(fā)明的技術(shù)方案流程圖;
圖2本發(fā)明的舉例之電路原理圖;
圖3本發(fā)明的舉例之應(yīng)用實(shí)例工作流程圖。
具體實(shí)施方式
以下我們結(jié)合附圖和實(shí)例對(duì)本發(fā)明做進(jìn)一步闡述。
一、本發(fā)明涉及的技術(shù)用語及定義
1、PCB設(shè)計(jì)軟件
本發(fā)明所指的PCB設(shè)計(jì)軟件,是指對(duì)外公開發(fā)行的收費(fèi)或免費(fèi)的、具有設(shè)計(jì)電路原理圖以及PCB圖等功能的專業(yè)工具軟件。例如,常用的有Protel 99SE、Altium Designer系列、Cardence OrCAD/SPB/PSD、Mentor PADS/EN/WG、CadSoft EAGLE等。
2、電路圖特征文件或數(shù)據(jù)
本發(fā)明所指的電路圖特征文件或數(shù)據(jù),包含電路中用到的處理器芯片(比如MCU)、外圍芯片、功能器件及模塊等元器件型號(hào)以及反映電路連接關(guān)系的電路網(wǎng)絡(luò)名稱等信息。這些型號(hào)和名稱等信息需要事先進(jìn)行規(guī)范定義,不能互相沖突,使計(jì)算機(jī)能夠自動(dòng)識(shí)別。另外,一些諸如選擇處理器工作頻率、選擇軟件集成開發(fā)環(huán)境(IDE)等信息也可以預(yù)先進(jìn)行設(shè)置。
最典型的電路圖特征文件是PCB設(shè)計(jì)軟件Protel 99SE自動(dòng)生成的尾綴為.NET的網(wǎng)絡(luò)表(Netlist)文件,它包含了電路原理圖中各種元器件的型號(hào)、編號(hào)和封裝等信息,也包含了元器件之間的電路連接關(guān)系,即電路網(wǎng)絡(luò)。這種網(wǎng)絡(luò)表文件采用文本格式,是生成PCB圖的基礎(chǔ),可直接為本發(fā)明所用。
部分網(wǎng)絡(luò)表例如下:
[
U1
LQFP48
ATMEGA16L
]
[
U2
SO-8
PCF8563T
]
(
RXD
U1-9
)
(
SCL
U1-19
U2-6
)
(
SDA
U1-20
U2-5
)
(
TXD
U1-10
)
……
需要說明的是,出于計(jì)算機(jī)自動(dòng)識(shí)別的需要,在設(shè)計(jì)電路圖時(shí),必須采用一套事先規(guī)定好的電路圖符號(hào)集。這套符號(hào)集定義了各種元器件名稱和電路網(wǎng)絡(luò)名稱,以及其它信息。這些名稱和信息要求互不沖突,計(jì)算機(jī)可以準(zhǔn)確識(shí)別且不會(huì)產(chǎn)生歧義。芯片或設(shè)備等元器件名稱一般可以直接采用廠家的命名,而電路網(wǎng)絡(luò)命名則可以采用一些容易理解的符號(hào),例如,MCU的串口收發(fā)端連線的電路網(wǎng)絡(luò)可命名為RXD、TXD,I2C總線可用SDA、SCL表示。
另外,一些諸如選擇處理器工作頻率、軟件集成開發(fā)環(huán)境(IDE)的選用等信息也可以預(yù)先在電路圖中進(jìn)行設(shè)置。例如,可以在處理器名稱后面加上“_12MHz”,以表示系統(tǒng)時(shí)鐘是12MHz。
3、定制化開發(fā)平臺(tái)
本發(fā)明所指的定制化開發(fā)平臺(tái),是指以特定的硬件電路為基礎(chǔ),生成與之匹配的特殊軟件開發(fā)平臺(tái),它包括軟件架構(gòu)程序、驅(qū)動(dòng)程序、中間件程序以及特定功能程序等。開發(fā)人員可以在這個(gè)平臺(tái)基礎(chǔ)上,編寫自己的應(yīng)用層程序,完成產(chǎn)品的設(shè)計(jì)。
以一種稱為電子水平儀的項(xiàng)目為例(使用TreeOS構(gòu)件化操作系統(tǒng)),其定制化開發(fā)平臺(tái)包含了以下程序組件(注:這些組件包括.c程序文件和.h頭文件):
TreeOS_MCU (MCU配置程序)
TreeOS_HD61202 (圖形點(diǎn)陣LCD驅(qū)動(dòng)程序)
TreeOS_IRR (紅外遙控器驅(qū)動(dòng)程序)
TreeOS_AP890XX (語音存儲(chǔ)器驅(qū)動(dòng)程序)
TreeOS_MXD2020E (加速度測(cè)量器件驅(qū)動(dòng)程序)
TreeOS_EEPROM (EEPROM器件驅(qū)動(dòng)程序)
TreeOS_STDLIB (常用數(shù)字與字符轉(zhuǎn)換程序(中間件))
TreeOS_IO (IO口數(shù)字量輸入輸出驅(qū)動(dòng)程序)
TreeOS_Main (主程序)
4、定制化開發(fā)平臺(tái)自動(dòng)生成系統(tǒng)
本發(fā)明的技術(shù)稱之為定制化開發(fā)平臺(tái)自動(dòng)生成系統(tǒng), 是指由計(jì)算機(jī)按照應(yīng)用需求(例如按照硬件電路),輔助挑選所需的已有軟件代碼或軟件庫文件并自動(dòng)編寫程序,自動(dòng)生成定制化開發(fā)平臺(tái)。
本發(fā)明所指的自動(dòng)編寫程序,是指按照應(yīng)用需求(例如按照硬件電路),對(duì)已有的軟件代碼進(jìn)行移植、剪裁、特化與修改,或者添加新代碼等操作。已有的軟件代碼可以是包含在自動(dòng)生成系統(tǒng)軟件中的嵌入代碼,也可以是現(xiàn)成的軟件庫文件。剪裁是指去掉某些用不到的功能。特化與修改,是指按照應(yīng)用需求,確定軟件中的一些參數(shù)或配置(比如電路端口),以及修改部分代碼。
定制化開發(fā)平臺(tái)自動(dòng)生成系統(tǒng)實(shí)際上是已有軟件代碼或軟件庫文件的管理工具。這些已有的軟件代碼一般包括處理器芯片初始化及配置程序、周邊芯片和設(shè)備的驅(qū)動(dòng)程序、中間件程序以及特定功能程序等。這是一種軟件復(fù)用,避免了軟件開發(fā)過程中的重復(fù)勞動(dòng)。通過軟件復(fù)用,軟件開發(fā)不再采用一切從零開始的模式,而是在已有的工作的基礎(chǔ)上,充分利用過去積累的知識(shí)和經(jīng)驗(yàn)。
二、本發(fā)明的具體實(shí)施步驟
步驟一,把電路圖特征文件或數(shù)據(jù)導(dǎo)入自動(dòng)生成系統(tǒng)
在電路圖設(shè)計(jì)完成之后,本發(fā)明的第一步工作是通過PCB設(shè)計(jì)軟件直接獲取嵌入式產(chǎn)品硬件電路圖特征文件或數(shù)據(jù),然后把電路圖特征文件或數(shù)據(jù)導(dǎo)入自動(dòng)生成系統(tǒng)。
步驟二,確定軟件架構(gòu)
本發(fā)明的第二步工作是確定軟件架構(gòu)(例如實(shí)時(shí)內(nèi)核),軟件架構(gòu)是整個(gè)應(yīng)用系統(tǒng)的基礎(chǔ)。
軟件架構(gòu)可以是像FreeRTOS這樣的實(shí)時(shí)內(nèi)核操作系統(tǒng),也可以是像TreeOS這樣的無核構(gòu)件化操作系統(tǒng),也可以是其它類型的操作系統(tǒng),當(dāng)然也可以是開發(fā)人員自己定義的軟件架構(gòu),等等。
步驟三,編寫軟件架構(gòu)程序
本發(fā)明的第三步工作是根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,由自動(dòng)生成系統(tǒng)自動(dòng)編寫軟件架構(gòu)程序;
例如,對(duì)于FreeRTOS這樣的實(shí)時(shí)內(nèi)核,有一套內(nèi)核程序,可以直接移植過來;而對(duì)于TreeOS這樣的無核構(gòu)件化操作系統(tǒng),沒有專門的內(nèi)核程序,則無需編寫。
步驟四,編寫處理器芯片的初始化程序和功能配置程序
如果需要,本發(fā)明的第三步工作是根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,由自動(dòng)生成系統(tǒng)自動(dòng)編寫處理器芯片的初始化程序和功能配置程序。
處理器芯片通常都有豐富的功能,比如信號(hào)輸入輸出、定時(shí)器/計(jì)數(shù)器、中斷、串口、PWM等等,這些功能有的要用到,就要進(jìn)行初始化和配置,而用不到的功能就把它關(guān)閉。
步驟五,編寫外圍器件的初始化程序以及驅(qū)動(dòng)程序
如果需要,本發(fā)明的第四步工作是根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,由自動(dòng)生成系統(tǒng)自動(dòng)編寫所用到的外圍芯片、功能器件及模塊等元器件的初始化程序以及驅(qū)動(dòng)程序。
外圍芯片、功能器件及模塊等元器件,如數(shù)據(jù)存儲(chǔ)器、實(shí)時(shí)鐘、數(shù)據(jù)轉(zhuǎn)換、通訊、控制等功能芯片或模塊,這些元器件一般都需有初始化程序以及驅(qū)動(dòng)程序,自動(dòng)生成系統(tǒng)將自動(dòng)編寫這些程序。
步驟六,編寫中間件程序以及特定功能程序
如果需要,本發(fā)明的第五步工作是根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,經(jīng)過計(jì)算機(jī)智能分析,由自動(dòng)生成系統(tǒng)自動(dòng)選用或編寫應(yīng)用系統(tǒng)所需的中間件程序以及特定功能程序。
這些中間件程序以及特定功能程序包括文件系統(tǒng)、通信棧、用戶圖形界面、本地功能計(jì)算、邊緣計(jì)算、接口協(xié)議等等。
步驟七,編寫應(yīng)用系統(tǒng)的主程序
如果需要,本發(fā)明的第六步工作是根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,經(jīng)過計(jì)算機(jī)智能分析,由自動(dòng)生成系統(tǒng)自動(dòng)編寫應(yīng)用系統(tǒng)的主運(yùn)行程序。
本發(fā)明自動(dòng)完成的一般是初始化工作,包括調(diào)用處理器芯片配置及初始化、外圍器件初始化等工作。開發(fā)人員可以在此基礎(chǔ)上進(jìn)行進(jìn)一步完善,比如完成應(yīng)用系統(tǒng)的自檢、調(diào)用工作任務(wù)等。
步驟八,編寫技術(shù)說明文檔
本發(fā)明的第六步工作是自動(dòng)編寫以上所有自動(dòng)編寫程序及相關(guān)技術(shù)的說明文檔,供開發(fā)人員參考。
以上第三至第七步的編寫程序,并非每一步都是必須的,只要有一步即可。例如有些應(yīng)用系統(tǒng)無需中間件程序以及特定功能程序,則第六步就可以直接跳過。
由此,根據(jù)電路圖特征文件或數(shù)據(jù),在選定軟件架構(gòu)基礎(chǔ)上,自動(dòng)生成一個(gè)在指定的IDE使用的、適合特定的電路圖特征文件或數(shù)據(jù)的特定程序集合,這些程序構(gòu)成了一個(gè)定制化開發(fā)平臺(tái)。開發(fā)人員可以在這個(gè)特定平臺(tái)基礎(chǔ)上編寫自己的用戶程序以及整合調(diào)試,最終完成產(chǎn)品設(shè)計(jì)。
三、應(yīng)用實(shí)例
本發(fā)明所述的嵌入式軟件定制化開發(fā)平臺(tái)自動(dòng)生成系統(tǒng),可大大提高開發(fā)效率,并使嵌入式編程更加智能化。該技術(shù)已應(yīng)用于AlphaMcu自動(dòng)寫代碼系統(tǒng)(參見圖3),并成功應(yīng)用于多個(gè)MCU應(yīng)用項(xiàng)目上,取得了顯著效果。實(shí)踐表明,本發(fā)明所述的編程技術(shù)可使絕大多數(shù)MCU應(yīng)用項(xiàng)目實(shí)現(xiàn)70%以上代碼的自動(dòng)化編程。
四、適應(yīng)性
本發(fā)明所述的所有編程技術(shù),為了便于描述,雖然只涉及到嵌入式系統(tǒng),但實(shí)際上其適用范圍可以更加廣泛。因此本發(fā)明所述的所有編程技術(shù)可適用于符合本發(fā)明所述要求的任何其它計(jì)算機(jī)系統(tǒng)。